Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Grundsatzfrage zu den MQTT Adaptern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Grundsatzfrage zu den MQTT Adaptern

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @mr1burns last edited by mickym

      @mr1burns So ich hab das nun mal für Dich alles nachgestellt - wobei ich kurzfristig mal bei dem mqtt Client/Server Adapter die neueste Version genutzt habe - aber das kommt nur dann in Frage, wenn Du ganze Bäume hochlädst.

      Es gab für mich jedoch eine sehr erhellende Erkenntnis. Ich benutze ja mosquitto als Broker - deswegen stimmt das unten auch nur halb.

      Fakt ist:

      Wenn Du den mqtt-Adapter als Broker verwendest und gleichzeitig einen mqtt-Client Adapter oder auch den mqtt Adapter als Client - das zerschiesst Dir immer das System, wenn Du keinen Prefix verwendest. Das ist dann eine Endlosschleife.

      Deshalb funktioniert das Publishen mit dem mqtt-Adapter als Broker NUR, wenn du dafür eigene Präfixe nimmst.

      Im mqtt-Client Adapter also ein Präfix einstellen:

      77f4ab8d-3c85-40fc-9827-54c9ccbdfb0d-image.png

      Nur dann werden Endlosschleifen vermieden:

      d1fe2dab-f444-4046-bc4b-bf76740c2044-image.png

      Ansonsten wenn Du einen ganzen Adapter veröffentlichen willst - brauchst Du die neueste Version des mqtt Client/Server Adapters.

      081e8249-5538-4d51-b128-fdafcf9fb17e-image.png

      Damit kannst Du, wie von Dir geplant ganze Adapterbäume veröffentlichen:

      2fa16d49-7d31-40fd-ac01-674035171dd8-image.png

      Bei den Subscriber topics ist es wohl wurscht, ob man was einträgt oder nicht - wird wohl bei einem leeren Feld # verwendet.

      M 1 Reply Last reply Reply Quote 1
      • M
        mr1burns @mickym last edited by

        @mickym
        Du bis echt gut drauf... ich sag schon mal danke.. in der MQTTBox bekomme ich schon was... werde aber erst morgen oder am WE weiter Testen können...

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @mr1burns last edited by mickym

          @mr1burns So naja - interessiert mich ja selbst etwas.

          So ich habe noch war rausgefunden - grundsätzlich exportiert ein mqtt-Client Server Adapter alle topics - die als eignen definiert werden.

          Falls das topic jedoch mit einem Namen beginnt der einem der Root-Namen im iobroker entspricht, dann werden die nicht mehr reimportiert - auch nicht wenn es über mosquitto läuft. Deshalb muss man immer einen eigenen Präfix mitgeben. Im Subtree ist es kein Problem. Das heißt Adapterinstanzen können ohne Prefix zwar exportiert werden - aber man wird sie nie in einer mqtt Instanz finden. Deshalb funktioniert das Publishen nur mit eigenem Präfix.

          Habs auch gerade getestet - wenn man Zustände braucht - Du rennst sofort in eine Endlosschleife.

          Also GRUNDSATZ: Alles was Du exportierst aus eigenen internen Zuständen macht man am Besten irgendein Schwachsinn in das subscription Feld eintragen - sonst nimmt der Adapter leider willkürlich # und subscribed alles und wenn man den eigenen Präfix nimmt - gibts bei Zuständen sofort wieder Endlosschleifen. 😞

          Also wenn man Zustände benötigt - da fremde Adapter ja die Werte bestätigt in Ihren Namensraum schreiben - dann kann man mit dem mqtt Client/Server in der Version 4.0.7 folgende Konfiguration verwenden - getestet mit dem backitup Adapter:

          mqtt Export- Einstellungen.png

          und hier sieht man das Ergebnis:

          mqtt Export BackitUp.png

          So damit ist das Thema erstmal wieder für mich abgeschlossen. Ich hoffe es hat manchen wieder etwas geholfen und ich habe ja auch wieder was dazugelernt.

          Issr4k 1 Reply Last reply Reply Quote 1
          • Issr4k
            Issr4k @mickym last edited by Issr4k

            @mickym

            Ich lese mir den Thread bereits zum fünften Mal durch.

            In der Hoffnung das mir nichts entgeht... leider komme ich aber nicht ans Ziel.

            Gerne poste ich auch meine Einstellungen der Adapter, aber dort steht durch das viele ausprobieren sowieso nurnoch Käse drin.

            Ich verwende den MQTT Adapter und diesen als Server/Broker.
            der mir quasi nur einen Impuls an meinen Client senden soll.

            Der Client ist ein Arduino, welcher entsprechend mit einem Koppelrelais versehen ist und einen Impuls (true -> 1s -> false) auf mein Garagentorantrieb gibt.
            Der abgebildete Datenpunkt Befehl kommt über die Vis bzw über den javascript Adapter der direkt in den abgebildeten Baum des mqtt Adapters schreibt.

            Das hat bisher auch gut funktioniert nur seit dem Update auf 4.07... geht es leider nicht mehr.
            Und leider ist mein Verständnis für deine Erklärung nur begrenzt und ich verstehe nicht wie ich Präfixe verwenden muss.

            Ein Denkanstoß wäre sehr willkommen.

            Vielen Dank vorab!

            mqtt.PNG
            objekte.PNG

            Edit: das "Online" Lebenszeichen erhalte ich weiterhin Ordnungsgemäß vom Arduino.

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Issr4k last edited by mickym

              @issr4k Hallo, wie ich bereits schon mal erwähnt habe - published ein Broker eigentlich gar nicht. Ich würde mal alle Haken aus der mqtt Konfig rausnehmen und einen den separaten mqtt-Client installieren - den Adapter mit dem Zahnrad - das ist keine neue Instanz dieses Adapters, sondern ein komplett anderer.

              Diesem client-Adapter gibts Du als Broker dann die lokale Instanz Deines jetzt bereits als Broker installiertem Instanz mit.

              f23da994-fbe9-4f2a-b823-204597d6650f-image.png

              Die 1. Kachel ist der Adapter, den Du bereits installiert hast und den Du als Broker konfiguriert hast. Der 2. Adapter heißt nur mqtt-Client und der stellt Dir das Zahnrad zur Verfügung.

              Bei diesem gibst Du dann als Broker local host ein, da ja Dein Broker Adapter auf der gleichen Maschine läuft:

              c0ef42c3-6768-45fd-9d3f-b223330e3eac-image.png

              hier musst Du auch keine Präfixe eingeben beim Publishen - darf halt grundsätzlich nicht wie ein Adapter heißen.

              ebd9c738-b489-4597-87de-11129a0db4cc-image.png

              Das Publishen stellst Du dann bei den Datenpunkten über das Zahnrad in den Objekten ein:

              066f1240-43f1-44b3-8fac-07a0c8114fc3-image.png

              das schöne an dem reinen Client-Adapter ist, dass Du hier völlig frei in der Wahl des Topics bist:

              In diesem Fall würde ich auch nichts abonnieren:

              088351bd-3b78-4bd1-aab8-533d33ca588b-image.png

              Falls ein anderer Client was in dieses Topic reinschreiben sollte, bekommst Du das ja über Deine Broker instanz mit.

              Nachtrag:

              Der abgebildete Datenpunkt Befehl kommt über die Vis bzw über den javascript Adapter der direkt in den abgebildeten Baum des mqtt Adapters schreibt.

              Leg lieber einen eigenen Datenpunkt unter 0_userdata.0 an - so wie sich das gehört und schreib mit VIS bzw. über den Javascript Adapter in diesen Datenpunkt. Der mqtt-client Adapter published es dann an den Server - Deine mqtt-Broker Instanz und informiert Deinen Client (Ardunino), dass ein neuer Wert vorhanden ist und schickt ihn dann. Ein Broker ist unter mqtt - eigentlich immer ein passives Kerlchen, der zwar schickt, aber nur wenn ein Client das subscribed - abonniert hat.

              Das andere mit dem in den Datenpunkt direkt unter der mqtt-Instanz reinschreiben, funktioniert mit dem anderen Adapter nur dann richtig, wenn dieser als Client zu einem anderen Broker betrieben wird.

              BananaJoe 1 Reply Last reply Reply Quote 2
              • BananaJoe
                BananaJoe Most Active @mickym last edited by

                @mickym was spricht dagegen eine 2. Instanz des MQTT Broker/Client zu nehmen und als Client zu konfigurieren? Bzw. was ist der Vorteil.
                Ich wollte gerade schreiben das der MQTT-Client scheinbar weniger gepflegt wird, aber Apollon77 hat sich dem wohl angenommen - der wird also gepflegt und Fehler behoben.

                mickym 2 Replies Last reply Reply Quote 0
                • mickym
                  mickym Most Active @BananaJoe last edited by mickym

                  @bananajoe
                  Nachteile des mqtt-Broker/Client Adapters

                  1. Du musst zwingend ein Präfix verwenden, da wie erläutert topics, die mit einem Adapterpfad beginnen, nicht wieder reimportiert werden. Ist nicht schlimm, aber man muss es dem Arduino Client halt sagen, dass ein anderes Topic abonniert werden muss.
                  2. topic können nicht frei vergeben werden.
                  3. nicht einfach über Zahnrad einzelne states auswählbar.

                  Es geht aber auch 2. Instanz des mqtt-Broker/Client Adapters als Client konfiguriert
                  Man kann eine 2. Instanz als des mqtt Client/Broker Adapters verwenden, dann alles bei mqtt.1.* belassen, aber wie gesagt dann ist Präfix Pflicht und auf keinen Fall was subscriben. Muss man halt nur in Ardunio das Topic zum Subscriben ändern. Also Pattern zum subscriben auf nothing oder sowas setzen, das wird wohl in einer der nächsten Versionen angeboten, dass der subscribe Eintrag als Option ignoriert werden kann. dann kann man auch in selbst erstellte Datenpunkte unter mqtt.1 via VIS oder JS was publishen. Betreibt man den Adapter als Broker scheint das halt manchmal Probleme zu machen, sowohl direkt was in die Objekte der Adapterinstanz was reinzuschreiben als auch mit SendTo, wie in einem Parallelthread zu lesen..
                  @BananaJoe Wir Betreiben den Adapter ja nicht als Broker, sondern als Client zu mosquitto. Das ist der Unterschied.

                  Vielleicht gehts auch als Broker aber Präfix ist immer notwendig beim publishen mit diesem Adapter

                  1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @BananaJoe last edited by

                    @bananajoe sagte in Grundsatzfrage zu den MQTT Adaptern:

                    Ich wollte gerade schreiben das der MQTT-Client scheinbar weniger gepflegt wird, aber Apollon77 hat sich dem wohl angenommen - der wird also gepflegt und Fehler behoben.

                    dachte ich bis vor 1 Jahr auch, da war das auch total antiquiert mit Listen, aber da hat sich massiv was getan mit dem Zahnrad.

                    Issr4k 1 Reply Last reply Reply Quote 0
                    • Issr4k
                      Issr4k @mickym last edited by

                      Hallo @mickym

                      bin leider erst heute morgen ans Testen gekommen und was soll ich sagen... in einem anderen Thread wurdest du als MQTT -Meister betitelt und das würde ich auch unterschreiben... 🙂

                      Habe wie du gesagt hast den client dazu genommen, die States neu angelegt, mit MQTT Explorer rumexperimentiert und jetzt funktioniert es... irgendwie...

                      Ich sehe am Ende eines laaaangen, laaangen Tunnels etwas Licht, aber noch ein weiter Weg für mich, bis ich das wirklich verstanden habe.

                      Vielen, vielen Dank an dich!
                      auch an @BananaJoe

                      1 Reply Last reply Reply Quote 0
                      • J
                        Jockel_Bln last edited by

                        Sorry wenn ich diesen Faden wieder ausgrabe, aber ich bin gerade mit meinem Latein am Ende.
                        Nachdem ich nur den mqtt-Broker/Client Adapter verwendet habe um einige Topics an meine Wärmepumpe zu schicken, wollte ich es nun richtig machen und Broker und Client trennen.
                        Eingestellt ist am Broker folgendes
                        e3221ac7-3a26-45b5-b85d-8e93da3d3b2a-image.png
                        Am Client Adapter sieht s so aus, admin und Passwort stimmen natürlich auch.
                        2bd0fe35-f068-406a-856a-6bb20a26eabf-image.png

                        Leider bekomme ich keine Verbindung zustande, im Log steht dann immer folgendes
                        58964621-5e65-493d-a1b3-44e9a2711265-image.png

                        Das Ganze läuft bei mir in einem Proxmox Container, die Verbindung von meiner Wärmepumpe zum MQTT Broker funktioniert einwandfrei und Ping an localhost funktioniert auch. Getestet habe ich auch mit 127.0.0.1 und 192.168.178.38 - immer das gleiche Ergebnis.
                        Das ist /etc/hosts

                        127.0.0.1       localhost
                        ::1             localhost ip6-localhost ip6-loopback
                        ff02::1         ip6-allnodes
                        ff02::2         ip6-allrouters
                        # --- BEGIN PVE ---
                        192.168.178.38 iobroker.home iobroker
                        # --- END PVE ---
                        

                        Vielleicht hat ja noch jemand eine Idee, ich komme einfach nicht mehr weiter.
                        Ich muss dazu sagen, dass ich mit Ü60 nicht so der Linuxexperte bin und mir alles nach und nach angelesen habe.

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          Jockel_Bln @Jockel_Bln last edited by

                          Ich habe nun eine andere Lösung für mich gefunden.
                          Für die wenigen Datenpunkte, die ich an die WP schicken möchte, benutze ich nun einfach einen sendTo Block in Blockly. Hier ein Beispiel
                          595ad5bf-b065-493e-90d6-2513b3385223-image.png
                          Funktioniert bisher gut. So kann ich mir die entsprechenden Datenpunkte unter 0_userdata anlegen und muss nicht mehr in mqtt.0 rum schreiben. Den Client Adapter kann ich damit dann wohl auch sparen.

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

                            Hallo zusammen

                            Ich steige neu in Arduino ESP 32 ein und möchte die Infos vom ESP an IOB senden, was soweit auch klappt.
                            Aber ich habe das Problem, das ich auch noch Shelly auf dem IOB habe mit MQTT.

                            Jetzt ist meine Frage, kann ich im MQTT Adapter irgenwas einstellen, das er nur die Daten vom ESP 32 anzeigt in den Instanzen, ohne die Shellys miteinzubinden??

                            Im Shelly Logt er mir das alles voll:

                            2025-05-17 15:21:53.570 - error: shelly.1 (3935900) [MQTT] (Shelly?) device unknown, configuration for client with id "ESP32Waage" (ESP32Waage / ESP32Waage / undefined) does not exist! Maybe this device is not supported in this adapter version.
                            2025-05-17 15:21:53.570 - error: shelly.1 (3935900) [MQTT] DO NOT CHANGE THE CLIENT-ID OF YOUR SHELLY DEVICES (see adapter documentation for details)
                            2025-05-17 15:21:53.581 - info: shelly.1 (3935900) [MQTT] Client Close: (ESP32Waage / ESP32Waage / undefined) (false)
                            2025-05-17 15:21:58.588 - error: shelly.1 (3935900) [MQTT] (Shelly?) device unknown, configuration for client with id "ESP32Waage" (ESP32Waage / ESP32Waage / undefined) does not exist! Maybe this device is not supported in this adapter version.
                            2025-05-17 15:21:58.588 - error: shelly.1 (3935900) [MQTT] DO NOT CHANGE THE CLIENT-ID OF YOUR SHELLY DEVICES (see adapter documentation for details)
                            
                            Samson71 1 Reply Last reply Reply Quote 0
                            • Samson71
                              Samson71 Global Moderator @stefu87_CH last edited by

                              @stefu87_ch sagte in Grundsatzfrage zu den MQTT Adaptern:

                              Aber ich habe das Problem, das ich auch noch Shelly auf dem IOB habe mit MQTT.

                              Nutzt Du den Shelly-Adapter dafür oder tatsächlich "reines" MQTT?

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                stefu87_CH @Samson71 last edited by

                                @samson71 sagte in Grundsatzfrage zu den MQTT Adaptern:

                                Nutzt Du den Shelly-Adapter dafür oder tatsächlich "reines" MQTT?

                                Den Shelly Adapter rein für die Shellys der neuen Generation und jetzt möchte ich gerne den ESP32 mit dem MQTT Adapter verwenden. Die Shellys sollen weiterhin mit dem Shelly Adapter kommunizieren.

                                Samson71 1 Reply Last reply Reply Quote 0
                                • Samson71
                                  Samson71 Global Moderator @stefu87_CH last edited by

                                  @stefu87_ch
                                  Dann hast Du doch keine Probleme. Den Shelly-Adapter so lassen wie er ist und die ESP in eine Instanz vom MQTT-Adapter. Natürlich auf unterschiedlichen Ports. So bleiben die Geräte dann auch "separat" in ihren jeweiligen Adaptern. Oder versuchst Du etwa die ESP mit in den Shelly-Adapter zu integrieren?

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    stefu87_CH @Samson71 last edited by

                                    @samson71 Nein die sollen getrennt bleiben.

                                    Das heisst ich kann im MQTT Adapter irgendeinen freien Port nehmen und den gleichen im ESP definieren, und dann sollte das klappen?

                                    Samson71 1 Reply Last reply Reply Quote 0
                                    • Samson71
                                      Samson71 Global Moderator @stefu87_CH last edited by

                                      @stefu87_ch sagte in Grundsatzfrage zu den MQTT Adaptern:

                                      Das heisst ich kann im MQTT Adapter irgendeinen freien Port nehmen und den gleichen im ESP definieren, und dann sollte das klappen?

                                      Im Prinzip ja. Zumindest wenn ioBroker auch gleichzeitig der MQTT-Server ist und da kein externer wie Mosquitto o.ä. mit im Spiel ist. Also Shelly z.B. auf Port 1883 und MQTT auf Port 1884. In den Endgeräten entsprechend die Ports setzen und gut ist.

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        stefu87_CH @Samson71 last edited by

                                        @samson71 Ok werde das mal testen. Ja ioBroker ist als Server eingestellt im MQTT Adapter

                                        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

                                        803
                                        Online

                                        31.7k
                                        Users

                                        79.6k
                                        Topics

                                        1.3m
                                        Posts

                                        10
                                        27
                                        3794
                                        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