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-Dienst
Der AWS IoT Device Shadow-Dienst fügt AWS IoT Dingobjekten Schatten hinzu. Durch Schatten kann der Status eines Geräts Apps und anderen Diensten zur Verfügung gestellt werden, unabhängig davon, ob das Gerät mit dem Gerät verbunden ist AWS IoT oder nicht. AWS IoT Dingobjekte können mehrere benannte Schatten haben, sodass Ihre IoT-Lösung mehr Optionen für die Verbindung Ihrer Geräte mit anderen Apps und Diensten bietet.
AWS IoT Ding-Objekte haben keine Schatten, bis sie explizit erstellt werden. Schatten können mithilfe der AWS IoT Konsole erstellt, aktualisiert und gelöscht werden. Geräte, andere Webclients und Dienste können Schatten erstellen, aktualisieren und löschen, indem MQTT sie die reservierten MQTT Themen, den Device Shadow REST API und den AWS CLI für HTTP
Verwendung von Schatten
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.
Geräte, Apps und andere Cloud-Dienste sind zwar mit ihnen verbunden AWS IoT, können aber über deren Schatten auf den aktuellen Status eines Geräts zugreifen und diesen kontrollieren. Eine App kann beispielsweise eine Änderung des Gerätestatus anfordern, indem sie einen Schatten aktualisiert. AWS IoT veröffentlicht eine Nachricht, die auf die Änderung des Geräts hinweist. Das Gerät empfängt diese Nachricht, aktualisiert seinen Status so, dass er übereinstimmt, und veröffentlicht eine Nachricht mit dem aktualisierten Status. Der Geräteschatten-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 geht, kann eine App immer noch mit AWS IoT 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 die Geräte häufig offline sind und Sie die Geräte so konfigurieren möchten, dass sie Deltameldungen empfangen, nachdem sie wieder eine Verbindung hergestellt haben, können Sie die Funktion für persistente Sitzungen verwenden. Weitere Informationen zum Ablauf der persistenten Sitzung finden Sie unter Ablauffrist für persistente Sitzungen.
Auswählen der Verwendung benannter oder unbenannter Schatten
Der Geräteschatten-Service unterstützt benannte und unbenannte (klassische) Schatten. Ein Objekt kann mehrere benannte Schatten und nicht mehr als einen unbenannten, klassischen Schatten haben. Das Objekt 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 unter Reservierter benannter Schatten.
Ein Objekt kann gleichzeitig sowohl benannte als auch unbenannte Schatten haben. Die für den Zugriff API verwendeten Methoden unterscheiden sich jedoch geringfügig. 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 zum Zugreifen API auf die Schatten finden Sie unterSchatten-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, die mit Geräteschatten verwendet werden können, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS IoT und AWS IoT Core Richtlinien.
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 unter Verwalten der Flottenindizierung.
Zugreifen auf Schatten
Jeder Schatten hat ein MQTTreserviertes Thema HTTPURL, das die delete
Aktionen get
update
, und für den Schatten unterstützt.
Shadows verwenden JSONSchattendokumente 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 des
delta
Objekts.
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-Dienst speichert den Shadow-Status, sendet Nachrichten, wenn sich der Shadow-Status ä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. Beispielsweise:
-
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 den Daten anderer Schatten und anderer Dingobjekteigenschaften, wie z. B. den Attributen eines Dings und dem Inhalt von MQTT Nachrichten, die das Gerät eines Ding-Objekts möglicherweise veröffentlicht. Ein Gerät kann jedoch bei Bedarf dieselben Daten in unterschiedlichen 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 gibt keine Garantie dafür, dass Nachrichten vom AWS IoT Dienst in einer bestimmten Reihenfolge auf dem Gerät 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 an Ihr Gerät gesendeten Schattennachrichten zu reduzieren, definieren Sie eine Regel, die nur die Felder auswählt, die Ihr Gerät benötigt, und die Nachricht dann erneut zu einem MQTT Thema veröffentlicht, das Ihr Gerät abhört.
Die Regel ist in spezifiziert JSON 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" } } ] }
Die SELECT Anweisung bestimmt, welche Felder aus der Nachricht zum angegebenen Thema 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.