Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. ioBroker драйвера
  5. Драйвер MQTT

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    645

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Драйвер MQTT

Scheduled Pinned Locked Moved ioBroker драйвера
162 Posts 31 Posters 51.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • aurodionovA Offline
    aurodionovA Offline
    aurodionov
    wrote on last edited by
    #43

    @VictorS:

    @Bluefox:

    @VictorS:

    Добрый день всем,

    строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).

    Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как? Создать в админ такой объект ручками

    Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.

    А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,

    без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.

    Куда копать, где грабли ? :) `
    Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt

    Пишу с пульта….

    1 Reply Last reply
    0
    • V Offline
      V Offline
      VictorS
      wrote on last edited by
      #44

      @aurodionov:

      @VictorS:

      @Bluefox:

      Создать в админ такой объект ручками `

      Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.

      А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,

      без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.

      Куда копать, где грабли ? :) Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt

      Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.

      Куда копать дальше?

      1 Reply Last reply
      0
      • I Offline
        I Offline
        instalator
        wrote on last edited by
        #45

        @VictorS:

        @aurodionov:

        @VictorS:

        Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.

        А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,

        без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.

        Куда копать, где грабли ? :) Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt

        Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.

        Куда копать дальше? ` клиент подписан? Js скрипт запущен?

        Высокий уровень Децибел вреден для здоровья!

        http://blog.instalator.ru/

        1 Reply Last reply
        0
        • V Offline
          V Offline
          VictorS
          wrote on last edited by
          #46

          @instalator:

          @VictorS:

          @aurodionov:

          Попробуй слать и отслеживать с помощью 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 создан ручками в админке. Может в этом дело? Не могу понять.

          1 Reply Last reply
          0
          • I Offline
            I Offline
            instalator
            wrote on last edited by
            #47

            @VictorS:

            @instalator:

            @VictorS:

            Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.

            Куда копать дальше? клиент подписан? Js скрипт запущен?

            Да, конечно.

            1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.

            2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.

            Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять. ` а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?

            Высокий уровень Децибел вреден для здоровья!

            http://blog.instalator.ru/

            1 Reply Last reply
            0
            • V Offline
              V Offline
              VictorS
              wrote on last edited by
              #48

              @instalator:

              @VictorS:

              @instalator:

              клиент подписан? Js скрипт запущен? `

              Да, конечно.

              1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.

              2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.

              Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять. а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?

              Вот видно на скрине (выделен красным) топик который я создал.

              ! 1605_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..*/

              1 Reply Last reply
              0
              • I Offline
                I Offline
                instalator
                wrote on last edited by
                #49

                @VictorS:

                @instalator:

                @VictorS:

                Да, конечно.

                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..*/ ` очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще

                Высокий уровень Децибел вреден для здоровья!

                http://blog.instalator.ru/

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  MSapogov
                  wrote on last edited by
                  #50

                  Вот у меня MQTT в прошивке от MaksMS, стабильно работает только с авторизацией…

                  Но драйвер MQTT уже много с того времени потерпел изменений.

                  1 Reply Last reply
                  0
                  • V Offline
                    V Offline
                    VictorS
                    wrote on last edited by
                    #51

                    @instalator:

                    @VictorS:

                    @instalator:

                    а в какой ветке создан? Подписывается на отдельный топик или на всю ветку? `

                    Вот видно на скрине (выделен красным) топик который я создал.

                    ! 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 не увидел. Или я включил отладку не в том месте?

                    1 Reply Last reply
                    0
                    • V Offline
                      V Offline
                      VictorS
                      wrote on last edited by
                      #52

                      @MSapogov:

                      Вот у меня MQTT в прошивке от MaksMS, стабильно работает только с авторизацией…

                      Но драйвер MQTT уже много с того времени потерпел изменений. `

                      ну у меня он то работает и без авторизации с ESP. да и проблема не в ESP собственно, а в том, что почему-то MQTT не отдает изменения сделанные через JS . Причем только в случае с самодельным топиком. А управление gpio например на те же ESP работает отлично.

                      1 Reply Last reply
                      0
                      • H Offline
                        H Offline
                        Haus
                        wrote on last edited by
                        #53

                        @VictorS:

                        @instalator:

                        @VictorS:

                        Вот видно на скрине (выделен красным) топик который я создал.

                        ! 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

                        js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

                        admin: 3.6.0

                        javascript: 4.1.10

                        web: 2.4.1 vis: 1.1.10

                        cloud: 2.6.2

                        Server: DELL FX170 / linux: Debian 9.5 Stretch

                        Adapter: MegaD-2561, Mega-ES…

                        1 Reply Last reply
                        0
                        • V Offline
                          V Offline
                          VictorS
                          wrote on last edited by
                          #54

                          @Haus:

                          @VictorS:

                          @instalator:

                          очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще `

                          Странно. Включил 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 я все больше прихожу к пониманию необходимости приобретения шаманского бубна. Самый полезный инструмент, после синей изоленты, конечно :)

                          1 Reply Last reply
                          0
                          • V Offline
                            V Offline
                            VictorS
                            wrote on last edited by
                            #55

                            Новая проблема с брокером 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] connected

                            2016-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): 0

                            4. Брокер запоминает это:

                            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 может подключится и прокоментировать?

                            1 Reply Last reply
                            0
                            • I Offline
                              I Offline
                              instalator
                              wrote on last edited by
                              #56

                              @VictorS:

                              Новая проблема с брокером 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] connected

                              2016-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): 0

                              4. Брокер запоминает это:

                              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

                              Высокий уровень Децибел вреден для здоровья!

                              http://blog.instalator.ru/

                              1 Reply Last reply
                              0
                              • V Offline
                                V Offline
                                VictorS
                                wrote on last edited by
                                #57

                                @instalator:

                                @VictorS:

                                Новая проблема с брокером 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] connected

                                2016-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): 0

                                4. Брокер запоминает это:

                                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. Смори скрин с настройками ниже:

                                ! 1605_mqtt_settings.jpg

                                1 Reply Last reply
                                0
                                • BluefoxB Offline
                                  BluefoxB Offline
                                  Bluefox
                                  wrote on last edited by
                                  #58

                                  @VictorS:

                                  Новая проблема с брокером 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] connected

                                  2016-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): 0

                                  4. Брокер запоминает это:

                                  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 действительно странно.

                                  Но вот что более странно, так это зачем клиенту знать о своих же состояниях при старте?

                                  Отключи выдавать собственные значения при старте.

                                  1 Reply Last reply
                                  0
                                  • V Offline
                                    V Offline
                                    VictorS
                                    wrote on last edited by
                                    #59

                                    @Bluefox:

                                    @VictorS:

                                    Новая проблема с брокером MQTT.

                                    …..

                                    Номер 5 действительно странно.

                                    Но вот что более странно, так это зачем клиенту знать о своих же состояниях при старте?

                                    Отключи выдавать собственные значения при старте.

                                    Ну собственно знать собcтвенные состояние при коннекте иногда полезно. Например было что-то включено, затем клиент ребутнулся по питанию, и IOB ему сделает Total Recall :)

                                    Отключить я попробую.

                                    Но все-таки может посмотреть в чем проблемы:

                                    1. брокер отдает state несмотря что в нем ask = true

                                    2. state отформатирован во внутреннем формате IOB (т.е. {"val":0}).

                                    В принципе если исправить п.2, чтобы слал без всяких тегов типа val: - это проблему бы решило, я так думаю.

                                    Но и с п.1. тоже по-хорошему разобратся бы надо. Мало ли где еще это вылезет.

                                    1 Reply Last reply
                                    0
                                    • BluefoxB Offline
                                      BluefoxB Offline
                                      Bluefox
                                      wrote on last edited by
                                      #60

                                      Я не пойму пока откуда это приходит {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. От других драйверов.

                                      1 Reply Last reply
                                      0
                                      • V Offline
                                        V Offline
                                        VictorS
                                        wrote on last edited by
                                        #61

                                        @Bluefox:

                                        Я не пойму пока откуда это приходит {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. От других драйверов. `

                                        Заменил. Сейчас драйвер падает вот с такими сообщениями:

                                        ! 2016-11-24 13:04:57.688 - ^[[31merror^[[39m: uncaught exception: Cannot read property 'ack' of null
                                        ! 2016-11-24 13:04:57.688 - ^[[31merror^[[39m: TypeError: Cannot read property 'ack' of null
                                        ! at state2string (/opt/iobroker/node_modules/iobroker.mqtt/lib/common.js:20:16)
                                        ! at sendState2Client (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:92:136)
                                        ! at Connection. <anonymous>(/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:489:37)
                                        ! at emitOne (events.js:96:13)
                                        ! at Connection.emit (events.js:188:7)
                                        ! at Connection.emitPacket (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:13:8)
                                        ! at emitOne (events.js:96:13)
                                        ! at Connection.emit (events.js:188:7)
                                        ! at Connection. <anonymous>(/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/node_modules/reduplexer/node_modules/readable-stream/lib/_stream_readable.js:786:14)
                                        ! at emitNone (events.js:86:13)</anonymous></anonymous>

                                        1 Reply Last reply
                                        0
                                        • BluefoxB Offline
                                          BluefoxB Offline
                                          Bluefox
                                          wrote on last edited by
                                          #62

                                          Следующая попытка:

                                          function state2string(val) {
                                              if (val && 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());
                                              }
                                          }
                                          
                                          1 Reply Last reply
                                          0

                                          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
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          146

                                          Online

                                          32.7k

                                          Users

                                          82.6k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe