AWS IoT Device Shadow-Service - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS IoT Device Shadow-Service

Der AWS IoT Device Shadow-Service fügt den AWS IoT-Objekten Schatten hinzu. Schatten können den Status eines Geräts für Anwendungen und andere Dienste zur Verfügung stellen, unabhängig davon, ob das Gerät mit AWS IoT verbunden ist oder nicht. AWS IoT-Objekte können mehrere benannte Schatten haben, sodass Ihre IoT-Lösung mehr Optionen zum Verbinden Ihrer Geräte mit anderen Anwendungen und Services bietet.

AWS IoT-Objekte haben keine benannten Schatten, bis diese explizit erstellt werden. Jedoch wird ein unbenannter, klassischer Schatten für ein Objekt erstellt, wenn das Objekt erstellt wird. Schatten können mithilfe der AWS IoT-Konsole erstellt, aktualisiert und gelöscht werden. Geräte, andere Webclients und Services können Schatten erstellen, aktualisieren und löschen mithilfe von:reservierte MQTT Themen, HTTP unter Verwendung desGeräteschatten-REST-APIund dasAWS CLIzumAWS IoTaus. Weil Schatten von gespeichert werdenAWSin der Cloud können sie Gerätestatusdaten von Apps und anderen Cloud-Diensten erfassen und melden, unabhängig davon, ob das Gerät verbunden ist oder nicht.

Verwenden von Shadows

Schatten bieten einen zuverlässigen Datenspeicher für Geräte, Anwendungen und andere Cloud-Services, um Daten gemeinsam zu nutzen. Sie ermöglichen es Geräten, Anwendungen und anderen Cloud-Services, eine Verbindung herzustellen und zu trennen, ohne den Status eines Geräts zu verlieren.

Während Geräte, Anwendungen und andere Cloud-Services mit AWS IoT verbunden sind , können sie auf den aktuellen Zustand eines Geräts über seine Schatten zugreifen und diesen steuern. Beispielsweise kann eine Anwendung eine Änderung des Gerätestatus anfordern, indem sie einen Schatten aktualisiert. AWS IoT veröffentlicht eine Meldung, die die Änderung am Gerät angibt. Das Gerät empfängt diese Nachricht, aktualisiert seinen Status so, dass er übereinstimmt, und veröffentlicht eine Nachricht mit dem aktualisierten Status. Der Device Shadow-Service spiegelt diesen aktualisierten Status im entsprechenden Schatten wider. Die Anwendung kann das Update des Schattens abonnieren oder den Schatten nach seinem aktuellen Status abfragen.

Wenn ein Gerät offline ist, kann eine Anwendung weiterhin mit AWS IoT und den Schatten des Geräts kommunizieren. Wenn das Gerät erneut eine Verbindung herstellt, erhält es den aktuellen Status seiner Schatten. Das Gerät kann seinen Status so aktualisieren, dass er mit dem seiner Schatten übereinstimmt, und dann eine Nachricht mit dem aktualisierten Status veröffentlichen. Wenn eine Anwendung offline ist und sich der Gerätestatus ändert, während sie offline ist, hält das Gerät den Schatten aktualisiert, damit die Anwendung die Schatten nach seinem aktuellen Status abfragen kann, wenn sie erneut eine Verbindung herstellt.

Wenn Ihre Geräte häufig offline sind und Sie Ihre Geräte so konfigurieren möchten, dass sie nach der Wiederverbindung Delta-Nachrichten empfangen, können Sie die Funktion für permanente Sitzungen verwenden. Weitere Hinweise zum dauerhaften Sitzungsablaufzeitraum finden Sie unter.Ablauffrist für persistente Sitzungaus.

Auswählen der Verwendung benannter oder unbenannter Schatten

Der Device Shadow-Service unterstützt benannte und unbenannte (klassische) Schatten, wie sie in der Vergangenheit verwendet wurden. Ein Objekt kann mehrere benannte Schatten und nicht mehr als einen unbenannten, klassischen Schatten haben. Ein Objekt kann sowohl benannte als auch unbenannte Schatten gleichzeitig haben. Die API, die für den jeweiligen Zugriff verwendet wird, unterscheidet sich jedoch leicht. Daher ist es möglicherweise effizienter, zu entscheiden, welcher Schattentyp für Ihre Lösung am besten geeignet ist, und nur diesen Typ zu verwenden. Weitere Informationen zur API für den Zugriff auf die Schatten finden Sie unter Schatten-Themen.

