NEWS
Драйвер MQTT
-
Создать в админ такой объект ручками `
Сначала создаем в нужном устройстве lcd (у меня OLED дисплей), а потом внутри него line1, line2 и так далее…! [imgioBroker.admin.png] `
Спасибо, все получилось. Хотелось бы уточнить - надо для этой переменной ставить Role: variable, или text как у вас? У меня работает variable. Значит без разницы? Вообще на что влияет свойвство common.role? Сходу не нашел в ддокументации. `
Role используется для отображения. Что бы знать, как это значение показывать в vis или mobile -
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручкамиВозникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :)
-
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручкамиВозникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :) `
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt -
Создать в админ такой объект ручками `
Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :)
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqttПоставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
-
Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :)
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqttПоставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше? ` клиент подписан? Js скрипт запущен?
-
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt `
Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
клиент подписан? Js скрипт запущен?Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять.
-
Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
клиент подписан? Js скрипт запущен?Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять. ` а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?
-
клиент подписан? Js скрипт запущен? `
Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять.
а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?Вот видно на скрине (выделен красным) топик который я создал.
!

Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/
-
Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять.
а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?Вот видно на скрине (выделен красным) топик который я создал.
! mqtt_topic.jpg
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/ ` очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще
-
а в какой ветке создан? Подписывается на отдельный топик или на всю ветку? `
Вот видно на скрине (выделен красным) топик который я создал.
! mqtt_topic.jpg
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/
очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи ещеСтранно. Включил Trace output for every message: в настройках драйвера (версия 1.2.4, я так понимаю последняя). Но никаких дополнительных сообщений в логе с уровнем debug не увидел. Или я включил отладку не в том месте?
-
Вот у меня MQTT в прошивке от MaksMS, стабильно работает только с авторизацией…
Но драйвер MQTT уже много с того времени потерпел изменений. `
ну у меня он то работает и без авторизации с ESP. да и проблема не в ESP собственно, а в том, что почему-то MQTT не отдает изменения сделанные через JS . Причем только в случае с самодельным топиком. А управление gpio например на те же ESP работает отлично.
-
Вот видно на скрине (выделен красным) топик который я создал.
! mqtt_topic.jpg
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/
очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи ещеСтранно. Включил Trace output for every message: в настройках драйвера (версия 1.2.4, я так понимаю последняя). Но никаких дополнительных сообщений в логе с уровнем debug не увидел. Или я включил отладку не в том месте? `
http://forum.iobroker.net/download/file … &mode=view -
очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще `
Странно. Включил Trace output for every message: в настройках драйвера (версия 1.2.4, я так понимаю последняя). Но никаких дополнительных сообщений в логе с уровнем debug не увидел. Или я включил отладку не в том месте?
[http://forum.iobroker.net/download/file … &mode=view](http://forum.iobroker.net/download/file.php?id=6886&mode=view)Спасибо, было перед глазами но не заметил :)
Впрочем проблема решилась следующим образом - я при помощи mqtt-spy запостил данные в созданный ручками объект топика MQTT. После этого видимо что-то внутри драйвера пришло в состояние шеншуя, и после этого апдейт топика из JS работает нормально, и сообщения уходят подписчикам.
По мере изучения IOB я все больше прихожу к пониманию необходимости приобретения шаманского бубна. Самый полезный инструмент, после синей изоленты, конечно :)
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать?
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать? ` 4 ым пунктом просто говорит что объект изменился, 5ым пунктом шлет изменение клиенту. Что не так? Код Меги давай и настройкиmqtt
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать?
4 ым пунктом просто говорит что объект изменился, 5ым пунктом шлет изменение клиенту. Что не так? Код Меги давай и настройкиmqttНе то что он шлет в топик не 0, а {"val":0}. Кроме того обрати внимание что в том state стоит флаг ask = true. А настройке mqtt драйвера сказано что не слать состояние с ask = true. Смори скрин с настройками ниже:
!

-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать? `
Номер 5 действительно странно.Но вот что более странно, так это зачем клиенту знать о своих же состояниях при старте?
Отключи выдавать собственные значения при старте.
-
Новая проблема с брокером MQTT.
…..
Номер 5 действительно странно.
Но вот что более странно, так это зачем клиенту знать о своих же состояниях при старте?
Отключи выдавать собственные значения при старте.
Ну собственно знать собcтвенные состояние при коннекте иногда полезно. Например было что-то включено, затем клиент ребутнулся по питанию, и IOB ему сделает Total Recall :)
Отключить я попробую.
Но все-таки может посмотреть в чем проблемы:
1. брокер отдает state несмотря что в нем ask = true
2. state отформатирован во внутреннем формате IOB (т.е. {"val":0}).
В принципе если исправить п.2, чтобы слал без всяких тегов типа val: - это проблему бы решило, я так думаю.
Но и с п.1. тоже по-хорошему разобратся бы надо. Мало ли где еще это вылезет.
-
Я не пойму пока откуда это приходит {val: 0}, но попробуй заменить в lib/common.js функцию state2string на
function state2string(val) { if (typeof val === 'object') { if (val.ack === undefined && val.val !== undefined) { if (val.val === null) return 'null'; return val.val.toString(); } else { return JSON.stringify(val); } } else { return (val === null) ? 'null' : (val === undefined ? 'undefined' : val.toString()); } }и перестартуй драйвер.
Насчёт ack: true
Mqtt сервер ещё и брокер. То есть он пересылает сообщения от клиентов mqtt другим участникам. Ну а так как твой клиент подписан на свои топики, то он их и получает.
ack работает на сообщения, которые приходят со стороны ioBroker. От других драйверов.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login