Использование NODE-RED в качестве сервера для MegaD

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 30 окт 2017, 23:43

OlegJktu84 писал(а):По поводу триггера (Если только говорим об одном и том же).
Сделал пример с переключателем, ручной и абстрактный, но зато рабочий.
Этот кусок должен проверять включен свет или нет, и от этого менять логику. Нужен, что бы с однократного нажатия кнопки включать/выключать свет.
А как этот код связать с реальной Мегой?
То что в зависимости от true и false можно переключать контекст это ясно. Но мега выдает номер порта (например 30) - и все.
на самом деле можно кардинально упростить алгоритм и использовать всего 3 блока.
При поступлении сигнала просто выполнять http запрос с номером порта и цифрой 2 -

Код: Выделить всё

 http://192.168.0.15/sec/?cmd={{port}}:2
Тогда мега переключит состояние на противоположное.
Но тогда мы теряем информацию о том в каком состоянии находится реле в настоящий момент.
А эта информация позволяет формировать всякие разные алгоритмы умного дома.

blwind
Сообщения: 6
Зарегистрирован: 28 окт 2011, 18:10

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение blwind » 16 ноя 2017, 21:11

Для того, что бы не было непонятных и не предвиденных ситуаций перед формированием команды для МЕГИ необходимо сделать запрос и получить состояние интересующего порта, а затем отталкиваясь от этого состояния формировать свою команду и отправлять ее.
И немного о Node-Red. Это классная штука, но только для того, что бы поиграться. Как только начинаются более или менее серьезные вещи и мало-мальски усложненные алгоритмы, по мне проще написать пару сотен строк кода, чем разбираться чего ты там настроил из "кубиков".
Я отказался от использования Node-Red.
В качестве сервера использую связку из Node.js и RethinkDB. RethinkDB - движок база данных умеющий формировать события и потоки данных в ответ на происходящие изменения у нее внутри. Т. е. нажатие, например, кнопки на МЕГЕ влечет за собой запись события в БД, а за тем генерацию всех последующих событий описанных в системе. Такой подход дает массу преимуществ, как в плане организации сетевого трафика, так и общей безопасности системы в целом.

blwind
Сообщения: 6
Зарегистрирован: 28 окт 2011, 18:10

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение blwind » 16 ноя 2017, 23:16

Кстати, есть похожая штука: https://www.totaljs.com/flow/, а к ней еще такая: https://www.totaljs.com/flowboard/

stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 04 дек 2017, 23:39

Немного оживлю тему.
1. Освещение. Добавил управление со смартфона. На сервере поднял MQTT сервер москито. Он у меня хранить информацию о состоянии всех топиков.
Освещение.png
Освещение.png (113.88 КБ) 517 просмотров
Код:

Код: Выделить всё