Mit benannten Schatten können Sie verschiedene Ansichten des Status eines Objekts erstellen. Beispielsweise könnten Sie ein Objekt mit vielen Eigenschaften in Schatten mit logischen Eigenschaftengruppen unterteilen, die jeweils durch einen Schattennamen gekennzeichnet sind. Sie können den Zugriff auf Eigenschaften auch einschränken, indem Sie sie in verschiedene Schatten gruppieren und Richtlinien verwenden, um den Zugriff zu steuern. Weitere Informationen zu Richtlinien zur Verwendung mit Device Shadows; sieheAktionen, Ressourcen und Bedingungsschlüssel fürAWS IoTaus.

Die klassischen, unbenannten Schatten sind einfacher, aber etwas stärker eingeschränkt als die benannten Schatten. Jedes AWS IoT-Objekt kann nur einen unbenannten Schatten haben. Wenn Sie erwarten, dass Ihre IoT-Lösung nur einen begrenzten Bedarf an Schattendaten hat, sollten Sie auf diese Weise mit der Verwendung von Schatten beginnen. Wenn Sie jedoch der Meinung sind, dass Sie in Zukunft weitere Schatten hinzufügen möchten, sollten Sie von Anfang an benannte Schatten verwenden.

Die Flottenindizierung unterstützt unbenannte Schatten und benannte Schatten unterschiedlich. Weitere Informationen finden Sie unterVerwalten der Flottenindexaus.

Zugreifen auf Schatten

Jeder Schatten verfügt über ein reserviertes MQTT-Thema und eine HTTP-URL, die die get-, update- und delete-Aktionen für den Schatten unterstützt.

Schatten verwenden JSON-Schattendokumente zum Speichern und Abrufen von Daten. Das Dokument eines Schattens enthält eine Statuseigenschaft, die die folgenden Aspekte des Gerätezustands beschreibt:

  • desired

    Apps geben die gewünschten Status der Geräteeigenschaften an, indem sie das desired-Objekt aktualisieren.

  • reported

    Geräte melden ihren aktuellen Status im reported-Objekt.

  • delta

    AWS IoT meldet Unterschiede zwischen dem gewünschten und dem gemeldeten Zustand im delta-Objekt.

Die in einem Schatten gespeicherten Daten werden durch die Statuseigenschaft des Nachrichtentexts der Aktualisierungsaktion bestimmt. Nachfolgende Aktualisierungsaktionen können die Werte eines vorhandenen Datenobjekts ändern und Schlüssel und andere Elemente im Zustandsobjekt des Schattens hinzufügen und löschen. Weitere Informationen zum Zugriff auf Schatten finden Sie unter Verwenden von Schatten in Geräten und Verwenden von Schatten in Apps und Services.

Wichtig

Die Berechtigung, Aktualisierungsanforderungen zu stellen, sollte auf vertrauenswürdige Apps und Geräte beschränkt sein. Dadurch wird verhindert, dass die Statuseigenschaft des Schattens unerwartet geändert wird. Andernfalls sollten die Geräte und Apps, die den Schatten verwenden, so konzipiert werden, dass sie erwarten, dass sich die Schlüssel in der Statuseigenschaft ändern.

Verwenden von Schatten in Geräten, Apps und anderen Cloudservices

Die Verwendung von Schatten in Geräten, Apps und anderen Cloudservices erfordert Konsistenz und Koordination zwischen all diesen Services. Der AWS IoT Device Shadow-Service speichert den Schattenstatus, sendet Nachrichten, wenn sich der Schattenstatus ändert, und reagiert auf Nachrichten, die seinen Status ändern. Die Geräte, Apps und anderen Cloud-Services in Ihrer IoT-Lösung müssen ihren Status verwalten und den Status des Geräteschattens konsistent halten.

