Trennungen und Stromereignisse überwachen
Anwendungsfall
Verwenden Sie dieses Muster, wenn Ihr Backend Verfügbarkeit aktualisieren, Warnungen auslösen oder unterstützte Stromänderungssignale protokollieren muss, ohne häufig den Gerätezustand abzufragen.
device.connection.onlineunddevice.connection.offlinebeschreiben Verbindungsänderungen.device.power.lostmeldet ein Stromverlustsignal von Geräten, die dieses Signal bereitstellen.device.power.restoredmeldet die Stromwiederherstellung, bedeutet aber nicht, dass die Netzwerkverbindung verfügbar ist.- Gerätemodelle haben nicht notwendigerweise das gleiche Stromerkennungsverhalten. Prüfen Sie die Gerätetypdefinition und die Dokumentation des ausgelieferten Geräts, bevor Sie diese Warnungen im Produkt versprechen. Ohne explizit dokumentierte Fähigkeit sollten Sie keine Unterstützung annehmen.
Empfohlener Ablauf
WebSocket liefert rechtzeitige Benachrichtigungen, ist aber kein dauerhaftes Buchführungssystem. Führen Sie den aktuellen Zustand in Ihrem eigenen Dienst und stellen Sie ihn nach jeder Ereignislücke aus REST wieder her.
Schrittweise Umsetzung
- Bauen Sie den anfänglichen Kontozustand mit Geräte auflisten (auf Englisch) auf.
- Prüfen Sie Gerätetypdefinitionen auflisten (auf Englisch) und die Dokumentation des ausgelieferten Geräts, bevor Sie stromspezifische Oberflächen oder Warnungen aktivieren. Eine allgemeine Liste von Vorgängen ist kein Nachweis für Stromerkennungsunterstützung.
- Erstellen Sie ein WebSocket-Ticket (auf Englisch), verbinden Sie sich und starten Sie das Protokoll-Ping/Pong zusammen mit
session.ping. - Zeigen Sie bei
device.connection.offlinedas Gerät nicht mehr als steuerbar an und protokollieren SieoccurredAt. - Markieren Sie bei
device.connection.onlinedie Verbindung als wiederhergestellt, nehmen Sie aber nicht an, dass die gesamte Peripherie bereits synchronisiert ist. Aktualisieren Sie das Gerät, wenn aktueller Zustand benötigt wird. - Speichern Sie bei
device.power.lostdas Ereignis und lösen Sie eine Warnung aus. Beidevice.power.restoredkann die Stromwarnung geschlossen werden, aber warten Sie aufdevice.connection.online, bevor Sie das Gerät als steuerbar betrachten. - Verwenden Sie für Stromereignisse nur das strukturierte Topic und die Zeitstempel. Analysieren Sie keinen rohen Firmware-Text und bauen Sie keine Verzweigungslogik darauf auf.
- Verwenden Sie nach der Wiederverbindung REST, um den Kontobasiszustand wiederherzustellen, und fragen Sie nur kritische Geräte ab, die eine sofortige Bestätigung erfordern.
Wichtige Schnittstellen und Ereignisse
| Zweck | Referenz |
|---|---|
| Aktueller Kontobasiszustand | Geräte auflisten (auf Englisch) |
| Ein Gerät bestätigen | Gerät abrufen (auf Englisch) |
| Verbindungs- und Trennungsereignisse | Geräteverbindungsereignisse (auf Englisch) |
| Semantik von Stromverlust und -wiederherstellung | Gerätestromereignisse (auf Englisch) |
| Heartbeat und Wiederherstellung | Heartbeat und Wiederverbindung (auf Englisch) |
Fehler und Wiederherstellung
- Erkennen Sie geschlossene Verbindungen und Heartbeat-Ablauf, verbinden Sie sich dann mit begrenztem exponentiellem Backoff und zufälligem Jitter neu.
- Verwenden Sie ein
wsTicketniemals wieder; erstellen Sie unmittelbar vor jedem Verbindungsversuch ein neues. - Ereignisse werden nicht erneut zugestellt. Stellen Sie nach der Wiederverbindung den aktuellen Zustand wieder her, statt anzunehmen, dass keine Ereignisse aufgetreten sind.
- Die Ereigniszustellung kann bei Wiederholungsversuchen oder an Wiederverbindungsgrenzen dupliziert werden. Machen Sie Handler idempotent, indem Sie das verfügbare Topic, die
deviceId, Zeitstempel und den resultierenden Zustand verwenden; verlassen Sie sich nicht auf ein Feld, das der Ereignisvertrag nicht definiert. - Strom- und Verbindungsereignisse haben keine garantierte Reihenfolge, und möglicherweise kommt nur eine Kategorie an. Leiten Sie Stromänderungen nicht aus
online/offlineab.
Überlegungen für die Produktion
- Führen Sie die Empfangszeit des Ereignisses getrennt von der
occurredAtdes Geräts für die Beobachtbarkeit. - Definieren Sie Warnungsunterdrückungs- und Wiederherstellungsregeln, damit Wiederverbindungsstürme keine doppelten Vorfälle erzeugen.
- Behandeln Sie WebSocket als Live-Aktualisierungskanal und REST als Wiederherstellungspfad für den Zustand.
- Bestätigen Sie die Unterstützung von Stromereignissen bei der Geräteanmeldung. Nehmen Sie keine Unterstützung nur an, weil ein anderer Gerätetyp dieses Ereignis meldet.
