Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] mqtt Adapter, publish/subscribe schaukeln sich auf

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] mqtt Adapter, publish/subscribe schaukeln sich auf

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

      Hallo mosquito und mqtt-Adapter-Gurus,
      um meine PiFace-Steuerung zu retten, habe ich von dem Raspberry 3 alles entfernt, was nicht direkt mit dem PiFace zu tun hat, also VIS und andere Adapter. Dann habe ich ioBroker mit den höchsten Versionen der benötigten Adapter versorgt, die noch unter node 8.latest laufen.
      Alles andere läuft nun auf einem Raspberry Pi4 mit den "latest"-Versionen unter node 12.latest.

      Über mein PiFace-Rack schalte ich unter anderem meine Bewässerung.
      Die Visualisierung dazu läuft nun auf dem Pi4, also müssen die States dorthin, das ist mir mit entsprechender Konfiguration auch gelungen,
      der PiFace-Pi published via mqtt als Client die relevanten States: piface.*,javascript.1.watering.garden.*
      Auf dem Pi4 habe ich entsprechende subscriptions konfiguriert: piface/#, javascript/1/watering/garden/#
      Diese States werden auch schön unter mqtt.0 angelegt und nach Anpassung der View korrekt angezeigt.
      Im Automatikmodus sehe ich nun in meiner Visualisierung ziemlich zeitnah, wie die Kreise durchgeschaltet werden, eigentlich alles schön.

      Über die Visualisierung kann ich auch manuell Bewässerungskreise für eine ausgewählte Zeit einschalten.
      Die geänderten Werte werden unter mqtt.0.javascript.1.watering.garden.... allem Anschein nach nicht automatisch published, also konfigurieren: javascript.1.watering.garden.circuit.*.duration_set, javascript.1.watering.garden.circuit.action
      Gut, jetzt sind die Änderungen in mqtt.fx zu sehen.
      Sie sind damit aber noch immer nicht auf dem PiFace-Pi! Ja, jetzt fehlt da die subscription: javascript/1/watering/garden/circuit/*/duration_set, javascript/1/watering/garden/circuit/action

      So, nun die Dauer setzen und die Aktion auslösen, bin gespannt, wäre jetzt noch ein schöner Abschluss für den langen Abend.
      Hm, die Vis hat Verbindungsprobleme, Log auch, gleiches beim PiFace-Pi, mqtt.fx zeigt eine Flut von Nachrichten, die action auf den beiden Pi's spielen ping pong und ich schaffe es gerade noch via ssh den mqtt.0 auf dem Pi4 zu stoppen.
      Aber warum schaukeln die Messages sich hoch?

      gedachter Ablauf: Auf dem Pi4 wird via der View der Action-Code in den State geschrieben, mqtt.0 sendet die Änderung an den Broker, der mqtt-Client auf dem PiFace-Pi holt sich den geänderten Wert und schreibt ihn nach javascript.1.watering.garden.circuit.action. Das Bewässerungsskript reagiert via der dort erzeugten subscription auf die Änderung, löst die Aktion aus und setzt den State für action auf 0 zurück.
      Dieser Wert wird wieder published und vom Pi4 via der subscription eingelesen und alles ist schön in sync.

      Was läuft schief?
      Auf dem Pi4 ist im Log zu sehen, dass die 0 ankommt, es wird aber sofort wieder der action-Code (Zahl > 0) zurückgeschrieben. Warum?
      Das produziert dann wieder den unter gedachter Ablauf beschriebenen Ablauf und so schaukelt sich das immer weiter hoch?

      Ursache?
      Das Setzen der Werte erfolgt via der View und da wird nach meiner Kenntnis kein ack==true gesetzt. Wenn ein Skript einen Wert per setState setzt, normalerweise auch nicht. In der mqtt-Konfiguration habe ich "Sende auch Zustände" aktiviert. Sollte doch hier keine Rolle spielen oder?

      Habe ich in meiner Konfiguration einen Denkfehler? Ist es normal, dass in einer solchen Konfiguration (überschneidene subscriptions und publishs) sich die Änderungen hochschaukeln?
      Sollte ich die Änderungen auf einem anderen Weg zum PiFace-Pi senden?

      Ach ja, das Problem tritt unabhängig davon auf, ob ich den Broker des ioBroker mqtt-Adapters nutze oder den mosquitto.

      Wie sind eure Erfahrungen und Tipps?

      M Wal 2 Replies Last reply Reply Quote 0
      • M
        MCU @greyhound last edited by

        @greyhound Zeig doch mal die Einstellungen von der MQTT-Instanz.

        1 Reply Last reply Reply Quote 0
        • Wal
          Wal Developer @greyhound last edited by Wal

          @greyhound
          ich nutze schon seit ca. 2 Jahren dieses Projekt ohne Probleme und Ausfall.
          Hier meine MQTT-Server-Einstellungen:
          Screenshot 2020-10-10 112803.png.
          Wichtig ist das nur das mqtt.0.* in der Maske steht, sonst hängt der Server von der Datenflut.

          greyhound 1 Reply Last reply Reply Quote 0
          • greyhound
            greyhound @Wal last edited by

            Danke für eure Rückmeldungen.

            Hier meine Einstellungen:
            PiFace-Pi-Client
            29432d5d-ca7c-45d4-a579-ba7def15cb62-image.png
            "Subscribe patterns" waren konfiguriert auf: javascript/1/watering/garden/circuit//duration_set, javascript/1/watering/garden/circuit/action
            Wenn ich diesen Parameter leer lasse, scheint das wie # zu wirken, auf einem anderen ioBrokersystem ist mir da viel überschrieben worden.
            publish: javascript.1.scriptEnabled.
            ,javascript.0.scriptEnabled.,piface.,javascript.1.watering.garden.,javascript.0.lights.,javascript.0.alarm.*

            Pi4
            eea19efd-ea4a-4777-92f7-889f84aad627-image.png
            subscribe: javascript/1/scriptEnabled/#,piface/#,javascript/1/watering/garden/#,javascript/0/lights.#,javascript/0/alarm/#,javascript/0/scriptEnabled/#
            publish war vor dem crash konfiguriert auf: hm-rpc.0.OEQ0996420.1.STATE,javascript.1.watering.garden.circuit.*.duration_set, javascript.1.watering.garden.circuit.action

            Prinzipiell funktioniert es ja in eine Richtung. Aber anscheinend fehlt eine Entkopplung wenn es zum Teil bidirektional arbeiten soll.
            Hier
            PiFace-Pi sendet alles unter javascript.1.watering.garden.*
            Pi4 empfängt alles
            Pi4 wird ein Wert unter javascript.1.watering.garden.* geändert und gesendet
            PiFace-Pi empfängt die Änderung
            PiFace-Pi Skript reagiert und setzt den Datenpunkt auf 0 und sendet den geänderten Wert
            Pi4 empfängt den Wert 0 und sendet nun den vorherigen Wert erneut, warum?
            Nach meinem Verständnis wäre die Kette hier zu Ende.
            Hat das was mit dem retain-flag zu tun?

            M 1 Reply Last reply Reply Quote 0
            • M
              MCU @greyhound last edited by

              @greyhound Bei mir sieht es so aus:
              eb2d774a-c648-4cf0-b669-b8d120095b20-image.png
              Bislang keine Probleme.

              greyhound 1 Reply Last reply Reply Quote 0
              • greyhound
                greyhound @MCU last edited by

                @MCU
                D. h., du published alle states deiner Installation. Wie groß ist deine Installation?
                Hast du 2 ioBroker-Installationen die sich gegenseitig aktualisieren?

                M 1 Reply Last reply Reply Quote 0
                • M
                  MCU @greyhound last edited by

                  @greyhound Nutze es nur für einige ESP8266 und ESP32 Versuche. Da kommt nicht soviel zusammen.

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

                    Nach vielen Experimenten und Stunden musste ich leider einsehen, dass das so nichts wird und einen eigenen Adapter geschrieben. siehe iobmqtt - ioBroker Message Fornat Adapter

                    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

                    851
                    Online

                    31.7k
                    Users

                    79.6k
                    Topics

                    1.3m
                    Posts

                    aufschaukeln message mqtt adapter publish subscribe
                    3
                    8
                    819
                    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