Перейти к содержанию

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]
  },
  {
    "type": "property",
    "endpoint": "zigbee/bowlerPressure",
    "property": "pressure",
    "changes": 5
  },
  {
    "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

Триггер сработает, если числовое значение свойства выйдет за пределы диапазона, описанного в этом поле.

сhanges

Триггер сработает, если числовое значение свойства изменится на значение этого поля в любую сторону. Имеется в виду разовое изменение значения.

updates

Триггер сработает, eсли значение свойства изменилось.

force

Если это поле имеет значение true, триггер будет игнорировать переход значения через порог и срабатывать в каждом случае, когда новое значение соответствует заданным критериям. Опция работает для операторов above, below, between и outside.

Триггер 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": "tempetature",
    "updates": true
  }
]
...

Warning

Поля equals, differs, above, below, between, outside, changes и updates не могут использоваться в одном триггере одновременно.

topic

MQTT-топик.

property

Если это поле присутствует и заполнено, сервис будет ждать в сообщении JSON-объект и искать в нем соответствующее свойство. В противном случае в качестве свойства будет использовано само сообщение.

В качестве имени свойства может быть использована составная строка, например, строка users[2].name получит значение поля name из элемента массива users c индексом 2.

...

Поля equals, differs, above, below, between, outside, changes, updates и force работают так же, как в триггере property.

Триггер 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": "до рассвета"
  }
]
...