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.
AWS IoT Service Device Shadow
Le service AWS IoT Device Shadow ajoute des ombres AWS IoT aux objets. Les ombres peuvent rendre l'état d'un appareil accessible aux applications et à d'autres services, que l'appareil soit connecté AWS IoT ou non. AWS IoT les objets objets peuvent avoir plusieurs ombres nommées, de sorte que votre solution IoT dispose de davantage d'options pour connecter vos appareils à d'autres applications et services.
AWS IoT les objets objets n'ont aucune ombre tant qu'ils ne sont pas créés explicitement. Les ombres peuvent être créées, mises à jour et supprimées à l'aide de la AWS IoT console. Les appareils, les autres clients Web et les services peuvent créer, mettre à jour et supprimer des ombres en utilisant MQTT les MQTTrubriques réservées, HTTP en utilisant le Device Shadow REST API et le AWS CLI for AWS IoT
Utilisation des shadows
Les shadows fournissent un magasin de données fiable pour que les appareils, les applications et d'autres services cloud partagent des données. Ils permettent aux appareils, aux applications et aux autres services cloud de se connecter et déconnecter sans perdre l'état d'un appareil.
Lorsque les appareils, applications et autres services cloud sont connectés AWS IoT, ils peuvent accéder à l'état actuel d'un appareil et le contrôler à travers ses ombres. Par exemple, une application peut demander la modification de l'état d'un appareil en mettant à jour une ombre. AWS IoT publie un message indiquant la modification apportée à l'appareil. L'appareil reçoit ce message, met à jour son état pour qu'il corresponde et publie un message avec son état mis à jour. Le service Device Shadow reflète cet état mis à jour dans le shadow correspondant. L'application peut s'abonner à la mise à jour du shadow ou interroger le shadow pour obtenir son état actuel.
Lorsqu'un appareil se déconnecte, une application peut toujours communiquer avec AWS IoT les ombres de l'appareil. Lorsque l'appareil se reconnecte, il reçoit l'état actuel de ses shadows pour pouvoir mettre à jour son état afin que ce dernier corresponde à celui de ses shadows, et pour pouvoir publier un message avec son état mis à jour. De même, lorsqu'une application passe hors connexion et que l'état de l'appareil change alors qu'elle est hors connexion, l'appareil conserve le shadow mis à jour afin que l'application puisse interroger les shadows pour connaître son état actuel lorsqu'elle se reconnecte.
Si vos appareils sont fréquemment hors ligne et que vous souhaitez les configurer pour recevoir des messages delta après leur reconnexion, vous pouvez utiliser la fonctionnalité de session permanente. Pour plus d'informations sur la période d'expiration des sessions persistantes, consultez la section Période d'expiration des sessions persistantes.
Choix d'utilisation de shadows nommés ou non nommés
Le service Device Shadow prend en charge les ombres nommées et non nommées, ou classiques. Un objet peut avoir plusieurs ombres nommées et pas plus d'une ombre non nommée. L'objet objet peut également avoir une ombre nommée réservée, qui fonctionne de la même manière qu'une ombre nommée, sauf que vous ne pouvez pas mettre à jour son nom. Pour plus d'informations, veuillez consulter Gestion de la mémoire réservée.
Un objet peut avoir à la fois des ombres nommées et des ombres non nommées. Toutefois, les zones API utilisées pour accéder à chacune d'elles sont légèrement différentes. Il peut donc être plus efficace de choisir le type d'ombre le mieux adapté à votre solution et de n'utiliser que ce type d'ombre. Pour plus d'informations sur l'accès API aux ombres, reportez-vous àRubriques de shadow.
Avec les shadows nommés, vous pouvez créer différentes vues de l'état d'un objet d'objet. Par exemple, vous pouvez diviser un objet d'objet avec de nombreuses propriétés en shadows avec des groupes logiques de propriétés, chacun identifié par son nom de shadow. Vous pouvez également limiter l'accès aux propriétés en les regroupant dans différents shadows et en utilisant des stratégies pour contrôler l'accès. Pour plus d'informations sur les politiques à utiliser avec les ombres des appareils, consultez la section Actions, ressources, clés de condition AWS IoT et AWS IoT Core politiques.
Les shadows classiques non nommés sont plus simples, mais un peu plus limités que les shadows nommés. Chaque AWS IoT objet ne peut avoir qu'une seule ombre sans nom. Si vous prévoyez que votre solution IoT aura un besoin limité de données de shadow, c'est peut-être ainsi que vous souhaitez commencer à utiliser les shadows. Toutefois, si vous pensez ajouter des shadows supplémentaires à l'avenir, envisagez d'utiliser des shadows nommés dès le début.
L'indexation des flottes prend en charge différemment les ombres anonymes et les ombres nommées. Pour de plus amples informations, veuillez consulter Gérer l'indexation du parc.
Accès aux shadows
Chaque ombre possède un MQTTsujet réservé HTTPURLqui soutient get
update
les delete
actions relatives à l'ombre.
Les JSONombres utilisent des documents fictifs pour stocker et récupérer des données. Un document shadow contient une propriété d'état qui décrit les aspects suivants de l'état de l'appareil :
-
desired
Les applications spécifient les états souhaités des propriétés de l'appareil en mettant à jour l'objet
desired
. -
reported
Les appareils rapportent leur état actuel dans l'objet
reported
. -
delta
AWS IoT signale les différences entre l'état souhaité et l'état indiqué dans l'
delta
objet.
Les données stockées dans un shadow sont déterminées par la propriété d'état du corps du message de l'action de mise à jour. Les actions de mise à jour suivantes peuvent modifier les valeurs d'un objet de données existant, ainsi qu'ajouter et supprimer des clés et d'autres éléments dans l'objet d'état du shadow. Pour de plus amples informations sur l'accès aux shadows, veuillez consulter Utilisation des shadows sur les appareils et Utilisation des shadows dans les applications et les services.
Important
L'autorisation d'effectuer des demandes de mise à jour doit être limitée aux applications et aux appareils approuvés. Cela empêche la propriété d'état du shadow d'être modifiée de manière inattendue. Sinon, les appareils et les applications qui utilisent le shadow doivent être conçus de manière à s'attendre à ce que les clés figurant dans la propriété d'état changent.
Utilisation des shadows sur les appareils, dans les applications et dans d'autres services cloud
L'utilisation de shadows sur les appareils, dans les applications et dans d'autres services cloud nécessite une cohérence et une coordination entre tous ces éléments. Le service AWS IoT Device Shadow enregistre l'état d'ombre, envoie des messages lorsque l'état d'ombre change et répond aux messages qui modifient son état. Les appareils, applications et autres services cloud de votre solution IoT doivent gérer leur état et le maintenir cohérent avec l'état du shadow de l'appareil.
Les données d'état du shadow sont dynamiques et peuvent être modifiées par les appareils, les applications et les autres services cloud dotés de l'autorisation d'accéder au shadow. Pour cette raison, il est important de considérer comment chaque appareil, application et autre service cloud interagira avec le shadow. Par exemple :
-
Lesappareils doivent écrire uniquement dans la propriété
reported
de l'état du shadow lors de la communication des données d'état au shadow. -
Les applications et autres services cloud doivent écrire uniquement dans la propriété
desired
lors de la communication des demandes de changement d'état à l'appareil via le shadow.
Important
Les données contenues dans un objet de données fictif sont indépendantes de celles des autres ombres et des autres propriétés des objets, telles que les attributs d'un objet et le contenu des MQTT messages que l'appareil de l'objet est susceptible de publier. Un appareil peut toutefois signaler les mêmes données dans différents MQTT sujets et ombres si nécessaire.
Un appareil qui prend en charge plusieurs shadows doit maintenir la cohérence des données qu'il rapporte dans les différents shadows.
Ordre des messages
Rien ne garantit que les messages du AWS IoT service arriveront à l'appareil dans un ordre spécifique. Le scénario suivant montre ce qui se passe dans ce cas.
Document d'état initial :
{ "state": { "reported": { "color": "blue" } }, "version": 9, "timestamp": 123456776 }
Mise à jour 1 :
{ "state": { "desired": { "color": "RED" } }, "version": 10, "timestamp": 123456777 }
Mise à jour 2 :
{ "state": { "desired": { "color": "GREEN" } }, "version": 11, "timestamp": 123456778 }
Document d'état final :
{ "state": { "reported": { "color": "GREEN" } }, "version": 12, "timestamp": 123456779 }
Il en résulte deux messages delta :
{ "state": { "color": "RED" }, "version": 11, "timestamp": 123456778 }
{ "state": { "color": "GREEN" }, "version": 12, "timestamp": 123456779 }
L'appareil peut recevoir ces messages dans le désordre. Etant donné que l'état de ces messages est cumulé, un dispositif peut ignorer en toute sécurité tous les messages qui contiennent un numéro de version plus ancien que celui qu'il suit. Si le dispositif reçoit le delta pour la version 12 avant la version 11, il peut en toute sécurité ignorer le message concernant la version 11.
Suppression des messages de shadow
Pour réduire la taille des messages cachés envoyés à votre appareil, définissez une règle qui sélectionne uniquement les champs dont votre appareil a besoin, puis republie le message sur un MQTT sujet que votre appareil écoute.
La règle est spécifiée dans JSON et doit ressembler à ce qui suit :
{ "sql": "SELECT state, version FROM '$aws/things/+/shadow/update/delta'", "ruleDisabled": false, "actions": [ { "republish": { "topic": "${topic(3)}/delta", "roleArn": "arn:aws:iam:123456789012:role/my-iot-role" } } ] }
L'SELECTinstruction détermine les champs du message qui seront republiés dans le sujet spécifié. Un caractère générique « + » est utilisé pour apparier tous les noms de shadow. La règle spécifie que tous les messages correspondants doivent être republiés dans la rubrique spécifiée. Dans ce cas, la fonction "topic()"
est utilisée pour indiquer la rubrique dans laquelle republier. topic(3)
correspond à la valeur du nom de l'objet dans la rubrique d'origine. Pour de plus amples informations sur la création de règles, veuillez consulter Règles pour AWS IoT.