Этот простой и универсальный поток соединяет Zigbee-выключатели1) на базе чипа Tuya ZS3L2), добавленные в систему, с оконечными устройствами3).
Настройки каждого выключателя и оконечного устройства вводятся в соответствующем узле в формате JSON4) и автоматически5) загружаются в потоковый контекст при запуске Node-RED. Также, для каждого выключателя необходимо добавить свой узел «mqtt in».
Далее ожидается появление сообщений на этих узлах, поле чего следующий узел формирует исходящее сообщение, опираясь на входящее сообщение и настройки и… это, собственно, все.
Путь сохранения конфигурации выключателя settings.switches.zigbee2mqtt/0x604a11f4fe532d91
6) в потоковый контекст.
{ "1_single": { "module": "bedroomlighting/nightlight_FB4F02", "message": "TOGGLE", "postfix": "cmnd/POWER" }, "2_single": { "module": "bedroomlighting/warmlight_FB4476", "message": "TOGGLE", "postfix": "cmnd/POWER" }, "3_single": { "module": "bedroomlighting/coldlight_583C3D", "message": "TOGGLE", "postfix": "cmnd/POWER" }, "1_double": { "module": "bedroomlighting/floorlamp_E96B5E", "message": "TOGGLE", "postfix": "cmnd/POWER" }, "2_hold": { "module": "bedroomlighting/tasmotas", "message": "OFF", "postfix": "cmnd/POWER" }, "3_double": { "module": "bedroomlighting/tablelamp_EA2D25", "message": "TOGGLE", "postfix": "cmnd/POWER" } }
[ { "id": "1615a524.4ebbdb", "type": "tab", "label": "Дополнительные выключатели", "disabled": false, "info": "" }, { "id": "f365a280.f3f13", "type": "mqtt in", "z": "1615a524.4ebbdb", "name": "Вентиляция в ванной", "topic": "zigbee2mqtt/0x60a423f5fe45ff1d", "qos": "2", "datatype": "json", "broker": "8745b931.133868", "x": 160, "y": 100, "wires": [ [ "9b443b93.1934b8" ] ] }, { "id": "8d36f3a1.0a167", "type": "mqtt out", "z": "1615a524.4ebbdb", "name": "Публикация сообщения", "topic": "", "qos": "", "retain": "", "broker": "8745b931.133868", "x": 690, "y": 220, "wires": [] }, { "id": "9b443b93.1934b8", "type": "change", "z": "1615a524.4ebbdb", "name": "Подготовка сообщения", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "($lookup($flowContext(\"settings.\" & _topic & \".\" & payload.action), \"module\")) & \"/\" & ($lookup($flowContext(\"settings.\" & _topic & \".\" & payload.action), \"postfix\"))", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "$lookup($flowContext(\"settings.\" & _topic & \".\" & payload.action), \"message\")", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 410, "y": 160, "wires": [ [ "cbef88b2.f266f8" ] ] }, { "id": "a9d83933.901e08", "type": "mqtt in", "z": "1615a524.4ebbdb", "name": "Освещение в спальне", "topic": "zigbee2mqtt/0x60a423f5fe532d91", "qos": "2", "datatype": "json", "broker": "8745b931.133868", "x": 160, "y": 160, "wires": [ [ "9b443b93.1934b8" ] ] }, { "id": "758f372c.34b8c8", "type": "inject", "z": "1615a524.4ebbdb", "name": "Инициализация потока", "props": [], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "x": 170, "y": 40, "wires": [ [ "7f7d8664.2a9768" ] ] }, { "id": "7f7d8664.2a9768", "type": "change", "z": "1615a524.4ebbdb", "name": "Ввод настроек выключателей", "rules": [ { "t": "set", "p": "settings.zigbee2mqtt/0x60a423f5fe45ff1d", "pt": "flow", "to": "{\"single\":{\"module\":\"ventilation_000457\",\"message\":\"TOGGLE\",\"postfix\":\"cmnd/POWER1\"},\"hold\":{\"module\":\"ventilation_000457\",\"message\":\"TOGGLE\",\"postfix\":\"cmnd/POWER3\"}}", "tot": "json" }, { "t": "set", "p": "settings.zigbee2mqtt/0x60a423f5fe532d8", "pt": "flow", "to": "{\"1_single\":{\"module\":\"ventilation_000457\",\"message\":\"TOGGLE\",\"postfix\":\"cmnd/POWER1\"},\"2_hold\":{\"module\":\"ventilation_000457\",\"message\":\"TOGGLE\",\"postfix\":\"cmnd/POWER3\"}}", "tot": "json" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 670, "y": 40, "wires": [ [] ] }, { "id": "cbef88b2.f266f8", "type": "switch", "z": "1615a524.4ebbdb", "name": "Отсечка пустых сообщений", "property": "topic", "propertyType": "msg", "rules": [ { "t": "nempty" } ], "checkall": "false", "repair": false, "outputs": 1, "x": 680, "y": 160, "wires": [ [ "8d36f3a1.0a167" ] ] }, { "id": "8745b931.133868", "type": "mqtt-broker", "name": "localhost", "broker": "localhost", "port": "1883", "clientid": "", "usetls": false, "compatmode": false, "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "closeTopic": "", "closeQos": "0", "closePayload": "", "willTopic": "", "willQos": "0", "willPayload": "" } ]
Обсуждение