Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT Adapter: Alle Klienten reagieren

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    MQTT Adapter: Alle Klienten reagieren

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

      Hallo,

      ich probiere gerade einen Wechsel vom Sonoff Adapter zum MQTT Adapter.

      Ich bekomme alle Stati der einzelnen Teilnehmer (Ich habe mehrere Steckdosen mit Tasmota geflashed).

      Wenn ich jetzt folgende Nachricht sende:

      sendTo("mqtt.0",'sendMessage2Client',{ topic: "Staubsauger/POWER", message: true , retain: true });
      

      Reagieren alle anderen Steckdosen auch.
      Ich habe bei den Steckdosen als Topic folgendes eingestellt:

      • Entfeuchter
      • Staubsauger
      • Waschmaschine

      Ich habe tatsächlich keinen Ansatz, warum auf einmal alle reagieren. Ich dachte durch das Setzen des Topics Staubsauger/POWER würde nur der Staubsauger reagieren.

      Hat jemand von euch eine Idee, welchen Ansatz ich versuchen könnte?

      Vielen Dank
      Stefan

      S BananaJoe 2 Replies Last reply Reply Quote 0
      • S
        sParli @sParli last edited by

        @sparli

        So heute noch mal ein paar Ergänzungen:

        Ich habe beim MQTT Adapter einmal das Logging mit angemacht und haben folgendes gesehen

        
        mqtt.0 2024-08-11 07:50:02.549	info	Client [Staubsauger] publishOnSubscribe send all known states
        mqtt.0 2024-08-11 07:50:02.547	info	Client [Staubsauger] publishOnSubscribe send all known states
        mqtt.0 2024-08-11 07:50:02.546	info	Client [Staubsauger] publishOnSubscribe send all known states
        mqtt.0 2024-08-11 07:50:02.347	info	Client [Staubsauger] subscribes on "cmnd/Staubsauger_fb/#" with regex /^mqtt\.0\.cmnd\.Staubsauger_fb\..*/
        mqtt.0 2024-08-11 07:50:02.347	info	Client [Staubsauger] subscribes on "cmnd/Staubsauger_fb/#" with regex /^cmnd\.Staubsauger_fb\..*/
        mqtt.0 2024-08-11 07:50:02.346	info	Client [Staubsauger] subscribes on "cmnd/tasmotas/#" with regex /^mqtt\.0\.cmnd\.tasmotas\..*/
        mqtt.0 2024-08-11 07:50:02.346	info	Client [Staubsauger] subscribes on "cmnd/tasmotas/#" with regex /^cmnd\.tasmotas\..*/
        mqtt.0 2024-08-11 07:50:02.345	info	Client [Staubsauger] subscribes on "cmnd/Staubsauger/#" with regex /^mqtt\.0\.cmnd\.Staubsauger\..*/
        mqtt.0 2024-08-11 07:50:02.345	info	Client [Staubsauger] subscribes on "cmnd/Staubsauger/#" with regex /^cmnd\.Staubsauger\..*/
        

        Das sieht Ähnlich bei den anderen Klienten aus. Ich bin mir aber nicht sicher, ob das so richtig ist.

        Zusätzlich sehen die Einstellung der Klienten für MQTT wie folgt aus:
        5f5bb196-6ad2-46a9-a334-22d8eec52c4b-image.png

        Die Einstellungen für den MQTT Adapter sind folgende:
        9f2e0077-0620-45d8-b834-eb59705f4c1e-image.png

        Was mache ich falsch?

        1 Reply Last reply Reply Quote 0
        • W
          Wildbill last edited by

          @mickym Ist MQTT nicht eines Deiner „Spezialgebiete“?

          Gruss, Jürgen

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

            @sparli falsches Topic, es müsste

            sendTo("mqtt.0",'sendMessage2Client',{ topic: "cmnd/Staubsauger/POWER", message: true , retain: true });
            

            sein um Befehle zu senden (unterhalb von cmnd kann du jedes mögliche Tasmota-Command nutzen).

            Das Resultat steht dann unterhalb von stat, für Power als extra Datenpunkt, für alles andere dann in Result

            Tasmota nutzt getrennte Pfade für Steuerung und Ergebnisse (tele gibt es auch noch für regelmäßige Statusmeldungen)

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

              @bananajoe

              Vielen Dank für die Antwort.
              Ich habe das jetzt einmal probiert, jedoch ändert sich am verhalten nichts.

              Ich muss in den nächsten Tagen Mal eine erneute Testumgebung für den iobroker aufsetzen und nur das dort noch mal testen.

              Gibt es noch einen weiteren Ort, wo ich nachschauen könnte?

              Viele Grüße
              Stefan

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

                Ich stimme @BananaJoe in allem zu, habe aber auch keine direkte Erklärung für das seltsame Verhalten. Allerdings kann auch das Fehlen des prefix schon zu diesem eigenartigen Verhalten führen.

                a0ff3c3a-3df6-4d28-90c9-992b08a9a7a5-image.png

                Ausserdem wurde nicht geschrieben, ob der Adapter als Broker oder als Client betrieben wird. Als Broker/Server hat dieser Adapter etwas merkwürdiges Verhalten und ich habe auch schon festgestellt, dass das mit dem Retain Flag nicht immer sauber arbeitet, wobei ich das Retain Flag generell nicht nutzen würde. Im Prinzip werden dann bei jedem Connect die Kommandos halt nochmals geschickt.
                Ich empfehle generell dieses Adapter als Client an mosquitto zu betrieben.

                Evtl. hat das reagieren der anderen Steckdosen gar nichts mit dem Kommando zu tun, sondern dass die alle zuletzt eingeschaltet wurden und sich wiederverbunden haben. Ist aber Spekulation.

                Generell würde ich auch bei den Einstellungen das "Nur bei Änderungen" Haken wegmachen, der ist eigentlich nur sinnvoll, wenn man Zustände schickt. Ausserdem widerspricht es dem normalen mqtt-Verhalten.

                Ich würde halt in jedem Fall, wenn ich was über mqtt schicke - gleichzeitig die Konsole in Tasmota öffnen - auch die der anderen Geräte, um zu sehen, ob da was ankommt.

                f17affe6-3254-460d-94dd-f9ef21e38908-image.png

                Bei mir schaut das nur etwas anders aus, da ich eine andere Struktur bevorzuge und die Prefixe lieber unter den Geräten habe, als die Standardkonfiguration, wo die Geräte an 3 unterschiedlichen Orten im Prefix auftauchen.

                Aber wie @BananaJoe sagte

                dein Befehl lautet:

                sendTo("mqtt.0",'sendMessage2Client',{ topic: "cmnd/Staubsauger/POWER", message: true , retain: true });
                

                ggf. weil es tasmota eh übersetzt kannst Du auch "on"/"off" verwenden und das retain Flag mal auf false setzen. Um das retain Flag wieder zu löschen musst Du retain:true lassen und eine leere Nachricht schicken. Aber wie gesagt, ich weiß nicht ob der Adapter damit richtig umgeht.

                Im Übrigen halt auch schauen, dass keine Skripte irgendwas schalten.

                Am Besten halt auch nochmal alle Datenpunkte löschen bzw. die Instanz neu installieren. Die Datenpunkte kommen ja automatisch durch das Gerät oder durch das Publishen.

                S 1 Reply Last reply Reply Quote 1
                • S
                  sParli @mickym last edited by

                  @mickym

                  Auch dir vielen Dank.

                  Ich habe zwar mein Problem mit dem sendTo nicht gelöst, aber ein workaround gefunden.

                  Hintergrund: Ich habe auf einem anderen Rechner iobroker komplett neu aufgesetzt und nur zwei Steckdosen mit rein genommen. Anschließend habe ich ein Skript geschrieben, was nichts anderes macht, als sendTo zu nutzen. Es ist das selbe Verhalten. Alles geht an oder aus. Dabei ist es egal, welches Topic ich verwende.

                  Durch die Erklärung von @BananaJoe habe ich jetzt das mit den cmnd/stat/tele verstanden und ganz doof probiert unter cmnd das Power auf 1 zu setzen. über diesen Weg klappt die Kommunikation einwandfrei.

                  Ich weiß zwar nicht, warum es einen Unterschied macht, aber ich stecke auch nicht so tief in dem Adapter drin.

                  @mickym: Ich habe den Adapter als Broker laufen und stimme dir zu, dass er sich irgendwie komisch verhält. Ich kann aber noch nicht genau mit dem Finger drauf zeigen. Rein aus Interresse. Nutzt du auch diesen Adapter oder lässt du parallel einen Broker laufen und subscribest dich mit iobroker auf diesen?

                  Noch mal vielen Dank euch 🙂

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

                    @sparli Ich nutze den Adapter als Client und als Broker mosquitto und subscribe alles was im mosquitto ankommt.

                    SUBSCRIBE:

                    25b473c1-f0c2-4189-8728-fd3d94194d93-image.png

                    Ansonsten alle Haken in den mqtt-Einstellungen entfernen!
                    PUBLISH:

                    7a2d0220-cf5e-4b7c-a8db-2e4c57670e67-image.png

                    Ich habe alle Haken weggemacht und nutze grundsätzlich für alle was mqtt spricht KEINEN Adapter (tasmota, shelly, zigbee , owntracks usw. )

                    Ansonsten habe ich wie gesagt, die prefixe unter das topic gestellt, um gerade auch eine saubere Trennung von den Geräten an einer Stelle zu haben.

                    f7b61340-e356-417b-865d-65275ae3ab1f-image.png

                    Über das topic kannst Dir ja auch noch eine eigene logische Struktur aufbauen.

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

                      @sparli sagte in MQTT Adapter: Alle Klienten reagieren:

                      Durch die Erklärung von @BananaJoe habe ich jetzt das mit den cmnd/stat/tele verstanden und ganz doof probiert unter cmnd das Power auf 1 zu setzen. über diesen Weg klappt die Kommunikation einwandfrei.
                      Ich weiß zwar nicht, warum es einen Unterschied macht, aber ich stecke auch nicht so tief in dem Adapter drin.

                      Hast du es nun verstanden? Dann weist du doch jetzt warum es einen Unterschied macht ... es sind völlig verschiedene Topics, wie Pfade unter Windows/Linux. Eine Datei unter /dateien/cmnd/power.txt liegt ist eine völlig andere als eine Datei /dateien/stat/power.txt oder /dateien/power.txt. Wenn du in eines der Datein etwas schreibst, taucht das doch nicht in einer der anderen Dateien auf.

                      Was wirklich merkwürdig ist, das Staubsauger/POWER alle Geräte schaltet. Das hätte nicht passierten sollen, ich kenne den Rest der Umgebung nicht und was "alle Geräte" bei dir bedeutet.

                      und @mickym schreibt da einen guten Punkt den ich erst übersehen habe:

                      sendTo("mqtt.0",'sendMessage2Client',{ topic: "cmnd/Staubsauger/POWER", message: "ON" });
                      sendTo("mqtt.0",'sendMessage2Client',{ topic: "cmnd/Staubsauger/POWER", message: "OFF" });
                      

                      müsste es heißen. Retain würde ich gar nicht setzen, sonst passiert ggf. wieder etwas komisches von dir unerwartetes.

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

                        @bananajoe

                        Ja, das habe ich verstanden.

                        Ich habe eine komplett neue Umgebung aufgesetzt (inkl. neuem Netzwerk) und habe das noch einmal ausprobiert.
                        Dabei hatte ich wirklich nur die beiden Steckdosen (ohne eine Änderung vom MQTT, nur die Netzwerkeinstellungen sind geändert).
                        Es existiert genau ein Skript mit der Zeile von @mickym.

                        Ich habe mir ebenfalls angeschaut, was bei den einzelnen Steckdosen in der Konsole ankommt und es wurde genau das empfangen, was ich bei einem direkten "Befehl" erwartet hätte.
                        also cmnd/Staubsauger/POWER und cmnd/Luftentfeuchter/POWER. Warum aber durch das sendTo beide angesprochen wurden, bleibt mir ein Rätsel.

                        Ich habe auch zusätzlich noch verschiedene Varianten der Kommandos ausprobiert

                        • "/cmnd/Staubsauger/POWER", message: 1
                        • "cmnd/Staubsauger/POWER", message: 1
                        • "/cmnd/Staubsauger/POWER", message: "ON"
                        • "cmnd/Staubsauger/POWER", message: "ON"

                        Es lief immer auf das selbe Ergebnis hinaus. Es wurde alles ein und ausgeschaltet.

                        Zusätzlich habe ich im Anschluss die Steckdosen noch einmal komplett zurück gesetzt und das ganze mit den tollen Topics TollesTopic1und TollesTopic2 getestet. Auch da habe ich das selbe Ergebnis erhalten 😅

                        Bei den ganzen Tests habe ich das Retain-Flag nicht mehr gesetzt und auch vorher durch leere Nachrichten zurück gesetzt.

                        Da @mickym meinte, dass der Adapter als Broker sich etwas seltsam verhält, habe ich das jetzt auf dieses Verhalten geschoben.

                        Gerne kann ich noch andere Sachen testen, wenn euch noch etwas einfällt 🙂

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

                          @sparli
                          So, ich habe jetzt alles noch mal als Testumgebung aufgebaut und diesmal Mosquitto als Broker genutzt.
                          Und siehe da, jetzt verhält sich das ganze auch wie gedacht.

                          Noch einmal vielen Dank für die Hilfe und die Rückmeldungen 🙂

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

                            @sparli sagte in MQTT Adapter: Alle Klienten reagieren:

                            und diesmal Mosquitto als Broker genutzt.

                            👍 👍 👍

                            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

                            641
                            Online

                            31.6k
                            Users

                            79.5k
                            Topics

                            1.3m
                            Posts

                            mqtt tasmota mqtt-adapter
                            4
                            12
                            259
                            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