Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

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

Community Forum

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

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

Драйвер MQTT

Geplant Angeheftet Gesperrt Verschoben ioBroker драйвера
162 Beiträge 31 Kommentatoren 48.0k Aufrufe 1 Watching
  • Ä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.
  • V Offline
    V Offline
    VictorS
    schrieb am zuletzt editiert von
    #42

    @Bluefox:

    @VictorS:

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

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

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

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

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

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

    Куда копать, где грабли ? :)

    1 Antwort Letzte Antwort
    0
    • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          924

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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