Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    768

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    577

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

Драйвер MQTT

Geplant Angeheftet Gesperrt Verschoben ioBroker драйвера
162 Beiträge 31 Kommentatoren 52.1k Aufrufe 1 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • aurodionovA Offline
    aurodionovA Offline
    aurodionov
    schrieb am zuletzt editiert von
    #43

    @VictorS:

    @Bluefox:

    @VictorS:

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

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

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

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

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

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

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

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

    1 Antwort Letzte Antwort
    0
    • V Offline
      V Offline
      VictorS
      schrieb am zuletzt editiert von
      #44

      @aurodionov:

      @VictorS:

      @Bluefox:

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

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

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

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

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

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

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

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        instalator
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • V Offline
          V Offline
          VictorS
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • I Offline
            I Offline
            instalator
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • V Offline
              V Offline
              VictorS
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • I Offline
                I Offline
                instalator
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  MSapogov
                  schrieb am zuletzt editiert von
                  #50

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

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

                  1 Antwort Letzte Antwort
                  0
                  • V Offline
                    V Offline
                    VictorS
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • V Offline
                      V Offline
                      VictorS
                      schrieb am zuletzt editiert von
                      #52

                      @MSapogov:

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

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

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

                      1 Antwort Letzte Antwort
                      0
                      • H Offline
                        H Offline
                        Haus
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • V Offline
                          V Offline
                          VictorS
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • V Offline
                            V Offline
                            VictorS
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • I Offline
                              I Offline
                              instalator
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • V Offline
                                V Offline
                                VictorS
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                0
                                • BluefoxB Offline
                                  BluefoxB Offline
                                  Bluefox
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • V Offline
                                    V Offline
                                    VictorS
                                    schrieb am zuletzt editiert von
                                    #59

                                    @Bluefox:

                                    @VictorS:

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

                                    …..

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

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

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

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

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

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

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

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

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

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

                                    1 Antwort Letzte Antwort
                                    0
                                    • BluefoxB Offline
                                      BluefoxB Offline
                                      Bluefox
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      0
                                      • V Offline
                                        V Offline
                                        VictorS
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        0
                                        • BluefoxB Offline
                                          BluefoxB Offline
                                          Bluefox
                                          schrieb am zuletzt editiert von
                                          #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 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          396

                                          Online

                                          32.8k

                                          Benutzer

                                          82.9k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe