AA+W - Fotolia
AWS IoT Device Shadows verbessern die Gerätekommunikation
AWS Geräteschatten unterhalten für jedes Gerät, das man mit AWS IoT verbindet, eine Schatten-Datei. Der Service hilft, Konnektivitäts- und Synchronisierungsprobleme zu lösen.
IoT-Anwendungen sind auf eine Vielzahl intelligenter und miteinander vernetzter Geräte angewiesen. Das macht sie jedoch anfällig für Verfügbarkeits- und Konnektivitätsprobleme.
Um mit IoT-Geräten in Echtzeit zu kommunizieren, benötigen Anwendungen ein stabiles Netzwerk. Andernfalls kann die Verbindung der Geräte getrennt werden oder sie werden mit Anfragen aus mehreren Anwendungen überlastet. Dies kann zu Synchronisierungs- und Statusproblemen führen, was wiederum die Erfassung und Nutzung von IoT-Daten beeinträchtigt.
Der AWS IoT Device Shadow Service (AWS IoT Geräteschatten) wurde entwickelt, um diese Konnektivitäts- und Synchronisierungsprobleme zu lösen. Der Service fungiert dabei als Kommunikations-Link zwischen Anwendungen und IoT-Geräten.
Lassen Sie uns einen genaueren Blick auf den Service werfen und prüfen, wie er IoT-Anwendungen auf AWS verbessern kann.
Grundlagen von Geräteschatten
Ein Device Shadow beziehungsweise Geräteschatten ist eine Datei im offenen JSON-Format. Diese JSON-Datei dient als Repository, um detaillierte Status- und Zustandsinformationen für ein IoT-Gerät zu speichern. Auf diese Weise sichert die Schatten-Datei (JSON-Datei) sowohl den aktuellen als auch den gewünschten Zustand des Gerätes.
Jedem IoT-Gerät ist ein assoziierter Schatten zugeordnet. Sowohl das Gerät als auch die Anwendung können den Schatten lesen und beschreiben. Die AWS IoT-Plattform aktualisiert jede Schatten-Datei mit den Daten, die an und von dem Gerät gesendet werden. So kann eine Anwendung bei richtiger Netzwerkkonnektivität Befehle senden und Daten direkt vom IoT-Gerät erfassen.
Der Clou ist: Wenn das IoT-Gerät beschäftigt oder offline ist, kann die Anwendung weiterhin Befehle erteilen oder Konfigurationen für das IoT-Gerät ändern – einfach indem die Befehle und Konfigurationen in die Schatten-Datei geschrieben werden. Sie kann auch die neuesten Daten lesen, die vom Gerät in die Datei geschrieben wurden.
Wird die Verbindung wiederhergestellt oder ist das Gerät nicht mehr beschäftigt, kann das Gerät die Schatten-Datei lesen, um Änderungen vorzunehmen oder neue Daten in sie zu schreiben. Auf diese Weise stellt eine Schatten-Datei sicher, dass jedes IoT-Gerät immer logisch für die Anwendung verfügbar ist - unabhängig davon, ob das physische Gerät tatsächlich verfügbar ist oder nicht. Dadurch sind Geräteschatten besonders attraktiv für Anwendungsfälle mit intermittierender Konnektivität, geringer Bandbreite, begrenzter Rechenleistung oder unsicheren Stromquellen.
Die Schatten-Datei
Bei AWS IoT-Diensten ist es wichtig, den gesamten Inhalt der Geräteschatten-Datei zu erkennen. Dieser besteht aus sechs allgemeinen Elementen:
- dem Gerätestatus,
- den Metadaten,
- einem Zeitstempel,
- einem Client Token,
- Versionsinformationen und
- möglicherweise Arrays zur Speicherung der auszutauschenden Daten.
Geräteschatten bestehen aus Desired States und Reportet States (Soll- und Meldestatus). Der gewünschte Sollstatus repräsentiert den beabsichtigten oder zukünftigen Zustand des IoT-Geräts. Der gemeldete Status hingegen zeigt den aktuellen Zustand des IoT-Gerätes an.
Eine Anwendung kann in die Geräteschatten-Datei schreiben, um den gewünschten Zustand eines Geräts einzustellen oder zu aktualisieren. Eine Verbindung oder direkte Kommunikation mit dem eigentlichen Gerät muss dabei nicht hergestellt werden. Ein verbundenes Gerät schreibt gemeldete Zustandsinformationen in die Geräteschatten-Datei, die die Anwendungen dann lesen können – auch wenn dieses Gerät nicht mehr verbunden ist.
Schatten-Dateien fügen auch Metadaten über den gewünschten und gemeldeten Statusinhalt hinzu. Dies kann zum Beispiel ein Zeitstempel für jedes Attribut sein, so dass Geräte und Anwendungen genau bestimmen können, wann ein Attribut aktualisiert wurde.
Zusätzliche Zeitstempel vermerken, wenn Nachrichten von AWS IoT gesendet werden. In Verbindung mit Daten über den gewünschten und gemeldeten Zustand kann ein IoT-Gerät das Alter jedes Attributs bestimmen und festlegen, ob der neue Inhalt den aktuellen Inhalt ersetzen soll.
Ein Client Token ist eine eindeutige Kennung, die einem IoT-Gerät zugewiesen wird. Die Kennung ermöglicht es dem Gerät, Anfragen und Antworten über Kommunikationsprotokolle, wie zum Beispiel Message Queuing Telemetry Transport (MQTT), zuzuordnen. Auf diese Weise kann das IoT-Gerät bestimmen, welche Nachrichten für das jeweilige Gerät bestimmt sind und welche nicht.
Die Versionsinformationen werden jedes Mal aktualisiert, wenn die Datei eine Anfrage oder eine Antwort erhält. Versionsinformationen helfen sicherzustellen, dass die richtige Version verwendet wird. Dies kann verhindern, dass eine Anwendung einen Geräteschatten mit einer älteren Version überschreibt.
Schließlich unterstützen Geräteschatten-Dateien die Einbindung von Arrays. Arrays können Daten enthalten, die zwischen dem IoT-Gerät und der Anwendung übertragen werden sollen. Ein Array wird jedoch als eine Alles-oder-Nichts-Datenstruktur behandelt: Das Schreiben eines Arrays bedeutet, den gesamten Array zu ersetzen, anstatt nur einzelne Elemente zu aktualisieren.
Wie Geräteschatten in AWS funktionieren
Mit dem AWS Device Shadow Service können Unternehmen den Zustand von IoT-Geräten bis zu einem Jahr lang speichern. Schatten-Dateien können auf unbestimmte Zeit gepflegt werden. Dies gilt aber nur, wenn sie aktualisiert werden – ansonsten verfallen sie innerhalb eines Jahres.
Softwareentwickler können die Geräteschattenfunktion im AWS IoT Core auf verschiedene Weise nutzen. So können sie zum Beispiel die AWS API verwenden, um Cloud und Mobile Workloads zu erstellen. Diese sammeln Daten und senden Befehle an IoT-Geräte, ohne dass sich Entwickler mit der zugrunde liegenden Kommunikationsprogrammierung befassen müssen. Die Methode vereinfacht auch den Programmieraufwand, da die API nicht mit den zugrunde liegenden Kommunikations- und Sicherheitsprotokollen der spezifischen IoT-Geräte übereinstimmen muss.
Entwickler können sich auch dafür entscheiden, dass Anwendungen über das Device Gateway und die Rules Engine im AWS IoT Core direkt mit IoT-Geräten kommunizieren. Die Geräteschattenfunktion ist jedoch in der Regel an eine Registry im AWS IoT Core gebunden. Die Registry stellt für jedes IoT-Gerät eine logische und durchsuchbare Identifikation zur Verfügung. Es kann auch Gerätemetadaten wie Modelle, Hersteller, Support-Informationen, Zertifikate und sogar die Schatten-Datei speichern. Dadurch können Entwickler Geräte organisieren und verfolgen, um die IoT-Verwaltung zu verbessern.
Typische Aufgaben für AWS Geräteschatten
Es gibt im Wesentlichen drei Aufgaben, die man mit einem Geräteschatten ausführen kann: Daten holen (get), Daten aktualisieren (update) und Daten löschen (delete).
Die Get-Aktion greift auf den letzten in der Schatten-Datei gespeicherten Zustand zu (zum Beispiel beim Start eines Geräts, um die Konfiguration und den letzten Betriebszustand abzurufen). Sie gibt das vollständige JSON-Dokument und alle Metadaten an den Requester zurück. Im Endeffekt zeigt sie den aktuellen oder gemeldeten Zustand eines IoT-Gerätes an.
Die Delete-Aktion löscht den Geräteschatten inklusive aller Inhalte. Technisch gesehen entfernt die Aktion die JSON-Dokumentdatei und ihren Inhalt aus dem Datenspeicher. Dies ist sinnvoll, wenn ein IoT-Gerät aus einem Service entfernt wird. Einmal gelöscht, kann eine Geräteschatten-Datei nicht mehr wiederhergestellt werden. Sie kann lediglich neu erstellt werden.
Die Update-Aktion legt den gewünschten Zustand des Gerätes fest, das im Schatten repräsentiert ist. Wenn die Schatten-Datei noch nicht existiert, erstellt diese Aktion die JSON-Datei. Die Daten werden zusammen mit den Zeitstempelangaben gespeichert, um festzuhalten, wann sie zuletzt aktualisiert wurden. Der Zeitstempel ermöglicht es anderen Anwendungen und Geräten, die Differenz zwischen dem gewünschten und dem gemeldeten Zustand zu bestimmen.