Использование NODE-RED в качестве сервера для MegaD
Использование NODE-RED в качестве сервера для MegaD
Кто-нибудь использует связку NODE-RED в качестве сервера для MegaD?
Если да, то как настривали вход и какую ноду при этом использовали?
Если прописать в настройках megad сервером Ip и порт nodered, то как можно отслеживать события, приходящие с megad?
Через get-запросы все прекрасно работает, но не хочется засорять сеть постоянными запросами с сервера.
Если да, то как настривали вход и какую ноду при этом использовали?
Если прописать в настройках megad сервером Ip и порт nodered, то как можно отслеживать события, приходящие с megad?
Через get-запросы все прекрасно работает, но не хочется засорять сеть постоянными запросами с сервера.
Re: Использование NODE-RED в качестве сервера для MegaD
Да можно,надо слушать приходящие события,сам не делал но думаю там вообще нет проблем.
Re: Использование NODE-RED в качестве сервера для MegaD
Я тоже понимаю что должно быть можно и пробовал разные варианты, но ни одного рабочего до сих пор не нашел.captain писал(а):Да можно,надо слушать приходящие события,сам не делал но думаю там вообще нет проблем.
Re: Использование NODE-RED в качестве сервера для MegaD
Я думаю можно только через MQTT которое только в MegaD-2561 поддерживаются (да и то в бета версии и с не полными возможностями). А так конечно было бы замнчиво.
Re: Использование NODE-RED в качестве сервера для MegaD
Это первое что пришло на ум и это было бы идеальное решение.stilet69 писал(а):Я думаю можно только через MQTT которое только в MegaD-2561 поддерживаются (да и то в бета версии и с не полными возможностями). А так конечно было бы замнчиво.
Вчера только обновил прошивку, буду пробовать.
Вообще полноценная поддержка mqtt в меге сделала бы его вообще самолетом, хотя он и так немеряно крут.
-
- Администратор
- Сообщения: 2191
- Зарегистрирован: 29 май 2015, 21:23
- Откуда: Екатеринбург, Нижний Тагил
Re: Использование NODE-RED в качестве сервера для MegaD
Я использую Node-RED, через openHAB.
-
- Сообщения: 651
- Зарегистрирован: 16 фев 2016, 19:52
Re: Использование NODE-RED в качестве сервера для MegaD
Тоже юзал node-red в OpenHab и еще в IoBroker.
Re: Использование NODE-RED в качестве сервера для MegaD
Как отрабатывать в nodered события с megad, вроде разобрался.
#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) показывает что запрос присутствует, но сервер его почему-то не видит. Сам запрос посмотреть пока не получилось.
Только почему-то если я делаю из консоли компа той же сети запрос на сервер#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) показывает что запрос присутствует, но сервер его почему-то не видит. Сам запрос посмотреть пока не получилось.
Re: Использование NODE-RED в качестве сервера для MegaD
Метод получения get или post попробуйте разные варианты!
Re: Использование NODE-RED в качестве сервера для MegaD
А вы не могли бы поделиться схемой приведенной выше? Чтобы не тратить время на то, чтобы повторить ваш путь.
Re: Использование NODE-RED в качестве сервера для MegaD
GET, POST... Все варианты перепробовал.
stilet69 , пожалуйста. Просто можете импортировать его.
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"]]}]
Re: Использование NODE-RED в качестве сервера для MegaD
Maxmen, на всякий случай уточню, порт 1880 указан в настройках IP-адреса сервера?
Если да, тогда нужно смотреть логи Node-RED.
Также можно запустить tcpdump и посмотреть, приходит ли пакет от устройства и если да, то что ему отвечает сервер.
Если да, тогда нужно смотреть логи Node-RED.
Также можно запустить tcpdump и посмотреть, приходит ли пакет от устройства и если да, то что ему отвечает сервер.
Re: Использование NODE-RED в качестве сервера для MegaD
Да, порт 1880 указан в настройках сервера.Andrey_B писал(а):Maxmen, на всякий случай уточню, порт 1880 указан в настройках IP-адреса сервера?
Если да, тогда нужно смотреть логи Node-RED.
Также можно запустить tcpdump и посмотреть, приходит ли пакет от устройства и если да, то что ему отвечает сервер.
В логах nodered видно обращения curl http://192.168.55.2:1880/mega2?pt=0 , но от меги запросы в логах не видно совсем.
Обрезка ненужного в ноде function, на выходе которой е имеем только номер входа меги.
Код: Выделить всё
msg.payload=msg.req.query.pt; return msg;
Re: Использование NODE-RED в качестве сервера для MegaD
tcpdump тоже не видит пакетов.
Входная нода
[s]Сниффер на микротике пакеты видит, но они нулевого размера. Так и должно быть?[/s]
пакеты вроде есть, но nodered их по-прежнему не видит.
С сетью все в порядке 100% Тем же nodered эта мега опрашивается без проблем.
Прошивку на мегу поставил fw: 4.17b6
Что не так?????
Код: Выделить всё
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
Настройки меги
Прошивку на мегу поставил fw: 4.17b6
Что не так?????
Re: Использование NODE-RED в качестве сервера для MegaD
Если tcpdump пакетов не видит, то совершенно логично, что их не видит и Node-RED. Было бы странно, если бы было иначе.
На Mikrotik'е нет никаких правил, которые бы блокировали пакеты от устройства? Проверьте ACL.
Кстати, если с сервера запросить
curl 192.168.55.12
обмен информацией с устройством пройдет штатно?
На Mikrotik'е нет никаких правил, которые бы блокировали пакеты от устройства? Проверьте ACL.
Кстати, если с сервера запросить
curl 192.168.55.12
обмен информацией с устройством пройдет штатно?
Re: Использование NODE-RED в качестве сервера для MegaD
Микротик пакеты не режет, интерфейсы сервера и меги в бридже.
Андрей, с сервера запросы идут.
Разобрался. Не без вашей помощи.
Кроме микротика еще надо было в настройках меги название скрипта указывать без слэша.
Всем спасибо!
Андрей, с сервера запросы идут.
Код: Выделить всё
~# 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 раз.
Re: Использование NODE-RED в качестве сервера для MegaD
Похоже что микроик все-таки рубил пакеты, добавил правило. Сейчас 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:~#
Re: Использование NODE-RED в качестве сервера для MegaD
В общем, всем кто заинтересован выкладываю.
Nodered получает от меги данные, потом их можно дальше рулить.
Пример:
Для импорта с фильтром входов:
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"]]}]
Re: Использование NODE-RED в качестве сервера для MegaD
Остался 1 вопрос - как можно имитировать нажатие кнопки чтобы мега отправляла на сервер событие?
Не отправляет.
Код: Выделить всё
?pt=15&cmd=d
Re: Использование NODE-RED в качестве сервера для MegaD
Запрос "cmd=d" предназначен для того, чтобы дать команду контроллеру выполнить сценарий (Act) для указанного порта.
Этот запрос не предназначен для имитации каких-то событий. Имитировать нажатие кнопки внешним запросом нельзя, так как это лишено практического смысла.
Этот запрос не предназначен для имитации каких-то событий. Имитировать нажатие кнопки внешним запросом нельзя, так как это лишено практического смысла.