Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. MQTT Broker/Client Adapter sendet nicht alle Variablen

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    MQTT Broker/Client Adapter sendet nicht alle Variablen

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

      Systemdata Bitte Ausfüllen
      Hardwaresystem: Proxmox x86
      Arbeitsspeicher: 8GB
      Festplattenart: SSD
      Betriebssystem: Debian
      Node-Version: 10.x.x
      Nodejs-Version: 16.4.1
      NPM-Version: 7.2.0
      Installationsart: Skript
      Image genutzt: Nein
      Ort/Name der Imagedatei: Link

      Ich versuche die Variablen des Viessmann Adapters per MQTT Adapter zu übertragen. Dieser ist als Client konfiguriert und sendet an einen Mosquitto Broker.
      Der MQTT Explorer zeigt mir lediglich 80% der Variablen an, die gesendet werden sollen. Vor allem die "Set" Variablen werden nicht übertragen.
      Hier die aktuellen Einstellungen:system.adapter.mqtt.0.json

      Systemdata Bitte Ausfüllen
      Hardwaresystem: NUC/Pi3/etc.
      Arbeitsspeicher: 1GB
      Festplattenart: SD-Karte/SSD/HDD
      Betriebssystem: Ubuntu/Windows/Mac
      Node-Version: 10.x.x
      Nodejs-Version: 10.x.x
      NPM-Version: 6.x.x
      Installationsart: Skript/Manuell
      Image genutzt: Ja/Nein
      Ort/Name der Imagedatei: Link Systemdata Bitte Ausfüllen
      -- --
      Hardwaresystem: Proxmox x86
      Arbeitsspeicher: 8GB
      Festplattenart: SSD
      Betriebssystem: Debian
      Node-Version: 10.x.x
      Nodejs-Version: 16.4.1
      NPM-Version: 7.2.0
      Installationsart: Skript
      Image genutzt: Nein
      Ort/Name der Imagedatei: Link

      Ich versuche die Variablen des Viessmann Adapters per MQTT Adapter zu übertragen. Dieser ist als Client konfiguriert und sendet an einen Mosquitto Broker.
      Der MQTT Explorer zeigt mir lediglich 80% der Variablen an, die gesendet werden sollen. Vor allem die "Set" Variablen werden nicht übertragen.
      Hier die aktuellen Einstellungen:

      system.adapter.mqtt.0.json

      A 1 Reply Last reply Reply Quote 0
      • A
        AndyGR42 @passuff last edited by

        @passuff Moin. Gibt es einen Grund warum Du nicht den iobroker Adapter auch als Broker benutzt? Das hat zumindest bei mir Vieles einfacher gemacht.

        P 2 Replies Last reply Reply Quote 0
        • P
          passuff @AndyGR42 last edited by

          @andygr42 ginge natürlich auch. Ich werde es einmal testen ob es am Sender oder am Broker liegt... Danke

          1 Reply Last reply Reply Quote 0
          • P
            passuff @AndyGR42 last edited by passuff

            @andygr42
            Leider das identische Bild. Es scheint am Client und nicht am Broker zu liegen. Aktuell würde ich sagen, dass nur Variablen vom Typ read, nicht aber alle vom Typ write übertragen werden.
            EDIT: Beim MQTT-Client Adapter verhält es sich identisch. Auch hier funktionieren nur read Variablen. Habe das gerade auch noch mal für nen Shelly Plug getestet. Power (read) funktioniert einwandfrei, switch (write) funktioniert nicht...

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

              @passuff Also dass der MQTT Broker ein Problem mit nicht bestätigen Änderungen hat, das weiß ich auch und bin seit dem auch auf die Kombination MQTT Adapter als Client und mosquitto als Broker sehr zufrieden und klappt auch alles.

              Kannst Du mal Deine Einstellungen per Screenshot schicken - das JSON Teil nützt mir nichts - es empfiehlt sich alle Haken raus zu machen.

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

                @passuff Die Shelly plugs funktionieren auch einwandfrei, dafür nutzt Du den command Datenpunkt:

                42e72ad9-f773-4a72-be30-672cdc4b17d4-image.png

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

                  @mickym

                  Wenn ich alle Haken entferne, wird bei mir rein gar nichts gesendet... Hier meine Einstellungen:
                  c129654e-0c68-4c4b-ba54-2990ad7c44b4-image.png

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

                    @passuff
                    Du machst einen Fehler beim Publishen - da fehlt ja die Instanz.

                    Das soll wohl viessmann.0.* heißen

                    Mit Deinen Einstellungen kann der Adapter ja gar nichts finden, wenn die Instanz nicht richtig eingegeben wurde.

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

                      @mickym das passt schon so... Ich habe mehrere Heizungen und daher mehrere Instanzen. Wie gesagt, ich will nur publishen, nichts subscriben....

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

                        @passuff Dann musst Du auch alle Instanzen mit Komma so eingeben (denke nicht, dass der Adapter das so macht).

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

                          @mickym Doch funzt einwandfrei für die read variablen, nicht aber für die write variablen... Wenn ich den Datentyp manuell ändere, funktioniert es auch.. Aber das macht verständlicherweise wenig Sinn 😉

                          d9f4e598-d6dc-4a4d-8a6c-7f12ac60d94b-image.png

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

                            @passuff Ich würde es trotzdem mal so versuchen:

                            viessmann.0.*,viessmann.1.*
                            

                            Mein publish Einstellungen sind so:
                            8c152c18-08ba-49ca-9449-630d564136f5-image.png

                            Ändern geht aber natürlich nur in dem Publishing Ast. Also nichts unter mqtt.*

                            Sprich da sind im iobroker logischerweise keine Objekte. Also geschrieben werden kann mit Deinen Einstellungen nur unter viessmann.

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

                              @mickym habe es versucht, macht aber keinen Unterschied. Ich denke die zwei MQTT Clients haben doch unterschiedliche Probleme bei den write Variablen:

                              MQTT Broker/Client (Als client konfiguriert):

                              Write Variablen werden nur übertragen, wenn diese einen Wert haben. Dies ist beim Viessmann Adapter leider nur der Fall, wenn bereits zuvor ein Wert gesendet wurde.

                              73b13dfd-368e-46c1-9d4f-fde774fc5ce2-image.png

                              In diesem Fall wurde nur die Pumpendrehzahl übertragen.

                              MQTT Client: Write Variablen werden grundsätzlich nicht gesendet. Ich habe zumindest keine Konfiguration gefunden die funktioniert. Sobald man den Datentyp auf read ändert, funktioniert alles wunderbar. Das ist logischerweise nicht zielführend und diente nur als Test...

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

                                @passuff Nun im Prinzip ist das ja auch nicht schlimm, wenn nur übertragen wird, wenn ein Wert vorhanden ist.

                                Ich ändere grundsätzlich gar nichts am Lesen/Schreiben an den Datenpunkten.

                                Wie gesagt ich habe 2 mqtt Adapter Instanzen laufen.

                                1. Eine Frontend Instanz mit dem ich alles subscribe und publishe
                                2. Eine Veröffentlichungsinstanz

                                Wo ist denn ein Problem, dass nur die Werte übertragen werden, wenn was drin steht. Wenn Du was anderes abonnierst und der Datenpunkt existiert noch nicht, ist das unter mqtt überhaupt kein Problem. Insbesondere bei SET Kommandos. Wenn kein Kommando abgesetzt wurde, braucht es auch keinen DP. Dann finde ich es ggf. auch sehr problematisch wenn diese Kommandos beim Verbinden alle nochmal geschickt werden.

                                Mqtt legt grundsätzlich keine leeren Datenpunkte an.

                                Ich habe nur mit dem MQTT Broker/Client Adapter Erfahrungen, nicht mit dem MQTT Client Adapter an sich.

                                Schließlich dient eine MQTT Datenbank nicht dazu ein Spiegelbild Deiner Adapterdatenpunkte abzubilden. Wie gesagt abonnieren kann man immer, auch wenn die Datenpunkte noch gar nicht existieren.

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

                                  @mickym

                                  Openhab bekommt die Write Variablen zum beschreiben zur Verfügung gestellt. Wenn zukünftig Openhab meine Heizung steuern soll, geht das natürlich nur, wenn die Variablen auch zur Verfügung stehen. Das wäre so aktuell nicht möglich. Den Rest deiner Antwort verstehe ich nicht wirklich bzw. kann das auf meine Problemstellung nicht anwenden, da ich nur publishe und nicht subscribe.

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

                                    @passuff sagte in MQTT Broker/Client Adapter sendet nicht alle Variablen:

                                    @mickym

                                    Openhab bekommt die Write Variablen zum beschreiben zur Verfügung gestellt. Wenn zukünftig Openhab meine Heizung steuern soll, geht das natürlich nur, wenn die Variablen auch zur Verfügung stehen.

                                    Wenn Openhab Deine Heizung steuert, dann published Openhab diese Werte einfach in dem set Ast. Dafür braucht es keine Variablen. Mqtt ist ein reines eventbasiertes Protokoll ohne "Variablen". Im Gegenteil müsste dann Dein iobroker dies dann subscriben - aber das geht nicht in den Viessmann Adapter, sondern dann unter der mqtt Instanz, die Du dann mit Deinem Adapter aber subscriben müsstest. Im Prinzip publishst Du gar nichts vom iobroker, sondern von Openhab.

                                    Du brauchst dann aber trotzdem noch Deine Logikamschine, die das was Dein Openhab System gepublished hat in Deinen Adapter schreibt.
                                    Der mqtt Adapter wird nie in Datenpunkte eines fremden Adapters schreiben, sondern nur lesen.

                                    Meines Erachtens publishst Du die Status Werte, wenn Du sie in Openhab benötigst, abonnierst aber die set Werte, die Du mit Openhab schreibst und fügst sie ggf. in den Adapter ein.

                                    mqtt stellt nichts zur Verfügung, sondern der Broker sammelt gepublishte Informationen und benachrichtigt Clients, wenn bestimmte Themen subscribed wurden. Ohne Dir zu nahe zu treten, denke ich dass Du ein nicht ganz richtiges Verständnis von mqtt hast.

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

                                      @mickym Openhab hat aber keinen Adapter um die Heizung zu steuern, daher muss die über ioBroker bzw. MQTT erfolgen...

                                      Openhab<->MQTT<->Iobroker<->Viessmann

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

                                        @passuff Ja ist ja richtig.

                                        Aber nochmal Du stellst nichts zu verfügung, sondern abonnierst was Du brauchst und veröffentlichst.

                                        Wenn Du mit OpenHab steuern willst, aber in iobroker der Adapter ist, veröffentlicht iobroker den Status, Openhab die Befehle. Die können auch in einer beliebigen Struktur sein und Du musst dann mit Deiner Logikmaschine die Openhab Befehle in Deine Adapterpunkte schreiben.

                                        1. Also iobroker published Heizungsstatus (falls in Openhab) benötigt. Openhab subscribed (abonniert) diese falls benötigt.
                                        2. Openhab published die Befehle zur Heizungssteuerung - kann ja auch eine von Dir festgelegte Struktur sein.
                                        3. iobrokere subscribed (abonniert) diese Befehle und diese sind dann unter mqtt.0.* sichtbar.
                                        4. Deine Logikmaschine nimmt diese und schreibt sie in die viessmann Adapter Instanzen.

                                        So funktioniert nun mal mqtt und das ist das was Du ja erreichen willst.

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

                                          @passuff sagte in MQTT Broker/Client Adapter sendet nicht alle Variablen:

                                          @mickym Openhab hat aber keinen Adapter um die Heizung zu steuern, daher muss die über ioBroker bzw. MQTT erfolgen...

                                          Openhab muss deshalb die Befehle im MQTT veröffentlichen und iobroker subscribed die, damit Du im iobroker auf die Befehle , die Du aus Openhab schickst reagieren kannst.

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

                                            @mickym sagte in MQTT Broker/Client Adapter sendet nicht alle Variablen:

                                            eshalb die Befehle im MQTT veröffentlichen und iobroker subscribed die, damit Du im iobroker auf die Befehle , die Du aus Openhab schickst reagieren kannst.

                                            Vermutlich stehe ich auf dem Schlauch. Das macht aus meiner Sicht so keinen Sinn. Bleiben wir mal bei der Verbindung iobroker<->MQTT:

                                            iobroker mit dem MQTT Client veröffentlich Variablen vom Typ read/write auf dem Mosquitto Broker, die, wie auch immer von Openhab bearbeitet werden können. Wenn jetzt der MQTT Client auf dem iobroker die Variablen vom Typ write nicht published, da kein Wert darin enthalten ist, kann auf dem Broker durch Openhab auch nichts beschrieben werden...
                                            Du sagst jetzt, dass Openhab die Befehle veröffentlichen soll. Wie soll das gehen? Die sind Openhab mangels Adapter völlig unbekannt...
                                            Ich möchte mit iobroker auch auf nichts reagieren.. Wie gesagt, soll iobroker lediglich die Verbindung zu Viessmann zur Verfügung stellen...

                                            Die Verbindung MQTT<->Openhab steht aktuell noch nicht. Ich nutze zum Testen noch den MQTT Explorer. Das tut aber aktuell noch nichts zur Sache. Wenn ich in iobroker eine write Variable befülle, wird mir diese sofort auf dem Broker zur Verfügung gestellt und ich kann mit dem Explorer diese beschreiben. So funktioniert der Test Aufbau perfekt. Einzig und allein scheitert es em veröffentlichen der Variablen wenn es (noch) keinen Wert gib. Daran kann ich aber nichts ändern, da der Viessmann Adapter bzw. die Verbindung zur Heizung nun mal so arbeitet. Die Heizung stellt diese variablen nicht zur Verfügung... Ich kann es somit nur im MQTT Adapter ändern.
                                            Was mich bestätigt ist der Fakt, dass es den MQTT Client Adapter nicht stört. Wenn ich die leere Variable vom Typ write auf Typ read umstelle, wird diese ebenfalls übertragen...
                                            Wie ich es drehe und wende, ich sehe das Problem beim Adapter und nicht bei meinem Verständnis, lasse mich aber gerne vom Gegenteil überzeugen...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            951
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            21
                                            1302
                                            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