Automation/Templates: различия между версиями

Материал из HOMEd Wiki
 
(не показаны 2 промежуточные версии этого же участника)
Строка 11: Строка 11:
{{#tag:pre|<nowiki>{{ mqtt | test/topic }}</nowiki>}}
{{#tag:pre|<nowiki>{{ mqtt | test/topic }}</nowiki>}}


Поле <code>fieldName</code> из MQTT-сообщения, содержащего  JSON:
Поле <code>fieldName</code> из JSON-объекта в MQTT-сообщении:
{{#tag:pre|<nowiki>{{ mqtt | test/json/topic | fieldName }}</nowiki>}}
{{#tag:pre|<nowiki>{{ mqtt | test/json/topic | fieldName }}</nowiki>}}


Строка 41: Строка 41:


== Математические выражения ==
== Математические выражения ==
Помимо прочего, шаблоны могут содержать математические выражения. Каждое выражение может содержать любые математические операции (сложение, вычитание, умножение, деление, возведение в степень), включая операции в скобках, некоторые функции, а так же любые другие шаблоны. Если выражение некорретно, результатом вычислений будет <code class="value">nan</code>. Список досутпных функций можно посмотреть [https://github.com/u236/homed-service-automation/blob/570f97ad640606624f24eff20606cf71ca2324ad/expression.cpp#L86-L107 здесь].
Помимо прочего, шаблоны могут содержать математические выражения. Каждое выражение может содержать любые математические операции (сложение, вычитание, умножение, деление, возведение в степень), включая операции в скобках, некоторые функции, а так же любые другие шаблоны. Если выражение некорретно, результатом вычислений будет <code class="value">nan</code>. Список досутпных функций можно посмотреть [https://github.com/u236/homed-service-automation/blob/master/expression.cpp#L90-L115 здесь].


Примеры:
Примеры:

Текущая версия от 13:31, 23 ноября 2024

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 }}

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

{{ 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, топик должен быть константой, иначе сервис не сможет на него подписаться.