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 :
-
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.
-
Spécifiez l'équipement cible qui recevra la charge utile et exécutera les actions spécifiées.
-
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 deAWS-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 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 |
|
IN_PROGRESS |
Appareil | Non |
|
TIMED_OUT |
Appareil et cloud | Non |
|
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'statusReason
objet.
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.
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 que
IN_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'statusReason
objet. -
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écutionCREATED
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 en
TIMED_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 resteTIMED_OUT
fixe mais les champs de l'StatusReason
objet 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 sur
SUCCEEDED
. -
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 sur
FAILED
. Vous pouvez utiliser lesreasonDescription
champsreasonCode
et de l'statusReason
objet, 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 lesreasonDescription
champsreasonCode
et de l'statusReason
objet, ou les CloudWatch journaux, pour résoudre les problèmes éventuels.