Automation: Триггеры

Материал из HOMEd Wiki
HOMEd > Automation > База данных > Триггеры

Триггер "property"

Этот триггер срабатывает, если значение выбранного свойства изменилось. Примеры описания триггера:

...
"triggers":
[
  {
    "type": "property",
    "endpoint": "zigbee/hallSwitch/2",
    "property": "status",
    "equals": "on"
  },
  {
    "type": "property",
    "endpoint": "zigbee/kitchenHumidity",
    "property": "humidity",
    "above": 60
  },
  {
    "type": "property",
    "endpoint": "zigbee/roomTemperature",
    "property": "temperature",
    "below": 15
  },
  {
    "type": "property",
    "endpoint": "zigbee/roomCurtain",
    "property": "position",
    "between": [20, 30]
  },
  {
    "type": "property",
    "endpoint": "zigbee/bowlerPressure",
    "property": "pressure",
    "changes": 5
  },
  {
    "type": "property",
    "endpoint": "zigbee/outdoorMotion",
    "property": "occupancy",
    "updates": true
  }
]
...

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

endpoint

Конечная точка, за свойством которой следит триггер, описанная в формате "сервис/устройство" или "сервис/устройство/N", где N это номер конечной точки для многоканальных устройств.

По сути, значение этого поля идентично части MQTT-топика с данными от устройства после homed/fd/.

property

Свойство конечной точки, за которым следит триггер. Другими словами - название поля в сообщении с данными от устройства, за значением которого следит триггер.

equals

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

above

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

below

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

between

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

сhanges

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

updates

Триггер сработает, eсли свойство будет обновлено (получено новое MQTT-сообщение), даже если его значение не изменилось.

Триггер "mqtt"

Этот триггер срабатывает при получении MQTT-сообщения в заданном топике. Пример описания триггера:

...
"triggers":
[
  {
    "type": "mqtt",
    "topic": "my/custom/sensor",
    "equals": true
  },
  {
    "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/sensor",
    "changes": 5
  },
  {
    "type": "mqtt",
    "topic": "secret/sensor",
    "property": "tempetature",
    "updates": true
  }
]
...

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

topic

MQTT-топик.

property

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

...

Поля "equals", "above", "below", "between", "changes" и "updates" работают так же, как в триггере "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
  }
]
...

interval

Интервал срабатывания триггера в минутах.

Имена триггеров

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

...
"triggers":
[
  {
    "type": "time",
    "time": "sunset",
    "name": "от заката"
  },
  {
    "type": "time",
    "time": "sunrise",
    "name": "до рассвета"
  }
]
...