Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Einzelnes MQTT-Topic bei Aktualisierung publizieren?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Einzelnes MQTT-Topic bei Aktualisierung publizieren?

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

      Hey Leute,

      ich habe in meinem MQTT-Adapter folgendes aktiviert und halte das zunächst auch für gut so 🙂

      2025-03-06_09-20.png

      Nun habe ich aber ein Ctrl-Topic, welches meinen Wechselrichter über eine AhoyDTU an und ausschalten kann, bei welchem ich die Werte auch bei einer Aktiualisierung gepublished benötige. Hintergrund ist, dass sich der Zustand des Wechselrichters im Hintergrund ändern kann und dann meine Controll-Commands ignoriert werden.

      Also bspw.:

      Tag 1, 15 Uhr => Topic wird auf "0" gesetzt und WR ist im Standby
      Tag 1, 19 Uhr => WR wird ohne PV stromlos und geht aus
      Tag 2, 08 Uhr => WR fährt durch PV Strom wieder hoch
      Tag 2, 09 Uhr => WR soll durch Topic "0" in Standby gesetzt werden, was nicht klappt, weil 0 auf 0 ignoriert wird

      Das müsste meiner Erkenntnis nach an dem Setting in meinem MQTT-Adapter hier liegen, dass er eben die 0 auf die 0 für dieses Topic erst gar nicht nochmal herausschickt. Es wäre ja aber wirklich blöd das nun generell für mein gesamtes MQTT-Netzwerk zu ändern, wenn ich es nur in diesem einen Falle hier benötige.

      Bekomme ich das mit den derzeitigen Einstellmöglichkeiten des Adapters irgendwie gelöst?

      Vielen Dank!

      LG

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

        @berzi warum nimmst du dafür nicht den mqtt-client Adapter?

        B 1 Reply Last reply Reply Quote 0
        • B
          Berzi @Homoran last edited by Berzi

          @homoran Danke dir für deine schnelle Antwort!

          Ääähhm... tatsächlich überforderst du mich ein wenig mit der Frage 😄

          Also bislang nutze ich "nur" den MQTT-Adapter, weil mein iobroker eben den MQTT-Broker mimt. Dadurch fasse ich dann einfach alle MQTT-Objekte in dem dadurch entstandenen Objektbaum an, da sich alle Geräte als Client dort eben anmelden. So auch die AhoyDTU, weil die ja auch als Client agiert. Alle meine Skripte lesen dort die jeweiligen Daten aus oder ändern sie eben auch, wenn ich einmal etwas steuern möchte. Das erscheint mir auch irgendwie schlüssig, dass ich das immer direkt zentral am Broker mache, der das dann an die jeweiligen Clients direkt publiziert.

          Habe ich hier einen Denkfehler, warum ich bislang noch nie einen Bedarf für den MQTT-Client-Adapter gesehen habe? Bzw. wie würde das in diesem Zusammenhang mein Problem lösen?

          Danke dir für deine Hilfe und entschuldige, wenn ich hier auf dem Schlauch stehen sollte!

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

            @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

            Bzw. wie würde das in diesem Zusammenhang mein Problem lösen?

            mit dem MQTT-Client Adapter kannst du selektiv jeden einzelnen State verwalten.
            Dies geschieht direkt in den Objekten über das Zahnrad, über den auch Einstellungen für Historisierung, Sourceanalytix u.a. gemacht werden

            B 1 Reply Last reply Reply Quote 0
            • B
              Berzi @Homoran last edited by

              @homoran Danke für die Rückmeldung. Ich habe mir den Adapter installiert und verstehe das nun so, dass der bestimmte States erstmal abonnieren muss, oder?

              Also es geht im Endeffekt um das hier bspw.:
              2025-03-06_09-55_1.png

              In dem mqtt-client habe ich eine lokale Verbindung zu meinem broker hergestellt, was soweit auch geklappt hat. Aber der Objektbaum im mqtt-client bleibt leer:
              2025-03-06_09-55.png

              Ich hätte jetzt erwartet, dass dort die states auftauchen, um diese dann wie von dir beschrieben bearbeiten zu können, oder nicht?
              So sehen meine settings aus, in welchem ich mal über die zusätzlichen Subscriptions versucht habe an die topics heranzukommen:
              2025-03-06_09-54.png

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

                @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                bestimmte States erstmal abonnieren muss, oder?

                ist bei mir ewig her, als ich es getestet hatte, aber

                @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                um das hier bspw.:

                kann ich mobil leider nicht erkennen
                Screenshot_20250306-100203_Firefox.jpg

                @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                Aber der Objektbaum im mqtt-client bleibt leer:

                Ich hätte jetzt erwartet, dass dort die states auftauchen, um diese dann wie von dir beschrieben bearbeiten zu können, oder nicht?

                Nein, die Einstellungen sind bei dem zu publishenden/abbonietenden State selber

                B 1 Reply Last reply Reply Quote 0
                • B
                  Berzi @Homoran last edited by Berzi

                  @homoran Okay jetzt habe ich den Adapter verstanden. Man kann bei jedem beliebigen Objekt nun ein Publish oder Subscribe in Richtung eines Brokers senden.

                  Aber das bringt mir doch nichts?

                  Also angemeldet ist der Client-Adapter logischerweise an meinem Broker, was beides mein iobroker ist. Der Broker hat ein State von der AhoyDTU, um welches es geht.
                  Würde ich da nun hinten dran noch zusätzlich den MQTT-Client aktivieren, dann würde er bei einer Anpassung des Wertes ein Publish vom Client an den Broker senden - der sendet das aber immernoch nicht an die AhoyDTU, weil er das nur bei Änderungen macht.

                  Der Adapter ist meinem Verständnis nach dafür da, dass ich nun bei jedem beliebigen Objekt, was ich lokal im iobroker verarbeite Dinge dann an einen Broker publishen oder subscriben kann. Aber die AhoyDTU ist ja auch ein Client und wird immer nur über meinen Broker versorgt werden.

                  Ich muss zugeben, dass mir sich der Sinn des Client-Adapters für mein Problem hier nicht erschließt?

                  Edit:
                  Also würde ich bei besagtem Topic den MQTT-Client aktivieren, dann würde er das dem MQTT-Broker jetzt halt in ein neues Topic melden. Mehr passiert da eigentlich nicht. Ich glaube tatsächlich, dass der Anwendungsfall hier ein falscher ist.

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Marc Berg
                    Marc Berg Most Active last edited by

                    @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                    Ich muss zugeben, dass mir sich der Sinn des Client-Adapters für mein Problem hier nicht erschließt?

                    Ja, das Problem ist hier echt der Broker mit der Einstellung "nur bei Änderungen publizieren". Jeder andere Broker macht genau dies nicht.

                    Möglicher Workaround: Per Skript das Topic kurz vor Setzen der "0" auf "1" (oder was auch immer Sinn ergibt) setzen.

                    B 1 Reply Last reply Reply Quote 0
                    • B
                      Berzi @Marc Berg last edited by

                      @marc-berg Ja, solch einen Workaround habe ich gerade. Der ist nur sehr unsauber, da man vorher nicht weiß, ob er Zustand gerade überhaupt inkonsistent ist oder nicht. Dieses getoggle, gerade über MQTT mit Wechselrichter dahinter verschluckt sich dann häufig.

                      Weil du sagst, dass jeder andere Broker genau "dies" nicht macht, was meinst du damit? Es ist ja als Setting im Broker vorhanden und könnte man deaktivieren. Ich halte das nur für sinnvoll, dass ein Broker nicht hunderte Topics jedes mal publiziert ungeachtet einer Änderung - vondemher ist das ja schon Ressourcen und Netzlastschonend. Also diese Einstellung stört mich eigentlich gar nicht, sondern dass man es für ein einzelnes Topic nicht anders handhaben kann.
                      Oder habe ich dich missverstanden?

                      Marc Berg 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators last edited by Homoran

                        @berzi
                        Irgendwie komme ich jetzt nicht mehr mit.

                        Der Wunsch war doch nur ein einziges Topic zu publishen, anstelle über eine Maske eine ganze Gruppe.
                        Genau das macht der Client-Adapter.

                        Wenn

                        @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                        sich der Zustand des Wechselrichters im Hintergrund ändern kann

                        ohne dass diese Änderung bei dir ankommt, liegt doch das Abonnement dieser Änderung im argen.

                        Wenn du an dieser Ursache angreifst hast du anschließend auch wieder nur Änderungen.

                        @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                        Ich halte das nur für sinnvoll, dass ein Broker nicht hunderte Topics jedes mal publiziert ungeachtet einer Änderung - vondemher ist das ja schon Ressourcen und Netzlastschonend.

                        Das kann man so sehen, andererseits ist das MQTT-Protokoll so effektiv, dass möglicherweise dieses Verhalten ei gepreist sein kpnnte.

                        Marc Berg 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @Berzi last edited by

                          @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                          Würde ich da nun hinten dran noch zusätzlich den MQTT-Client aktivieren,

                          nein, der ist vorgeschaltet

                          @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                          Der Adapter ist meinem Verständnis nach dafür da, dass ich nun bei jedem beliebigen Objekt, was ich lokal im iobroker verarbeite Dinge dann an einen Broker publishen oder subscriben kann.

                          richtig!

                          Wenn es dann sein muss (was in meinen Augen ein fixen von Symptomen ist, anstelke die Ursache zu fixen) und üblicherweise nur bei Änderung an andere Clients publishen willst, dann musst du alle States im mqtt-Client n6r bei Änderung an den Broker publishen, diesen einen Hoymiles Datenpunkt aber auf Aktualisierung.

                          Der Broker dann auf Aktualisierung

                          1 Reply Last reply Reply Quote 0
                          • Marc Berg
                            Marc Berg Most Active @Berzi last edited by

                            @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                            Weil du sagst, dass jeder andere Broker genau "dies" nicht macht, was meinst du damit? Es ist ja als Setting im Broker vorhanden und könnte man deaktivieren.

                            Jeder "normale" Broker (Mosquitto, RabbitMQ, wasauchimmer) wird dir jedes veröffentliche Topic an die Clients verteilen. Ob es sich zum letzten Mal geändert hat oder nicht. Die Option im Adapter ist insofern eine Sonderlocke.

                            Ich halte das nur für sinnvoll, dass ein Broker nicht hunderte Topics jedes mal publiziert ungeachtet einer Änderung - vondemher ist das ja schon Ressourcen und Netzlastschonend. Also diese Einstellung stört mich eigentlich gar nicht, sondern dass man es für ein einzelnes Topic nicht anders handhaben kann.

                            Das sehe ich wie @Homoran , die paar Bytes machen den Kohl nicht fett.

                            1 Reply Last reply Reply Quote 0
                            • Marc Berg
                              Marc Berg Most Active @Homoran last edited by Marc Berg

                              @homoran sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                              Irgendwie komme ich jetzt nicht mehr mit.

                              Der Wunsch war doch nur ein einziges Topic zu publishen, anstelle über eine Maske eine ganze Gruppe.

                              Nein. Der Wunsch war, die globale Einstellung "nur Änderungen publishen" für genau ein Topic zu übersteuern.

                              ohne dass diese Änderung bei dir ankommt, liegt doch das Abonnement dieser Änderung im argen.

                              Nein. Das "ctrl..." Topic ist (vom iobroker) überhaupt nicht abonniert. Darf es auch nicht.

                              B 1 Reply Last reply Reply Quote 1
                              • Marc Berg
                                Marc Berg Most Active last edited by Marc Berg

                                @Berzi

                                Ich glaube, dass Issue https://github.com/lumapu/ahoy/issues/1539 kannst du schließen. Ist ja kein Ahoydtu-, sondern Broker-"Problem".

                                BerziOnline created this issue in lumapu/ahoy

                                closed [Bug] MQTT topic ahoydtu/ctrl/power/0 doesn't react on updates - just on changes #1539

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

                                  @Berzi Ich halte das für Käse nur Änderungen zu publizieren, aber wenn man es unbedingt machen will, dann halt nicht beim Broker. Dann nutz den Adapter als Client entweder an einem Broker (andere Instanz) oder einem "normalen Broker" wie mosquitto und da kannst Du ja dann nur Änderungen publizieren. Zusätzlich nimmst Du dann noch einen anderen Client (andere Instanz oder mqtt-client) für den Topic, bei dem Du auch publizieren willst, wenn keine Änderungen erfolgt sind.

                                  Bei dem Client kannst ja dann je topic entscheiden, ob Du publishen willst oder nicht:
                                  e3748cb6-70a1-4842-a602-ffe0a89b3f5d-image.png

                                  Also generell ist es überhaupt nicht empfehlenswert irgendeine Option anzuklicken, wenn man den Adapter als Broker betreibt, Einen Broker sollte man möglichst nach Standard betreiben. Bei Clients kannst Du machen wie Du meinst.

                                  Marc Berg 1 Reply Last reply Reply Quote 1
                                  • Marc Berg
                                    Marc Berg Most Active @mickym last edited by

                                    @mickym sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                    Ich halte das für Käse nur Änderungen zu publizieren,

                                    Habe ich was anderes behauptet?

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

                                      @marc-berg sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                      @mickym sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                      Ich halte das für Käse nur Änderungen zu publizieren,

                                      Habe ich was anderes behauptet?

                                      Nein - ich wollte Dir eigentlich beipflichten - ah ich sehe ich hab auf Deinen Post geantwortet, war natürlich an den TE gerichtet.

                                      EDIT: Habe es korrigiert. 😉

                                      1 Reply Last reply Reply Quote 1
                                      • B
                                        Berzi @Marc Berg last edited by

                                        @marc-berg said in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                        @homoran sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                        Irgendwie komme ich jetzt nicht mehr mit.

                                        Der Wunsch war doch nur ein einziges Topic zu publishen, anstelle über eine Maske eine ganze Gruppe.

                                        Nein. Der Wunsch war, die globale Einstellung "nur Änderungen publishen" für genau ein Topic zu übersteuern.

                                        ohne dass diese Änderung bei dir ankommt, liegt doch das Abonnement dieser Änderung im argen.

                                        Nein. Das "ctrl..." Topic ist (vom iobroker) überhaupt nicht abonniert. Darf es auch nicht.

                                        Tatsächlich hast du das sehr gut zusammengefasst, danke dir. Das ist genau der Case, den ich habe.

                                        Nun habt ihr mich aber dann am Ende verloren, was die Lösung sein soll 😄

                                        Ist einfach das Setting in meinem MQTT-Broker "nur Änderungen publizieren" Quatsch, dass ich das aktiv habe? (was dann wohl meine Falschannahme war)

                                        Die Sache mit dem Client-Adapter leuchtet mir ehrlich gesagt für mein Problem immernoch nicht ein. Ich könnte nun neben dem Ctrl-Topic (um welches es hier geht) den Client Adapter aktivieren. Okay... dann mach ich das wie von bspw. @mickym in seinem Bild gezeigt. Dann passiert folgendes als nächstes: Der MQTT-Client schickt dieses Topic an den Broker, dadurch erscheint es in einem neuen Ordner in dem Objektbaum des MQTT-Broker Adapters als neues Objekt. Dadurch gewinne ich doch nichts... ich will doch einfach nur, dass die Änderung des ctrl-topics an den Client auch bei Aktualisierung geschickt wird. Mit dem MQTT-Client Adapter hab ich jetzt nur erreicht, dass der das aufnimmt und dann nochmal an neuer Stelle an den gleichen Broker schickt, damit der sich das halt nochmal woanders ablegt. ^^
                                        Ich glaube in diesem Thema mit dem MQTT-Client-Adapter reden wir echt aneinander vorbei oder ich kapiere etwas ganz grundlegendes nicht.

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

                                          @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                          ich will doch einfach nur, dass die Änderung des ctrl-topics an den Client auch bei Aktualisierung geschickt wird.

                                          das kannst du doch im Client konfigurieren! (Hab ich so noch im Kopf!)
                                          und im Broker den Haken weg bei "nur Änderungen"
                                          Wenn du allerdings nur diesen einen DP auch bei Aktualisierung publishen willst, musst du alle anderen im Client auf nur bei Änderung stellen, was natürlich ein gewisser Aufwand ist.

                                          Also e7nfach alles immer publishen und gut ist. Dann brauchst du natürlich den Cluent nicht mehr

                                          B 1 Reply Last reply Reply Quote 0
                                          • Marc Berg
                                            Marc Berg Most Active last edited by Marc Berg

                                            @berzi sagte in Einzelnes MQTT-Topic bei Aktualisierung publizieren?:

                                            Ist einfach das Setting in meinem MQTT-Broker "nur Änderungen publizieren" Quatsch, dass ich das aktiv habe? (was dann wohl meine Falschannahme war)

                                            Ich würde es so zusammenfassen: der MQTT Adapter als Broker ist etwas speziell, da er so eng in den ioBroker integriert ist und z.B. mit Retained Messages nicht umgehen kann. Für die meisten Anwendungsfälle reicht er aber aus.

                                            ABER:

                                            Ich habe mir mal den (zweifelhaften) Spass erlaubt, das Ganze zu testen. Ergebnis: Die Einstellung "nur bei Änderungen publishen" greift nur (!), wenn die Änderungen über einen ioBroker-Datenpunkt eingestellt werden. Beim Publishen via MQTT allerdings nicht. Das heißt, du kommst mit dem MQTT Client Adapter wahrscheinlich doch weiter, ohne alles anpassen zu müssen.

                                            • Erstellen eines Datenpunktes unter "0_userdata"
                                            • Klicken auf das Zahnrädchen, Auswahl des mqtt-client Adapters
                                            • Eingeben des Topics "ahoydtu/ctrl/power/0"

                                              ccef781e-e33c-4431-809f-1d274d6bc196-grafik.png
                                            • nur publishen

                                            Jetzt solltest Du über deinen neuen Datenpunkt steuern können. Achtung, in der MQTT Client Instanz alle Prefixe und zusätzliche Subscriptions entfernen!

                                            1 Reply Last reply Reply Quote 1
                                            • 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.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            22
                                            831
                                            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