Home Assistant использует синтаксис языка YAML для конфигурации. Может потребоваться некоторое время, чтобы привыкнуть к синтаксису это языка. Но действительно удобен, в описании сложных конфигураций.. Хотя все больше и больше интеграций настраиваются через графический (веб) интерфейс, для некоторых случаев всё ещё есть необходимость ручной правки файлов. Так же это касается и элементов самого интерфейса.
Согласно Википедии: "В трактовке названия отражена история развития: YAML (акроним англ. «Yet Another Markup Language» — «Ещё один язык разметки», сейчас — рекурсивный акроним англ. «YAML Ain't Markup Language» — «YAML — не язык разметки») — «дружественный» формат сериализации данных. Близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных."
Перед погружением в эту тему, стоит отметить что хотя бы базовые знания английского языка очень помогают и упрощают понимание некоторых вещей. Не говоря уже о самостоятельном поиске решений и чтения документации.
Т.к. речь идёт о целом языке программирования разметки, имеющем вагон и маленькую тележку документации, то описать всего его возможности в рамках одной статьи невозможно. Особенно учитывая что так же в нём используются вещи заимствованные из других языков программирования. Поэтому в дальнейшем будут рассмотрены некие азы необходимые для понимания. Так же будут приводиться примеры, являющиеся стартовой точкой для решения тех или иных задач. Полноценное описание всех возможностей есть в документации к YAML и на сайте Home Assistant.
В
предыдущей статье был упомянут очень полезный инструмент для определения состояний сущностей. Добавим в копилку ещё один - Редактор шаблонов.
Идеальное средство для проверки разных самоделок, и очень хорошо помогает понять логику работы как кода, так и самой системы в целом.
Давайте разберём построчно классический пример, встроенный по умолчанию.
1. Всё что имеет знак вначале строки - не читается системой. Используется для произвольного текста и описания последующих действий. Или же блокировки целой строки кода от обработки, вместо того, чтобы её стирать.
2-5. Создаётся некий объект my_test_json со свойством temperature и значением этого свойства 25. Единцы измерения показаний этого объекта - градусы Цельсия.
7. Выводится произвольный текст + значение полученное из свойства температура и значение полученное из единиц измерения.
The temperature is 25 °C.
Следующий блок показывает одно значение, однако если условие меняется, то будет показано другое.
9. Начало условия "Если" объект солнце имеет состояние - над горизонтом
10. Выводится текст что солнце встало + значение когда солнце встало.
11. так же (подразумевается всегда выводить)
12. Текст что солнце встанет во время указанное в атрибуте next_rising + неудачная попытка перевода в локальный и удобочитаемый формат времени
13. Конец условия "Если".
The sun will rise at 2022-10-16T06:43:31.309579+03:00.
17. Объявляется что работать будем только с значениями сущностей домена погода.
18-19. Подразумевается вывод целого предложения основанного на значениях разных атрибутов погодной службы.
20. Окончание блока с объявлением условий
По факту, работа этого блока зависит от того, какой погодный сервис и как настроен в каждой конкретной системе.
Результат может быть и таким: The forecast HOME is partlycloudy.
И таким: The forecast My_Home is partlycloudy, the forecast My_Home hourly is partlycloudy and the openweathermap is clear-night.
И даже пустым.
Из всего данного примера следует, что некая постижимая логика в написании кода не только есть, но оказывается её можно перевести на человеческий язык. Самая главная проблема это иметь правильный словарный запас и выучить синтаксис: помнить где ставятся одна или две фигурных скобки, проценты, когда и где сколько пробелов должно быть и т.д.
Комментарии
Отправить комментарий