MQTT-Themen für Geräteschatten - 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.

MQTT-Themen für Geräteschatten

Der Device Shadow-Service verwendet reservierte MQTT-Themen, um es Anwendungen und Geräten zu ermöglichen, die Statusinformationen für ein Gerät (Schatten) abzurufen, zu aktualisieren oder zu löschen.

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 beispielsweise das Abonnieren von Themenfiltern wie , $aws/things/thingName/shadow/# da 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.

Nachstehend finden Sie die MQTT-Themen, die für die Interaktion mit Schatten verwendet wurden.

/get

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

ShadowTopicPrefix/get

AWS IoT antwortet durch Veröffentlichung in /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 Antwortschattendokument zu diesem Thema, wenn der Schatten 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, sendet ein JSON-Anfragestatusdokument mit einer desired-Eigenschaft wie der folgenden:

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

Ein Gerät, das seinen Schatten aktualisiert, würde ein JSON-Anfragestatusdokument mit der reported-Eigenschaft senden, z. B.:

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

AWS IoT antwortet durch Veröffentlichung in /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 für dieses Thema, wenn es eine Änderung für den Schatten des Geräts akzeptiert, und das Anforderungsstatusdokument enthält unterschiedliche Werte für desired- und -reportedStatus:

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 es eine Änderung für den Schatten des Geräts akzeptiert:

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 Schattens 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 es eine Änderung für den Schatten des Geräts ablehnt:

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 durch Veröffentlichung in /delete/accepted oder /delete/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/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 Fehlerantwortdokument zu diesem Thema, wenn es den Schatten des Geräts nicht löschen 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" ] } ] }