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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 02 окт 2017, 19:09

Кто-нибудь использует связку NODE-RED в качестве сервера для MegaD?
Если да, то как настривали вход и какую ноду при этом использовали?
Если прописать в настройках megad сервером Ip и порт nodered, то как можно отслеживать события, приходящие с megad?
Через get-запросы все прекрасно работает, но не хочется засорять сеть постоянными запросами с сервера.

captain
Сообщения: 18
Зарегистрирован: 29 дек 2013, 13:51

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

Сообщение captain » 03 окт 2017, 14:30

Да можно,надо слушать приходящие события,сам не делал но думаю там вообще нет проблем.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 03 окт 2017, 14:55

captain писал(а):Да можно,надо слушать приходящие события,сам не делал но думаю там вообще нет проблем.
Я тоже понимаю что должно быть можно и пробовал разные варианты, но ни одного рабочего до сих пор не нашел.

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

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

Сообщение stilet69 » 04 окт 2017, 22:15

Я думаю можно только через MQTT которое только в MegaD-2561 поддерживаются (да и то в бета версии и с не полными возможностями). А так конечно было бы замнчиво.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 05 окт 2017, 10:38

stilet69 писал(а):Я думаю можно только через MQTT которое только в MegaD-2561 поддерживаются (да и то в бета версии и с не полными возможностями). А так конечно было бы замнчиво.
Это первое что пришло на ум и это было бы идеальное решение.
Вчера только обновил прошивку, буду пробовать.
Вообще полноценная поддержка mqtt в меге сделала бы его вообще самолетом, хотя он и так немеряно крут.

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

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

Сообщение d.v.ermakov » 05 окт 2017, 15:02

Я использую Node-RED, через openHAB.

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

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

Сообщение OlegJktu84 » 05 окт 2017, 18:13

Тоже юзал node-red в OpenHab и еще в IoBroker.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 06 окт 2017, 23:21

Как отрабатывать в nodered события с megad, вроде разобрался.
nodered.png
nodered.png (49.36 КБ) 4744 просмотра
Только почему-то если я делаю из консоли компа той же сети запрос на сервер
#curl http://192.168.55.2:1880/mega2?pt=1
то этот запрос до сервера доходит, его видно в логах и его дальше можно обрабатывать в nodered.
Если замыкаю вход меги или щелкаю выключателем (что равносильно), то запросы до сервера не доходят.
ip nodered прописан в настройках этого megad сервером, в качестве скрипта указана нода http in (mega2).
Т.е логически на выходе меги мы должны получить такой же запрос http://192.168.55.2:1880/mega2?pt=1.
Роутер (mikrotik) показывает что запрос присутствует, но сервер его почему-то не видит. Сам запрос посмотреть пока не получилось.

captain
Сообщения: 18
Зарегистрирован: 29 дек 2013, 13:51

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

Сообщение captain » 08 окт 2017, 08:28

Метод получения get или post попробуйте разные варианты!

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

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

Сообщение stilet69 » 08 окт 2017, 20:42

А вы не могли бы поделиться схемой приведенной выше? Чтобы не тратить время на то, чтобы повторить ваш путь.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 21:14

GET, POST... Все варианты перепробовал.
stilet69 , пожалуйста. Просто можете импортировать его.

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

