Concepts et statut des commandes - 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.

Concepts et statut des commandes

Utilisez AWS IoT des commandes pour envoyer une instruction depuis le cloud à un appareil connecté à AWS IoT. Pour utiliser la fonction de commandes :

  1. Créez d'abord une ressource de commande avec une charge utile contenant les configurations requises pour exécuter la commande sur le périphérique.

  2. Spécifiez l'équipement cible qui recevra la charge utile et exécutera les actions spécifiées.

  3. Exécutez la commande sur le périphérique cible et récupérez les informations d'état sur le périphérique. Pour résoudre les problèmes éventuels, consultez les CloudWatch journaux.

Pour de plus amples informations sur le contournement, veuillez consulter Flux de travail de commandes de haut niveau.

Concepts clés des commandes

Voici quelques concepts clés relatifs à l'utilisation de la fonction de commandes.

Commandes

Les commandes sont des instructions envoyées depuis le cloud à vos appareils IoT. Ces instructions (charge utile de commande) sont envoyées aux appareils sous forme de MQTT messages. Une fois que les appareils ont reçu la charge utile de la commande, ils peuvent traiter les instructions pour effectuer l'action correspondante. Ces actions incluent par exemple la modification des paramètres de configuration de l'appareil, la transmission des relevés des capteurs ou le téléchargement de journaux. Les appareils peuvent ensuite exécuter la commande et renvoyer le résultat dans le cloud. Cela vous permet de surveiller et de contrôler à distance les appareils connectés.

Namespace

Lorsque vous utilisez la fonctionnalité des commandes, vous pouvez spécifier l'espace de noms de la commande. Lorsque vous souhaitez créer une commande dans AWS IoT Device Management, vous devez utiliser l'espace de AWS-IoT noms par défaut. Lorsque vous utilisez cet espace de noms, vous devez fournir une charge utile lors de la création de la commande. La charge utile sera utilisée lorsque vous exécuterez la commande sur votre appareil cible. Si vous souhaitez créer une commande pour à la AWS IoT FleetWise place, vous devez utiliser l'espace de AWS-IoT-FleetWise noms à la place. Pour plus d'informations, consultez la section Commandes distantes dans le guide du AWS IoT FleetWise développeur consacré aux commandes.

Charge utile

Lorsque vous créez la commande, vous devez fournir une charge utile qui définit les actions que le terminal doit effectuer. La charge utile peut utiliser n'importe quel format de votre choix. Pour vous assurer que l'appareil peut lire et comprendre correctement les informations que vous envoyez, nous vous recommandons de spécifier le type de format de charge utile dans la commande. Si vos appareils l'utilisentMQTT5, ils peuvent suivre la MQTT norme pour identifier le format de charge utile. Un indicateur de format pour JSON ou CBOR sera disponible dans la rubrique de demande de commandes.

Appareil cible

Lorsque vous souhaitez exécuter la commande, vous devez spécifier une machine cible qui recevra la commande et exécutera les actions. Si votre appareil a été enregistré en tant qu'objet auprès de l'objet AWS IoT, vous pouvez utiliser le nom de l'objet. Si votre appareil n'a pas été enregistré, vous pouvez utiliser l'identifiant MQTT client à la place. L'ID client est un identifiant unique pour votre appareil ou client défini dans le MQTT protocole. Il peut être utilisé pour connecter votre appareil à AWS IoT.

Exécution de commandes

Une exécution de commande est une instance d'une commande exécutée sur le périphérique cible. Lorsque vous lancez l'exécution, la commande (charge utile) est envoyée à l'équipement cible. Un identifiant d'exécution de commande unique est désormais généré pour la cible. L'appareil peut ensuite exécuter la commande et rendre compte de sa progression à AWS IoT. La logique côté appareil détermine la manière dont la commande sera exécutée et la manière dont le statut sera publié dans les rubriques réservées.

Rubriques relatives aux commandes

Avant d'exécuter la commande, votre appareil doit être abonné à la rubrique de demande de commandes. Lorsque vous envoyez la demande au cloud pour exécuter la commande, la charge utile est envoyée à l'appareil dans la rubrique de demande de commande. Une fois que le périphérique a exécuté la commande, il peut publier le résultat et l'état de l'exécution dans la rubrique de réponse aux commandes. Pour de plus amples informations, veuillez consulter Rubriques relatives aux commandes.

États de commande

Une commande que vous créez dans votre compte Compte AWS peut être disponible, obsolète ou en attente de suppression.

Disponible

Une fois que vous avez créé avec succès une ressource de commande, elle sera disponible. La commande peut désormais être utilisée pour envoyer une exécution de commande à l'appareil.

Obsolète

Si vous n'avez plus l'intention d'utiliser une commande, vous pouvez la marquer comme obsolète. Dans cet état, vous ne pouvez pas envoyer de nouvelles exécutions de la commande sur vos appareils. Toutes les exécutions en attente qui ont déjà commencé continueront de s'exécuter sur l'appareil jusqu'à la fin. Pour envoyer de nouvelles exécutions, vous devez restaurer la commande afin qu'elle soit disponible.

Suppression en attente

Lorsque vous marquez une commande pour suppression, si la commande est devenue obsolète pendant une durée supérieure au délai maximum, elle est automatiquement supprimée. Cette action est permanente et ne peut pas être annulée. Par défaut, la durée maximale du délai d'attente est de 12 heures. Si la commande n'est pas obsolète, ou si elle l'a été pendant une durée inférieure au délai maximum, elle sera en attente de suppression. La commande sera automatiquement supprimée de votre compte après la durée maximale du délai d'expiration.

État de l'exécution de la commande

Lorsque vous lancez l'exécution de la commande sur le périphérique cible, l'exécution de la commande entre dans un CREATED état. Il peut ensuite passer à l'un des autres états d'exécution des commandes en fonction de l'état signalé par le périphérique. Vous pouvez ensuite récupérer les informations d'état et suivre l'exécution de vos commandes.

Note

Pour un équipement cible donné, vous pouvez exécuter plusieurs commandes simultanément. Vous pouvez utiliser la fonction de contrôle de simultanéité pour limiter le nombre maximum d'exécutions envoyées au même appareil, afin d'éviter toute surcharge de celui-ci. Pour plus d'informations sur le nombre maximal d'exécutions simultanées que vous pouvez exécuter pour chaque appareil, consultez la section quotas de AWS IoT Device Management commandes.

Le tableau suivant montre les différents états d'exécution d'une commande et la manière dont l'exécution de la commande passe d'un statut à l'autre en fonction de la progression de l'exécution.

État et source de l'exécution des commandes
État de l'exécution de la commande Initié par un appareil/le cloud ? Exécution du terminal ? Transitions de statut autorisées
CREATED Cloud Non
  • DANS_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

IN_PROGRESS Appareil Non
  • DANS_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

TIMED_OUT Appareil et cloud Non
  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

SUCCEEDED Appareil Oui Ne s’applique pas
FAILED Appareil Oui Ne s’applique pas
REJECTED Appareil Oui Ne s’applique pas

Lorsque vos appareils exécutent la commande, ils peuvent publier des mises à jour de l'état et des résultats à tout moment sur le cloud à l'aide des MQTT rubriques réservées des commandes. Pour fournir un contexte supplémentaire sur l'état de chaque exécution de commande dans le cloud, celui-ci peut utiliser reasonDescription les reasonCode et contenus dans l'statusReasonobjet.

Le schéma suivant montre les différents états d'exécution des commandes et la manière dont la transition s'effectue entre eux.

Image montrant comment l'état d'exécution d'une commande passe d'un statut à un autre.

