NEWS
Драйвер MQTT
- 
					
					
					
					
 Спасибо! Значит так… попробовал эмулировать перезагрузку контроллера просто программно отключая на несколько минут на коммутаторе порт, где висит контроллер. В этом случае все нормально, поток данных MQTT восстанавливается. Хотя в логе при этом Disconnected вообще не появляется. В отличие от случая если перегружать контроллер. Включил дебаг, перегрузил контроллер (вообще говоря проблематично его часто дергать на рабочей системе - при старте начинаются разные переходные процессы в самом контроллере, шлются смс-ки и тп) - все повторилось, поток данных не восстановился, глазами в логах ничего не попалось интересного, записей в логе ну очень много... пробовал это скопировать для детального изучения - в итоге заглючил админ в части логов (то ли от числа записей, то ли что-то не то сделал), перегрузил его, стало нормально, но логи потерял. Поскольку у меня подключено 2 сервера с MQTT драйвером к контроллеру, глянул на второй - там висит Disconnected в логах (без дебага). Ну и ни на первом ни на втором данные не идут. Подождал несколько минут - перезапустил MQTT на первом сервере - данные пошли на этот сервер. На втором - нет. Подождал еще несколько минут - перезапустил драйвер MQTT на втором сервере. Пошли данные на втором. Уж не знаю что за стечение обстоятельств, может особенности контроллера... но решил больше пока не экспериментировать с этим. Контроллер очень редко перегружается, только при большой нужде или обновлениях, потеря связи не приводит к тому же явлению (что радует), поэтому пусть будет как есть. Если что-то еще всплывет - я сообщу. Из моего ограниченного познания работы MQTT есть ощущение, что при перезагрузке контроллер сообщает, что он больше слать MQTT данные не будет, а драйвер, получив это - больше и не принимает (уйдя в disconnect), пока его не рестартануть. Иначе потеря связи при отключении порта приводила бы к похожему результату. Лог без дебага: ` > mqtt.0 2017-01-21 00:12:54.445 info Connected to 192.168.118.123 mqtt.0 2017-01-21 00:12:54.374 info Subscribe on: "/devices/#" mqtt.0 2017-01-21 00:12:54.299 info Try to connect to mqtt://192.168.118.123:1883?clientId=Zero mqtt.0 2017-01-21 00:12:52.459 info starting. Version 1.3.0 in /opt/iobroker/node_modules/iobroker.mqtt, node: v4.7.2 host.orangepizero 2017-01-21 00:12:49.145 info instance system.adapter.mqtt.0 started with pid 2984 host.orangepizero 2017-01-21 00:12:49.071 info object change system.adapter.mqtt.0 host.orangepizero 2017-01-21 00:12:47.199 info instance system.adapter.mqtt.0 terminated with code 0 (OK) mqtt.0 2017-01-21 00:12:47.086 info terminating host.orangepizero 2017-01-21 00:12:46.543 info stopInstance system.adapter.mqtt.0 killing pid 1501 host.orangepizero 2017-01-21 00:12:46.541 info stopInstance system.adapter.mqtt.0 host.orangepizero 2017-01-21 00:12:46.514 info object change system.adapter.mqtt.0 mqtt.0 2017-01-21 00:12:46.563 info Disconnected from 192.168.118.123 ` 
