м (→value) |
м (→if/else) |
||
Строка 69: | Строка 69: | ||
Данный элемент так же может быть рекурсивным, что позволяет проверить несколько условий сразу: | Данный элемент так же может быть рекурсивным, что позволяет проверить несколько условий сразу: | ||
{{#tag:pre|<nowiki>{{ 1 if value is 2 else 3 if value | {{#tag:pre|<nowiki>{{ 1 if value is 2 else 3 if value not 4 else 5 }}</nowiki>}} | ||
[[Category:Custom]] | [[Category:Custom]] |
Версия от 10:59, 10 февраля 2025
Общие сведения
Биндинги позволяют связывать сторонние MQTT-топики и их данные с устройством HOMEd Custom. Биндинги описываются как JSON-обект, ключами которого являются имена связываемых свойств. Структура описания биндингов выглядит так:
{
...
"bindings":
{
"status":
{
"inTopic": "switch/status/topic",
"inPattern": "{{ on if json.switch is true else off }}",
"outTopic": "switch/command/topic",
"inPattern": "{\"switch\":{{ true if value is on else false }}}"
},
"temperature":
{
"inTopic": "temperature/status/topic",
"inPattern": "{{ json.temperature }}"
}
}
...
}
Параметры биндингов
inTopic
Топик, в который устройство публикует состояние описываемого свойства. Является обязательным в случае, если отсутствует параметр outTopic
.
inPattern
Шаблон для получения состояния описываемого свойства из топика inTopic
. В случае отсутствия этого параметра, данные будут использованы без изменений. Подробнее в разделе шаблоны.
outTopic
Топик, который необходимо опубликовать для изменения состояния описываемого свойства. Является обязательным в случае, если отсутствует параметр inTopic
.
outPattern
Шаблон для передечи состояния описываемого свойства в топик outTopic
. В случае отсутствия этого параметра данные будут опубликованы без изменений. Подробнее в разделе шаблоны.
Шаблоны
Шаблон это простая строка, которая может содержать части текста, обернутые двойными фигурными скобками {{ ... }}
. Эти части теста будут автоматически заменяется на значение, зависящее от набора элементов шаблона.
json
Этот элемент шаблона применим к случаям, когда устройство публикует свое состояние в виде JSON-объекта, и позволяет получать из этого объекта необходимые параметры. Примеры использования элемента приведены ниже.
Получение параметра pressure
:
{{ json.pressure }}
Получение параметра из объекта, вложенного в массив:
{{ json.values[2].status }}
value
Этот элемент шаблона применим к случаям, когда необходимо передать на устройство значение свойства, вложив его некую текстовую конструкцию, например, в JSON-объект. Пример использования элемента:
{\"setStatus\":\"{{ value }}\"}
if/else
Этот элемент шаблона является условным и его итоговое значение зависит от других элементов. В данный момент поддерживается два условных оператора is
и not
. Примеры использования элемента приведены ниже.
Условный оператор is
:
{{ on if json.status is true else off }}
Условный оператор not
:
{{ false if value not on else false }}
В случае, если сравниваемые или итоговые значения содержат пробелы, они должны быть обернуты в одинарные кавычки:
{{ 'some value' if json.value is 'few words string' else 'other result' }}
Данный элемент так же может быть рекурсивным, что позволяет проверить несколько условий сразу:
{{ 1 if value is 2 else 3 if value not 4 else 5 }}