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.
Verwenden von Schatten in Geräten
In diesem Abschnitt wird die Gerätekommunikation mit Shadows mithilfe von MQTT Nachrichten beschrieben. Dies ist die bevorzugte Methode für Geräte zur Kommunikation mit dem AWS IoT Device Shadow-Dienst.
Shadow-Kommunikation emuliert ein request/response model using the publish/subscribe Kommunikationsmodell von. MQTT Jede Schattenaktion besteht aus einem Anforderungsthema, einem Thema für erfolgreiche Antworten (accepted
) und einem Thema für Fehlerantworten (rejected
).
Informationen dazu, ob Apps und Services feststellen können, ob ein Gerät verbunden ist, finden Sie unter Erkennen, dass ein Gerät verbunden ist.
Wichtig
Da MQTT das Kommunikationsmodell „Publizieren/Abonnieren“ verwendet wird, sollten Sie die Antwortthemen abonnieren, bevor Sie ein Anforderungsthema veröffentlichen. Wenn Sie dies nicht tun, erhalten Sie keine Antwort auf die Anfrage, die Sie veröffentlichen.
Wenn Sie einen verwenden AWS IoT Device SDK, um den Device Shadow-Dienst aufzurufenAPIs, wird dies für Sie erledigt.
Die Beispiele in diesem Abschnitt verwenden eine verkürzte Form des Themas, wobei sich der Begriff entweder auf einen benannten oder einen unbenannten Schatten beziehen ShadowTopicPrefix
kann, wie in dieser Tabelle beschrieben.
Schatten können benannt oder unbenannt sein (klassisch). Die jeweils verwendeten Themen unterscheiden sich nur durch das Themenpräfix. In dieser Tabelle wird das Themenpräfix angezeigt, das von jedem Schattentyp verwendet wird.
ShadowTopicPrefix Wert |
Schattentyp |
---|---|
$aws/things/ |
Unbenannter (klassischer) Schatten |
$aws/things/ |
Benannter Schatten |
Wichtig
Stellen Sie sicher, dass die Verwendung der Schatten durch Ihre App oder Ihren Service konsistent ist und von den entsprechenden Implementierungen auf Ihren Geräten unterstützt wird. Bedenken Sie beispielsweise, wie Schatten erstellt, aktualisiert und gelöscht werden. Berücksichtigen Sie auch, wie Updates auf dem Gerät und in den Apps oder Services behandelt werden, die über einen Schatten auf das Gerät zugreifen. Ihr Design sollte klar angeben, wie der Zustand des Geräts aktualisiert und gemeldet wird und wie Ihre Apps und Services mit dem Gerät und seinen Schatten interagieren.
Um ein vollständiges Thema zu erstellen, wählen Sie
als Schattentyp aus, auf den Sie verweisen möchten. Ersetzen Sie ShadowTopicPrefix
und thingName
mit den entsprechenden Werten, wenn zutreffend. Fügen Sie anschließend den Themen-Stub an wie in der folgenden Tabelle dargestellt. Denken Sie daran, dass bei Themen zwischen Groß- und Kleinschreibung unterschieden wird.shadowName
Weitere Informationen zu den reservierten Themen für Schatten finden Sie unter Schatten-Themen.
Initialisierung des Geräts bei der ersten Verbindung zu AWS IoT
Nachdem sich ein Gerät bei registriert hat AWS IoT, sollte es diese MQTT Nachrichten für die Shadows abonnieren, die es unterstützt.
Thema | Bedeutung | Aktion, die ein Gerät ausführen sollte, wenn dieses Thema empfangen wird |
---|---|---|
|
Die |
Die Aktionen, die für den gelöschten Schatten erforderlich sind, z. B. das Beenden der Veröffentlichung von Aktualisierungen. |
|
Die |
Reagieren Sie auf die Fehlermeldung im Nachrichtentext. |
|
Die |
Die Aktionen, die erforderlich sind, um das Statusdokument im Nachrichtentext zu verarbeiten. |
|
Die |
Reagieren Sie auf die Fehlermeldung im Nachrichtentext. |
|
Die |
Bestätigen Sie, dass die aktualisierten Daten im Nachrichtentext mit dem Gerätestatus übereinstimmen. |
|
Die |
Reagieren Sie auf die Fehlermeldung im Nachrichtentext. |
|
Das Schattendokument wurde durch eine Anfrage an aktualisiert AWS IoT, und der Nachrichtentext enthält die angeforderten Änderungen. |
Aktualisieren Sie den Gerätestatus so, dass er mit dem gewünschten Status im Nachrichtentext übereinstimmt. |
|
Eine Aktualisierung des Schattens wurde kürzlich abgeschlossen, und der Nachrichtentext enthält das aktuelle Schattendokument. |
Bestätigen Sie, dass der aktualisierte Status im Nachrichtentext mit dem Gerätestatus übereinstimmt. |
Nach dem Abonnieren der Nachrichten in der obigen Tabelle für jeden Schatten sollte das Gerät testen, ob die Schatten, die es unterstützt, bereits erstellt wurden, indem es ein /get
-Thema in jedem Schatten veröffentlicht. Wenn eine /get/accepted
-Nachricht empfangen wird, enthält der Nachrichtentext das Schattendokument, mit dem das Gerät seinen Status initialisieren kann. Wenn eine /get/rejected
-Nachricht empfangen wird, sollte der Schatten erstellt werden, indem eine /update
-Nachricht mit dem aktuellen Gerätestatus veröffentlicht wird.
Nehmen wir zum Beispiel an, Sie haben ein Objekt My_IoT_Thing
, das keine klassischen oder benannten Schatten hat. Wenn Sie jetzt eine /get
-Anfrage zum reservierten Thema $aws/things/My_IoT_Thing/shadow/get
veröffentlichen, erhält das $aws/things/My_IoT_Thing/shadow/get/rejected
Thema einen Fehler, da das Objekt keine Schatten hat. Um diesen Fehler zu beheben, veröffentlichen Sie zunächst eine /update
-Nachricht, indem Sie das $aws/things/My_IoT_Thing/shadow/update
Thema mit dem aktuellen Gerätestatus verwenden, z. B. die folgende Payload.
{ "state": { "reported": { "welcome": "aws-iot", "color": "yellow" } } }
Für das Objekt wird jetzt ein klassischer Schatten erstellt, und die Nachricht wird auf dem $aws/things/My_IoT_Thing/shadow/update/accepted
-Thema veröffentlicht. Wenn Sie zu dem Thema $aws/things/My_IoT_Thing/shadow/get
veröffentlichen, wird eine Antwort auf das $aws/things/My_IoT_Thing/shadow/get/accepted
-Thema mit dem Gerätestatus zurückgegeben.
Bei benannten Schatten müssen Sie zuerst den benannten Schatten erstellen oder ein Update mit dem Schatten-Namen veröffentlichen, bevor Sie die GET-Anfrage verwenden können. Um beispielsweise einen benannten Schatten namedShadow1
zu erstellen, müssen Sie zunächst die Informationen zum Gerätestatus für das Thema veröffentlichen$aws/things/My_IoT_Thing/shadow/name/namedShadow1/update
. Um die Statusinformationen abzurufen, verwenden Sie die /get
-Anfrage für den benannten Schatten, $aws/things/My_IoT_Thing/shadow/name/namedShadow1/get
.
Nachrichten werden verarbeitet, während das Gerät angeschlossen ist AWS IoT
Solange ein Gerät verbunden ist AWS IoT, kann es /update/delta-Meldungen empfangen und sollte den Gerätestatus an die Änderungen in seinem Schatten anpassen, indem es:
-
Lesen aller empfangenen /update/delta-Nachrichten und entsprechende Anpassung des Gerätestatus.
-
Veröffentlichen einer /update-Nachricht mit einem
reported
-Nachrichtentext, der den aktuellen Status des Geräts hat, wenn sich der Gerätestatus ändert.
Solange ein Gerät angeschlossen ist, sollte es diese Meldungen veröffentlichen, wenn angezeigt.
Indikation | Thema | Nutzlast |
---|---|---|
Der Zustand des Geräts hat sich geändert. |
|
Ein Schattendokument mit der |
Das Gerät wird möglicherweise nicht mit dem Schatten synchronisiert. |
|
(empty) |
Eine Aktion auf dem Gerät zeigt an, dass ein Schatten vom Gerät nicht mehr unterstützt wird, z. B. wenn das Gerät entfernt oder ersetzt wird. |
|
(empty) |
Nachrichten werden verarbeitet, wenn das Gerät wieder eine Verbindung herstellt mit AWS IoT
Wenn ein Gerät mit einem oder mehreren Schatten eine Verbindung herstellt AWS IoT, sollte es seinen Status mit dem aller Schatten synchronisieren, die es unterstützt, und zwar wie folgt:
-
Lesen aller empfangenen /update/delta-Nachrichten und entsprechende Anpassung des Gerätestatus.
-
Veröffentlichen einer /update-Nachricht mit einem
reported
-Nachrichtentext, der den aktuellen Status des Geräts hat.