MQTT Last Will (and) Testament respektive Online Status

  • Ich sah hier einige Unklarheiten in Bezug auf das Verhalten der Shelly Firmware mit MQTT. Ich wollte es also selbst genauer wissen und habe Versuche angestellt.

    Meine Erkenntnisse aus diesen Versuchen habe ich an anderer Stelle dokumentiert.

    Kurze Zusammenfassung:

    Die Shelly Firmware der zweiten Generation veröffentlich nach dem Verbindungsaufbau zum MQTT Broker zwei Nachrichten.
    Vermutlich arbeitet die Firmware der ersten Generation ebenso.

    1. Die LWT Nachricht mit dem Topic "<MQTT Prefix>/online" und der Payload "false".
      LWT = Last Will (and) Testament
    2. Eine reguläre retained Nachricht mit demselben Topic und der Payload "true".

    Somit ist per Subscriber (fast) jederzeit erkennbar, ob der betreffende Shelly eine MQTT Verbindung hat, also online ist.

    Bei schwacher Verbindung zum Broker, vielleicht wegen schwachem WLAN, wechselt die im Subscriber erhaltene Payload unregelmäßig zwischen "false" und "true".

    Jedenfalls sendet der Broker offensichtlich verlässlich mit dem LWT Topic eine Nachricht "true" oder "false".

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

  • Kann sein dass ich das falsch verstehe aber das ist doch nur eine Meldung die jeder Hersteller in der MQTT Umgebung anbieten kann. Im Prinzip sagt ja das Device nur alle x Sekunden ich lebe noch und wenn der Broker die Meldung nicht bekommt geht er auf false.

    Einbindung der Shelly´s in die Loxone

  • Wenn sich der Shelly per Firmware, andere MQTT Nachrichten habe ich nicht senden lassen, alle x Sekunden per Nachricht mit dem Topic <MQTT Prefix>/online melden täte, müsste der Broker diese Nachricht auch alle x Sekunden an die Subscriber senden. Das tut er aber nicht. Das lässt sich leicht an einem Subscriber feststellen, der die Historie protokolliert, wie bspw. der MQTT Explorer oder ein Node-RED Flow mit mqtt in node und angeschlossenem debug node. Man kann so etwas selbstverständlich auch per MQTT.subscribe() callback Funktion in einem Shelly Skript untersuchen.

    Somit kann deine Vermutung über ein periodisches Senden von Nachrichten mit diesem Topic nicht zutreffen.

    Edit:

    Täte ein MQTT Broker solche Nachrichten nicht an Subscriber weiterreichen, wäre er kein MQTT Broker. ;)

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    Einmal editiert, zuletzt von eiche (2. April 2024 um 15:08)

  • Es kann aber auch sein, dass die Shelly Firmware tatsächlich alle x Sekunden die LWT Nachricht <MQTT Prefix>/online mit "false" sendet. Eine solche gibt der Broker ohnehin erst weiter, wenn er keine Verbindung zum Client mehr feststellt. Hier ist aber zwischen normaler Nachricht und LWT Nachricht zu unterscheiden. Ich kann ja nur die im Subscriber eintreffenden Nachrichten untersuchen. Solche treffen aber ausschließlich ein, wenn sich der Online Status des Shelly ändert.

    Wenn die Payload "true" eintrifft, erfolgt dies praktisch unmittelbar nachdem der Shelly diese als übliche Nachricht gesendet hat.

    Die Payload "false" trifft aber immer um eine erhebliche Zeitverschiebung von grob 90s ein, nachdem der Shelly von der Versorgung getrennt wurde.

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    Einmal editiert, zuletzt von eiche (31. März 2024 um 11:20)

  • Ein "false" wird nie vom Device gesendet (hat ja wenig Sinn wenn er offline ist) sondern der Broker veröffentlicht das false von selber wenn nicht innerhalb der "vereinbarten" Zeit ein true oder was auch immer kommt!

    Was ist MQTT Last Will and Testament (LWT)? – MQTT Essentials: Teil 9 (hivemq.com)

    Das hat aber nichts mit Gen1,2 oder 3 zu tun.

    Einbindung der Shelly´s in die Loxone

    Einmal editiert, zuletzt von AlexAn (31. März 2024 um 11:22)

  • 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.