AWS IoT Geräteschatten-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 Geräteschatten-Service

Der AWS IoT Geräteschatten-Service fügt AWS IoT Objektobjekten Schatten hinzu. Schatten können den Status eines Geräts Apps und anderen -Services zur Verfügung stellen, unabhängig davon, ob das Gerät mit verbunden AWS IoT ist oder nicht. AWS IoT Objekte können mehrere benannte Schatten haben, sodass Ihre IoT-Lösung mehr Möglichkeiten hat, Ihre Geräte mit anderen Apps und Services zu verbinden.

AWS IoT -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 Services können Schatten erstellen, aktualisieren und löschen mithilfe von MQTT und den reservierten MQTT-Themen; HTTP mithilfe der Geräteschatten-REST-API; und der AWS CLI für AWS IoT Da Schatten von AWS in der Cloud gespeichert werden, können sie Gerätestatusdaten von Apps und anderen Cloud-Services erfassen und melden, unabhängig davon, ob das Gerät verbunden ist oder nicht.

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.

Während Geräte, Apps und andere Cloud-Services mit verbunden sind AWS IoT, können sie über ihre Schatten auf ein Gerät zugreifen und den aktuellen Status steuern. Beispielsweise kann eine App eine Änderung des Gerätestatus anfordern, indem sie eine Shadow. AWS IoT veröffentlicht eine Nachricht, 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 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 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 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 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, 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 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 Status im -deltaObjekt.

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 Geräteschatten-Service speichert den Schattenstatus, sendet Nachrichten, wenn sich der Schattenstatus ändert, und antwortet 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 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 gibt keine Garantie dafür, dass Nachrichten vom AWS IoT Service in einer bestimmten Reihenfolge am 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 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.