Automation: Триггеры
Триггер property
Этот триггер срабатывает, если значение выбранного свойства устройства изменилось.
Примеры описания триггера:
...
"triggers":
[
{
"type": "property",
"endpoint": "zigbee/hallSwitch/2",
"property": "status",
"equals": "on"
},
{
"type": "property",
"endpoint": "zigbee/hallSwitch/3",
"property": "status",
"differs": "off"
},
{
"type": "property",
"endpoint": "zigbee/kitchenHumidity",
"property": "humidity",
"above": 60
},
{
"type": "property",
"endpoint": "zigbee/roomTemperature",
"property": "temperature",
"below": 15,
"force": true
},
{
"type": "property",
"endpoint": "zigbee/roomCurtain",
"property": "position",
"between": [20, 30]
},
{
"type": "property",
"endpoint": "zigbee/flowerSensor",
"property": "moisture",
"outside": [40, 80],
"force": true
},
{
"type": "property",
"endpoint": "zigbee/bowlerPressure",
"property": "pressure",
"changes": 5
},
{
"type": "property",
"endpoint": "zigbee/hallMotion",
"property": "occupancy",
"equals": false,
"hold": 300
},
{
"type": "property",
"endpoint": "zigbee/outdoorMotion",
"property": "occupancy",
"updates": true
}
]
...
Поля equals, differs, above, below, between, outside, changes и updates не могут использоваться в одном триггере одновременно.
endpoint
Конечная точка, за свойством которой следит триггер, описанная в формате service/device или service/device/N, где N это номер конечной точки для многоканальных устройств.
По сути, значение этого поля является частью топика fd, относящейся к конкретному устройству.
property
Свойство конечной точки, за которым следит триггер. Другими словами - название поля в сообщении с данными от устройства, за значением которого следит триггер.
equals
Триггер сработает, если значение свойства станет равным значению этого поля.
differs
Триггер сработает, если значение свойства перестанет быть равным значению этого поля.
above
Триггер сработает, если числовое значение свойства превысит значение этого поля.
below
Триггер сработает, если числовое значение свойства станет ниже значения этого поля.
between
Триггер сработает, если числовое значение свойства попадет в диапазон, описанный в этом поле.
outside
Триггер сработает, если числовое значение свойства выйдет за пределы диапазона, описанного в этом поле.
changes
Триггер сработает, если числовое значение свойства изменится на значение этого поля в любую сторону. Имеется в виду разовое изменение значения.
updates
Триггер сработает, если значение свойства изменилось.
hold
Если это поле задано, триггер сработает только в том случае, если значение свойства соответствует заданным параметрам в течение указанного времени (в секундах). Если значение перестанет соответствовать заданным параметрам до истечения этого времени, отсчет сбрасывается и начинается заново при следующем совпадении.
Для операторов changes и updates это поле откладывает срабатывание триггера, если значение свойства не меняется. Отсчет времени начинается заново при изменении значения свойства на заданную величину для оператора changes и при любом изменении значения свойства для оператора updates.
force
Если это поле имеет значение true, триггер будет игнорировать переход значения через порог и срабатывать в каждом случае, когда полученное значение соответствует заданным критериям, даже если оно не изменилось. Опция работает для всех операторов, кроме changes и updates.
Использование опции force может приводить к нежелательным срабатываниям автоматизации. Будьте внимательны и используйте эту опцию только в случаях, когда она действительно нужна.
Триггер mqtt
Этот триггер срабатывает при получении MQTT-сообщения в заданном топике.
Примеры описания триггера:
...
"triggers":
[
{
"type": "mqtt",
"topic": "my/custom/sensor",
"equals": true
},
{
"type": "mqtt",
"topic": "my/other/sensor",
"differs": false
},
{
"type": "mqtt",
"topic": "another/sensor",
"property": "co2",
"above": 1000
},
{
"type": "mqtt",
"topic": "red/sensor",
"property": "value",
"below": 0.5
},
{
"type": "mqtt",
"topic": "question/of/life/the/universe/and/everything",
"property": "answer",
"between": [41, 43]
},
{
"type": "mqtt",
"topic": "other/question/topic",
"outside": [1000, 2000]
},
{
"type": "mqtt",
"topic": "other/sensor",
"changes": 20
},
{
"type": "mqtt",
"topic": "secret/sensor",
"property": "temperature",
"updates": true
}
]
...
Warning
Поля equals, differs, above, below, between, outside, changes и updates не могут использоваться в одном триггере одновременно.
topic
MQTT-топик.
property
Если это поле присутствует и заполнено, сервис будет ждать в сообщении JSON-объект и искать в нем соответствующее свойство. В противном случае в качестве свойства будет использовано само сообщение.
В качестве имени свойства может быть использована составная строка, например, строка users[2].name получит значение поля name из элемента массива users с индексом 2.
...
Поля equals, differs, above, below, between, outside, changes, updates, hold и force работают так же, как в триггере property.
Триггер state
Этот триггер срабатывает, если значение определенного состояния изменилось.
Примеры описания триггера:
...
"triggers":
[
{
"type": "state",
"state": "alarmMode",
"equals": "on"
},
{
"type": "state",
"state": "guestMode",
"differs": true
},
{
"type": "state",
"state": "counter",
"above": 10
},
{
"type": "state",
"state": "batteryLevel",
"below": 20
},
{
"type": "state",
"state": "targetTemperature",
"between": [20, 25]
},
{
"type": "state",
"state": "waterLevel",
"outside": [30, 70],
"hold": 60
},
{
"type": "state",
"state": "energyMeter",
"changes": 100
},
{
"type": "state",
"state": "lastUser",
"updates": true
}
]
...
Поля equals, differs, above, below, between, outside, changes и updates не могут использоваться в одном триггере одновременно.
state
Название состояния.
...
Поля equals, differs, above, below, between, outside, changes, updates, hold и force работают так же, как в триггере property.
Триггер scene
Этот триггер срабатывает при выполнении действия scene с таким же названием, а также при активации сцены из веб-интерфейса.
Пример описания триггера:
...
"triggers":
[
{
"type": "scene",
"scene": "спокойной ночи"
}
]
...
scene
Название сцены. Регистр букв не учитывается.
Триггер telegram
Этот триггер срабатывает при получении сообщения с заданным текстом от Telegram-бота.
Примеры описания триггера:
...
"triggers":
[
{
"type": "telegram",
"message": "включи свет на кухне"
},
{
"type": "telegram",
"message": "закрой шторы",
"chats": [123456789, 4815162342]
}
]
...
message
Текст сообщения, вызывающий срабатывание триггера.
chats
Массив идентификаторов чатов, из которых может быть получено сообщение. В случае отсутствия этого поля, сообщение будет принято только из чата, идентификатор которого указан в конфигурации.
Триггер time
Этот триггер срабатывает ежедневно, при наступлении назначенного времени суток.
Примеры описания триггера:
...
"triggers":
[
{
"type": "time",
"time": "08:30"
},
{
"type": "time",
"time": "sunrise"
},
{
"type": "time",
"time": "sunset - 10"
}
]
...
time
Время срабатывания триггера в формате hh:mm.
Вместо указания конкретного времени можно использовать ключевые слова sunrise и sunset, которые будут интерпретироваться как время рассвета и заката соответственно, а также можно корректировать эти значения, добавив или отняв необходимое число минут, например sunrise + 20 (через 20 минут после рассвета).
Триггер interval
Этот триггер срабатывает периодически, раз в заданный интервал времени. Отсчет времени ведется от полуночи.
Примеры описания триггера:
...
"triggers":
[
{
"type": "interval",
"interval": 15
},
{
"type": "interval",
"interval": 12,
"offset": 5
}
]
...
interval
Интервал срабатывания триггера в минутах.
offset
Смещение точки отсчета относительно полуночи в минутах.
Триггер startup
Этот триггер срабатывает один раз, при каждом запуске сервиса, сразу после того, как сервис подписывается на пользовательские MQTT-топики.
Пример описания триггера:
...
"triggers":
[
{
"type": "startup",
}
]
...
Имена триггеров
Триггерам можно присваивать произвольные имена и использовать эти имена в качестве дополнительных условий для действий, а также вставлять их в шаблоны.
Примеры использования имен триггеров:
...
"triggers":
[
{
"type": "time",
"time": "sunset",
"name": "от заката"
},
{
"type": "time",
"time": "sunrise",
"name": "до рассвета"
}
]
...
Имена триггеров также могут содержать шаблоны, значения которых вычисляются в момент срабатывания триггера. Например, один триггер может обрабатывать все нажатия кнопки, а действия будут выполняться в зависимости от типа нажатия:
...
"triggers":
[
{
"type": "property",
"endpoint": "zigbee/freePad/1",
"property": "action",
"updates": true,
"name": "{{ triggerProperty }}"
}
],
"actions":
[
{
"type": "property",
"triggerName": "singleClick",
...
},
{
"type": "property",
"triggerName": "doubleClick",
...
}
]
...