[{"id":"70449def.19625c","type":"tab","label":"Освещение 1й этаж","disabled":false,"info":"Взаимодействие с Megad"},{"id":"2b3639f5.1923ee","type":"switch","z":"70449def.19625c","name":"MegaD 14-SD IN","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"15","vt":"str"},{"t":"eq","v":"16","vt":"str"},{"t":"eq","v":"17","vt":"str"},{"t":"eq","v":"18","vt":"str"},{"t":"eq","v":"19","vt":"str"},{"t":"eq","v":"20","vt":"str"},{"t":"eq","v":"21","vt":"str"}],"checkall":"true","outputs":7,"x":486,"y":168.99998474121094,"wires":[["82555089.35d57"],["82555089.35d57"],["82555089.35d57"],["82555089.35d57"],["82555089.35d57"],["82555089.35d57"],["82555089.35d57"]],"outputLabels":["p0","p1","p2","p3","p4","p5","p6"]},{"id":"49c222ee.1baf84","type":"function","z":"70449def.19625c","name":"Port","func":"msg.payload=msg.payload.pt;\nreturn msg; ","outputs":"1","noerr":0,"x":308,"y":168.99998474121094,"wires":[["2b3639f5.1923ee"]]},{"id":"82555089.35d57","type":"function","z":"70449def.19625c","name":"Выбор порта","func":"if (msg.payload === \"15\")\n{\nlet p22 = flow.get('p22')||0;\nif (p22 === 0) {\n flow.p22 = 1;\n} else {\n flow.p22 = 0;\n}\nmsg.payload = flow.p22;\nmsg.topic = \"megad/1/14/22\";\nreturn msg;\n\n} else if (msg.payload === \"16\")\n//********* спальня *************\n{\n let p23 = flow.get('p23')||0;\nif (p23 === 0) {\n flow.p23 = 1;\n} else {\n flow.p23 = 0;\n}   \nmsg.payload = flow.p23;\nmsg.topic = \"megad/1/14/23\";\nreturn msg;   \n} else if (msg.payload === \"17\")\n// ********* сан. узел *************\n{\nlet p24 = flow.get('p24')||0;\nif (p24 === 0) {\n flow.p24 = 1;\n} else {\n flow.p24 = 0;\n}   \nmsg.payload = flow.p24;\nmsg.topic = \"megad/1/14/24\";\nreturn msg;   \n}else if (msg.payload === \"18\")\n// ****** лампа холл около кухни ********\n{\n let p25 = flow.get('p25')||0;\nif (p25 === 0) {\n flow.p25 = 1;\n} else {\n flow.p25 = 0;\n}    \nmsg.payload = flow.p25;\nmsg.topic = \"megad/1/14/25\";\nreturn msg;   \n} else if (msg.payload === \"19\")\n// ***** техническое помещение *******\n{\n let p26 = flow.get('p26')||0;\nif (p26 === 0) {\n flow.p26 = 1;\n} else {\n flow.p26 = 0;\n}   \nmsg.payload = flow.p26;\nmsg.topic = \"megad/1/14/26\";\nreturn msg;   \n} else if (msg.payload === \"20\")\n// ***** прихожая *************\n{\n let p27 = flow.get('p27')||0;\nif (p27 === 0) {\n flow.p27 = 1;\n} else {\n flow.p27 = 0;\n}     \nmsg.payload = flow.p27;\nmsg.topic = \"megad/1/14/27\";\nreturn msg;   \n} else if (msg.payload === \"21\")\n{\nlet p28 = flow.get('p28')||0;\nif (p28 === 0) {\n flow.p28 = 1;\n} else {\n flow.p28 = 0;\n}   \nmsg.payload = flow.p28;\nmsg.topic = \"megad/1/14/28\";\nreturn msg;   \n} ","outputs":"1","noerr":0,"x":740,"y":162.99998474121094,"wires":[["7cb734c.3ed9ecc","da73c20b.67224"]]},{"id":"a0e16569.15fe78","type":"http in","z":"70449def.19625c","name":"mega2","url":"/mega2","method":"get","upload":false,"swaggerDoc":"","x":67,"y":257.99993896484375,"wires":[["7be4b40.628424c","a0bb6a5f.bcc288"]]},{"id":"7be4b40.628424c","type":"function","z":"70449def.19625c","name":"All OR Pt","func":"\nif (\"pt\" in msg.payload) {\n  return [ msg, null ];\n} else {\n    return [null, msg];\n //var msg1={};\n //var arr = msg.payload.all.split(';');\n //arr.forEach(function(item, i, arr) {\n //    var arr2 = item.split('/');\n //    if (arr2.length ===1) {\n         // в символах нет скобки\n //        msg1 = item;\n //    } else {\n         // смотрим перые символы\n  //       if (arr2[0]==='ON') {\n //           msg1 = arr2[0]; \n //        } else if (arr2[0]==='OFF') {\n //           msg1 = arr2[0]; \n //        }\n //    }\n//}\n//);\n}\n\n\n","outputs":"2","noerr":0,"x":204.99998474121094,"y":214.99998474121094,"wires":[["49c222ee.1baf84"],["48dca30d.8f5edc"]]},{"id":"7cb734c.3ed9ecc","type":"mqtt out","z":"70449def.19625c","name":"","topic":"","qos":"","retain":"","broker":"487bc286.093f14","x":917.5,"y":162.7999725341797,"wires":[]},{"id":"a98fb3f.fee61d","type":"mqtt in","z":"70449def.19625c","name":"Реле в с/у","topic":"megad/1/14/24","qos":"2","broker":"487bc286.093f14","x":484.20001220703125,"y":257.1999816894531,"wires":[["294353c3.ec0264"]]},{"id":"b99114bb.e52448","type":"http request","z":"70449def.19625c","name":"Свет в сан. узле","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=24:{{payload}}","tls":"","x":992.9000854492188,"y":251,"wires":[[]]},{"id":"e14514cc.a612e","type":"mqtt in","z":"70449def.19625c","name":"Реле фиг его знает","topic":"megad/1/14/22","qos":"2","broker":"487bc286.093f14","x":517.2000122070312,"y":307.20001220703125,"wires":[["90cf51a7.f65378"]]},{"id":"90cf51a7.f65378","type":"http request","z":"70449def.19625c","name":"Свет фиг его знает","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=22:{{payload}}","tls":"","x":983.9000244140625,"y":302,"wires":[[]]},{"id":"4963f82f.7d24e","type":"mqtt in","z":"70449def.19625c","name":"Реле в спальне","topic":"megad/1/14/23","qos":"2","broker":"487bc286.093f14","x":506.20001220703125,"y":366.20001220703125,"wires":[["64777221.e4fa74"]]},{"id":"96c24450.7fa3d","type":"http request","z":"70449def.19625c","name":"Свет в спальне","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=23:{{payload}}","tls":"","x":1008.9000244140625,"y":367,"wires":[[]]},{"id":"57c8675a.0677b8","type":"mqtt in","z":"70449def.19625c","name":"Реле в холл","topic":"megad/1/14/25","qos":"2","broker":"487bc286.093f14","x":497.20001220703125,"y":420.20001220703125,"wires":[["181f1d89.30ff3a"]]},{"id":"181f1d89.30ff3a","type":"http request","z":"70449def.19625c","name":"Свет в холл?","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=25:{{payload}}","tls":"","x":1007.9000244140625,"y":413,"wires":[[]]},{"id":"1614d212.00410e","type":"mqtt in","z":"70449def.19625c","name":"Реле в тех. помещ.","topic":"megad/1/14/26","qos":"2","broker":"487bc286.093f14","x":515.2000122070312,"y":488.20001220703125,"wires":[["2c867ef5.3220ba"]]},{"id":"6b060909.b3a04","type":"http request","z":"70449def.19625c","name":"Свет в тех. пом.","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=26:{{payload}}","tls":"","x":999.9000244140625,"y":484,"wires":[[]]},{"id":"220b8cba.620dec","type":"mqtt in","z":"70449def.19625c","name":"Реле в прихожей","topic":"megad/1/14/27","qos":"2","broker":"487bc286.093f14","x":516.2000122070312,"y":544.2000122070312,"wires":[["d16460f3.4f8ca"]]},{"id":"4e0d9d44.411234","type":"http request","z":"70449def.19625c","name":"Свет в прихожей","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=27:{{payload}}","tls":"","x":1011.9000244140625,"y":547,"wires":[[]]},{"id":"2078c9ac.28c946","type":"mqtt in","z":"70449def.19625c","name":"Реле в фиг. его знает","topic":"megad/1/14/28","qos":"2","broker":"487bc286.093f14","x":532.2000122070312,"y":604.2000122070312,"wires":[["d4732f54.b6228"]]},{"id":"d4732f54.b6228","type":"http request","z":"70449def.19625c","name":"Свет в фиг его","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?cmd=28:{{payload}}","tls":"","x":1018.9000244140625,"y":600,"wires":[[]]},{"id":"da73c20b.67224","type":"debug","z":"70449def.19625c","name":"","active":false,"console":"false","complete":"true","x":904.5000457763672,"y":95.80000305175781,"wires":[]},{"id":"48dca30d.8f5edc","type":"debug","z":"70449def.19625c","name":"","active":false,"console":"false","complete":"true","x":285.49998474121094,"y":269.8000030517578,"wires":[]},{"id":"7eef377f.dbe7f","type":"ui_switch","z":"70449def.19625c","name":"Свет в с/у","label":"Свет в с/у","group":"3f5dd050.cd46b8","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"1","onvalueType":"str","onicon":"","oncolor":"","offvalue":"0","offvalueType":"str","officon":"","offcolor":"","x":802.5,"y":250.5999755859375,"wires":[["b99114bb.e52448"]]},{"id":"294353c3.ec0264","type":"function","z":"70449def.19625c","name":"","func":"if (msg.payload === \"1\")\n{\n    flow.p24 = \"1\";\n      } else {\n\tflow.p24 = \"0\";\n}    \nreturn msg;","outputs":1,"noerr":0,"x":659.5,"y":251.5999755859375,"wires":[["7eef377f.dbe7f"]]},{"id":"a0bb6a5f.bcc288","type":"debug","z":"70449def.19625c","name":"","active":false,"console":"false","complete":"true","x":147,"y":101,"wires":[]},{"id":"cdfd4466.19fc6","type":"ui_switch","z":"70449def.19625c","name":"Свет в спальне","label":"Свет в спальне","group":"ff1c3539.36b728","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"1","onvalueType":"str","onicon":"","oncolor":"","offvalue":"0","offvalueType":"str","officon":"","offcolor":"","x":820,"y":367,"wires":[["96c24450.7fa3d"]]},{"id":"64777221.e4fa74","type":"function","z":"70449def.19625c","name":"","func":"if (msg.payload === \"1\")\n{\n    flow.p23 = \"1\";\n      } else {\n\tflow.p23 = \"0\";\n}    \nreturn msg;","outputs":1,"noerr":0,"x":669,"y":367,"wires":[["cdfd4466.19fc6"]]},{"id":"2c867ef5.3220ba","type":"function","z":"70449def.19625c","name":"","func":"if (msg.payload === \"1\")\n{\n    flow.p26 = \"1\";\n      } else {\n\tflow.p26 = \"0\";\n}    \nreturn msg;","outputs":1,"noerr":0,"x":682,"y":488,"wires":[["414c7301.ef815c"]]},{"id":"414c7301.ef815c","type":"ui_switch","z":"70449def.19625c","name":"Тех. помещ.","label":"Свет в тех. помещении","group":"ff1c3539.36b728","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"1","onvalueType":"str","onicon":"","oncolor":"","offvalue":"0","offvalueType":"str","officon":"","offcolor":"","x":821,"y":487,"wires":[["6b060909.b3a04"]]},{"id":"d16460f3.4f8ca","type":"function","z":"70449def.19625c","name":"","func":"if (msg.payload === \"1\")\n{\n    flow.p27 = \"1\";\n      } else {\n\tflow.p27 = \"0\";\n}    \nreturn msg;","outputs":1,"noerr":0,"x":678,"y":547,"wires":[["3d5bab4e.2c4e5c"]]},{"id":"3d5bab4e.2c4e5c","type":"ui_switch","z":"70449def.19625c","name":"Прихож.","label":"Свет в прихожей","group":"ff1c3539.36b728","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"1","onvalueType":"str","onicon":"","oncolor":"","offvalue":"0","offvalueType":"str","officon":"","offcolor":"","x":829,"y":545,"wires":[["4e0d9d44.411234"]]},{"id":"93d1b29f.b44a3","type":"ui_switch","z":"70449def.19625c","name":"Выключить свет на первом этаже","label":"Выключить свет на первом этаже","group":"9c30dfa0.6949a","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"true","onvalueType":"str","onicon":"","oncolor":"","offvalue":"false","offvalueType":"str","officon":"","offcolor":"","x":568,"y":690,"wires":[["eb070bab.75571"]]},{"id":"eb070bab.75571","type":"function","z":"70449def.19625c","name":"","func":"var msgList = [];\nvar str = \"\";\n    for (var i=22; i<29; i++) {\n      str = \"megad/1/14/\"+String(i);\n      msgList.push({payload:0, topic:str});\n      str2 = 'p'+String(i);\n      flow.set(str2,0);\n    }\n\nreturn [msgList];","outputs":1,"noerr":0,"x":799,"y":689,"wires":[["19ec6648.ef68aa"]]},{"id":"19ec6648.ef68aa","type":"mqtt out","z":"70449def.19625c","name":"","topic":"","qos":"","retain":"","broker":"487bc286.093f14","x":976,"y":689,"wires":[]},{"id":"487bc286.093f14","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"Home Leo","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"3f5dd050.cd46b8","type":"ui_group","z":"","name":"Свет","tab":"a08e306e.8de848","order":1,"disp":true,"width":"6"},{"id":"ff1c3539.36b728","type":"ui_group","z":"","name":"Свет","tab":"5f48951c.d3c624","order":2,"disp":true,"width":"6"},{"id":"9c30dfa0.6949a","type":"ui_group","z":"","name":"Управление","tab":"2d614932.c19556","order":1,"disp":true,"width":"6"},{"id":"a08e306e.8de848","type":"ui_tab","z":"","name":"Санузел","icon":"dashboard","order":4},{"id":"5f48951c.d3c624","type":"ui_tab","z":"","name":"Спальня","icon":"dashboard","order":3},{"id":"2d614932.c19556","type":"ui_tab","z":"","name":"Дом","icon":"dashboard","order":1}]

stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 04 дек 2017, 23:41

Текущие недоработки:
Хотел бы сохранять при поступлении от Меги команды "all" с состоянием портов их статус в MQTT. Но надо парсить в функции и сохранять. Думаю, потом добавлю.

stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 04 дек 2017, 23:43

2. Получение температуры:
Температура.png
Температура.png (17.02 КБ) 517 просмотров

stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 04 дек 2017, 23:44

ну и управление жаллюзи
Жаллюзи.png
Жаллюзи.png (47.74 КБ) 517 просмотров

stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 04 дек 2017, 23:45

Жаллюзи думаю переделаю на switch

stilet69
Сообщения: 73
Зарегистрирован: 30 июн 2017, 19:14

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение stilet69 » 15 янв 2018, 15:36

В общем перешел на Home Assistent как платформу для автоматизации по ряду причин. Однако показания по http у меня парсятся и переводятся в mqtt именно Node red так как не удалось добится устойчивой работы Меги в mqtt режиме.
По просьбе в личке выкладываю парсинг температуры в node red

Код: Выделить всё

[{"id":"87ff2f26.29d8c8","type":"inject","z":"5e430a7f.292a5c","name":"","topic":"","payload":"29","payloadType":"str","repeat":"600","crontab":"","once":false,"x":112,"y":100,"wires":[["b445365c.28361"]]},{"id":"b445365c.28361","type":"http request","z":"5e430a7f.292a5c","name":"Получение температуры","method":"GET","ret":"txt","url":"http://192.168.0.14/sec/?pt=29&cmd=get","tls":"","x":311,"y":98,"wires":[["92211e4e.86e57"]]},{"id":"52314d56.b24a6c","type":"mqtt out","z":"5e430a7f.292a5c","name":"","topic":"megad/14/29","qos":"0","retain":"true","broker":"487bc286.093f14","x":721.5,"y":97,"wires":[]},{"id":"af84fdbd.3b8a4","type":"inject","z":"5e430a7f.292a5c","name":"","topic":"","payload":"7","payloadType":"str","repeat":"600","crontab":"","once":false,"x":106,"y":261,"wires":[["e40191b2.1cee4"]]},{"id":"e40191b2.1cee4","type":"http request","z":"5e430a7f.292a5c","name":"Наружная температура","method":"GET","ret":"txt","url":"http://192.168.0.15/sec/?pt=7&cmd=get","tls":"","x":315,"y":263,"wires":[["6b5d287a.56e348"]]},{"id":"95c3fed2.00aea","type":"mqtt out","z":"5e430a7f.292a5c","name":"","topic":"megad/15/7","qos":"0","retain":"true","broker":"487bc286.093f14","x":678.5,"y":260,"wires":[]},{"id":"6b5d287a.56e348","type":"function","z":"5e430a7f.292a5c","name":"","func":"s = msg.payload;\narray = s.split(\":\");\nmsg.payload = array[1];\nreturn msg;","outputs":1,"noerr":0,"x":527.5,"y":261.5,"wires":[["95c3fed2.00aea","decc2a0.35885d8"]]},{"id":"decc2a0.35885d8","type":"debug","z":"5e430a7f.292a5c","name":"","active":false,"console":"false","complete":"true","x":651.5,"y":331,"wires":[]},{"id":"1f0c7a52.41b52e","type":"comment","z":"5e430a7f.292a5c","name":"Наружная температура DS18B20","info":"","x":174.5,"y":202.5,"wires":[]},{"id":"52813639.ce826","type":"comment","z":"5e430a7f.292a5c","name":"Температура в тех помещении DHT22","info":"","x":200,"y":46,"wires":[]},{"id":"92211e4e.86e57","type":"function","z":"5e430a7f.292a5c","name":"parse","func":"var arr = msg.payload.split('/');\nvar temp = arr[0].split(':');\nvar hum = arr[1].split(':');\nhum[1] = hum[1].replace('}\"','');\nstr = \"{\\\"temp\\\":\"+temp[1]+\",\"+ \"\\\"hum\\\":\"+ hum[1] +\"}\";\nstr = str.replace(/^\"+|\"+$/g, '');\nmsg.payload = JSON.parse(str);\nreturn msg;","outputs":1,"noerr":0,"x":519.5,"y":97.5,"wires":[["52314d56.b24a6c"]]},{"id":"c19934f7.a65028","type":"inject","z":"5e430a7f.292a5c","name":"","topic":"","payload":"8","payloadType":"str","repeat":"600","crontab":"","once":false,"x":108,"y":428,"wires":[["b0aeb8da.b9257"]]},{"id":"b0aeb8da.b9257","type":"http request","z":"5e430a7f.292a5c","name":"Температура спальня","method":"GET","ret":"txt","url":"http://192.168.0.15/sec/?pt=8&cmd=get","tls":"","x":317,"y":430,"wires":[["315248a2.ea36e"]]},{"id":"710f33b6.ad385c","type":"mqtt out","z":"5e430a7f.292a5c","name":"","topic":"megad/15/8","qos":"0","retain":"true","broker":"487bc286.093f14","x":680.5,"y":427,"wires":[]},{"id":"315248a2.ea36e","type":"function","z":"5e430a7f.292a5c","name":"","func":"s = msg.payload;\narray = s.split(\":\");\nmsg.payload = array[1];\nreturn msg;","outputs":1,"noerr":0,"x":529.5,"y":428.5,"wires":[["710f33b6.ad385c","24dd38c0.845008"]]},{"id":"24dd38c0.845008","type":"debug","z":"5e430a7f.292a5c","name":"","active":false,"console":"false","complete":"true","x":653.5,"y":498,"wires":[]},{"id":"487bc286.093f14","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"Home Leo","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]
Изображение

OlegJktu84
Сообщения: 633
Зарегистрирован: 16 фев 2016, 19:52

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение OlegJktu84 » 16 янв 2018, 15:15

Выкладывайте, очень интересно. Кусочками ваши примеры использую.
Форма для экспорта-импорта у nod-red удобная

bravo.123
Сообщения: 2
Зарегистрирован: 15 окт 2018, 16:09

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение bravo.123 » 02 дек 2018, 18:23

Немного оживлю топик
stilet69 писал(а):
15 янв 2018, 15:36

По просьбе в личке выкладываю парсинг температуры в node red
Этот парсинг

Код: Выделить всё

s = msg.payload;
array = s.split(":");
msg.payload = array[1];
return msg;
, не учитывает ошибок , например если потерялась связь между сервером и мегой, то на входе вы получите
что-то типа msg.payload="Error: connect EHOSTUNREACH 192.168.66.111:80", и соответственно на выходе получите не температуру, а "connect EHOSTUNREACH 192.168.66.111"
Я сделал так (коряво конечно, но худо-бедно ошибки обрабатывает):

Код: Выделить всё

// Парсим пайлоад c обработкой ошибки
// верный ответ меги "temp:24.12"
// Ошибка связи "Error: connect EHOSTUNREACH 192.168.66.111:80"
// Если ошибка возвращаем 0
var newMsg1 = { 
 payload: msg.payload.match( /(?:[:]-?[0-9]+)\.(?:[0-9]{2})/g )
};
if (newMsg1.payload === null){
   newMsg1.payload = ["0"];
}
else {
    newMsg1 = {
        payload: msg.payload.match( /(?:[0-9]+)\.(?:[0-9]{2})/g )
    }
}

newMsg1.topic = 'Port_30';
return newMsg1;
Может кто-то всё-же использует node-red, было бы интересно посмотреть на ваши решения или это совсем тупиковая ветвь развития?

OlegJktu84
Сообщения: 633
Зарегистрирован: 16 фев 2016, 19:52

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение OlegJktu84 » 03 дек 2018, 12:03

Используют node-red. Просто часто только для правил и в составе какой нибудь системы.
Вот пример с IoBroker https://forum.iobroker.net/viewtopic.ph ... 69#p146339
Там на форум можно выкладывать любые примеры и вопросы с Node-red , не только на IoBroker.

Народ промышленную автоматизацию делает на Node-red. Вопросы-ответы в телеграмм https://t.me/node_red
Но русскоязычного форума по Node-red не вызрело.

d.v.ermakov
Сообщения: 605
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

Re: Использование NODE-RED в качестве сервера для MegaD

Сообщение d.v.ermakov » 07 дек 2018, 17:34

Я использую Node-RED. Но, только для правил и только через OpenHAB. Парсить в самом Node-RED, ИМХО, извращение. Чтобы полноценно работать с Мегой, нужен http-сервер, с mqtt полноценной работы не получится (Мега имеет отличающуюся от mqtt идеодогию, я об этом уже пару раз писал).

Ответить