Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation des shadows dans les applications et les services
Cette section décrit comment une application ou un service interagit avec le service AWS IoT Device Shadow. Cet exemple suppose que l'application ou le service interagit uniquement avec le shadow et, via le shadow, avec l'appareil. Cet exemple n'inclut aucune action de gestion, telle que la création ou la suppression de shadows.
Cet exemple utilise le service AWS IoT Device Shadow REST API pour interagir avec les ombres. Contrairement à l'exemple utilisé dansUtilisation des shadows sur les appareils, qui utilise un modèle de communication de publication/abonnement, cet exemple utilise le modèle de communication demande/réponse du. REST API Cela signifie que l'application ou le service doit faire une demande avant de pouvoir recevoir une réponse de AWS IoT. Un inconvénient de ce modèle, toutefois, est qu'il ne prend pas en charge les notifications. Si votre application ou service nécessite des notifications rapides en cas de modification de l'état de l'appareil, pensez aux WSS protocoles MQTT or MQTT over, qui prennent en charge le modèle de communication publication/abonnement, comme décrit dans. Utilisation des shadows sur les appareils
Important
Assurez-vous que l'utilisation des shadows par votre application ou service est cohérente et prise en charge par les implémentations correspondantes sur vos appareils. Prenez en compte, par exemple, la façon dont les shadows sont créés, mis à jour et supprimés, et la manière dont les mises à jour sont gérées sur l'appareil et dans les applications ou services qui accèdent au shadow. Votre conception doit indiquer clairement comment l'état de l'appareil est mis à jour et rapporté, et comment vos applications et services interagissent avec l'appareil et ses shadows.
URLPour une ombre nommée, c'est : REST API
https://
endpoint
/things/thingName
/shadow?name=shadowName
et pour un shadow non nommé :
https://
endpoint
/things/thingName
/shadow
où :
- point de terminaison
-
Le point de terminaison renvoyé par la CLI commande :
aws iot describe-endpoint --endpoint-type IOT:Data-ATS
- thingName
-
Nom de l'objet d'objet auquel le shadow appartient
- shadowName
-
Nom du shadow nommé. Ce paramètre n'est pas utilisé avec des shadows non nommés.
Initialisation de l'application ou du service lors de la connexion à AWS IoT
Lorsque l'application se connecte pour la première fois à AWS IoT, elle doit envoyer une HTTP GET demande aux URLs ombres qu'elle utilise pour obtenir l'état actuel des ombres qu'elle utilise. Cela lui permet de synchroniser l'application ou le service avec le shadow.
L'état de traitement change lorsque l'application ou le service est connecté à AWS IoT
Lorsque l'application ou le service est connecté AWS IoT, il peut demander périodiquement l'état actuel en envoyant une HTTP GET demande sur URLs les ombres qu'il utilise.
Lorsqu'un utilisateur final interagit avec l'application ou le service pour modifier l'état de l'appareil, l'application ou le service peut envoyer une HTTP POST demande à l'une URLs des ombres qu'il utilise pour mettre à jour l'desired
état de l'ombre. Cette demande renvoie la modification acceptée, mais vous devrez peut-être interroger l'ombre en effectuant des HTTP GET demandes jusqu'à ce que l'appareil ait mis à jour l'ombre avec son nouvel état.
Détection d'un appareil connecté
Pour déterminer si un appareil est actuellement connecté, incluez une connected
propriété dans le document fantôme et utilisez un message MQTT Last Will and Testament (LWT) pour définir la connected
propriété sur false
si un appareil est déconnecté en raison d'une erreur.
Note
MQTTLWTles messages envoyés à des sujets AWS IoT réservés (sujets commençant par $) sont ignorés par le service AWS IoT Device Shadow. Cependant, ils sont traités par les clients abonnés et par le moteur de AWS IoT règles. Vous devrez donc créer un LWT message envoyé à un sujet non réservé et une règle republiant le message sous forme de MQTT LWT message de mise à jour parallèle du sujet de mise à jour réservé du sujet de mise à jour parallèle. ShadowTopicPrefix
/update
Pour envoyer un LWT message au service Device Shadow
-
Créez une règle qui republie le MQTT LWT message sur le sujet réservé. L'exemple suivant est une règle à l'écoute d'un message sur la
my/things/myLightBulb/update
rubrique et qui le republie dans$aws/things/myLightBulb/shadow/update
.{ "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" } } ] } }
-
Lorsque l'appareil se connecte à AWS IoT, il enregistre un LWT message dans un sujet non réservé afin que la règle de republication le reconnaisse. Dans cet exemple, cette rubrique est
my/things/myLightBulb/update
et elle définit la propriété connectée surfalse
.{ "state": { "reported": { "connected":"false" } } }
-
Après la connexion, l'appareil publie un message sur sa rubrique de mise à jour de shadow,
$aws/things/myLightBulb/shadow/update
, pour rapporter son état actuel, ce qui inclut la définition de sa propriétéconnected
surtrue
.{ "state": { "reported": { "connected":"true" } } }
-
Avant que l'appareil ne se déconnecte gracieusement, il publie un message sur sa rubrique de mise à jour de shadow,
$aws/things/myLightBulb/shadow/update
, pour rapporter son état le plus récent, ce qui inclut la définition de sa propriétéconnected
surfalse
.{ "state": { "reported": { "connected":"false" } } }
-
Si l'appareil se déconnecte en raison d'une erreur, le courtier de AWS IoT messages publie le LWT message de l'appareil au nom de celui-ci. La règle de republication détecte ce message et publie le message de mise à jour de shadow pour mettre à jour la propriété
connected
du shadow de l'appareil.