[{"id":"20f8e3ab.a54ffc","type":"tab","label":"megadflow","disabled":false,"info":"Взаимодействие с Megad"},{"id":"be226da5.f90fe","type":"template","z":"20f8e3ab.a54ffc","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","x":356,"y":132,"wires":[["88d4e7d6.c0f508"]]},{"id":"bb1870ee.e632","type":"http in","z":"20f8e3ab.a54ffc","name":"mega2","url":"/mega2","method":"get","upload":false,"swaggerDoc":"","x":81,"y":134,"wires":[["be226da5.f90fe","97ba1193.1d584","10725ed2.1e1151"]]},{"id":"88d4e7d6.c0f508","type":"http response","z":"20f8e3ab.a54ffc","name":"","statusCode":"","headers":{"content-type":"text/plain"},"x":707,"y":126,"wires":[]},{"id":"10725ed2.1e1151","type":"debug","z":"20f8e3ab.a54ffc","name":"","active":true,"console":"false","complete":"false","x":1004,"y":219,"wires":[]},{"id":"459d0bb.989b8f4","type":"switch","z":"20f8e3ab.a54ffc","name":"megainput","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"}],"checkall":"true","outputs":7,"x":432,"y":407,"wires":[["ced850cf.13915"],[],[],[],[],[],[]],"outputLabels":["p0","p1","p2","p3","p4","p5","p6"]},{"id":"ced850cf.13915","type":"chatbot-message","z":"20f8e3ab.a54ffc","name":"in0","message":[{"message":"in0"}],"answer":false,"track":false,"x":694,"y":331,"wires":[["10725ed2.1e1151"]]},{"id":"97ba1193.1d584","type":"function","z":"20f8e3ab.a54ffc","name":"filter","func":"msg.payload=msg.req.query.pt; return msg; ","outputs":1,"noerr":0,"x":260.3333282470703,"y":272.98333740234375,"wires":[["459d0bb.989b8f4"]]}]

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 08 окт 2017, 21:44

Maxmen, на всякий случай уточню, порт 1880 указан в настройках IP-адреса сервера?
Если да, тогда нужно смотреть логи Node-RED.
Также можно запустить tcpdump и посмотреть, приходит ли пакет от устройства и если да, то что ему отвечает сервер.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 21:46

Andrey_B писал(а):Maxmen, на всякий случай уточню, порт 1880 указан в настройках IP-адреса сервера?
Если да, тогда нужно смотреть логи Node-RED.
Также можно запустить tcpdump и посмотреть, приходит ли пакет от устройства и если да, то что ему отвечает сервер.
Да, порт 1880 указан в настройках сервера.
В логах nodered видно обращения curl http://192.168.55.2:1880/mega2?pt=0 , но от меги запросы в логах не видно совсем.
Обрезка ненужного в ноде function, на выходе которой е имеем только номер входа меги.

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

msg.payload=msg.req.query.pt; return msg; 

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 21:57

tcpdump тоже не видит пакетов.

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

tcpdump -vv -i eth0 src 192.168.55.12 and dst 192.168.55.2 and port 1880
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
Настройки меги
megad_server.png
megad_server.png (6.07 КБ) 4687 просмотров
Входная нода
megad_in_node.png
megad_in_node.png (5.14 КБ) 4687 просмотров
[s]Сниффер на микротике пакеты видит, но они нулевого размера. Так и должно быть?[/s]
мегад_пакеты.png
мегад_пакеты.png (4.48 КБ) 4687 просмотров
пакеты вроде есть, но nodered их по-прежнему не видит.
мегад_пакеты2.png
мегад_пакеты2.png (24.2 КБ) 4687 просмотров
С сетью все в порядке 100% Тем же nodered эта мега опрашивается без проблем.
Прошивку на мегу поставил fw: 4.17b6
Что не так?????

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 08 окт 2017, 22:28

Если tcpdump пакетов не видит, то совершенно логично, что их не видит и Node-RED. Было бы странно, если бы было иначе.
На Mikrotik'е нет никаких правил, которые бы блокировали пакеты от устройства? Проверьте ACL.
Кстати, если с сервера запросить
curl 192.168.55.12
обмен информацией с устройством пройдет штатно?

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 22:31

Микротик пакеты не режет, интерфейсы сервера и меги в бридже.
Андрей, с сервера запросы идут.

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

~# curl http://192.168.55.12/sec/
MegaD-2561 by <a href=http://ab-log.ru>ab-log.ru</a> (fw: 4.17b6)<br><a href=/sec/?cf=1>Config</a><br>-- MODS --<br><a href=/sec/?cf=3>XP1</a><br><a href=/sec/?cf=4>XP2</a><br>-- XT2 --<br><a href=/sec/?pt=30>P30 - IN</a><br><a href=/sec/?pt=31>P31 - NC</a><br><a href=/sec/?pt=32>P32 - NC</a><br><a href=/sec/?pt=33>P33 - NC</a><br><a href=/sec/?pt=34>P34 - NC</a><br><a href=/sec/?pt=35>P35 - NC</a><br>-- XP5/6 --<br><a href=/sec/?pt=36>P36 - NC</a><br><a href=/sec/?pt=37>P37 - NC</a>
root@cubietruck:~#
Разобрался. Не без вашей помощи.
Кроме микротика еще надо было в настройках меги название скрипта указывать без слэша.
Всем спасибо!
Последний раз редактировалось Maxmen 08 окт 2017, 23:09, всего редактировалось 1 раз.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 22:51

