Navigation

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

    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

    MQTT Publish Bug?

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

      @homezecke öhm, Zigbee und MQTT sind ja eigentlich 2 verschiedene Dinge ...
      also den Deconz-Adapter kenne ich nicht aber du hast von diesem Datenpunkte im MQTT?
      Wie der das Auswertet würde ja dann diesem liegen ...

      Also alle MQTT-Geräte die ich kenne (zu 90% Tasmota) haben für das Melden von Zuständen und für das Setzen immer unterschiedliche Topics. Vermutlich weil man so sauber trennt und die Gefahr einer Schleife etc. umgeht.

      Ich will nicht ausschließen das per /set das anders geht, das wäre dann aber eher der Deconz-Adapter und wie der das an das ZigBee Gerät sendet.

      HomeZecke 1 Reply Last reply Reply Quote 0
      • HomeZecke
        HomeZecke @BananaJoe last edited by

        @bananajoe

        Also der Deconz war nur ein Beispiel. Ich könnte auch ein Homematic oder shelly usw. nehmen. der IOBroker setzt das auf das Gerät um. Muss nur der richtige Wert in das Topic geschrieben werden. Aber eben nur, wenn dieses /set mitgeht. Und das erschließt sich mir nicht.

        Das Problem ist nämlich, dass wenn auf einen "normalen" MQTT-Client publisht werden soll, muss er dieses automatisch angehängte "/set" auch verstehen. Und das denke ich dürfte kaum der Fall sein.

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

          @homezecke Wie kommen denn die Homematic und Shelly Topics da in den MQTT-Broker? Bei mir sind im MQTT-Adapter = auf dem Broker nur die Datenpunkte zu sehen die meine MQTT-Clients dort selbst erzeugt haben. Tasmota dann z.B. stat/ und tele/ über die mir der Client etwas mitteilt, cmnd/ um den Client zu steuern (und nur auf diese Datenpunkte hört der Client, die anderen ignoriert er)

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

            @homezecke Nachtrag: Was passiert denn wenn du das z.B. über den MQTT-Explorer versuchst? http://mqtt-explorer.com/

            HomeZecke 1 Reply Last reply Reply Quote 0
            • HomeZecke
              HomeZecke @BananaJoe last edited by

              @bananajoe

              Also ich nutze den MQTT-Explorer auch und publishe mit diesem einfach auf den Datenpunkt des Gerätes das ich schalten möchte. Egal ob HM Gerät, Deconz oder sonst was. Und im Objekt-Tree von IObroker kann ich auch die Änderung des states sehen. Aber schalten tut das Gerät nur, wenn eben "unterschiedliche Namen für setzen und lesen" gesetzt wird. Das Gerät wird von IOBroker geschaltet, es erhält die MQTT Nachricht gar nicht, vermute ich.

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

                @homezecke sagte in MQTT Publish Bug?:

                @bananajoe

                Also der Deconz war nur ein Beispiel. Ich könnte auch ein Homematic oder shelly usw. nehmen. der IOBroker setzt das auf das Gerät um. Muss nur der richtige Wert in das Topic geschrieben werden. Aber eben nur, wenn dieses /set mitgeht. Und das erschließt sich mir nicht.

                Das Problem ist nämlich, dass wenn auf einen "normalen" MQTT-Client publisht werden soll, muss er dieses automatisch angehängte "/set" auch verstehen. Und das denke ich dürfte kaum der Fall sein.

                Nun - Tasmota hat immer unterschiedliche Topics für den Status und für das Kommando. Wenn Du und das Gerät in den gleichen Topic schreibt, dann habt ihr ganz schnell eine Endlosschliefe, die das System zum Erliegen bringt.
                Wenn Du es nicht über set machst und über das topic selbst schaltest, dann meldet das Gerät über das gleiche Gerät den neuen status usw.

                Man kann schon schalten - am Besten man macht alle Haken raus im MQTT-Adapter.

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

                  @mickym sagte in MQTT Publish Bug?:

                  Man kann schon schalten - am Besten man macht alle Haken raus im MQTT-Adapter.

                  Ja, habe ich auch gemacht, nutze im Moment auschließlich selbst programmierte ESP's per MQTT. Nutze da auch getrennte Topics. Aber so kann ich mittels client keine Geräte außerhalb von MQTT steuern. Außer ich aktiviere den Haken für unterschiedliche Topic's.

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

                    @homezecke Schau mal ob Du Nachrichten im Log bekommst, dass nach 11 Retries eine Message gelöscht wurde. Dann hast Du ein Problem mit dem ACK-Flag und ich kann Dir nur zu einem externen Broker (mosquitto) raten und den MQTT-Adapter als Client einzusetzen.

                    https://forum.iobroker.net/topic/33772/mqtt-message-xxx-deleted-after-11-retries?_=1635961518096

                    Können auch 12 sein. 😄

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

                      Ich glaube ich muss auch mal sagen was ich eigentlich vor habe. Ich möchte mir praktisch eine Art "Fernbedienung" basteln die als MQTT Client in IOBRoker alles schalten kann. Beim rumspielen in MQTT-Explorer stellte ich fest, dass ich alle Datenpunkte in Iobroker über MQTT ändern kann. Nicht nur die unter mqtt. Aber die Änderung der Datenpunkte hat nur einen Effekt, wenn ich den Haken bei "unterschiedliche Namen für setzen und lesen" gesetzt wird.

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

                        @homezecke Also, jetzt glaube ich langsam dein Problem zu erkennen:

                        • In MQTT sind es 2 Datenpunkte
                        • Aber für ein Widget Switch kanns du nur einen verwenden

                        Dieses sagenhafte Problem hat mich von Tag 1 mit ioBroker bzw. Smarthome beschäftigt.
                        In meinen Anfängen (und deshalb bin ich bei ioBroker gelandet weil es mein Problem lösen konnte) habe ich das mit einem Bulb on/off Widget für Tasmota so lösen können:
                        e57634f0-c375-4df2-81ad-759efd4c8452-image.png
                        Über die Extrasteuerung. In Allgemein ist der stat Datenpunkt, unter Extrasteuerung dann der cmnd Datenpunkt.

                        Das ist natürlich total mühsam und unbequem.

                        Weshalb ich mir (statt den Sonoff-Adapter zu nehmen) ein JavaScript geschrieben habe welches mir die MQTT-Datenpunkte in ioBorker Datenpunkte mit True und False umbaut welche ich dann stattdessen als Datenpunkt für die Widgets nehme: https://forum.iobroker.net/topic/48945/tasmota-steckdosen-per-mqtt-javascript-direkt-ansteuern

                        Dabei musste ich dann das auch von @mickym beschriebene Problem mit der Endlosschleife lösen und auswerten ob der Datenpunkt vom Benutzer oder vom Script selbst, z.B. durch eine Änderung des MQTT Datenpunktes, ausgelöst wurde.

                        HomeZecke 1 Reply Last reply Reply Quote 0
                        • HomeZecke
                          HomeZecke @BananaJoe last edited by

                          @bananajoe Das ist nur eines... Ich möchte aber auf etwas anderes hinaus.

                          Ich kann den MQTT Adapter so konfigurieren dass ich mittels eines MQTTclients alle states der Adapter in IObroker zumindest lesen kann. Dazu müssen Haken bei "Unterschiedliche Topic-Namen für setzen und lesen" und bei "Send state object as mqtt message" rein.

                          Wenn ich jetzt zb. MQTT Explorer starte kann ich ALLE Datenpunkte des IOBRoker lesen und auch states verändern. Ein Topic bei mir wäre also wie ich bereits beschrieb "deconz/0/Lights/1/on/set" auf "true" zu setzen damit diese Zigbee Lampe angeht. Das ist toll, denn so kann ich zb. über eine MQTT App auf'm Smartphone alles in meinem Smarthome steuern.

                          Der Haken "Unterschiedliche Topic-Namen für setzen und lesen" erfordert es, dass an das MQTT-Topic, wenn man ein state ändern möchte "/set" anhängen muss also im MQTT Explorer so:

                          deconz/0/Lights/1/on/set - true publish : geht, schaltet die Lampe
                          deconz/0/Lights/1/on - true publish : geht nicht, nur der Wert wird geändert, Lampe schaltet nicht

                          Ich denke damit soll die Endlosschleife verhindert werden. Alles OK, bis hier..
                          Jetzt zu meinem Problem: Da ich das in meinen selbstgebauten und selbst programmierten ESP8266 Geräten die ich per MQTT ansteuere schon unterschiedlice Topic-Namen nutze, kommt es zu Problemen. Ein Topic sieht bei mir in etwa so aus:

                          MeinGerät/relais1/On - Das Topic zum lesen des states für das relais
                          MeinGerät/relais1/On/set - Das Topic zum ändern des states für das relais

                          Das "/set" ist bereits fest einprogrammiert. Aber jetzt hängt der MQTT Adapter von IOBroker automatisch ein "/set" an. Bei meinen ESP's kommt jetzt ein "MeinGerät/relais1/On/set/set" an. Ein "/set" zuviel. Das Topic wird damit natürlich nicht mehr von meiner Topic-Abfrage im ESP erkannt.

                          Jetzt weiß ich eben nicht, ist das ein BUG im MQTT Adapter? Bei per MQTT angebundenen Geräten darf ich kein "/set" im Topic haben, da es automatisch angehängt wird, bei allen anderen Adaptern muss ich ein "/set" selber dranhängen???? Es wäre viel einfacher, wenn bei allen anderen IOBroker Geräten auch ein automatisches "/set" angehängt werden würde!

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

                            @homezecke ich denke es ist kein Bug. Wie oben schon empfohlen wurde am besten im MQTT Adapter alle Haken raus. Dann hast du das Problem nicht, musst dich aber selbst ggf. um das /set kümmern.

                            Da das mit dem /set scheinbar nicht einheitlich ist ... keine Ahnung. manche Geräte würden es brauchen, manche nicht. Ich glaube nicht das der MQTT Explorer das automatisch richtig macht.

                            Kannst ja sonst mal den Programmierer des MQTT Adapters fragen / möglich Bug auf GitHub melden.

                            Aber du bist der erste auf den ich treffe mit dem Problem.

                            Alternativ könntest du mehrere Instanzen des MQTT Adapters mit unterschiedlichen Konfigurationen nutzen, ggf. auf Topics beschränkt.

                            HomeZecke 1 Reply Last reply Reply Quote 0
                            • HomeZecke
                              HomeZecke @BananaJoe last edited by

                              @bananajoe sagte in MQTT Publish Bug?:

                              Wie oben schon empfohlen wurde am besten im MQTT Adapter alle Haken raus.

                              Wenn ich das mache, kann ich über einen MQTT Client keine anderen IOBroker Adapter states verändern. Und darum geht es mir ja. Im Moment löse ich das indem ich in meiner Firmware für die ESP's das überflüssige "/set" herausfiltere. Und dann läuft es ja wie es soll. Aber was macht zb. Tasmota? Ich nutze keins. Werde mir aber jetzt mal einen Wemos flashen um damit mal zu experimentieren.

                              Aber du bist der erste auf den ich treffe mit dem Problem.

                              Vermutlich ist noch keiner auf die verrückte Idee gekommen IObroker Adapter states über MQTT zu bearbeiten...? Das ist aber eine von externen Apps einfach zu nutzende Schnittstelle zu IOBroker, wie ich finde.

                              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

                              909
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              4
                              16
                              1153
                              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