Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. MQTT Topic/Payload Dokumentation

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    MQTT Topic/Payload Dokumentation

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

      Hallo Zusammen,

      habe bislang ein FHEM-System am laufen das ich eventuell mit iobroker ablösen möchte. An Hardware existiert bei mir

      • ein AS1440 Stromzähler mit D0-Schnittstelle der Obis ausgibt aber kein SML spricht. Da FHEM nicht in der Lage war den Stromzähler "gescheit" auszulesen (den kann man von 300Baud auf 9600Baud umschalten) habe ich ein C-Programm geschrieben das dies vom Timing her richtig macht und an die Werte einfach auf die Konsole schreibt. Die werden dann mittels Pipe in FHEM geschrieben.
      • eine Junkers Heizung mit Heatronic3-Protokoll das an einem USB-Adapter von Norbert S. hängt (https://www.mikrocontroller.net/topic/317004?page=single). Die wurde als einziges direkt von FHEM unterstützt, da Norbert S. etwas dafür geschrieben hatte.
      • eine Junkers Lüftungsanlage die Modbus-TCP spricht aber leider ziemlich dämlich zu betreiben ist. Zum Beispiel kann man hier nicht einfach sagen "Stufe 4 für die nächsten 30 Minuten", sondern man muss per Modbus-TCP aus dem Automatikprogramm nach Manuell schalten. Dann die Stufe ändern. Dann einen Timer "außerhalb" (FHEM) setzen, der nach der Zeit die Kiste wieder ins Automatikprogramm setzt. Dafür musste ich in FHEM einen eigenen Modbus-Gerätetreiber schreiben 😞
      • 8 serielle Modbus Stromzähler DDS238-1ZN an einem Modbus2USB-Adapter. Die Zähler liefern 10 Werte, unter anderem den aktuellen Strom. Hier war es in FHEM nicht möglich alle 8 Zähler einfach so schnell wie möglich hintereinander abzufragen. Unter 10 Sekunden gab es immer wieder Fehler. Auch hier habe ich ein C Programm geschrieben das jetzt innerhalb einer Sekunde alle 8 Zähler auslesen kann und die Werte auf die Konsole schreibt wo diese mittels Pipe in FHEM geschrieben werden
      • 1 seriellen Modbus für den Gaszähler-Impulszähler der direkt in FHEM alle 10 Sekunden ausgelesen wird
      • Selbstbau IO-System mit 128 Eingängen und 128 Ausgängen das über USB gesteuert wird und auch über USB die aktuellen Stati ausgibt. Hierüber werden sämtliche Lampen an- und ausgeschaltet, Fenster- und Tür- und Klingelkontakte, Schlösser und Bewegungsmelder ausgewertet, Rollladen und Garagentor rauf- und runtergefahren. Dazu gab es ein serielles IO-Modul in FHEM das ich aber leider erst von Bugs befreien musste bevor ich es einsetzen konnte 😞

      Bei FHEM ist mir aufgefallen das diese SmartHome-Lösung eigentlich gar nicht in der Lage war dumme Hardware "intelligent" einzubinden. Ein Modbus der nur alle 10 Sekunden irgendwas pollen kann ist schön für ein Gerät das eine Super Schnittstelle über Modbus bietet und nur "bedient" werden muss aber eine Katastrophe für z.B. meine Junkers "Lüftungssteuerung".

      Aber auch beim einfachen Auslesen von Stromzählern bin ich mit den Standardmodulen von FHEM sofort auf die Nase gefallen. Beim AS1440 muss man nachdem man auf 9600 Baud umschaltet 400ms warten. Das habe ich in Perl unter FHEM nicht sauber hingekriegt. Genauso das Auslesen von 8 Modbus Stromzählern "einfach so schnell wie möglich hintereinander", ist wohl schon eine Spezialanwendung. 😬

      So musste ich relativ viel sowohl an FHEM an Modulen rumbasteln und erstellen (Perl 😨) wie auch externe Programme schreiben die die Daten aufbereiten.

      Diese (negativen) Erfahrungen brachten mich zu der Frage: Warum besteht eine Smarthome-Steuerung eigentlich nicht grundsätzlich nur aus einem MQTT-Broker der sämtliche Daten bereitstellt und externe Programme speisen einfach den MQTT-Broker? Super wäre in so einem Fall wenn Topic und Payload einfach irgendwie sein könnten und auf dem Adapter könnte man das einfach konfigurieren oder als Template hinterlegen.

      Die Lösung nur mit MQTT-Broker möchte ich jetzt mit iobroker probieren.

      Der iobroker läuft schonmal soweit, ein mosquitto ist installiert und auch der MQTT Broker/Client-Adapter ist einsatzbereit.

      Aus meiner naiven Sicht muss ich also "nur noch" z.B. meinen beiden Zähler-Auslese-Programmen beibringen Ihre Daten an den MQTT-Broker zu senden.

      Und nun meine Fragen:

      • Kann der Adapter auf unterschiedliche Payloads oder Topics konfiguriert werden
      • Braucht es einen bestimmten Aufbau vom Topic? Wenn ja, wo ist das dokumentiert?
      • Braucht es einen bestimmten Aufbau vom Payload? Wenn ja, wo ist das dokumentiert?
      • Wie funktioniert ein Mapping von Gerätearten? Also wie wird die Rückmeldung von einem Fenster erkannt? Wie die Rückmeldung einer Tür?
      • Wie sieht Topic oder Payload für verschiedene Gerätearten aus? Fenster? Türen? Rollladen? Bewegungsmelder?

      Ich habe dazu leider so gut wie nichts dazu gefunden unter https://github.com/ioBroker/ioBroker.mqtt/blob/master/README.md

      Gruß

      Jochen

      Gargano Homoran hydrotec 3 Replies Last reply Reply Quote 0
      • Gargano
        Gargano @Joe_D last edited by

        @joe_d Der mqtt Adapter nimmt die Topics entgegen, legt Datenpunkte an und schreibt die Werte rein. Eine Weiterverarbeitung muss dann mit anderen Adaptern oder JS erfolgen

        J 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @Joe_D last edited by

          @joe_d sagte in MQTT Topic/Payload Dokumentation:

          Die Lösung nur mit MQTT-Broker möchte ich jetzt mit iobroker probieren.
          Der iobroker läuft schonmal soweit, ein mosquitto ist installiert und auch der MQTT Broker/Client-Adapter ist einsatzbereit.

          wenn du bereits einen Broker hast, kannst du bei iobroker auch den MQTT-Client Adapter nehmen

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

            @gargano Das bedeutet?

            Bei Homeassistant z.B. gibt es bei MQTT ein "Discovery", wenn man Meldungen in dem Format sendet werden z.B. Lichter usw. angelegt (https://www.home-assistant.io/docs/mqtt/discovery). Das ist dort alles schön beschrieben.

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

              @homoran Ja, ich kann auch den MQTT-Client Adapter nehmen. Und ich kann ja mit

              mosquitto_pub -h 127.0.0.1 -t test/lampe/1/off -m "Lampe ist aus"
              

              etwas an meinen Broker schicken. Was macht der MQTT-Client Adapter denn damit?

              Homoran Gargano 2 Replies Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Joe_D last edited by

                @joe_d sagte in MQTT Topic/Payload Dokumentation:

                Was macht der MQTT-Client Adapter denn damit?

                er nimmt es an, legt einen Datenpunkt an und schreibt den Wert da hinein

                Ist aber schon einige Jahre her, dass ich damit gearbeitet hatte

                1 Reply Last reply Reply Quote 0
                • Gargano
                  Gargano @Joe_D last edited by Gargano

                  @joe_d Der mqtt Adapter macht nichts weiter damit. Nur den Wert in den Datenpunkt schreiben. Bei mir werden die Heizungsdaten übermittelt. Die zeige ich dann in der Vis mit widgets und einer Grafik an.
                  Anderes Beispiel,, übermitteln der Stromdaten der Waschmaschine, und Bestimmung wann die Maschine fertig ist. Dies wird mit einenJavascript erledigt

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

                    @gargano sagte in MQTT Topic/Payload Dokumentation:

                    @joe_d Der mqtt Adapter macht nichts weiter damit. Nur den Wert in den Datenpunkt schreiben. Bei mir werden die Heizungsdaten übermittelt. Die zeige ich dann in der Vis mit widgets und einer Grafik an.

                    Ok, ist mir nun auch gelungen:
                    310118fe-89a3-4577-9d73-87074803cd23-grafik.png

                    Nur fehlt mir jetzt echt irgendwie ein Leitfaden.

                    Wie kann ich eine schaltbare Lampe (am Besten automatisch) mit MQTT hinzufügen?

                    Gargano 1 Reply Last reply Reply Quote -1
                    • Gargano
                      Gargano @Joe_D last edited by Gargano

                      @joe_d mit einem kleinem Script, der auf den Event triggert, also in JS ein on -Event. In dem Event dann setstate(dpname,wert) die Lampe schalten.
                      Du kannst es auch über Blockly machen, da kenn ich mich aber nicht aus. Ich bevorzuge JS, da weiß ich was der macht
                      Ansonsten gibt es noch den Szenen Adapter

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

                        @gargano Verstehe ich leider nicht wirklich. Gibt es irgendwo ein Beispiel für sowas? Also eine Lampe die dem MQTT-Broker ihren aktuellen Zustand meldet (und wie der zugehörige Payload aussehen muss/sollte) und in iobroker ein Lampenicon auf das man draufdrückt und das dann je nach Zustand dem MQTT-Broker "was" schickt.
                        Oder gibt es für solche Dinge keinen "Standard", d.h. muss man dies alles selbst progammieren?

                        Gargano 1 Reply Last reply Reply Quote 0
                        • Gargano
                          Gargano @Joe_D last edited by

                          @joe_d muss man alles selber machen. Aber schau Dir mal den Szenen Adapter an

                          1 Reply Last reply Reply Quote 1
                          • hydrotec
                            hydrotec @Joe_D last edited by

                            @joe_d

                            Hallo Jochen,

                            es gibt noch keine offizielle Dokumentation, in der Form wie du es gebrauchen könntest.
                            Derzeit arbeite ich an einer allgemeinen Dokumentation zu MQTT.
                            Hier kannst du dir mal ein Vorab ansehen, ist noch nicht ganz fertig.

                            @joe_d sagte in MQTT Topic/Payload Dokumentation:

                            Kann der Adapter auf unterschiedliche Payloads oder Topics konfiguriert werden

                            Ich gehe mal davon aus, das du den Adapter "MQTT Broker/Client" meinst, welcher in der Instanz als Client konfiguriert wird. Die Verbindung zu mosquitto hast du ja schon funktionabel hergestellt.
                            Innerhalb der Instanz hast du die Möglichkeit die gewünschten Topics anzugeben.
                            So kannst du mehrere Instanzen anlegen, welche auf unterschiedliche Topics hören.
                            mqtt_install_03.png
                            mqtt_install_04.png

                            Gruß, Karsten

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

                              @hydrotec Danke für die Infos.

                              Bislang schicke ich einfach irgendwelche Sachen an irgendwelche Topics, die werden "leider" nur als Zustandstyp Zeichenkette, Rolle variable angelegt:

                              650210e6-cd87-45d8-88a9-82774ac4da60-grafik.png

                              Cool fände ich nun, wenn die rot umrandeten Felder per MQTT besetzt werden könnten:

                              5f92651b-563e-4cce-8f9e-7d63dec66c1a-grafik.png

                              Zum Beispiel über ein spezielles Topic, /iobroker/mqttconfig mit Inhalt:

                              {
                                "common": {
                                  "name": "/devices/wb-adc/controls/lala1",
                                  "write": false,
                                  "read": true,
                                  "role": "switch",
                                  "type": "boolean"
                                }
                              }
                              

                              Das dann eben angelegt oder geändert wird sofern es das nicht gibt oder andere Werte enthält...

                              hydrotec mickym 2 Replies Last reply Reply Quote 0
                              • hydrotec
                                hydrotec @Joe_D last edited by

                                @joe_d

                                Denke nicht das es vorgesehen ist, da etwas zu ändern.
                                Generell funktionieren die Objekte ja so wie sie angelegt sind.
                                Aber du kannst gerne auf GitHub nachfragen.
                                https://github.com/ioBroker/ioBroker.mqtt

                                Nur für mich, aus Interesse, was möchtest du durch diese Änderung erreichen?

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

                                  @joe_d Das macht keinen Sinn. mqtt kennt im Prinzip keine Datentypen und die Daten werden so weiter transportiert, wie sie reingekommen sind. Deswegen wird immer alles als String und Buffer interpretiert. Als Transport bieten sich JSON Strings an - damit kann ich dann im JS, Blockly oder Node Red wieder originale Datentypen draus machen.

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

                                    @hydrotec Im Endeffekt wäre sowas wie https://www.home-assistant.io/docs/mqtt/discovery ganz hübsch:

                                    3490241a-4830-4f50-aa65-bef973eab207-grafik.png

                                    @mickym Es geht mir ja auch nicht um MQTT selbst, das ist ja nur das Transportmedium, sondern um iobroker. iobroker hat doch unterschiedliche roles/types/write und read-Eigenschaften (die ich bislang noch nicht so ganz verstehe). Warum und wozu kann ich die manuell anpassen?

                                    Wenn es keinen Sinn macht, dann müsste es doch eigentlich ausreichen alles über "variable String" zu erledigen und es bräuchte gar keine unterschiedlichen roles und types?

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

                                      @joe_d Du sollst da drin auch nichts anpassen. In der Regel sind diese Felder nur dazu da, um Datenpunkte unter 0_userdata entsprechend zu konfigurieren. Alles andere sollten in der Regel die Adapter machen. Und der mqtt-Adapter interpretiert nun mal keine Datentypen (und sollte das meiner Meinung nach auch nicht).

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

                                        @mickym Das iobroker Konzept verstehe ich noch nicht so ganz. Warum gibt es unterschiedliche roles und types? Wo werden die verwendet? In Jarvis konnte ich so einen mqtt-Datenpunkt auf ein Widget legen, musste es aber von Hand konfigurieren. Bislang konnte ich noch nicht rausfinden wie ein Datenpunkt beschaffen sein muss um automatisch z.B. als Schalter oder Licht dargestellt zu werden....

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

                                          @joe_d Da gibt es sicher kompetentere Ansprechpartner als mich. In der Regel ist für einen Benutzer vorgesehen, Räume oder Funktionen über die Aufzählungen den Objekten zuzuordnen bzw. umgekehrt den Aufzählungen die Objekte zu zuordnen.
                                          486dcdad-9889-4dc2-a3d8-d50817abd563-image.png
                                          37628e44-dc0c-4b8e-9b8a-d64c3a8bff22-image.png

                                          Diese Objekt Eigenschaften sind in der Regel (ausser userdata oder zur Fehlerbehebung) zum Beschreiben durch den Adapter gedacht.

                                          Ich denke @Homoran, @paul53 oder @apollon77 können Dir das genauer erklären bzw. auf eine aktuelle Dokumentation hinweisen.
                                          Ich gebe hier nur wieder, wie ich das System jetzt aus der Praxis verstanden habe. Bin aber auch kein Adapterentwickler.

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

                                            Also "roles" werden von Visualisierungs-UIs genutzt (bzw KÖNNEN!) um automatisiert richtige Widgets anzuzeigen ohne das dies durch den User konfiguriert wird. Material macht dies zB so. Andere Visus nutzen es nicht oder nutzen es nur teilweise. Genauso der "Type" kann in Verbidnung genutzt werden um zB eine Checkbox bei Boolean zu nutzen oder (in verbindung mit "states") eine Selection mit relevanten Werten oder ein Zahlenfeld mit hoch/runter-Buttons für Zahlen.

                                            Die "Functions" (aka Funktionen) und "Rooms" (Räume) sind ein von Homematic übernommenes Konzept was eine Zweistufige Strukturierung der Geräte erlaubt. Visus, wie Material o.ä., nutzen diese um auch hier automatisiert Strukturen anzuzeigen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            687
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            21
                                            2356
                                            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