- 
					
					
					
					
 Ну уже не плохо  
 @Adav:перегрузил его, стало нормально, но логи потерял. ` 
 Логи потерять нельзя. Поройся в /opt/iobroker/log/2017_…log
- 
					
					
					
					
 Ну уже не плохо  
 @Adav:перегрузил его, стало нормально, но логи потерял. Логи потерять нельзя. Поройся в ****/opt/iobroker/log/2017_…log****Потерял. Когда админ заглючил, я начал стирать и стер. Ну раз такое дело - перегрузил контроллер еще раз. В этот раз логи я просто взял по ссылке, не пытаясь с ними что-то делать в интерфейсе. Итог: https://cloud.mail.ru/public/9rBC/mM5aYm4k6 Запустил дебаг, отправил контроллер в перезагрузку. Убедился, что контроллер перегрузился и что данные не приходят. Остановил дебаг, скопировал лог, перегрузил драйвер. Данные пошли. Или надо видеть логи и при рестарте драйвера? 
- 
					
					
					
					
 После обновления 1.3.0 драйвер в циклическом ребуте. ! debian 2017-02-04 18:51:50.653 info host.debian Restart adapter system.adapter.mqtt.0 because enabled 
 ! debian 2017-02-04 18:51:50.652 error host.debian instance system.adapter.mqtt.0 terminated with code 0 (OK)
 ! mqtt.0 2017-02-04 18:51:50.137 error mqtt.0 TypeError: Object 111,102,102,108,105,110,101 has no method 'trim' at receivedTopic (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:301:59) at Connection. (/opt/iobro
 ! mqtt.0 2017-02-04 18:51:50.137 error mqtt.0 uncaught exception: Object 111,102,102,108,105,110,101 has no method 'trim'
 ! mqtt.0 2017-02-04 18:51:50.136 info mqtt.0 Client [ESP826600f3f637] closed
 ! mqtt.0 2017-02-04 18:51:50.136 error mqtt.0 TypeError: Object 111,102,102,108,105,110,101 has no method 'trim' at receivedTopic (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:301:59) at Connection. (/opt/iobro
 ! mqtt.0 2017-02-04 18:51:50.136 error mqtt.0 uncaught exception: Object 111,102,102,108,105,110,101 has no method 'trim'
 ! mqtt.0 2017-02-04 18:51:50.136 warn mqtt.0 Client error [ESP826600f3f637]: Error: not implemented
 ! mqtt.0 2017-02-04 18:51:50.135 info mqtt.0 Client [ESP826600f3f637] connected
 ! mqtt.0 2017-02-04 18:51:46.293 info mqtt.0 Starting MQTT authenticated server on port 1883
 ! mqtt.0 2017-02-04 18:51:45.711 info mqtt.0 starting. Version 1.3.0 in /opt/iobroker/node_modules/iobroker.mqtt, node: v0.10.46
 ! debian 2017-02-04 18:51:44.686 info host.debian instance system.adapter.mqtt.0 started with pid 2392
 ! host.debian 2017-02-04 18:51:14.676 info Restart adapter system.adapter.mqtt.0 because enabled
- 
					
					
					
					
 После обновления 1.3.0 драйвер в циклическом ребуте. ` Установил сразу после появления версии 1.3.0 на github - таких проблем не наблюдаю. Установлено было на 3 разных серверах, работающих с одним контроллером (WB). На третьем (тестовом) недавно обновил до 1.3.1 - тоже пока нормально. Может у Вас проблема с источником данных mqtt? 
- 
					
					
					
					
 До обновление все работало нормально, скопилось много обновлений сегодня решил все обновить. 
- 
					
					
					
					
 Обнаружилась ошибка в коде MQTT клиента. http://forum.iobroker.net/viewtopic.php?f=22&t=5095 Надо заменить (смотря что у вас за система или версия npm) этот файл /opt/iobroker/node_modules/mqtt-packet/writeToStream.js или этот /opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-packet/writeToStream.js или как было в моём случаи этот файл /opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/node_modules/mqtt-packet/writeToStream.js на этот 
- 
					
					
					
					
 Обновил node до 4 версии все заработало. 
- 
					
					
					
					
 Обновил node до 4 версии все заработало. ` обновился до 1.3.0, затем до 1.3.1 0 глюк с циклической перезагрузкой. у меня nodejs 6.6.0 - ты говоришь что обновил до 4 версии. немного не понял какая же у тебя версия? update: или ты имеешь ввижу ветку 4.x.x LTS (v4.7.3 (Latest LTS: Argon))? Так это же наооборот downgrade, а не обновление… народ, а вообще какая сейчас версия Node актуальна по феншую для IOB? вчера обновил до v6.9.5 - вроде памяти стало меньше потреблять.. 
- 
					
					
					
					
 Здравствуйте. Прошу помощи с MQTT драйвером. IOBroker установлен на RPi3, При перезагрузке сервера,он отсылает на ардуино(стоит клиент) инверсные значения. прикрутить это на управление светом,стало проблематично (( 
- 
					
					
					
					
 Здравствуйте. Прошу помощи с MQTT драйвером. IOBroker установлен на RPi3, При перезагрузке сервера,он отсылает на ардуино(стоит клиент) инверсные значения. прикрутить это на управление светом,стало проблематично (( ` поясни что такое "инверные значения"? можно с картинками. были проблемы что mqtt версии до 1.2.5 посылал неверно отформатированные сообщения подписчикам. а у тебя какая версия? 
