Verwenden von Schatten in Apps und Services - 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.

Verwenden von Schatten in Apps und Services

In diesem Abschnitt wird beschrieben, wie eine App oder ein Dienst mit dem AWS IoT Device Shadow-Dienst interagiert. In diesem Beispiel wird davon ausgegangen, dass die App oder der Service nur mit dem Schatten und darüber dem Gerät interagiert. In diesem Beispiel sind keine Verwaltungsaktionen enthalten, z. B. das Erstellen oder Löschen von Schatten.

In diesem Beispiel werden die AWS IoT Device Shadow-Dienste verwendet RESTAPI, um mit Schatten zu interagieren. Im Gegensatz zu dem in verwendeten BeispielVerwenden von Schatten in Geräten, das ein Kommunikationsmodell zum Veröffentlichen und Abonnieren verwendet, verwendet dieses Beispiel das Anforderungs-/Antwort-Kommunikationsmodell von. REST API Das bedeutet, dass die App oder der Dienst eine Anfrage stellen muss, bevor sie eine Antwort von erhalten kann. AWS IoT Ein Nachteil dieses Modells ist jedoch, dass es keine Benachrichtigungen unterstützt. Wenn Ihre App oder Ihr Dienst zeitnahe Benachrichtigungen MQTT über Änderungen des Gerätestatus benötigt, sollten Sie die Protokolle MQTT oder andere WSS Protokolle in Betracht ziehen, die das Kommunikationsmodell „Veröffentlichen/Abonnieren“ unterstützen, wie unter beschrieben. Verwenden von Schatten in Geräten

Wichtig

Stellen Sie sicher, dass die Verwendung der Schatten Ihrer App oder Ihres Services mit den entsprechenden Implementierungen in Ihren Geräten konsistent ist und von diesen unterstützt wird. Berücksichtigen Sie beispielsweise, wie Schatten erstellt, aktualisiert und gelöscht werden und wie Updates auf dem Gerät und in den Apps oder Services, die auf den Schatten zugreifen, gehandhabt werden. In Ihrem Design sollte klar angegeben werden, wie der Zustand des Geräts aktualisiert und gemeldet wird und wie Ihre Apps und Services mit dem Gerät und seinen Schatten interagieren.

Das REST API is URL für einen benannten Schatten ist:

https://endpoint/things/thingName/shadow?name=shadowName

und für einen unbenannten Schatten:

https://endpoint/things/thingName/shadow

Wobei:

Endpunkt

Der vom CLI Befehl zurückgegebene Endpunkt:

aws iot describe-endpoint --endpoint-type IOT:Data-ATS
thingName

Der Name des Objekts, zu dem der Schatten gehört

shadowName

Der Name des benannten Schattens. Dieser Parameter wird mit unbenannten Schatten nicht verwendet.

Initialisierung der App oder des Dienstes bei der Verbindung zu AWS IoT

Wenn die App zum ersten Mal eine Verbindung herstellt AWS IoT, sollte sie eine HTTP GET Anfrage an die URLs Schatten senden, die sie verwendet, um den aktuellen Status der Schatten zu erfahren, die sie verwendet. Dies ermöglicht es, die App oder den Service mit dem Schatten zu synchronisieren.

Der Verarbeitungsstatus ändert sich, während die App oder der Dienst verbunden ist AWS IoT

Solange die App oder der Dienst verbunden ist AWS IoT, kann sie den aktuellen Status regelmäßig abfragen, indem sie eine HTTP GET Anfrage an die URLs Shadows sendet, die sie verwendet.

Wenn ein Endbenutzer mit der App oder dem Dienst interagiert, um den Status des Geräts zu ändern, kann die App oder der Dienst eine HTTP POST Anfrage an den URLs Schatten senden, mit dem sie den desired Status des Shadows aktualisiert. Diese Anfrage gibt die akzeptierte Änderung zurück. Möglicherweise müssen Sie den Shadow jedoch abfragen, indem Sie HTTP GET Anfragen stellen, bis das Gerät den Shadow mit seinem neuen Status aktualisiert hat.

Erkennen, dass ein Gerät verbunden ist

Um festzustellen, ob ein Gerät derzeit verbunden ist, fügen Sie eine connected Eigenschaft in das Shadow-Dokument ein MQTT und setzen Sie die Eigenschaft mithilfe einer Testamentsnachricht (LWT) auf den connected Wert für den false Fall, dass ein Gerät aufgrund eines Fehlers getrennt wird.

Anmerkung

MQTTLWTNachrichten, die an AWS IoT reservierte Themen (Themen, die mit $ beginnen) gesendet werden, werden vom AWS IoT Device Shadow-Dienst ignoriert. Da sie jedoch von abonnierten Clients und von der AWS IoT Rules Engine verarbeitet werden, müssen Sie eine LWT Nachricht erstellen, die an ein nicht reserviertes Thema gesendet wird, und eine Regel erstellen, die die MQTT LWT Nachricht als Shadow-Update-Nachricht für das reservierte Update-Thema des Shadows erneut veröffentlicht. ShadowTopicPrefix/update

Um dem Device Shadow-Dienst eine LWT Nachricht zu senden
  1. Erstellen Sie eine Regel, die die MQTT LWT Nachricht zum reservierten Thema erneut veröffentlicht. Das folgende Beispiel ist eine Regel, die auf Nachrichten zu dem my/things/myLightBulb/update-Thema wartet und sie erneut in $aws/things/myLightBulb/shadow/update veröffentlicht.

    { "rule": { "ruleDisabled": false, "sql": "SELECT * FROM 'my/things/myLightBulb/update'", "description": "Turn my/things/ into $aws/things/", "actions": [ { "republish": { "topic": "$$aws/things/myLightBulb/shadow/update", "roleArn": "arn:aws:iam:123456789012:role/aws_iot_republish" } } ] } }
  2. Wenn das Gerät eine Verbindung herstellt AWS IoT, registriert es eine LWT Nachricht zu einem nicht reservierten Thema, damit die Regel für die erneute Veröffentlichung erkennt. In diesem Beispiel ist dieses Thema my/things/myLightBulb/update, und die verbundene Eigenschaft wird auf false festgelegt.

    { "state": { "reported": { "connected":"false" } } }
  3. Nach der Verbindung veröffentlicht das Gerät eine Nachricht zu seinem Shadow-Update-Thema, $aws/things/myLightBulb/shadow/update, um seinen aktuellen Status zu melden, einschließlich der Einstellung seiner connected-Eigenschaft auf true.

    { "state": { "reported": { "connected":"true" } } }
  4. Bevor das Gerät die Verbindung ordnungsgemäß trennt, veröffentlicht es eine Nachricht zu seinem Schattenaktualisierungsthema, $aws/things/myLightBulb/shadow/update, um seinen neuesten Status zu melden, einschließlich der Einstellung seiner connected-Eigenschaft auf false.

    { "state": { "reported": { "connected":"false" } } }
  5. Wenn das Gerät aufgrund eines Fehlers die Verbindung trennt, veröffentlicht der AWS IoT Message Broker die LWT Nachricht des Geräts im Namen des Geräts. Die Regel zum erneuten Veröffentlichen erkennt diese Nachricht und veröffentlicht die Schattenaktualisierungsmeldung, um die connected-Eigenschaft des Geräteschattens zu aktualisieren.