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

Материал из HOMEd Wiki
мНет описания правки
 
 
(не показаны 3 промежуточные версии этого же участника)
Строка 53: Строка 53:
Конечная точка, за свойством которой следит триггер, описанная в формате <code class="value">"сервис/устройство"</code> или <code class="value">"сервис/устройство/N"</code>, где <code class="value">N</code> это номер конечной точки для многоканальных устройств.
Конечная точка, за свойством которой следит триггер, описанная в формате <code class="value">"сервис/устройство"</code> или <code class="value">"сервис/устройство/N"</code>, где <code class="value">N</code> это номер конечной точки для многоканальных устройств.


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


=== <code>property</code> ===
=== <code>property</code> ===
Строка 74: Строка 74:


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


== Триггер "mqtt" ==
== Триггер "mqtt" ==
Этот триггер срабатывает при получении MQTT сообщения в заданном топике. Пример описания триггера:
Этот триггер срабатывает при получении MQTT-сообщения в заданном топике. Пример описания триггера:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
...
...
Строка 123: Строка 123:


=== <code>topic</code> ===
=== <code>topic</code> ===
MQTT топик.
MQTT-топик.


=== <code>property</code> ===
=== <code>property</code> ===
Если это поле присутствует и заполнено, сервис будет ждать в сообщении JSON-объект и искать в нем соответствующее свойство. В противном случае в качестве свойства будет использовано само сообщение.
Если это поле присутствует и заполнено, сервис будет ждать в сообщении JSON-объект и искать в нем соответствующее свойство. В противном случае в качестве свойства будет использовано само сообщение.
В качестве имени свойства может быть использована составная строка, например, строка <code class="value">"users[2].name"</code> получит значение поля <code class="value">"name"</code> из элемента массива <code class="value">"users"</code> c индексом <code class="value">2</code>.


=== <code>...</code> ===
=== <code>...</code> ===

Текущая версия от 11:58, 8 ноября 2024

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-сообщения в заданном топике. Пример описания триггера:

...
"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-объект и искать в нем соответствующее свойство. В противном случае в качестве свойства будет использовано само сообщение.

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

...

Поля "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": "до рассвета"
  }
]
...