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 les commandes pour envoyer des instructions depuis le cloud aux appareils connectés. Pour utiliser cette fonctionnalité :
-
Créez une commande avec une charge utile contenant les configurations requises pour s'exécuter sur le périphérique.
-
Spécifiez le périphérique cible qui recevra la charge utile et effectuera les actions.
-
Exécutez la commande sur l'appareil cible et récupérez les informations d'état. Pour résoudre les problèmes, consultez les CloudWatch journaux.
Pour de plus amples informations sur le contournement, veuillez consulter High-level flux de travail des commandes.
Concepts clés des commandes
Les concepts clés suivants vous aident à comprendre la fonctionnalité Commandes. Les termes sont utilisés de manière cohérente dans cette documentation :
Commande : modèle réutilisable définissant les instructions relatives à l'appareil
Exécution : instance d'une commande exécutée sur un périphérique
Nom de l'objet : identifiant des appareils enregistrés dans le registre IoT
ID client : identifiant MQTT pour les appareils non enregistrés
Charge utile : données d'instructions envoyées aux appareils
Sujet - Canal MQTT pour la communication de commandes
- Commandes
-
Les commandes sont des instructions envoyées depuis le cloud à vos appareils IoT sous forme de messages MQTT. Après avoir reçu la charge utile, les appareils traitent les instructions et prennent les mesures correspondantes, telles que la modification des paramètres de configuration, la transmission des relevés des capteurs ou le téléchargement de journaux. Les appareils renvoient ensuite les résultats dans le cloud, ce qui permet la surveillance et le contrôle à distance.
- Namespace
-
Lorsque vous créez une commande, spécifiez son espace de noms. Pour AWS IoT Device Management les commandes, utilisez l'
AWS-IoTespace de noms par défaut et fournissez soit une charge utile, soit un PayloadTemplate. Pour AWS IoT FleetWise les commandes, utilisez l'espace deAWS-IoT-FleetWisenoms. Pour plus d'informations, consultez la section Commandes à distance dans le Guide du AWS IoT FleetWise développeur. - Charge utile
-
Lorsque vous créez une commande, fournissez une charge utile statique qui définit les actions que le périphérique doit effectuer. La charge utile peut utiliser n'importe quel format pris en charge. Pour garantir que les appareils interprètent correctement la charge utile, nous vous recommandons de spécifier le type de format de charge utile. Les appareils utilisant le protocole MQTT5 peuvent suivre la norme MQTT pour identifier le format. Les indicateurs de format pour JSON ou CBOR sont disponibles dans la rubrique de demande de commandes.
- Modèle de charge utile
-
Un modèle de charge utile définit une charge utile de commande avec des espaces réservés qui génèrent différentes charges utiles lors de l'exécution en fonction des valeurs de paramètres que vous fournissez. Par exemple, au lieu de créer des charges utiles distinctes pour différentes valeurs de température, créez un modèle avec un espace réservé à la température et spécifiez la valeur lors de l'exécution. Cela élimine la maintenance de plusieurs charges utiles similaires.
- Appareil cible
-
Pour exécuter une commande, spécifiez une machine cible à l'aide de son nom d'objet (pour les appareils enregistrés auprès de AWS IoT) ou de l'ID client MQTT (pour les appareils non enregistrés). L'ID client est un identifiant unique défini dans le MQTT protocole utilisé pour connecter les appareils AWS IoT. Pour en savoir plus, consultez Considérations relatives à l'appareil cible.
- Rubriques relatives aux commandes
-
Avant d'exécuter une commande, les appareils doivent s'abonner à la rubrique de demande de commandes. Lorsque vous exécutez une commande, la charge utile est envoyée à l'appareil correspondant à cette rubrique. Après l'exécution, les appareils publient les résultats et l'état dans la rubrique de réponse aux commandes. Pour de plus amples informations, veuillez consulter Rubriques relatives aux commandes.
- Exécution de commandes
-
Une exécution est une instance d'une commande exécutée sur une machine cible. Lorsque vous démarrez une exécution, la charge utile est transmise à l'appareil et un identifiant d'exécution unique est généré. L'appareil exécute la commande et rend compte de la progression à AWS IoT. Device-side la logique détermine le comportement d'exécution et les rapports d'état sur les sujets réservés.
Conditions relatives à la valeur des paramètres
Lorsque vous créez des commandes avec des modèles de charge utile, définissez des conditions de valeur pour valider les valeurs des paramètres avant leur exécution. Les conditions de valeur garantissent que les paramètres répondent aux exigences, empêchant ainsi les exécutions non valides.
Opérateurs pris en charge par CommandParameterValue type
- Types numériques (INTEGER, LONG, DOUBLE, UNSIGNEDLONG)
-
EQUALS- La valeur doit être égale au nombre spécifiéNOT_EQUALS- La valeur ne doit pas être égale au nombre spécifiéGREATER_THAN- La valeur doit être supérieure au nombre spécifiéGREATER_THAN_EQUALS- La valeur doit être supérieure ou égale au nombre spécifiéLESS_THAN- La valeur doit être inférieure au nombre spécifiéLESS_THAN_EQUALS- La valeur doit être inférieure ou égale au nombre spécifiéIN_RANGE- La valeur doit se situer dans la plage spécifiée (incluse)NOT_IN_RANGE- La valeur doit être en dehors de la plage spécifiée (inclus)IN_SET- La valeur doit correspondre à l'un des nombres spécifiésNOT_IN_SET- La valeur ne doit correspondre à aucun des nombres spécifiés
- Type de chaîne (STRING)
-
EQUALS- La valeur doit être égale à la chaîne spécifiéeNOT_EQUALS- La valeur ne doit pas être égale à la chaîne spécifiéeIN_SET- La valeur doit correspondre à l'une des chaînes spécifiéesNOT_IN_SET- La valeur ne doit correspondre à aucune des chaînes spécifiées
- Type booléen
-
Les conditions de valeur ne sont pas prises en charge
- Type binaire
-
Les conditions de valeur ne sont pas prises en charge
Exemple : commande de contrôle de température
{ "commandId": "SetTemperature", "namespace": "AWS-IoT", "payloadTemplate": "{\"temperature\": \"${aws:iot:commandexecution::parameter:temperature}\"}", "parameters": [ { "name": "temperature", "type": "INTEGER", "valueConditions": [ { "comparisonOperator": "IN_RANGE", "operand": { "numberRange": { "min": "60", "max": "80" } } } ] } ] }
Dans cet exemple, le temperature paramètre doit être compris entre 60 et 80 (inclus). Les demandes d'exécution dont les valeurs ne sont pas comprises dans cette plage ne sont pas validées.
Note
Les conditions de valeur sont évaluées lors de l'appel de l'StartCommandExecution API. Les validations échouées renvoient une erreur et empêchent la création de l'exécution.
Priorité et évaluation des valeurs des paramètres
Lorsque vous démarrez des exécutions de commandes avec des modèles de charge utile, les valeurs des paramètres sont résolues selon la priorité suivante :
Paramètres de la demande d'exécution : les valeurs fournies dans la
StartCommandExecutiondemande ont la priorité la plus élevéeValeurs par défaut des commandes : si aucun paramètre n'est fourni dans la demande d'exécution, c'
defaultValueest le paramètre qui est utiliséAucune valeur : si aucune valeur n'est fournie, l'exécution échoue en tant que paramètre requis pour générer la demande d'exécution
Les conditions de valeur sont évaluées sur la valeur finale du paramètre dérivée ci-dessus sur la priorité et avant la création de l'exécution. Si la validation échoue, la demande d'exécution renvoie une erreur.
Exemple : SetTemperature commande avec defaultValue
{ "parameters": [ { "name": "temperature", "type": "INTEGER", "defaultValue": {"I": 72}, "valueConditions": [ { "comparisonOperator": "IN_RANGE", "operand": {"numberRange": {"min": "60", "max": "80"}} } ] } ] }
Au démarrage de l'exécution :
Si vous le fournissez
"temperature": {"I": 75}dans la demande, 75 est utiliséSi vous omettez le paramètre de température, la valeur par défaut 72 est utilisée
Les deux valeurs sont validées par rapport à la condition de plage [60,80]
États de commande
Les commandes que vous Compte AWS utilisez peuvent être dans l'un des trois états suivants : Disponible, Obsolète ou En attente de suppression.
- Disponible
-
Une fois la création réussie, une commande passe à l'état Disponible et peut être exécutée sur les appareils.
- Obsolète
-
Marquez les commandes comme étant obsolètes lorsqu'elles ne sont plus nécessaires. Les commandes obsolètes ne peuvent pas démarrer de nouvelles exécutions, mais les exécutions en attente continuent de se terminer. Pour activer de nouvelles exécutions, restaurez la commande à l'état Disponible.
- Suppression en attente
-
Lorsque vous marquez une commande pour suppression, elle est automatiquement supprimée si elle est obsolète au-delà du délai d'expiration maximum (par défaut : 12 heures). Cette action est permanente. Si elle n'est pas obsolète ou si elle est obsolète pendant une durée inférieure au délai imparti, la commande passe à l'état En attente de suppression et est supprimée à l'expiration du délai.
Statut d’exécution de la commande
Lorsque vous démarrez une exécution sur une machine cible, celle-ci passe à un CREATED statut et peut passer à d'autres états en fonction des rapports de l'appareil. Vous pouvez récupérer des informations d'état et suivre les exécutions.
Note
Vous pouvez exécuter plusieurs commandes simultanément sur un appareil. Utilisez le contrôle de simultanéité pour limiter les exécutions par appareil et éviter les surcharges. Pour connaître le nombre maximum d'exécutions simultanées par appareil, consultez la section quotas de AWS IoT Device Management commandes.
Le tableau suivant présente les états d'exécution et leurs transitions en fonction de la progression de l'exécution.
| Statut d’exécution de la commande | Initié par device/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 | Non applicable |
FAILED |
Appareil | Oui | Non applicable |
REJECTED |
Appareil | Oui | Non applicable |
Les appareils peuvent publier des mises à jour de statut et de résultats à tout moment à l'aide des commandes réservées aux rubriques MQTT. Pour fournir un contexte supplémentaire, les appareils peuvent utiliser reasonDescription les champs reasonCode et de l'statusReasonobjet.
Le schéma suivant montre les transitions d'état d'exécution.
Note
Lorsqu'aucune réponse de l'appareil n'est AWS IoT détectée dans le délai imparti, le statut est défini TIMED_OUT comme temporaire, ce qui permet de réessayer et de changer d'état. Si votre appareil le signale explicitementTIMED_OUT, cela devient un statut de terminal sans aucune autre transition. Pour de plus amples informations, veuillez consulter Non-terminal exécutions de commandes.
Les sections suivantes décrivent les exécutions terminales et non terminales ainsi que leurs états.
Non-terminal exécutions de commandes
Une exécution n'est pas terminale si elle peut accepter des mises à jour depuis des appareils. Non-terminal les exécutions sont considérées comme actives. Les statuts suivants ne sont pas terminaux :
-
CRÉÉ
Lorsque vous démarrez une exécution depuis la AWS IoT console ou que vous utilisez l'
StartCommandExecutionAPI, les demandes réussies changent le statut enCREATED. À partir de ce statut, les exécutions peuvent passer à tout autre statut non terminal ou terminal. -
EN_COURS
Après avoir reçu la charge utile, les appareils peuvent commencer à exécuter des instructions et à effectuer des actions spécifiques. Pendant l'exécution, les appareils peuvent publier des réponses à la rubrique de réponse aux commandes et mettre à jour leur statut
IN_PROGRESS. À partir deIN_PROGRESS, les exécutions peuvent passer à n'importe quel statut terminal ou non terminal, saufCREATED.Note
L'
UpdateCommandExecutionAPI peut être invoquée plusieurs fois avecIN_PROGRESSstatut. Spécifiez des détails d'exécution supplémentaires à l'aide destatusReasonl'objet. -
CHRONOMÉTRÉ
Le cloud et l'appareil peuvent déclencher ce statut. Les exécutions en
CREATEDcours ouIN_PROGRESSleur statut peuvent changerTIMED_OUTpour les raisons suivantes :-
Après l'envoi de la commande, un minuteur démarre. Si l'appareil ne répond pas dans le délai spécifié, le cloud passe à
TIMED_OUT. Dans ce cas, l'exécution n'est pas terminale. -
L'appareil peut remplacer l'état par n'importe quel état du terminal ou signaler un délai d'attente et définir l'état sur.
TIMED_OUTDans ce cas, le statut demeureTIMED_OUT, mais les champs deStatusReasonl'objet changent en fonction des informations relatives à l'appareil. L'exécution devient terminale.
Pour de plus amples informations, veuillez consulter Valeur du délai d'attente et état d'exécution de TIMED_OUT.
-
Exécutions de commandes dans le terminal
Une exécution devient terminal lorsqu'elle n'accepte plus les mises à jour des appareils. Les états suivants sont terminaux. Les exécutions peuvent passer au statut terminal à partir de n'importe quel statut non terminal : CREATEDIN_PROGRESS, ou. TIMED_OUT
-
RÉUSSI
Si l'appareil termine l'exécution avec succès, il peut publier une réponse à la rubrique de réponse aux commandes et mettre à jour l'état dans
SUCCEEDED. -
ÉCHEC
Lorsqu'un périphérique ne parvient pas à terminer son exécution, il peut publier une réponse à la rubrique de réponse aux commandes et mettre à jour l'état de cette dernière
FAILED. Utilisez lesreasonDescriptionchampsreasonCodeet de l'statusReasonobjet, ou CloudWatch des journaux, pour résoudre les problèmes. -
REFUSÉE
Lorsqu'un appareil reçoit une demande non valide ou incompatible, il peut invoquer l'
UpdateCommandExecutionAPI avec statutREJECTED. Utilisez lesreasonDescriptionchampsreasonCodeet de l'statusReasonobjet, ou CloudWatch des journaux, pour résoudre les problèmes.