MQTT: Was ist "Last Will and Testament" (LWT) und wie funktioniert es?

3 Minuten des Lesens

MQTT-Logo

Einmal vertraut mit dem proMQTT tocollo und mit seinen Hauptmerkmalen und Zwecken ist es gut, ein Merkmal zu entdecken und zu beherrschen, auf das wir häufig nicht eingehen, obwohl es - insbesondere in der Hausautomation - besonders nützlich ist: das sogenannte "Lwt"Oder"Letzter Wille und Testament".

Wie die Übersetzung nahelegt, sind dies die letzter Wille und Testament einer Komponente ausgestattet mit protocollo MQTT, aber offensichtlich gibt es in diesem Fall nichts Trauervolles: Es ist in der Tat die Verwaltung des Zustands der Komponenten bei Unterbrechungen improvvise und nicht geschafft. nicht nur: Diese Funktion wird nicht nur für die Tod der Komponente, sondern auch für seine nascita.

Mal sehen wie.

Nb Vor proIm Anschluss an die Lesung wird empfohlen, einen klaren Kopf zu haben cosa sia MQTT, Sein funktionalnamento in der Hausautomation und das Konzept von "behalten .

Eine Frage der Staaten

In der Domotik (und nicht nur) ist es sicherlich von grundlegender Bedeutung kennen den Verbindungsstatus einer bestimmten Komponente ausgestattet mit proMQTT tocollo, nicht zu verwechseln mit betriebsbereitem Zustand verknüpft mit den Eigenschaften prozuerst (z. B. Betriebszustand von Relais, Sensoren usw.). Im alltäglichen Gebrauch ist es bei diesen Bauteilen zwar möglich verlieren (vorübergehend oder nicht) die Verbindung an den Makler für:

  • Mangel an Energie (leere Batterien);
  • niedriges Signal Wi-Fi;
  • Anomalien in der Firmware / Software (unerwartete Neustarts)

und andere unerwartete Bedingungen.

Im MQTT-Bereich sprachen wir oft über "telemetrische Nachrichten", die von den Hausautomationskomponenten geliefert werden, die in dem Haus vorhanden sind. Wir denken trivial Ein intelligenter Sensor mit proMQTT tocollo: Diese Komponente sendet zyklisch eine Telemetrie-Nachricht, die den Betriebsstatus meldet, mit dem die Verbindung besteht proseine Funktionalität (enthält zum Beispiel Temperatur und Luftfeuchtigkeit).

Normalerweise sind diejenigen, die diese Informationen sammeln, andere MQTT-Clients, die mit dem Broker verbunden sind und den abonnieren Thema von telemetrischen Nachrichten, die für sie von Interesse sind; Diese Kunden sind (in der Regel) HUB persönlichen (Home Assistant, Homey usw.), die die so gesammelten Informationen für die für die vorgesehene gewöhnliche Verwendung verwenden proerste Hausautomation (Visualisierung, Automatisierung, etc.).

Grundlegend ist jedoch nicht nur das Empfangen oder Senden von Nachrichten an und von MQTT-Komponenten, sondern auch das Senden von Nachrichten Seien Sie sich bewusst oder nicht, ob diese Komponenten tatsächlich mit dem Broker verbunden sind über das Netzwerk TCP/IP, wenn sie dann sind Betriebs-. Es kann nämlich, wie oben erläutert, vorkommen, dass die Verbindung zwischen der Komponente und dem Broker "cada", wodurch die Komponente nicht verfügbar ist.

Um diese Fälle so zu verwalten, dass die MQTT-Clients den Status der für sie interessanten Komponenten kennen, greift sie ein: appfettig, dieLwt. In der Praxis handelt es sich um eine spezielle MQTT-Nachricht (mit behalten immer setzen "was immer dies auch sein sollte.") Die an die Abonnenten in zwei bestimmten Momenten gesendet wird:" Geburt "und" Tod "der Komponente.

Wenn die Komponente "geboren" wird (dh wenn sie in das LAN-Netzwerk eintritt), stellt sie von Natur aus (und in der Konfiguration) über die ihr bekannten Koordinaten (IP-Adresse, etwaige Zugangsdaten) eine Verbindung zum Broker her und kommuniziert bei der ersten Verbindung die LWT-Nutzlast, die im Falle einer Unterbrechung bereitgestellt wird (normalerweise "Offline„). Der Broker "markiert" diese Nutzdaten und legt sie beiseite, um sie - gegebenenfalls - bei einem Verbindungsfehler zu verwenden. Ein wahres e proprio Willesozusagen.

Nach erfolgreicher Verbindung veröffentlicht die Komponente auch eine MQTT-Nachricht auf dem Broker, die ein Thema vom Typ LWT mit einer Payload enthält, die es identifiziert als betriebsbereit, oder (normalerweise) "Online“. Sofort erhalten alle Clients, die für das Thema der LWT-Nachricht registriert sind, diese und gehen daher davon aus, dass die Komponente - für dieappgesalbt - in Betrieb.
Zum Beispiel im Fall von a Sonoff Bei der Grundkonfiguration lautet die nach der ersten Verbindung veröffentlichte MQTT-Nachricht:

Tele- /Sonoff/ LWT Online

wo das Thema offensichtlich ist "Tele- /Sonoff/ LWT"Während die Nutzlast ist"Online".

Im Falle eines "Ausfalls" der Treffer-Komponente (aufgrund der oben genannten möglichen Ursachen) - nachdem eine bestimmte Zeit verstrichen ist, in der der Broker keine Lebenszeichen von Seiten der Komponente erhält - zieht diese die erwartete Nutzlast heraus für den "Fall" (der zuvor beiseite gelegt wurde) und veröffentlicht ihn in einer LWT-Nachricht, wie:

Tele- /Sonoff/ LWT Offline

Infolgedessen haben alle Kunden das Thema abonniert (auch in diesem Fall "Tele- /Sonoff/ LWT") Wird sofort benachrichtigt Der Nichtverfügbarkeitsstatus der Komponente.

In der Praxis, während ist die Komponente selbst jeden über die Inbetriebnahme zu informieren, es ist stattdessen der Makler einen möglichen Sturz zu bemerken und das Netzwerk über dieses Ereignis zu informieren (unter Verwendung der LWT-Nutzlast, die von der Komponente mitgeteilt wurde, als sie das letzte Mal "geboren" wurde).

Dies erklärt, warum zum Beispiel su Home Assistant einen Schalter konfigurieren Sonoff-Tasmota Wir verwenden folgende Syntax:

switch:
  - platform: mqtt
    name: "Interruttore"
    state_topic: "stat/Interruttore/RESULT"
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/Interruttore/POWER"
    availability_topic: "tele/Interruttore/LWT"
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"

Wie Sie leicht sehen können, im Feld "availability_topic"Kommt probevor Sie das Thema LWT angeben, für das der Client registriert werden soll Home Assistant sofort den Status der Komponente mit den jeweiligen erwarteten Nutzlasten zu kennen (für die beiden möglichen Situationen, “Online"Und"Offline") Zu folgen.

inDomus-Telegrammkanal