[GELÖST] per MQTT Event-Statusabfrage-Senden erzwingen

  • Hallo Shelly-Forum.

    Seit 2 Tagen spiele ich mit MQTT und NodeRED herum. Trotz täglicher Erfolgserlebnisse stehe ich natürlich immer noch sehr sehr weit am Anfang.

    Schalten aus NodeRED heraus funktioniert bereits. Auch wenn ich über den Taster direkt am Shelly 1PM Mini 2.Gen schalte (single_push, double_push, usw.) kommen diese Infos in NodeRED an und lassen dann andere Aktionen auslösen. Auch die periodischen MQTT-Meldungen eines jeden Gerätes sehe ich in einem Debug-Node.

    Hierbei ist mir aufgefallen, dass der Schaltzustand eines Relais jedoch nur unmittelbar nach Änderung eines Schaltvorgangs einmalig mitgeteilt wird ("output":true/false). Danach nicht erneut. Diesen Schaltzustand hinterlege ich mir aktuell zwar in einer Variable, aber wenn der NodeRED nun mal neugestartet werden muss oder eben erst später hinzukommt, dann sind die Informationen über die aktuellen IST-Zustände aller Shellys ja nicht mehr vorhanden.

    Ich würde daher gerne beim Start von NodeRED einmalig von allen Shellys den Zustand des relays abrufen, was ich bislang leider nicht hinbekommen habe.

    Daher meine Frage:

    Wie muss der Payload und das Topic im MQTTout aussehen, damit das Senden eines Gesamtstatus getriggert wird, welches ich dann am MQTTin erhalte?

    pasted-from-clipboard.png


    VG Dennis


    PS: ich freue mich auch auf Hinweise, ob ich überhaupt in die richtige Richtung laufe. Eventuell bin ich mit meiner Vorgehensweise (Variablen und Boolean Logic in NodeRED und MQTT) ja auch in einem falschen bzw. nicht-idealen Denkmuster gefangen. Tipps und Ideen hierzu nehme ich daher dankend an. :)

    Einmal editiert, zuletzt von SheldonC (24. Januar 2024 um 02:23) aus folgendem Grund: Rechtschreibung/Grammatik

  • Ich glaube per MQTT geht das nicht, wenn man den Shelly nicht veranlasst den Status aufgrund einer Änderung zu senden. Das periodische Update alle 60 Sekunden reicht nicht?

    Du könntest die http-Rückmeldung des Shellies auswerten: [Shelly-IP]/Status

    Die Ausgabe sollte man parsen können und sollten die gewünschte Information enthalten.

  • Hallo Schubbie

    Danke für Deine rasche Antwort.

    In dem periodischen Update (bei mir alle 30 Sekunden) ist die Information zum Schaltzustand leider nicht enthalten:
    pasted-from-clipboard.png

    In der API-Dokumentation steht etwas zu einem GetStatus über MQTT, jedoch verstehe ich nicht, wie ich das in NodeRED im Payload/Topic einfügen kann. Oder ist das vielleicht etwas Anderes, was ich hier gefunden habe?

    Danke auch für den Hinweis mit dem HTTP-Request. Das befriedigt allerdings nicht meinen inneren Monk :D Die Challenge ist eigentlich die, ausschließlich mit MQTT zu arbeiten. Aber ok - wenn es wirklich nicht darüber geht, dann bleibt mir ja nur diese Option. Fühlt sich aber irgendwie geschummelt an. :(

  • Hast du im Shelly unter den MQTT-Einstellungen

    Generic status update over MQTT

    aktiviert?

    Der String stellt glaube ich noch mehr Infos zur Verfügung, vielleicht ist das dann ausreichend. Musst dann natürlich das Topic entsprechend anpassen.

  • Ja.
    pasted-from-clipboard.png

    Könnte es evtl. sein, dass ich auf dem falschen Topic lausche?

    pasted-from-clipboard.png

    Eigentlich ist die Statusabfrage ja gar kein Event. Daher wäre es ja auch logisch, dass in den periodischen Meldungen unter */events/rpc gar keine Informationen mehr über den aktuellen Status vorhanden sind, da dieser sich ja nicht geändert hat. Gibt es noch andere Topics, auf welchen die Shellys periodisch publishen?

  • Dieses Thema enthält 10 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.