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 IoTDingobjekte haben erst dann benannte Schatten, wenn sie explizit erzeugt werden. Ein unbenannter, klassischer Schatten wird jedoch für ein Ding erzeugt, wenn das Ding erstellt wird. Schatten können mithilfe der AWS IoT-Konsole erstellt, aktualisiert und gelöscht werden. Geräte, andere Webclients und Dienste können Schatten mithilfe von MQTT erstellen, aktualisieren und löschenreservierte MQTT-Themen, HTTP mit demDevice Shadow Shadow-Service, und dieAWS CLIzumAWS IoT
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 dem Wiederverbinden Deltameldungen empfangen, können Sie die Funktion für persistente Sitzungen verwenden. Weitere Informationen zum Ablaufzeitraum der persistenten Sitzung finden Sie inAblauffrist für persistente Sitzungen.
Auswählen der Verwendung benannter oder unbenannter Schatten
Der Device Shadow-Dienst unterstützt benannte und unbenannte oder klassische Schatten. Ein Dingobjekt kann mehrere benannte Schatten und nicht mehr als einen unbenannten Schatten haben. Das Dingobjekt kann auch einen reservierten benannten Schatten haben, der ähnlich wie ein benannter Schatten funktioniert, außer dass Sie seinen Namen nicht aktualisieren können. Weitere Informationen finden Sie unterReserviert mit dem Namen Shadow.
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 in Device-Shadow-ServiceAktionen, Ressourcen und Bedingungsschlüssel fürAWS IoTundAWS IoT CorePolitik.
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 unterFlottenindizierung verwalten.
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. Beispiele:
-
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.