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.
Workflow de commandes de haut niveau
Ce flux de travail montre comment les appareils interagissent avec AWS IoT Device Management les commandes. Toutes les demandes d'API HTTP utilisent les informations d'identification Sigv4 pour la signature.
Présentation du flux de travail
Création et gestion de commandes
Pour créer et gérer des commandes pour vos appareils, effectuez les étapes suivantes.
-
Création d'une ressource de commande
Créez une commande à partir du Command Hub
ou à l'aide de l' CreateCommandAPI. -
Spécifiez la charge utile
Fournissez une charge utile dans n'importe quel format. Spécifiez le type de contenu pour garantir une interprétation correcte de l'appareil.
Pour les commandes dynamiques avec des modèles de charge utile, la charge utile finale est générée au moment de l'exécution à l'aide des paramètres que vous avez fournis. Les modèles ne prennent en charge que le format JSON, mais la charge utile générée peut être envoyée au format JSON ou CBOR.
-
(Facultatif) Gérer les commandes créées
Mettez à jour le nom d'affichage et la description après la création. Marquez les commandes comme obsolètes lorsqu'elles ne sont plus nécessaires ou supprimez-les définitivement. Pour modifier les informations de charge utile, créez une nouvelle commande.
Choisissez l'appareil cible pour vos commandes et abonnez-vous aux rubriques MQTT
Choisissez votre appareil cible et configurez les sujets MQTT pour recevoir des commandes et publier des réponses.
-
Choisissez l'appareil cible pour votre commande
Choisissez un équipement cible pour recevoir et exécuter la commande. Utilisez un nom d'objet pour les appareils enregistrés ou un ID client pour les appareils non enregistrés. Pour de plus amples informations, veuillez consulter Considérations relatives à l'appareil cible.
-
Configuration de la politique de AWS IoT l'appareil
Configurez une politique IAM accordant des autorisations pour recevoir des exécutions et publier des mises à jour. Voir Exemple de politique IAM pour des exemples de politiques.
-
Établir une connexion MQTT
Connectez les appareils au courtier de messages et abonnez-vous aux rubriques de demande et de réponse. Les appareils ont besoin d'
iot:Connectune autorisation. Trouvez le point de terminaison de votre plan de données à l'aide de l'DescribeEndpointAPI ou de la commandedescribe-endpointCLI :aws iot describe-endpoint --endpoint-type iot:Data-ATSL'exécution de cette commande renvoie le point de terminaison du plan de données spécifique au compte, comme indiqué ci-dessous.
account-specific-prefix.iot.region.amazonaws.com -
S'abonner aux rubriques relatives aux commandes
Abonnez-vous à la rubrique des demandes de commandes. Lorsque vous lancez une exécution, le courtier de messages publie la charge utile dans cette rubrique. Votre appareil reçoit et traite la commande.
(Facultatif) Abonnez-vous aux sujets de réponse (
acceptedourejected) pour recevoir la confirmation si le service cloud a accepté ou rejeté la réponse de l'appareil.Dans cet exemple, remplacez :
-
avec<device>thingouclientselon que l'appareil que vous ciblez a été enregistré en tant qu'objet IoT ou spécifié en tant que client MQTT. -
avec l'identifiant unique de votre appareil cible. Cet identifiant peut être l'identifiant unique du client MQTT ou un nom d'objet.<DeviceID>
Note
Si le type de charge utile n'est pas JSON ou CBOR, le
<PayloadFormat>champ n'est peut-être pas présent dans la rubrique de demande de commandes. Pour obtenir le format de charge utile, nous vous recommandons d'obtenir les informations de format MQTT5 à partir des en-têtes de message MQTT. Pour de plus amples informations, veuillez consulter Rubriques relatives aux commandes.$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat> -
Démarrez et surveillez les exécutions de commandes pour votre appareil cible
Après avoir créé les commandes et spécifié les cibles de la commande, vous pouvez démarrer l'exécution sur le périphérique cible en effectuant les étapes suivantes.
-
Lancer l'exécution de la commande sur le périphérique cible
Démarrez l'exécution depuis le hub de commande
ou en utilisant l' StartCommandExecutionAPI avec le point de terminaison spécifique à votre compte. À utiliseriot:Data-ATSpour une pile double (IPv4/IPv6) ou IPv4 uniquementiot:Jobspour.L'API publie la charge utile dans la rubrique de demande de commandes.
Note
Si le périphérique est hors ligne et utilise des sessions persistantes MQTT, la commande attend le courtier de messages. Lorsque l'appareil se reconnecte avant l'expiration du délai imparti, il peut traiter la commande et publier les résultats. Si le délai expire, l'exécution expire et la charge utile sera supprimée.
-
Mettre à jour le résultat de l'exécution de la commande
L'appareil reçoit la charge utile, traite la commande, exécute les actions spécifiées et publie les résultats dans la rubrique de réponse aux commandes à l'aide d'une API basée sur
UpdateCommandExecutionMQTT. S'il est abonné à des sujets acceptés et rejetés, l'appareil reçoit une confirmation indiquant si le service cloud a accepté ou rejeté la réponse.Selon ce que vous avez spécifié dans le sujet de la demande, il
<devices>peut s'agir d'objets ou de clients, et il<DeviceID>peut s'agir du nom de votre AWS IoT objet ou de l'ID du client MQTT.Note
Il ne
<PayloadFormat>peut s'agir que de JSON ou CBOR dans la rubrique de réponse aux commandes.$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat> -
(Facultatif) Récupère le résultat de l'exécution de la commande
Récupérez les résultats de l'exécution depuis AWS IoT la console ou en utilisant
GetCommandExecution. L'appareil doit publier les résultats dans la rubrique de réponse aux commandes pour obtenir les dernières informations. Consultez des informations supplémentaires, notamment l'heure de la dernière mise à jour, le résultat et l'heure d'achèvement.
(Facultatif) Activer les notifications pour les événements liés aux commandes
Abonnez-vous aux événements Commands pour recevoir des notifications lorsque le statut d'exécution change.
-
Créer une règle de rubrique
Abonnez-vous à la rubrique des événements relatifs aux commandes pour recevoir des notifications de changement de statut. Créez une règle thématique pour acheminer les données des appareils vers d'autres AWS IoT services tels AWS Lambda qu'Amazon SQS et AWS Step Functions à l'aide de la AWS IoT console ou. Création d'une AWS IoT règle
Dans cet exemple, remplacez-le
par l'identifiant de la commande pour laquelle vous souhaitez recevoir des notifications et<CommandID>par le statut de l'exécution de la commande.<CommandExecutionStatus>$aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>Note
Pour recevoir des notifications concernant toutes les commandes et les statuts d'exécution des commandes, vous pouvez utiliser des caractères génériques et vous abonner à la rubrique suivante.
$aws/events/commandExecution/+/# -
Réception et traitement des événements liés aux commandes
Gérez les notifications push des commandes et créez des applications à l'aide des événements souscrits.
Le code suivant montre un exemple de charge utile pour les notifications d'événements de commande que vous recevrez.
{ "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554", "status":"FAILED", "statusReason": { "reasonCode": "DEVICE_TOO_BUSY", "reasonDescription": "" }, "eventType": "COMMAND_EXECUTION", "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086", "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd", "timestamp":1717708862107}