Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT Adapter macht Probleme

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    MQTT Adapter macht Probleme

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      polocup100 last edited by

      Hallo,

      ich habe ebanfalls das Problem mit "invalid Message ID"

      Vorwiegend bei den kürzlich hinzugefügten Sonoffs. Dabei spielt es keine Rolle ob 5.11.1 oder 6.3.0, auch deutsch oder englisch mach Firmwaretechnisch keinen Unterschied.

      Sleepmode ist auch deaktiviert.

      Manchmal sind es nur 2, mancmal 4 oder mehr Clients.

      Ich habe die Fulltopic wie folgt geändert : %topic%/%prefix%/

      Das sollte aber doch nichts machen oder?

      Habe erstmal ein Script erstellt, dass bei mehr als 50 "connection" Aktualiesierungen pro Minute, den MQTT Adapter neustartet.

      Aber das sollte ja kein Dauerzustand sein.

      Hat schon jemand eine Lösung gefunden?

      VG Sascha

      1 Reply Last reply Reply Quote 0
      • S
        Skydream last edited by

        Moin,

        ich hänge mich hier mal mit dran, da ich das gleiche Problem habe. Manchmal nach ein paar Tagen, manchmal nach zwei oder drei Wochen zickt der MQTT Adapter rum:

        <size size="85">2018-12-28 16:15:27.803 - [32minfo[39m: javascript.0 script.js.common.KatzenhausSensor: [object Object]

        2018-12-28 16:20:27.799 - [32minfo[39m: javascript.0 script.js.common.KatzenhausSensor: [object Object]

        2018-12-28 16:25:27.808 - [32minfo[39m: javascript.0 script.js.common.KatzenhausSensor: [object Object]

        2018-12-28 16:26:19.990 - [32minfo[39m: mqtt.0 Client [Bambus] connection closed: Error: read EHOSTUNREACH

        2018-12-28 16:26:23.564 - [32minfo[39m: mqtt.0 Client [Switsch1] connection closed: Error: Invalid messageId

        2018-12-28 16:26:24.278 - [32minfo[39m: mqtt.0 Client [Switsch1] connected with secret 1546010784278_6005

        2018-12-28 16:26:24.335 - [32minfo[39m: mqtt.0 Client [Switsch1] subscribes on "cmnd/switch1/#" with regex /^cmnd.switch1..*/

        2018-12-28 16:26:24.335 - [32minfo[39m: mqtt.0 Client [Switsch1] subscribes on "cmnd/switch1/#" with regex /^mqtt.0.cmnd.switch1..*/

        2018-12-28 16:26:24.335 - [32minfo[39m: mqtt.0 Client [Switsch1] publishOnSubscribe send all known states

        2018-12-28 16:26:24.380 - [32minfo[39m: mqtt.0 Client [Switsch1] connection closed: Error: Invalid messageId</size>

        Nach einem neustart des Adapters ist wieder alles OK. Die MQTT Clients sind überwiegend Sonoff-Tasmota Devices aber auch ein paar selbstgebaute Geräte mit der passenden Arduino ESP Library ( <esp8266wifi.h>& <pubsubclient.h>)

        Die liefen aber so wie sie sind sehr lange mit einem Cloud MQTT Broker und Home Automation.

        Den MQTT Adapter habe ich auf dem aktuellen stand….das Verhalten hat sich aber auch nicht verändert über die letzen Versionen.

        Node v6.14.3

        Ist eine Docker Image

        ioBroker läuft dort unter einem Alpine Linux 3.4

        WAS genau ist die messageID?

        Kann man sich anzeigen lassen was er hat/bekommt und was erwartet wird?

        Jemand eine Idee, bzw. wie kann ich helfen den "fehler" zu finden?

        Gruss</pubsubclient.h></esp8266wifi.h>

        1 Reply Last reply Reply Quote 0
        • F
          Fischler last edited by

          Es liegt an den Clients. Im Tasmota-Wiki ist beschrieben wie man die Prefixe richtig verwendet.

          https://github.com/arendst/Sonoff-Tasmo … T-Features

          MQTT Topic definition

          Until version 5.0.5 the MQTT topic was defined rigidly by using the commands Prefix <x>and Topic resulting in a command topic string like cmnd/sonoff/Power.

          Starting with version 5.0.5 the MQTT topic is more flexible using command FullTopic and tokens to be placed within the user definable string up to 100 characters in size. The provided tokens are:

          %prefix% to be dynamically substituted by one of three prefixes as defined by commands Prefix1 (default: "cmnd"), Prefix2 (default: "stat") and Prefix3 (default: "tele").

          %topic% to be dynamically substituted by one of five topics as defined by commands Topic, GroupTopic, ButtonTopic, SwitchTopic and MqttClient.

          Using the tokens the following example topics can be made:

          FullTopic %prefix%/%topic%/ being the legacy situation up to version 5.0.5

          FullTopic tasmota/%topic%/%prefix%/

          FullTopic tasmota/bedroom/%topic%/%prefix%/

          FullTopic penthouse/bedroom1/bathroom2/%topic%/%prefix%/

          To solve possible MQTT topic loops I strongly suggest to use the %prefix% token in all of your FullTopics. It may work without %prefix% as I implemented some validation by forcing the use of a prefix in commands send to the device but status and telemetry do not need a prefix. Just play with it and report strange problems I might solve in the future.

          The use of the %topic% token is also mandatory in case you want to use ButtonTopic and/or SwitchTopic. It also provides for grouptopic and fallback topic functionality.

          <size size="150">Recommendation: Use both tokens at all time within your FullTopic string</size></x>

          1 Reply Last reply Reply Quote 0
          • S
            Skydream last edited by

            Hi,

            ich benutze Topic und prefix wie angegeben:

            ![](</s><ATTACHMENT 4300_mqtt.jpg )[attachment=0]~~MQTT.JPG[/attachment]" />

            Sieht man auch im Log, oder meinst du noch was anderes?

            Wie gesagt das passiert NICHT nur mit Tasmota Clients.

            Gruss~~

            1 Reply Last reply Reply Quote 0
            • R
              romgen last edited by

              Ich habe das gleiche Problem mit dem MQTT Adapter, auch mehrfach täglich.

              Mein FullTopic ist einfach nur einfach "%prefix%/%topic%", wie auch bei Tasmota vorgegeben.

              Ein Neustart des Adapter löst das Problem meistens. Vielleicht kann ich ja selbst helfen.

              Leider konnte ich noch nicht herausfinden welche MQTT Message jetzt eigentlich das Problem ist.

              Update:

              Dank eines alten Post von Bluefox (mit Tipps zum Debuggen) komme ich weiter.

              Hier ein output mit debug enabled, trace kommt später:

              2018-12-31 01:47:03.286  - info: mqtt.0 Client [DVES_6B3BFF] connected with secret 1546217223283_4092
              2018-12-31 01:47:03.290  - debug: mqtt.0 stateChange mqtt.0.info.connection: {"val":"DVES_9C67D9,DVES_6B3BFF","ack":true,"ts":1546217223287,"q":0,"from":"system.adapter.mqtt.0","lc":1546217223287}
              2018-12-31 01:47:03.297  - debug: mqtt.0 stateChange mqtt.0.tele.sonoff3.LWT: {"val":"Online","ack":true,"ts":1546217223296,"q":0,"from":"system.adapter.mqtt.0","lc":1546217223296}
              2018-12-31 01:47:03.343  - info: mqtt.0 Client [DVES_6B3BFF] subscribes on "cmnd/sonoff3/#" with regex /^cmnd\.sonoff3\..*/
              2018-12-31 01:47:03.343  - info: mqtt.0 Client [DVES_6B3BFF] subscribes on "cmnd/sonoff3/#"  with regex /^mqtt\.0\.cmnd\.sonoff3\..*/
              2018-12-31 01:47:03.343  - info: mqtt.0 Client [DVES_6B3BFF] publishOnSubscribe send all known states
              2018-12-31 01:47:03.343  - info: mqtt.0 Client [DVES_6B3BFF] subscribes on "cmnd/sonoffs/#" with regex /^cmnd\.sonoffs\..*/
              2018-12-31 01:47:03.344  - info: mqtt.0 Client [DVES_6B3BFF] subscribes on "cmnd/sonoffs/#"  with regex /^mqtt\.0\.cmnd\.sonoffs\..*/
              2018-12-31 01:47:03.344  - info: mqtt.0 Client [DVES_6B3BFF] publishOnSubscribe send all known states
              2018-12-31 01:47:03.344  - info: mqtt.0 Client [DVES_6B3BFF] subscribes on "cmnd/DVES_6B3BFF_fb/#" with regex /^cmnd\.DVES_6B3BFF_fb\..*/
              2018-12-31 01:47:03.344  - info: mqtt.0 Client [DVES_6B3BFF] subscribes on "cmnd/DVES_6B3BFF_fb/#"  with regex /^mqtt\.0\.cmnd\.DVES_6B3BFF_fb\..*/
              2018-12-31 01:47:03.344  - info: mqtt.0 Client [DVES_6B3BFF] publishOnSubscribe send all known states
              2018-12-31 01:47:03.344  - debug: mqtt.0 stateChange mqtt.0.cmnd.sonoff3.POWER: {"val":"","ack":true,"ts":1546217223342,"q":0,"from":"system.adapter.mqtt.0","lc":1546211354064}
              2018-12-31 01:47:03.371  - debug: mqtt.0 stateChange mqtt.0.stat.sonoff3.RESULT: {"val":"{\"POWER\":\"ON\"}","ack":true,"ts":1546217223370,"q":0,"from":"system.adapter.mqtt.0","lc":1546183229931}
              2018-12-31 01:47:03.389  - debug: mqtt.0 Client [DVES_6B3BFF] Resend messages on connect: tele/sonoff1/LWT = [object Object]
              2018-12-31 01:47:03.389  - info: mqtt.0 Client [DVES_6B3BFF] connection closed: Error: Invalid messageId
              2018-12-31 01:47:03.397  - debug: mqtt.0 stateChange mqtt.0.info.connection: {"val":"DVES_9C67D9","ack":true,"ts":1546217223390,"q":0,"from":"system.adapter.mqtt.0","lc":1546217223390}
              2018-12-31 01:47:03.399  - debug: mqtt.0 stateChange mqtt.0.tele.sonoff3.LWT: {"val":"[object Object]","ack":true,"ts":1546217223398,"q":0,"from":"system.adapter.mqtt.0","lc":1546217223398}
              2018-12-31 01:47:03.407  - debug: mqtt.0 Client [DVES_6B3BFF] Resend messages on connect: tele/sonoff2/LWT = [object Object]
              2018-12-31 01:47:03.417  - debug: mqtt.0 Client [DVES_6B3BFF] Resend messages on connect: tele/sonoff1/LWT = [object Object]
              2018-12-31 01:47:03.427  - debug: mqtt.0 Client [DVES_6B3BFF] Resend messages on connect: tele/sonoff2/LWT = [object Object]
              

              Update2:

              Ok, Ich glaube, dass ich den Fehler gefunden habe.

              Und zwar kommt iobroker / mqtt nicht damit klar, wenn der client ein LWT message-topic mit einem "object" payload schickt. Im Falle von Tasmota ist der "LWT" = '{"POWER":"ON"}' (bzw OFF).

              Für alle interessierten: Ich habe mal einen Bug report aufgemacht. https://github.com/ioBroker/ioBroker.mqtt/issues/31

              romgen created this issue in ioBroker/ioBroker.mqtt

              closed MQTT Adapter "Invalid messageId" (possible reason inside) #31

              1 Reply Last reply Reply Quote 0
              • F
                Fischler last edited by

                Ich habe Tasmota Version 6.4.1 installiert und es läuft mittlerweile ohne Probleme.

                Laut dem Debug scheint das Prefix und Topic noch vertauscht zu sein.

                > stateChange mqtt.0.cmnd.sonoff3.POWER

                richtig wäre allerdings:

                > stateChange mqtt.0.sonoff3.cmnd.POWER

                Postet doch mal das gesamte "aufgeklappte" Objekt <u>eines</u> Sonoff-Devices und die Infoseite von dem Sonoff-Device Hauptmenü -> Informationen

                1 Reply Last reply Reply Quote 0
                • S
                  Skydream last edited by

                  Hi,

                  Warum soll das eine “richtig” und das andere “falsch” sein?

                  Laut beschreibung sind beide varianten gültig.

                  Ich kann mir auch schlecht vorstellen dass das Problem so trivial ist….mein letzter Neustart war am 28.12,

                  Seitdem läuft wieder alles ohne Problem.....mit 10 mqtt Clients, welche auch benutzt werden.

                  Es währe spannend zu sehen ob es User gubt die auch cmnd.NAME.Power etc benutzen aber trotzdem keine Probleme haben.

                  Gruss

                  Sky

                  1 Reply Last reply Reply Quote 0
                  • R
                    romgen last edited by

                    Hey,

                    Ja, mal schauen, ich probiere natürlich alles aus.

                    Angefangen habe ich mit dem Sonoff MQTT Adapter, aber der ist ja sehr sensibel. :lol: Der braucht ja auch eine ganz spezielle Reihenfolge von prefix und topic. Ich will da nichts aussschließen ^^

                    Im Moment habe ich den code einfach angepasst, dass alle Messages ohne gültige id einfach gelöscht werden. Läuft auch ohne Probleme ist aber auch nur ein "hack". Nur doof für alle anderen, die nicht eben mal den Code anpassen können.

                    Vielen Dank für das Feedback!

                    1 Reply Last reply Reply Quote 0
                    • L
                      Lazybone last edited by

                      Gibt es eine Lösung. Ich habe mittlerweile selbst nach einen Neustart von MQTT den Fehler nach wenigen Minuten erneut.

                      Mehrere Sonoff Geräte mit Tasmota 6.4.1 im Einsatz.

                      1 Reply Last reply Reply Quote 0
                      • H
                        Hhjung16 last edited by

                        @romgen:

                        Hey,

                        Ja, mal schauen, ich probiere natürlich alles aus.

                        Angefangen habe ich mit dem Sonoff MQTT Adapter, aber der ist ja sehr sensibel. [emoji38] Der braucht ja auch eine ganz spezielle Reihenfolge von prefix und topic. Ich will da nichts aussschließen ^^

                        Im Moment habe ich den code einfach angepasst, dass alle Messages ohne gültige id einfach gelöscht werden. Läuft auch ohne Probleme ist aber auch nur ein "hack". Nur doof für alle anderen, die nicht eben mal den Code anpassen können.

                        Vielen Dank für das Feedback! ` Moin

                        Ich muss sagen, ich bin auf den Sonoff Adapter umgestiegen und habe die Probleme seitdem nicht mehr, Tasmota 6.4.1 auf GosundSp111 und Sonoff Basic.

                        1 Reply Last reply Reply Quote 0
                        • G
                          gami82 last edited by

                          Bei mir gleichen Problem, sporadisch "connection closed: Error: Invalid messageId"

                          Konnte zumindest den Fehler bewusst herbeiführen. Sieht so aus, sobald der Client die (WLAN)Verbindung verliert (auch wenn nur kurz, ausgehend vom Client? oder Router->checked), kommt es zum Fehler.

                          Hatte Wlan Einstellungen meiner Fritzbox geändert ("WLAN-Zugang auf die bekannten WLAN-Geräte beschränken" auf "Alle neuen WLAN-Geräte zulassen"), dabei wurde die Verbindung kurz unterbrochen, danach Fehler "connection closed: Error: Invalid messageId" im Log.

                          Nach Neustart MQTT Adapter lief wieder alles.

                          MQTT 2.04

                          Node.js: v8.15.0

                          NPM: 6.4.1

                          Tasmota: 6.4.1

                          1 Reply Last reply Reply Quote 0
                          • S
                            Skydream last edited by

                            Ich habe das mal Testweise ausprobiert. Beim Umstellen von "Alle neuen WLAN-Geräte zulassen" auf "WLAN-Zugang auf die bekanten WLAN-Geräte beschränken" ist es nicht zu ausfällen gekommen.

                            Als ich aber nach ein paar Minuten wider zurück auf "Alle neuen WLAN-Geräte zulassen" gestellt hat

                            ist mir sofort der MQTT Adapter um die Ohren geflogen.

                            Also lässt ich der Fehler reproduzieren….das ist ja schon mal gut.

                            Gruss

                            Sky

                            Nachtrag: Dieses mal war es kein sonoff Tasmota device, sondern eine "Eigenkreation". Allerdings auch ein esp8266

                            1 Reply Last reply Reply Quote 0
                            • G
                              gami82 last edited by

                              node_modules/iobroker.mqtt/lib/server.js

                              Funtkion function clientClose(client, reason)

                              Zeile receivedTopic(client._will, client, () => client.destroy()); erstmal auskommentiert. Ergebnis: läuft ohne Fehler.

                              9604_bild.png

                              Mich würde interessieren, wie oft ein "Verbindungsabbruch" Clientseitig, also ohne bewusstes herbeiführen vorkommt. Liegt es evtl. an Tasmota 6.4.x? Soweit mir bekannt ist, wurde doch dort eine dynamic Sleep implementiert (Add command SetOption60 0/1 to select dynamic sleep (0) or sleep (1) (#4497)). Ist also Sleep nicht mehr deaktiviertbar? Weiß das jemand?

                              ? 1 Reply Last reply Reply Quote 0
                              • S
                                Skydream last edited by

                                Werde ich morgen mal ausprobieren, danke für die Info.

                                Zur Häufigkeit….bei mir geschätzt alle 2-4 Wochen.

                                So das es nervt, aber noch kein KO Kriterium ist.

                                Bei meinem letzten Test war der Client, welcher als erstest in den Fehlermeldungen auftauchte, kein Tasmota Device!

                                Daher denke ich eher an ein Problem zwischen den Mqtt/WiFi Modulen für die ESP Bausteine und dem Mqtt Modul von iobroker.

                                Gruss

                                Sky

                                1 Reply Last reply Reply Quote 0
                                • R
                                  romgen last edited by

                                  Ich bin jetzt auch auf den Sonoff Adapter wieder umgestiegen, seitdem keine Probleme mehr.

                                  Dennoch ist das natürlich nicht die beste Lösung. Ich teste mal den Patch mit dem "will", da hatte ich ja auch gepatcht. Sonst einfach github mit in meinen issue reinposten.

                                  Ist ja keine Lösung, dass der "generelle" MQTT Adapter hier mehr Fehler hat, als der Sonoff MQTT Adapter, der schon extrem simplifiziert ist (von wegen prefix/topic Reihenfolge usw).

                                  Die Abbrüche kann man im Prinzip auch gut simulieren, indem man eine wackelige Wifi Verbindung hat, so war das bei mir. Vermutlich sind die Abbrüche dann schneller, als der Adapter das handlen kann - und stirbt dann an der "will" Message. Keine Ahnung 😄

                                  Zum Patch:

                                  Ganz korrekt müsste es so ein, oder?

                                  anstatt dem von dir komplett kommentierten Zeile:

                                  // receivedTopic(...)
                                  

                                  sollte man diese besser ersetzen durch

                                  client.destroy();
                                  

                                  Das Problem ist meiner Meinung nach nämlich nicht das client.destroy, sondern dass dabei die "client._will" verschickt wird. Feedback dazu? :idea:

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    berndmr last edited by

                                    Ich habe nur nen Text als LastWill (Offline), und leider auch gelegentlich das Problem.

                                    Aber erst als ich vom PubSubClient auf den Arduino MQTT ungestiegen bin.

                                    Lass jetzt mal den Adapter im Debug laufen und schaue, ob ich es wieder treffe.

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      berndmr last edited by

                                      Welche Version des Adapters?

                                      Seit 25.01. ist eine Änderung im Master. Vorher hat bei mir der LastWill garnicht funktioniert.

                                      P 1 Reply Last reply Reply Quote 0
                                      • P
                                        pfuhsy @berndmr last edited by

                                        Hallo zusammen,

                                        ich hab das selbe Problem. Gibt es dazu bereits eine Lösung ?
                                        Gruss

                                        1 Reply Last reply Reply Quote 0
                                        • capitaenz
                                          capitaenz last edited by capitaenz

                                          Ich habe auch die Meldung "connection closed: Error: Invalid messageId" bis ich den MQTT-Adapter neu starte.
                                          Dieses Problem tritt auf, wenn die Wlan-Fritz-Repeater einen neuen Kanal suchen, oder wenn ich den Stecker vom Wlan-Fritz-Repeater ziehe und die MQTT-Clients die Verbindung verlieren.

                                          Habe jetzt die Adapter in den Versionen 2.1.1 und 2.0.4 probiert.
                                          Node.js v10.19.0

                                          Gibt es eine Lösung?

                                          VG
                                          Leif

                                          R 1 Reply Last reply Reply Quote 0
                                          • R
                                            rhodan76 @capitaenz last edited by

                                            @capitaenz versuchs mal mit dem oben beschriebenen Patch.

                                            Mich hat das gleiche Problem zu diesem Thread geführt, die beschriebenen Änderungen haben dann für Ruhe gesorgt.
                                            Entstehen tut das Ganze scheinbar durch eine mittelprächtige Anbindung ans WLAN, nur daran kann ich an der Stelle wenig ändern.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            954
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            20
                                            39
                                            7549
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo