AWS IoT Service Device Shadow - AWS IoT Core

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 à l'aide de MQTT et des rubriques MQTT réservées, de HTTP à l'aide de l'API REST Device Shadow et le AWS CLI pour AWS IoT. Les ombres étant stockées AWS dans le cloud, elles peuvent collecter et rapporter des données sur l'état de l'appareil à partir d'applications et d'autres services cloud, que l'appareil soit connecté ou non.

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 d'objet peut avoir des shadows nommés et non nommés en même temps. Toutefois, l'API utilisée pour accéder à chacun d'eux est légèrement différente. Il pourrait donc être plus efficace de décider quel type de shadow fonctionnerait le mieux pour votre solution et d'utiliser ce type uniquement. Pour de plus amples informations sur l'API permettant d'accéder aux shadows, veuillez consulter 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 shadow a une rubrique MQTT réservée et une URL HTTP qui prend en charge les actions get, update et delete sur le shadow.

Les shadows utilisent des documents de shadow JSON 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'deltaobjet.

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 de shadow sont indépendantes de celles des autres shadows et des autres propriétés de l'objet d'objet, telles que les attributs d'un objet et le contenu des messages MQTT que l'appareil d'un objet d'objet peut publier. Toutefois, un appareil peut rapporter les mêmes données dans différents shadows et différentes rubriques MQTT, 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 de shadow envoyés à votre appareil, définissez une règle qui sélectionne uniquement les champs dont votre appareil a besoin, puis republie le message dans une rubrique MQTT que votre appareil écoute.

La règle est spécifiée dans JSON et doit ressembler à ceci :

{ "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'instruction SELECT détermine quels champs du message seront republiés dans la rubrique spécifiée. 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.