Automation: Шаблоны

Материал из HOMEd Wiki
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
HOMEd > Automation > Шаблоны

Общие сведения

Шаблоны позволяют использовать свойства устройств, данные из MQTT-топиков, состояния и другие данные в некоторых условиях и действиях автоматизаций. Примеры шаблонов приведены ниже.

Показания датчика температуры:

{{ property | zigbee/kitchenThermometer | temperature }}

MQTT-сообщение целиком:

{{ mqtt | test/topic }}

Поле fieldName из JSON-объекта в MQTT-сообщении:

{{ mqtt | test/json/topic | fieldName }}

Даннные из сложного JSON-объекта в MQTT-сообщении:

{{ mqtt | other/json | device.exposes[1].name }}

Содержимое файла /home/user/file:

{{ file | /home/user/file }}

Значение состояния myState:

{{ state | myState }}

Текущеая метка времени (unix time):

{{ timestamp }}

Текущее время и дата в заданном формате:

{{ timestamp | dd.MM.yy hh:mm }}

Вывод последнего выполненного действия shell:

{{ shellOutput }}

Имя триггера, вызвавшего срабатывание автоматизации:

{{ triggerName }}

Адаптивное освещение

Адаптивное освещение это функция, позволяющая автоматически подстраивать цветовую температуру источников света в зависимости от времени суток. Для этого можно использовать шаблон colorTemperature в связке с триггером interval. Шаблон будет возвращать значение цветовой температуры из заданного диапазона. В случае, если диапазон не указан, будут использованы значения по умолчанию, от 153 до 500 майредов.

Пример использования шаблона:

{{ colorTemperature | 250 | 480 }}

Для корректной работы функции необходимо, чтобы в конфигурации были указаны координаты местоположения, по ним вычисляется актуальное положение солнца для конкретной местности.

Математические выражения

Помимо прочего, шаблоны могут содержать математические выражения. Каждое выражение может содержать любые математические операции (сложение, вычитание, умножение, деление, возведение в степень), включая операции в скобках, некоторые функции, а так же любые другие шаблоны. Если выражение некорретно, результатом вычислений будет nan. Список досутпных функций можно посмотреть здесь.

Примеры:

[[ sqrt(2 ^ 2) ]]
[[ {{ state | counter }} + 1 ]]
[[ {{ property | zigbee/sensor | temperature }} * 0.99 ]]

Вложенные шаблоны

В каждом условии или действии может быть использовано любое количество шаблонов и математических операций. Кроме того, шаблоны могут быть вложены друг в друга, например:

{{ property | zigbee/myFavoriteSensor | {{ triggerName }} }}

Единственным исключением для вложенных шаблонов является значение топика для шаблона mqtt, топик должен быть константой, иначе сервис не сможет на него подписаться.

Условный шаблон (if/else)

Итоговое значение этого шаблона зависит от результатов сравнения его составляющих элементов. Шаблон поддерживает следующие условные операторы:

  • is defined (левая часть выражения не является пустой)
  • is undefined (левая часть выражения является пустой)
  • == (левая часть выражения равна правой части)
  • != (левая часть выражения не равна правой части)
  • > (левая часть выражения больше правой части)
  • >= (левая часть выражения больше или равна правой части)
  • < (левая часть выражения меньше правой части)
  • <= (левая часть выражения меньше или равна правой части)

Условные операторы >, >=, < и <= применимы только к числовым значениям, в противном случае результат может оказаться непредсказуемым.

Примеры использования:

{{ открыто if {{ property | zigbee/doorSensor | contact }} == true else закрыто }}
{{ тепло if {{ property | zigbee/climateSensor | temperature }} >= 18 else холодно }}

В случае, если сравниваемые или итоговые значения содержат пробелы, они должны быть обернуты в одинарные кавычки:

{{ 'some result' if {{ triggerName }} == 'two words' else 'other value' }}

Данный шаблон так же может быть рекурсивным, что позволяет проверить несколько условий сразу:

{{ a if b > c else d if e < f else g }}