Похоже что микроик все-таки рубил пакеты, добавил правило. Сейчас tcpdump все-таки пакеты видит, но nodered их по-прежнему игнорирует и в его логах они отсутствуют.

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

root@cubietruck:~# tcpdump -vv -i eth0 src 192.168.55.12 and dst 192.168.55.2
    192.168.55.12.2933 > cubietruck.1880: Flags [S], cksum 0x9298 (correct), seq 768, win 768, options [mss 790], length 0
21:47:24.180656 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.55.12.2933 > cubietruck.1880: Flags [.], cksum 0x0a75 (correct), seq 769, ack 2053579211, win 1024, length 0
21:47:24.181572 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 144)
    192.168.55.12.2933 > cubietruck.1880: Flags [P.], cksum 0xd975 (correct), seq 0:104, ack 1, win 1024, length 104
21:47:24.196252 IP (tos 0x0, ttl 64, id 8650, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.55.12.2933 > cubietruck.1880: Flags [F.], cksum 0x0884 (correct), seq 104, ack 393, win 1024, length 0
21:47:24.198769 IP (tos 0x0, ttl 64, id 8651, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.55.12.2933 > cubietruck.1880: Flags [.], cksum 0x0883 (correct), seq 105, ack 394, win 1024, length 0
^C
145 packets captured
145 packets received by filter
0 packets dropped by kernel
root@cubietruck:~#

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 23:22

В общем, всем кто заинтересован выкладываю.
Nodered получает от меги данные, потом их можно дальше рулить.
Пример:

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

object
pt: "20"
cnt: "3"
mdid: "mega2"
Для импорта с фильтром входов:

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

[{"id":"20f8e3ab.a54ffc","type":"tab","label":"megadflow","disabled":false,"info":"Взаимодействие с Megad"},{"id":"be226da5.f90fe","type":"template","z":"20f8e3ab.a54ffc","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","x":356,"y":132,"wires":[["88d4e7d6.c0f508"]]},{"id":"bb1870ee.e632","type":"http in","z":"20f8e3ab.a54ffc","name":"mega2","url":"/mega2","method":"get","upload":false,"swaggerDoc":"","x":81,"y":134,"wires":[["be226da5.f90fe","97ba1193.1d584"]]},{"id":"88d4e7d6.c0f508","type":"http response","z":"20f8e3ab.a54ffc","name":"","statusCode":"","headers":{"content-type":"text/plain"},"x":707,"y":126,"wires":[]},{"id":"459d0bb.989b8f4","type":"switch","z":"20f8e3ab.a54ffc","name":"megainput","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"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":14,"x":469,"y":351,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["p0","p1","p2","p3","p4","p5","p6","p15",null,null,null,null,null,null]},{"id":"97ba1193.1d584","type":"function","z":"20f8e3ab.a54ffc","name":"filter","func":"msg.payload=msg.req.query.pt; return msg; ","outputs":1,"noerr":0,"x":260.3333282470703,"y":272.98333740234375,"wires":[["459d0bb.989b8f4"]]}]

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 08 окт 2017, 23:49

Остался 1 вопрос - как можно имитировать нажатие кнопки чтобы мега отправляла на сервер событие?

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

?pt=15&cmd=d
Не отправляет.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 09 окт 2017, 12:28

Запрос "cmd=d" предназначен для того, чтобы дать команду контроллеру выполнить сценарий (Act) для указанного порта.
Этот запрос не предназначен для имитации каких-то событий. Имитировать нажатие кнопки внешним запросом нельзя, так как это лишено практического смысла.

Ответить