- 
					
					
					
					
 Здравствуйте еще раз. Версия MQTT драйвера - 1.3.2. Инверсное- например на данный момент на ардуино сейчас имеются 16 выходов (каждый выход-свой топик). При старте ардуины на первых двух лог "1", на остальных лог. "0". При старте,ребуте железки RPi или при ручном рестарте самого драйвера , на ардуинке выходы меняют своё значение. т.е. "1" становятся нулями и наоборот,нули - еденицами. Т.к. пока подключены только светодиоды,заметно что это происходит сразу одновременно по всем выходам. С настройками драйвера игрался,на данный момент убрал все галки- результат тот же ((( з.ы. до этого IOBroker стоял на винде (версию драйвера не помню) но такого "изменения выходов" не было. 
- 
					
					
					
					
 на всякий случай выкладываю скетч,может подскажите что не так? есть подозрениие,что именно он косячит. Cам слабо понимаю. скетч создавал в Flprog. 
 1648_pr4.7z
- 
					
					
					
					
 Собрал монитор энергии на pzem-004t и esp (прошивка Wifi-iot). Драйвер MQTT настроен как сервер. Вначале все работало, потом началась какая-то ерунда - часть объектов отображается некорректно, в т.ч. и на веб-интерфейсе esp(при этом он ещё заметно подвисает). В логе ошибки: ! mqtt.0 2017-02-19 20:03:55.369 error mqtt.0 Closed because of error 
 ! mqtt.0 2017-02-19 20:03:55.368 warn mqtt.0 Client error [ESP82660006940a]: Error: read ECONNRESET
 ! mqtt.0 2017-02-19 20:03:54.377 info mqtt.0 publishOnSubscribe send all known states
 ! mqtt.0 2017-02-19 20:03:54.377 info mqtt.0 Client [ESP82660006940a] subscribes on "ESP0006940A.#" with regex /^mqtt.0.ESP0006940A../
 ! mqtt.0 2017-02-19 20:03:54.376 info mqtt.0 Client [ESP82660006940a] subscribes on "ESP0006940A.#" with regex /^ESP0006940A../
 ! mqtt.0 2017-02-19 20:03:54.376 info mqtt.0 publishOnSubscribe
 ! mqtt.0 2017-02-19 20:03:54.376 info mqtt.0 Client [ESP82660006940a] subscribes on "mqtt.0.timestamp"
 ! mqtt.0 2017-02-19 20:03:54.375 info mqtt.0 publishOnSubscribe send all known states
 ! mqtt.0 2017-02-19 20:03:54.370 info mqtt.0 Client [ESP82660006940a] subscribes on "testtopic.#" with regex /^mqtt.0.testtopic../
 ! mqtt.0 2017-02-19 20:03:54.369 info mqtt.0 Client [ESP82660006940a] subscribes on "testtopic.#" with regex /^testtopic../
 ! mqtt.0 2017-02-19 20:03:54.369 info mqtt.0 publishOnSubscribe send all known states
 ! mqtt.0 2017-02-19 20:03:54.369 info mqtt.0 Client [ESP82660006940a] subscribes on "ESP0006940A.#" with regex /^mqtt.0.ESP0006940A../
 ! mqtt.0 2017-02-19 20:03:54.368 info mqtt.0 Client [ESP82660006940a] subscribes on "ESP0006940A.#" with regex /^ESP0006940A../
 ! mqtt.0 2017-02-19 20:03:54.205 info mqtt.0 Client [ESP82660006940a] connected
 ! mqtt.0 2017-02-19 20:03:49.765 info mqtt.0 publishOnSubscribe send all known states
 ! mqtt.0 2017-02-19 20:03:49.765 info mqtt.0 Client [ESP82660006940a] subscribes on "ESP0006940A.#" with regex /^mqtt.0.ESP0006940A../
 ! mqtt.0 2017-02-19 20:03:49.764 info mqtt.0 Client [ESP82660006940a] subscribes on "ESP0006940A.#" with regex /^ESP0006940A../
 ! mqtt.0 2017-02-19 20:03:47.397 info mqtt.0 Client [ESP82660006940a] closed
 ! mqtt.0 2017-02-19 20:03:47.396 error mqtt.0 Closed because of error
 ! mqtt.0 2017-02-19 20:03:47.396 warn mqtt.0 Client error [ESP82660006940a]: Error: read ECONNRESET
- 
					
					
					
					
 Собрал монитор энергии на pzem-004t и esp (прошивка Wifi-iot). Драйвер MQTT настроен как сервер. Вначале все работало, потом началась какая-то ерунда - часть объектов отображается некорректно, в т.ч. и на веб-интерфейсе esp(при этом он ещё заметно подвисает). ` Если и в интерфейсе ESP проблемы - то тут MQTT совсем не при чем. Думаю, Вы это понимаете сами. Зря Вы эту поделку (pzem) купили… Я сначала тоже на нее поглядывал, все прикидывал как подключать, куда и как прикручивать. В итоге просто взял маленький (1DIN) счетчик за 20$ (SDM120). Как индикатор - не очень из-за размеров, зато места не занимает много в щитке и проблем с подключением (modbus) никаких. Да и разных параметров отдает побольше (реактивная составляющая и частота). Была бы возможность подключиться к счетчику мосэнерго - сделал бы так, но увы, не дают, поэтому такой вот мониторинг через второй счетчик... 
- 
					
					
					
					
 Проблема исчезает при отключении драйвера, так что железяка скорей всего исправно работает. Через облако все работало очень долго и без сбоев. Кстати через несколько часов проблема пропала сама собой :shock: . 
- 
					
					
					
					
 Проблема исчезает при отключении драйвера, так что железяка скорей всего исправно работает. Через облако все работало очень долго и без сбоев. Кстати через несколько часов проблема пропала сама собой :shock: . ` 
 Опять сбой. В логе ошибок нет.
- 
					
					
					
					
 Извините за панику,за сомнения.Методом исключения ,вывел что ошибка закралась в скетче ардуины. Забросил MQTT, першел на Modbus TCP. Пока всё норм. 
- 
					
					
					
					
 Собрал монитор энергии на pzem-004t и esp (прошивка Wifi-iot). Драйвер MQTT настроен как сервер. Вначале все работало, потом началась какая-то ерунда - часть объектов отображается некорректно, в т.ч. и на веб-интерфейсе esp(при этом он ещё заметно подвисает). ` Если и в интерфейсе ESP проблемы - то тут MQTT совсем не при чем. Думаю, Вы это понимаете сами. Зря Вы эту поделку (pzem) купили… Я сначала тоже на нее поглядывал, все прикидывал как подключать, куда и как прикручивать. В итоге просто взял маленький (1DIN) счетчик за 20$ (SDM120). Как индикатор - не очень из-за размеров, зато места не занимает много в щитке и проблем с подключением (modbus) никаких. Да и разных параметров отдает побольше (реактивная составляющая и частота). Была бы возможность подключиться к счетчику мосэнерго - сделал бы так, но увы, не дают, поэтому такой вот мониторинг через второй счетчик... ` sdm120 - это хорошо. но все не совсем тривиально при передаче rs485 на сервер. конечно если есть медный кабель прямиком в сервер - не проблема. Но если нет - то пляски с бубном. У меня HLK-RM04 прокидывает serial через TCP , потом эмулятор tty под linux (socat), потом mdbusd (Mudbus RTU -> Modbus TCP). с учетом стоимости HLK-RM04 и sdm120 - выходит под $50 уже. а что касаемо героя pzem-004t и esp - тут надо смотреть на коммуникации esp и pzem-004t. если на esp плате есть чип usb-uart , его надо отключить. об этом кстати вот https://wifi-iot.com/p/wiki/15/ сказано. он может серьезно мешать. 
- 
					
					
					
					
 sdm120 - это хорошо. но все не совсем тривиально при передаче rs485 на сервер. конечно если есть медный кабель прямиком в сервер - не проблема. Но если нет - то пляски с бубном. У меня HLK-RM04 прокидывает serial через TCP , потом эмулятор tty под linux (socat), потом mdbusd (Mudbus RTU -> Modbus TCP). с учетом стоимости HLK-RM04 и sdm120 - выходит под $50 уже. а что касаемо героя pzem-004t и esp - тут надо смотреть на коммуникации esp и pzem-004t. если на esp плате есть чип usb-uart , его надо отключить. об этом кстати вот https://wifi-iot.com/p/wiki/15/ сказано. он может серьезно мешать. ` Как у Вас все заморочено… Не, у меня проще, в качестве сервера WB контроллер (который фактически является ядром) c RS-485, а уж с него MQTT на ioBroker. Может когда-нибудь прикручу к Orange Pi, где также стоит ioBroker, RS-485 - UART и отправлю прямо туда modbus RTU. Но пока нужды нет. 
 
		
	 
		
	