La section suivante décrit les exécutions de commandes terminales et non terminales, les différents statuts d'exécution et leur fonctionnement.

Exécutions de commandes non terminales

L'exécution de votre commande n'est pas terminale si elle peut accepter des mises à jour provenant d'appareils ou de clients. Une exécution dans un état non terminal est considérée comme active. Les statuts suivants ne sont pas terminaux.

  • CREATED

    Lorsque vous lancez l'exécution d'une commande depuis la AWS IoT console ou que vous utilisez le StartCommandExecution API pour envoyer la commande à votre appareil à l'aide de la rubrique de demande de commandes. Si la demande aboutit, le statut d'exécution de la commande passe àCREATED. À partir de cet état, l'exécution de la commande peut passer à n'importe quel autre statut non terminal ou terminal.

  • DANS_ PROGRESS

    Après avoir reçu la charge utile de commande, votre appareil peut commencer à exécuter les instructions contenues dans la charge utile et effectuer les actions spécifiées. Pendant l'exécution de la commande, le dispositif peut publier une réponse au sujet de réponse aux commandes et mettre à jour l'état d'exécution de la commande en tant queIN_PROGRESS. À partir de l'IN_PROGRESSétat, l'exécution de la commande peut passer à n'importe quel autre statut terminal ou non-terminal autre que. CREATED

    Note

    Le UpdateCommandExecution API peut être invoqué plusieurs fois avec un statut deIN_PROGRESS. Vous pouvez spécifier des détails supplémentaires concernant l'exécution à l'aide de l'statusReasonobjet.

  • TIMED_OUT

    Cet état d'exécution de commande peut être déclenché à la fois par le cloud et par l'appareil. Le IN_PROGRESS statut d'une exécution CREATED ou d'une exécution peut changer pour les raisons suivantes. TIMED_OUT

    • Une fois la commande envoyée à l'appareil, une minuterie démarre. S'il n'y a aucune réponse de l'appareil dans un délai spécifié, le cloud change l'état d'exécution de la commande enTIMED_OUT. Dans ce cas, l'exécution de la commande n'est pas terminale.

    • L'appareil peut remplacer l'état par n'importe quel autre état du terminal, ou signaler qu'un délai d'attente s'est produit lors de l'exécution de la commande, et définir le statut sur. TIMED_OUT Dans ce cas, le statut d'exécution reste TIMED_OUT fixe mais les champs de l'StatusReasonobjet changent en fonction des informations communiquées par les appareils. L'exécution de la commande devient alors un terminal.

    Pour de plus amples informations, veuillez consulter Valeur du délai d'expiration et statut TIMED_OUT d'exécution.

Exécutions des commandes du terminal

Une exécution de commande devient terminale si l'exécution n'accepte plus de mises à jour supplémentaires de la part des appareils. Les statuts suivants sont terminaux. Une exécution peut passer aux états du terminal à partir de n'importe quel statut non terminal,CREATED, IN_PROGRESS ou. TIMED_OUT

  • SUCCEEDED

    Si le périphérique a correctement exécuté la commande, il peut publier une réponse à la rubrique de réponse aux commandes et mettre à jour l'état d'exécution de la commande surSUCCEEDED.

  • FAILED

    Lorsque votre appareil ne parvient pas à exécuter la commande, il peut publier une réponse à la rubrique de réponse aux commandes et mettre à jour l'état d'exécution de la commande surFAILED. Vous pouvez utiliser les reasonDescription champs reasonCode et de l'statusReasonobjet, ou les CloudWatch journaux, pour résoudre les problèmes de manière plus approfondie.

  • REJECTED

    Lorsque votre appareil reçoit une demande non valide ou incompatible, il peut invoquer le UpdateCommandExecution API avec un statut deREJECTED. Vous pouvez utiliser les reasonDescription champs reasonCode et de l'statusReasonobjet, ou les CloudWatch journaux, pour résoudre les problèmes éventuels.