Этот поток создан для уведомления о протечках на электронную почту, если используется нестандартный метод подключения датчика или в вашей экосистеме Apple HomeKit нет «домашнего центра управления». В этих случаях о сработке датчика вы узнаете только находясь дома,.. что не достаточно хорошо.
Причем оба этих кейса, как раз мой случай.
В этой цепочке используются следующие узлы, которых нет в стандартной поставке:
Эти подпотоки входят в состав кода ниже и загружать отдельно их не надо!
При получении сообщения, проверяется, есть ли такое устройство в базе данных. Если это новый датчик, то создается запись в таблице и на почту отправляется приветственное письмо с инструкцией по назначению датчику корректного названия. Если датчик присутствует в таблице, определяется, какие данные он передает. Если он передает протечку, то информация заносится в таблицу и отправляется предупреждение на почту. Помимо этого датчик попадает в цепочку повторных предупреждений, которые отправляются с заданной периодичностью, где он крутится до тех пор, пока протечка не будет устранена. Если протечка была, но устранена, то отправляется письмо о восстановлении датчика и в таблицу заносятся соответствующие данные. Если протечки и не было, то ничего не происходит.
Также к потоку подключен подпоток сторожевого таймера, который при отсутствии периодических диагностических данных от датчика, уведомит об этом на почту.
Для работы этого потока, необходимо вручную создать таблицу, выполнив SQL-запрос:
CREATE TABLE wl_state (_id TEXT PRIMARY KEY, name TEXT UNIQUE, INTEGER DEFAULT 0, TIMESTAMP INTEGER)
Пример цепочки:
[ { "id": "28be5e5d.cb7442", "type": "inject", "z": "67ff7e91.76e24", "name": "Подготовка запроса", "props": [ { "p": "topic", "vt": "str" }, { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "CREATE TABLE wl_state (_id TEXT PRIMARY KEY, name TEXT UNIQUE, INTEGER DEFAULT 0, timestamp INTEGER)", "payload": "", "payloadType": "date", "x": 370, "y": 160, "wires": [ [ "d089a31b.a5805" ] ] }, { "id": "758cd73a.9cf318", "type": "debug", "z": "67ff7e91.76e24", "name": "Вывод команды", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 370, "y": 280, "wires": [] }, { "id": "d089a31b.a5805", "type": "sqlite", "z": "67ff7e91.76e24", "mydb": "4ab28460.21e8cc", "sqlquery": "msg.topic", "sql": "", "name": "Создание таблицы", "x": 370, "y": 220, "wires": [ [ "758cd73a.9cf318" ] ] }, { "id": "4ab28460.21e8cc", "type": "sqlitedb", "db": "c:\\noderedDB\\water_leak.db", "mode": "RWC" } ]
[ { "id": "98ba2d02.5ee68", "type": "subflow", "name": "watchdog", "info": "Ожидает поступление сообщений в установленный интервал, если сообщения нет, генерирует письмо с предупреждением.\n\nПринимает **msg.topic** в качестве ID датчика и **msg.payload** в качестве названия, которые будут указаны в теле письма.", "category": "", "in": [ { "x": 80, "y": 40, "wires": [ { "id": "fee5d855.a15048" } ] } ], "out": [], "env": [ { "name": "msgnote35634", "type": "str", "value": "", "ui": { "label": { "en-US": "Укажите задержку срабатывания таймера в миллисекундах." }, "type": "none" } }, { "name": "msgdelay", "type": "num", "value": "3600000", "ui": { "icon": "font-awesome/fa-clock-o", "label": { "en-US": "Задержка (мс)" }, "type": "input", "opts": { "types": [ "num" ] } } } ], "color": "#FFAAAA", "icon": "font-awesome/fa-clock-o" }, { "id": "7cada431.44b94c", "type": "trigger", "z": "98ba2d02.5ee68", "name": "Таймер", "op1": "", "op2": "", "op1type": "pay", "op2type": "date", "duration": "10", "extend": true, "overrideDelay": true, "units": "s", "reset": "", "bytopic": "topic", "topic": "topic", "outputs": 2, "x": 540, "y": 40, "wires": [ [ "536fe262.24fb2c" ], [ "27141a53.5a2246" ] ], "outputLabels": [ "Первое", "Ошибка" ] }, { "id": "3cfc87ed.72e3d8", "type": "subflow:38c9a069.18cd6", "z": "98ba2d02.5ee68", "name": "Отправка почты", "env": [], "x": 710, "y": 580, "wires": [] }, { "id": "ca1cc7d1.c86308", "type": "change", "z": "98ba2d02.5ee68", "name": "Установка текстовых полей письма", "rules": [ { "t": "move", "p": "firstline", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "topic", "pt": "msg", "to": "\"Изменился статус датчика (\" & $now('[H01]:[m01]:[s01] [D01].[M01].[Y0001]', '+1000') & \")\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 210, "y": 580, "wires": [ [ "3cfc87ed.72e3d8" ] ] }, { "id": "fee5d855.a15048", "type": "change", "z": "98ba2d02.5ee68", "name": "Установка задержки таймера", "rules": [ { "t": "set", "p": "delay", "pt": "msg", "to": "msgdelay", "tot": "env" }, { "t": "set", "p": "savedtopic", "pt": "msg", "to": "topic", "tot": "msg" }, { "t": "set", "p": "savedpayload", "pt": "msg", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 290, "y": 40, "wires": [ [ "7cada431.44b94c" ] ] }, { "id": "536fe262.24fb2c", "type": "change", "z": "98ba2d02.5ee68", "name": "Подготовка запроса", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"SELECT * FROM watchdog WHERE topic = \\\"\" & savedtopic & \"\\\"\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 160, "y": 100, "wires": [ [ "25c0b13d.61990e" ] ] }, { "id": "25c0b13d.61990e", "type": "sqlite", "z": "98ba2d02.5ee68", "mydb": "abf4792e.cd5078", "sqlquery": "msg.topic", "sql": "", "name": "Запрос на наличие записи в БД", "x": 200, "y": 160, "wires": [ [ "43ffca62.b3b554" ] ] }, { "id": "43ffca62.b3b554", "type": "switch", "z": "98ba2d02.5ee68", "name": "Маршрутизация", "property": "payload", "propertyType": "msg", "rules": [ { "t": "nempty" }, { "t": "else" } ], "checkall": "false", "repair": false, "outputs": 2, "x": 650, "y": 160, "wires": [ [ "2557a088.c4251" ], [ "90a4953e.e690a8" ] ] }, { "id": "90a4953e.e690a8", "type": "change", "z": "98ba2d02.5ee68", "name": "Подготовка запроса", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"INSERT INTO watchdog (topic, name) VALUES (\\\"\" & savedtopic & \"\\\", \\\"\" & savedpayload & \"\\\")\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 160, "y": 220, "wires": [ [ "235c7484.7cd52c" ] ] }, { "id": "235c7484.7cd52c", "type": "sqlite", "z": "98ba2d02.5ee68", "mydb": "abf4792e.cd5078", "sqlquery": "msg.topic", "sql": "", "name": "Добавление отсутствующей записи", "x": 210, "y": 280, "wires": [ [ "2557a088.c4251" ] ] }, { "id": "2557a088.c4251", "type": "change", "z": "98ba2d02.5ee68", "name": "Подготовка запроса", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"SELECT * FROM watchdog WHERE topic = \\\"\" & savedtopic & \"\\\" AND sent = false\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 540, "y": 280, "wires": [ [ "b903c102.384fe" ] ] }, { "id": "b903c102.384fe", "type": "sqlite", "z": "98ba2d02.5ee68", "mydb": "abf4792e.cd5078", "sqlquery": "msg.topic", "sql": "", "name": "Выборка записей, которые не отправлялись", "x": 240, "y": 340, "wires": [ [ "2d7a7c9c.c9c0a4" ] ] }, { "id": "2d7a7c9c.c9c0a4", "type": "switch", "z": "98ba2d02.5ee68", "name": "Отсечка пустых сообщений", "property": "payload", "propertyType": "msg", "rules": [ { "t": "nempty" } ], "checkall": "false", "repair": false, "outputs": 1, "x": 180, "y": 400, "wires": [ [ "29c18b99.2c4044" ] ] }, { "id": "27141a53.5a2246", "type": "change", "z": "98ba2d02.5ee68", "name": "Настройка текста письма (false)", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "firstline", "pt": "msg", "to": "\"Датчик \\\"\" & savedpayload & \"\\\" не передает показания уже \" & $ceil(delay/1000/60) & \" мин!\\n\\nИдентификатор устройства \\\"\" & savedtopic & \"\\\".\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 660, "y": 100, "wires": [ [ "b13655cc.bdf9d8" ] ] }, { "id": "b13655cc.bdf9d8", "type": "change", "z": "98ba2d02.5ee68", "name": "Подготовка запроса", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"UPDATE watchdog SET sent = \" & topic & \" WHERE topic = \\\"\" & savedtopic & \"\\\"\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 700, "y": 460, "wires": [ [ "b4d28c09.f2007" ] ] }, { "id": "b4d28c09.f2007", "type": "sqlite", "z": "98ba2d02.5ee68", "mydb": "abf4792e.cd5078", "sqlquery": "msg.topic", "sql": "", "name": "Установка флага отправки", "x": 180, "y": 520, "wires": [ [ "ca1cc7d1.c86308" ] ] }, { "id": "29c18b99.2c4044", "type": "change", "z": "98ba2d02.5ee68", "name": "Настройка текста письма (true)", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "firstline", "pt": "msg", "to": "\"Датчик \\\"\" & savedpayload & \"\\\" передал показания! Интервал проверки \" & $ceil(delay/1000/60) & \" мин.\\n\\nИдентификатор устройства \\\"\" & savedtopic & \"\\\".\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 190, "y": 460, "wires": [ [ "b13655cc.bdf9d8" ] ] }, { "id": "abf4792e.cd5078", "type": "sqlitedb", "z": "98ba2d02.5ee68", "db": "c:\\noderedDB\\watchdog.db", "mode": "RWC" }, { "id": "38c9a069.18cd6", "type": "subflow", "name": "sendmail", "info": "Отправляет почту по настроенным реквизитам.", "category": "", "in": [ { "x": 60, "y": 60, "wires": [ { "id": "be1032f6.e2b02" } ] } ], "out": [], "env": [], "color": "#C7E9C0", "icon": "node-red/envelope.svg" }, { "id": "be1032f6.e2b02", "type": "e-mail", "z": "38c9a069.18cd6", "server": "smtp.mail.com", "port": "465", "secure": true, "tls": true, "name": "nikolay@soloshin.su", "dname": "Отправка сообщения", "x": 240, "y": 60, "wires": [] }, { "id": "5cda2c4a.a099b4", "type": "tab", "label": "Детекция протечек", "disabled": false, "info": "" }, { "id": "c032c9e5.848ad8", "type": "change", "z": "5cda2c4a.a099b4", "name": "Сохранение данных и формирование запроса", "rules": [ { "t": "set", "p": "originaltopic", "pt": "msg", "to": "topic", "tot": "msg" }, { "t": "set", "p": "originalpayload", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "topic", "pt": "msg", "to": "\"SELECT name, sent FROM wl_state WHERE _id = \\\"\" & originaltopic & \"\\\"\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 620, "y": 100, "wires": [ [ "d0cef548.c51a88" ] ] }, { "id": "7e624390.fd809c", "type": "switch", "z": "5cda2c4a.a099b4", "name": "Наличие протечки", "property": "originalpayload.water_leak", "propertyType": "msg", "rules": [ { "t": "true" }, { "t": "else" } ], "checkall": "false", "repair": false, "outputs": 2, "x": 150, "y": 280, "wires": [ [ "639b2ac5.5c2d04" ], [ "14d51aec.cc7875" ] ], "outputLabels": [ "Есть", "Нет" ] }, { "id": "d0cef548.c51a88", "type": "sqlite", "z": "5cda2c4a.a099b4", "mydb": "4ab28460.21e8cc", "sqlquery": "msg.topic", "sql": "", "name": "Запрос данных у-ва", "x": 160, "y": 160, "wires": [ [ "a4fced1f.9219" ] ] }, { "id": "a4fced1f.9219", "type": "switch", "z": "5cda2c4a.a099b4", "name": "Наличие у-ва в базе", "property": "payload", "propertyType": "msg", "rules": [ { "t": "nempty" }, { "t": "else" } ], "checkall": "false", "repair": false, "outputs": 2, "x": 160, "y": 220, "wires": [ [ "7e624390.fd809c", "26b59bd5.85cca4" ], [ "7920981a.ac5458" ] ], "outputLabels": [ "Есть", "Нет" ] }, { "id": "7920981a.ac5458", "type": "change", "z": "5cda2c4a.a099b4", "name": "Формирование запроса", "rules": [ { "t": "set", "p": "newname", "pt": "msg", "to": "\"Новый датчик \" & $ceil($random()*1000)", "tot": "jsonata" }, { "t": "set", "p": "topic", "pt": "msg", "to": "\"INSERT INTO wl_state (_id, name) VALUES (\\\"\" & originaltopic & \"\\\", \\\"\" & newname & \"\\\")\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 160, "wires": [ [ "4e9b4527.40225c" ] ] }, { "id": "4e9b4527.40225c", "type": "sqlite", "z": "5cda2c4a.a099b4", "mydb": "4ab28460.21e8cc", "sqlquery": "msg.topic", "sql": "", "name": "Добавление нового устройства", "x": 570, "y": 220, "wires": [ [ "91922c30.07bbe" ] ] }, { "id": "91922c30.07bbe", "type": "change", "z": "5cda2c4a.a099b4", "name": "Формирование приветственного письма", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"В систему добавлен новый датчик (\" & $now('[H01]:[m01]:[s01] [D01].[M01].[Y0001]', '+1000') & \")\"", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "\"Пожалуйста, измените название датчика на корректное. Сейчас он называется \\\"\" & newname & \"\\\".\\n\\nИнструкция:\\n1) Откройте нужный поток в web-интерфейсе Node-RED;\\n2) Откройте свойства узла \\\"Переименование датчика\\\";\\n3) В поле \\\"deviceid\\\" вставьте значение \\\"\" & originaltopic & \"\\\";\\n4) В поле \\\"devicenewname\\\" впишите новое название;\\n5) Нажмите \\\"Готово\\\", \\\"Развернуть\\\" и запустите узел.\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 600, "y": 280, "wires": [ [ "7278784c.781738" ] ] }, { "id": "a0d0bc06.69b2f", "type": "subflow:38c9a069.18cd6", "z": "5cda2c4a.a099b4", "name": "Отправка почты", "env": [], "x": 630, "y": 940, "wires": [] }, { "id": "cf569c2.ff8e06", "type": "sqlite", "z": "5cda2c4a.a099b4", "mydb": "4ab28460.21e8cc", "sqlquery": "msg.topic", "sql": "", "name": "Запись статуса отправки", "x": 550, "y": 580, "wires": [ [ "b124d397.59a69" ] ] }, { "id": "14d51aec.cc7875", "type": "switch", "z": "5cda2c4a.a099b4", "name": "Блокировка диагностики", "property": "payload[0].sent", "propertyType": "msg", "rules": [ { "t": "eq", "v": "1", "vt": "num" } ], "checkall": "false", "repair": false, "outputs": 1, "x": 170, "y": 340, "wires": [ [ "8ee6a8f8.289bf8", "26c1c49e.f46bac" ] ] }, { "id": "1fb86d20.8d0583", "type": "change", "z": "5cda2c4a.a099b4", "name": "Подготовка письма о протечке", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"Обнаружена протечка в \" & $now('[H01]:[m01]:[s01] [D01].[M01].[Y0001]', '+1000') & \"!\"", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "\"Сработал датчик \\\"\" & payload[0].name & \"\\\".\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 400, "wires": [ [ "7278784c.781738" ] ] }, { "id": "639b2ac5.5c2d04", "type": "switch", "z": "5cda2c4a.a099b4", "name": "Блокировка повторной отправки", "property": "payload[0].sent", "propertyType": "msg", "rules": [ { "t": "eq", "v": "0", "vt": "num" } ], "checkall": "false", "repair": false, "outputs": 1, "x": 580, "y": 460, "wires": [ [ "1fb86d20.8d0583", "42cc2306.8a7eac" ] ] }, { "id": "42cc2306.8a7eac", "type": "change", "z": "5cda2c4a.a099b4", "name": "Установка метки и даты", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"UPDATE wl_state SET sent = \" & originalpayload.water_leak & \", timestamp = \\\"\" & $now('[H01]:[m01]:[s01] [D01].[M01].[Y0001]', '+1000') & \"\\\" WHERE _id = \\\"\" & originaltopic & \"\\\"\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 520, "wires": [ [ "cf569c2.ff8e06" ] ] }, { "id": "8ee6a8f8.289bf8", "type": "change", "z": "5cda2c4a.a099b4", "name": "Подготовка письма об устранении", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"Протечка устранена в \" & $now('[H01]:[m01]:[s01] [D01].[M01].[Y0001]', '+1000') & \"!\"", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "\"Датчик \\\"\" & payload[0].name & \"\\\" восстановился.\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 340, "wires": [ [ "7278784c.781738" ] ] }, { "id": "bd959e70.f6fdf", "type": "sqlite", "z": "5cda2c4a.a099b4", "mydb": "4ab28460.21e8cc", "sqlquery": "fixed", "sql": "SELECT name, timestamp FROM wl_state WHERE sent = true", "name": "Выборка сработавших датчиков", "x": 580, "y": 640, "wires": [ [ "620a57e3.dd4ef8" ] ] }, { "id": "a62b273f.4c1278", "type": "trigger", "z": "5cda2c4a.a099b4", "name": "Задержка первого письма", "op1": "msgreset", "op2": "", "op1type": "str", "op2type": "payl", "duration": "20", "extend": false, "overrideDelay": true, "units": "hr", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 560, "y": 700, "wires": [ [ "a6ea953f.b81088" ] ] }, { "id": "9be28274.36ede", "type": "change", "z": "5cda2c4a.a099b4", "name": "Подготовка темы и тела письма", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"Внимание! Протечка не устранена (\" & $now() & \")!\"", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "\"Нижеуказанные датчики перешли в состояние протечки:\\n\\n\" & payload", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 880, "wires": [ [ "a0d0bc06.69b2f" ] ] }, { "id": "a2aad8d1.b35d48", "type": "inject", "z": "5cda2c4a.a099b4", "name": "Переименование датчика", "props": [ { "p": "deviceid", "v": "zigbee2mqtt/0x00158d0006334159", "vt": "str" }, { "p": "devicenewname", "v": "Кухня", "vt": "str" }, { "p": "topic", "v": "\"UPDATE wl_state SET name = \\\"\" & devicenewname & \"\\\" WHERE _id = \\\"\" & deviceid & \"\\\"\"", "vt": "jsonata" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "str", "x": 170, "y": 460, "wires": [ [ "cf569c2.ff8e06" ] ] }, { "id": "26c1c49e.f46bac", "type": "change", "z": "5cda2c4a.a099b4", "name": "Снятие метки и даты", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "\"UPDATE wl_state SET sent = \" & originalpayload.water_leak & \", timestamp = \\\"\\\" WHERE _id = \\\"\" & originaltopic & \"\\\"\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 160, "y": 400, "wires": [ [ "cf569c2.ff8e06" ] ] }, { "id": "d9ca0742.4f9818", "type": "split", "z": "5cda2c4a.a099b4", "name": "Разделение сообщения", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "", "x": 170, "y": 820, "wires": [ [ "4ef98a44.ada364" ] ] }, { "id": "4ef98a44.ada364", "type": "template", "z": "5cda2c4a.a099b4", "name": "Модификация сообщения", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{{{payload.name}}} с {{{payload.timestamp}}}", "output": "str", "x": 560, "y": 820, "wires": [ [ "16b29d21.f6f2e3" ] ] }, { "id": "16b29d21.f6f2e3", "type": "join", "z": "5cda2c4a.a099b4", "name": "Сборка сообщения", "mode": "custom", "build": "string", "property": "payload", "propertyType": "msg", "key": "payload.out", "joiner": "\\n", "joinerType": "str", "accumulate": false, "timeout": "", "count": "", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 160, "y": 880, "wires": [ [ "9be28274.36ede" ] ] }, { "id": "620a57e3.dd4ef8", "type": "switch", "z": "5cda2c4a.a099b4", "name": "Отсечка пустых сообщений", "property": "payload", "propertyType": "msg", "rules": [ { "t": "empty" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 180, "y": 700, "wires": [ [ "1b7b1f3b.3a7871" ], [ "a62b273f.4c1278" ] ] }, { "id": "a6ea953f.b81088", "type": "trigger", "z": "5cda2c4a.a099b4", "name": "Циклическая отправка письма", "op1": "", "op2": "0", "op1type": "pay", "op2type": "str", "duration": "-20", "extend": false, "overrideDelay": true, "units": "hr", "reset": "msgreset", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 570, "y": 760, "wires": [ [ "d9ca0742.4f9818" ] ] }, { "id": "1b7b1f3b.3a7871", "type": "change", "z": "5cda2c4a.a099b4", "name": "Сброс триггера", "rules": [ { "t": "set", "p": "reset", "pt": "msg", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 760, "wires": [ [ "a6ea953f.b81088", "a62b273f.4c1278" ] ] }, { "id": "7278784c.781738", "type": "link out", "z": "5cda2c4a.a099b4", "name": "Передача почты", "links": [ "de0d6638.631658" ], "x": 795, "y": 400, "wires": [] }, { "id": "de0d6638.631658", "type": "link in", "z": "5cda2c4a.a099b4", "name": "Прием почты", "links": [ "7278784c.781738" ], "x": 455, "y": 940, "wires": [ [ "a0d0bc06.69b2f" ] ] }, { "id": "b124d397.59a69", "type": "change", "z": "5cda2c4a.a099b4", "name": "Установка таймера задержки", "rules": [ { "t": "set", "p": "delay", "pt": "msg", "to": "600000", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 190, "y": 640, "wires": [ [ "bd959e70.f6fdf" ] ] }, { "id": "2fdc97c3.e7f3e8", "type": "subflow:98ba2d02.5ee68", "z": "5cda2c4a.a099b4", "name": "Сторожевой таймер", "env": [], "x": 160, "y": 580, "wires": [] }, { "id": "cb0bb7c4.654b78", "type": "change", "z": "5cda2c4a.a099b4", "name": "Подготовка данных", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload[0].name", "tot": "msg" }, { "t": "set", "p": "topic", "pt": "msg", "to": "originaltopic", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 220, "y": 520, "wires": [ [ "2fdc97c3.e7f3e8" ] ] }, { "id": "26b59bd5.85cca4", "type": "link out", "z": "5cda2c4a.a099b4", "name": "На таймер", "links": [ "1e10bbb8.876304" ], "x": 355, "y": 280, "wires": [] }, { "id": "1e10bbb8.876304", "type": "link in", "z": "5cda2c4a.a099b4", "name": "С таймера", "links": [ "26b59bd5.85cca4" ], "x": 75, "y": 520, "wires": [ [ "cb0bb7c4.654b78" ] ] }, { "id": "3fe60e7b.6b3472", "type": "mqtt in", "z": "5cda2c4a.a099b4", "name": "Датчик на кухне", "topic": "zigbee2mqtt/0x00158d0006334159", "qos": "2", "datatype": "json", "broker": "8745b931.133868", "x": 140, "y": 40, "wires": [ [ "c032c9e5.848ad8" ] ] }, { "id": "4ab28460.21e8cc", "type": "sqlitedb", "db": "c:\\noderedDB\\water_leak.db", "mode": "RWC" }, { "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": "" } ]
Обсуждение