Device MQTT Shadow-Themen - 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.

Device MQTT Shadow-Themen

Der Device Shadow-Dienst verwendet reservierte MQTT Themen, damit Geräte und Apps die Statusinformationen für ein Gerät abrufen, aktualisieren oder löschen können (Shadow).

Das Veröffentlichen in und Abonnieren von Schattengerätethemen erfordert eine themenbasierte Autorisierung. AWS IoT behält sich das Recht vor, der vorhandenen Themenstruktur neue Themen hinzuzufügen. Aus diesem Grund empfehlen wir, Abonnements mit Platzhaltern von Schattengeräte-Topics zu vermeiden. Vermeiden Sie es beispielsweise, Themenfilter zu abonnieren, $aws/things/thingName/shadow/# weil die Anzahl der Themen, die diesem Themenfilter entsprechen, mit der AWS IoT Einführung neuer Schattenthemen zunehmen könnte. Beispiele für Nachrichten, die zu diesen Topics veröffentlichten wurden, finden Sie unter Interaktion mit Schatten.

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/thingName/shadow Unbenannter (klassischer) Schatten
$aws/things/thingName/shadow/name/shadowName Benannter Schatten

Um ein vollständiges Thema zu erstellen, wählen Sie die ShadowTopicPrefix für den Schattentyp aus, auf den Sie verweisen möchten, ersetzen Sie thingName und gegebenenfalls shadowName durch die entsprechenden Werte und fügen Sie diese dann an den Themen-Stub an, wie in den folgenden Abschnitten dargestellt.

Im Folgenden werden die MQTT Themen beschrieben, die für die Interaktion mit Schatten verwendet werden.

/get

Veröffentlichen Sie eine leere Nachricht in diesem Thema, um den Geräteschatten abzurufen:

ShadowTopicPrefix/get

AWS IoT antwortet mit einer Veröffentlichung auf entweder /get/accepted oder/update/rejected.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get" ] } ] }

/get/accepted

AWS IoT veröffentlicht ein Antwort-Shadow-Dokument zu diesem Thema, wenn der Shadow des Geräts zurückgegeben wird:

ShadowTopicPrefix/get/accepted

Weitere Informationen finden Sie unter Antwortstatusdokumente.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get/accepted" ] } ] }

/update/rejected

AWS IoT veröffentlicht ein Fehlerantwortdokument zu diesem Thema, wenn es den Schatten des Geräts nicht zurückgeben kann:

ShadowTopicPrefix/get/rejected

Weitere Informationen finden Sie unter Fehlerantwortdokument.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/get/rejected" ] }, { "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get/rejected" ] } ] }

/update

Veröffentlichen Sie in diesem Thema ein Anfragestatusdokument, um den Geräteschatten zu aktualisieren:

ShadowTopicPrefix/update

Der Nachrichtentext enthält ein partielles Anfragestatusdokument.

Ein Client, der versucht, den Status eines Geräts zu aktualisieren, würde ein JSON Anforderungsstatusdokument mit der folgenden desired Eigenschaft senden:

{ "state": { "desired": { "color": "red", "power": "on" } } }

Ein Gerät, das seinen Shadow aktualisiert, würde ein JSON Anforderungsstatusdokument mit der folgenden reported Eigenschaft senden:

{ "state": { "reported": { "color": "red", "power": "on" } } }

AWS IoT antwortet mit einer Veröffentlichung auf entweder /update/accepted oder/update/rejected.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update" ] } ] }

/update/delta

AWS IoT veröffentlicht ein Antwortstatusdokument zu diesem Thema, wenn es eine Änderung für den Shadow des Geräts akzeptiert, und das Dokument mit dem Anforderungsstatus verschiedene Werte für desired und reported gibt an:

ShadowTopicPrefix/update/delta

Der Nachrichtenpuffer enthält eine Antwortstatusdokument „/delta“.

Nachrichtentextdetails

  • Eine in update/delta veröffentlichte Nachricht umfasst nur die gewünschten Attribute, die sich zwischen dem Abschnitt desired (Soll) und dem Abschnitt reported (gemeldet) Abschnitt unterscheiden. Sie enthält alle diese Attribute, unabhängig davon, ob diese in der Nachricht zur aktuellen Aktualisierung enthalten waren oder bereits in AWS IoT gespeichert wurden. Attribute, die sich nicht zwischen dem Abschnitt desired (Soll) und dem Abschnitt reported (gemeldet) Abschnitt unterscheiden, sind nicht enthalten.

  • Wenn sich ein Attribut im Abschnitt reported (gemeldet) befindet, jedoch kein Pendant im Abschnitt desired (Soll), dann ist es nicht enthalten.

  • Ist ein Attribut im Abschnitt desired (Soll) vorhanden, besitzt jedoch kein Pendant im Abschnitt reported (gemeldet), dann ist es enthalten.

  • Wenn ein Attribut aus dem Abschnitt reported (gemeldet) gelöscht wurde, aber sich nach wie vor im Abschnitt desired (Soll) befindet, dann ist es enthalten.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/delta" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/delta" ] } ] }

/update/accepted

AWS IoT veröffentlicht ein Antwortstatusdokument zu diesem Thema, wenn eine Änderung für den Shadow des Geräts akzeptiert wird:

ShadowTopicPrefix/update/accepted

Der Nachrichtenpuffer enthält eine Antwortstatusdokument „/accepted“.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/accepted" ] } ] }

/update/documents

AWS IoT veröffentlicht ein Statusdokument zu diesem Thema, wenn eine Aktualisierung des Shadows erfolgreich durchgeführt wurde:

ShadowTopicPrefix/update/documents

Der Nachrichtentext enthält eine /Dokumente, Antwortstatusdokument.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/documents" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/documents" ] } ] }

/update/rejected

AWS IoT veröffentlicht ein Fehlerantwortdokument zu diesem Thema, wenn eine Änderung für den Shadow des Geräts abgelehnt wird:

ShadowTopicPrefix/update/rejected

Der Nachrichtentext enthält eine Fehlerantwortdokument.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/rejected" ] } ] }

/delete

Um einen Geräteschatten zu löschen, veröffentlichen Sie im Löschthema eine leere Nachricht.

ShadowTopicPrefix/delete

Der Inhalt der Nachricht wird ignoriert.

Beachten Sie, dass durch das Löschen eines Shadows seine Versionsnummer nicht auf 0 zurückgesetzt wird.

AWS IoT antwortet, indem es entweder /delete/accepted oder /delete/rejected veröffentlicht.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete" ] } ] }

/delete/accepted

AWS IoT veröffentlicht eine Nachricht zu diesem Thema, wenn der Schatten eines Geräts gelöscht wird:

ShadowTopicPrefix/delete/accepted

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/delete/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete/accepted" ] } ] }

/delete/rejected

AWS IoT veröffentlicht ein Dokument mit einer Fehlermeldung zu diesem Thema, wenn der Schatten des Geräts nicht gelöscht werden kann:

ShadowTopicPrefix/delete/rejected

Der Nachrichtentext enthält eine Fehlerantwortdokument.

Beispielrichtline

Im Folgenden finden Sie ein Beispiel für die erforderliche Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete/rejected" ] } ] }