Die Schattenstatusdaten sind dynamisch und können von Geräten, Apps und anderen Cloud-Services mit Berechtigung zum Zugriff auf den Schatten geändert werden. Aus diesem Grund ist es wichtig zu berücksichtigen, wie jedes Gerät, jede App und jeder andere Cloud-Service mit dem Schatten interagiert. Zum Beispiel:

  • Geräte sollten nur in die reported-Eigenschaft des Schattenstatus schreiben, wenn Statusdaten an den Schatten übertragen werden.

  • Apps und andere Cloud-Services sollten nur in die desired-Eigenschaft schreiben, wenn Statusänderungsanforderungen über den Schatten an das Gerät übermittelt werden.

Wichtig

Die in einem Schattendatenobjekt enthaltenen Daten sind unabhängig von anderen Schatten und anderen Objekteigenschaften, z. B. den Attributen eines Objekts und dem Inhalt von MQTT-Nachrichten, die das Gerät eines Objekts veröffentlichen könnte. Ein Gerät kann jedoch bei Bedarf dieselben Daten in verschiedenen MQTT-Themen und -Schatten melden.

Ein Gerät, das mehrere Schatten unterstützt, muss die Konsistenz der Daten aufrechterhalten, die es in den verschiedenen Schatten meldet.

Nachrichtenreihenfolge

Es ist nicht gewährleistet, dass Nachrichten aus dem AWS IoT-Service im Gerät in einer bestimmten Reihenfolge ankommen. Das folgende Szenario zeigt, was in diesem Fall passiert.

Ursprüngliches Statusdokument:

{ "state": { "reported": { "color": "blue" } }, "version": 9, "timestamp": 123456776 }

Aktualisierung 1:

{ "state": { "desired": { "color": "RED" } }, "version": 10, "timestamp": 123456777 }

Aktualisierung 2:

{ "state": { "desired": { "color": "GREEN" } }, "version": 11, "timestamp": 123456778 }

Endgültiges Statusdokument:

{ "state": { "reported": { "color": "GREEN" } }, "version": 12, "timestamp": 123456779 }

Dies führt zu zwei Delta-Nachrichten:

{ "state": { "color": "RED" }, "version": 11, "timestamp": 123456778 }
{ "state": { "color": "GREEN" }, "version": 12, "timestamp": 123456779 }

Das Gerät kann diese Nachrichten ohne feste Reihenfolge erhalten. Da der Status in diesen Nachrichten kumulativer Natur ist, kann ein Gerät Nachrichten, die eine Versionsnummer enthalten, die älter ist als die, die es verfolgt, sicher verwerfen. Erhält das Gerät das Delta für die Version 12 vor der Version 11 kann es die Nachricht zur Version 11 sicher verwerfen.

Kürzen von Shadow-Nachrichten

Um die Größe der Schatten-Nachrichten, die an Ihr Gerät gesendet werden, zu reduzieren, legen Sie eine Regel fest, mit der nur die Felder, die Ihr Gerät benötigt, ausgewählt und die Nachricht in einem MQTT-Thema, das Ihr Gerät überwacht, erneut veröffentlicht werden.

Die Regel wird in der JSON vorgegeben und sollte wie folgt aussehen:

{ "sql": "SELECT state, version FROM '$aws/things/+/shadow/update/delta'", "ruleDisabled": false, "actions": [ { "republish": { "topic": "${topic(3)}/delta", "roleArn": "arn:aws:iam:123456789012:role/my-iot-role" } } ] }

Mit der SELECT-Anweisung wird festgelegt, welche Felder der Nachricht im vorgegebenen Topic erneut veröffentlicht werden. Der Platzhalter "+” wird verwendet, um allen Schattennamen zu entsprechen. Mit der Regel wird festgelegt, dass alle passenden Nachrichten im vorgegebenen Topic erneut veröffentlicht werden sollen. In diesem Fall wird die Funktion "topic()" verwendet, um das Thema anzugeben, in dem erneut eine Veröffentlichung erfolgen soll. topic(3) ermittelt den Objektnamen im Ursprungs-Thema. Weitere Informationen zum Erstellen von Regeln finden Sie unter Regeln für AWS IoT.