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 l'équipement cible qui recevra la charge utile et exécutera les actions.
-
Exécutez la commande sur le périphérique 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 Workflow de commandes de haut niveau.
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 de l'appareil
Exécution : instance d'une commande exécutée sur un appareil
Nom de l'objet : identifiant des appareils enregistrés dans le registre de l'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 des journaux. Les appareils renvoient ensuite les résultats dans le cloud, ce qui permet une surveillance et un 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'espace de
AWS-IoTnoms par défaut et fournissez une charge utile ou un modèle de charge utile. 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 MQTT5 protocole 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 au moment 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 le maintien de plusieurs charges utiles similaires.
- Appareil cible
-
Pour exécuter une commande, spécifiez une machine cible en utilisant son nom d'objet (pour les appareils enregistrés avec AWS IoT) ou son 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 sur ce sujet. 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 un équipement cible. Lorsque vous lancez 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 indique la progression à AWS IoT. La logique côté appareil détermine le comportement d'exécution et les rapports d'état relatifs aux sujets réservés.
Conditions de 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 CommandParameterValuetype
- 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 être comprise dans la plage spécifiée (inclus)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 se situent en dehors de cette plage échouent à la validation.
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 lancez 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'est celui du paramètre qui
defaultValueest 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 base de 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ébut 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 contiennent 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 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 se poursuivent jusqu'à leur fin. Pour activer de nouvelles exécutions, restaurez l'état Disponible de la commande.
- 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 maximum (par défaut : 12 heures). Cette action est permanente. Si elle n'est pas déconseillée ou déconseillée pendant une durée inférieure au délai imparti, la commande passe à l'état En attente de suppression et est supprimée une fois le délai expiré.
Statut d’exécution de la commande
Lorsque vous lancez une exécution sur une machine cible, celle-ci entre dans un CREATED état et peut passer à d'autres statuts en fonction des rapports de l'appareil. Vous pouvez récupérer les 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 maximal d'exécutions simultanées par appareil, voir AWS IoT Device Management les quotas de commandes.
Le tableau suivant indique 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 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 | 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 de commandes réservées aux sujets 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 entre les états d'exécution.
Note
Lorsqu'aucune réponse de l'appareil n'est AWS IoT détectée dans le délai imparti, il est défini TIMED_OUT comme un statut temporaire autorisant les nouvelles tentatives et les changements d'état. Si votre appareil le signale explicitementTIMED_OUT, cela devient un statut de terminal sans autre transition. Pour de plus amples informations, veuillez consulter Exécutions de commandes non terminales.
Les sections suivantes décrivent les exécutions terminales et non terminales ainsi que leurs statuts.
Exécutions de commandes non terminales
Une exécution n'est pas terminale si elle peut accepter les mises à jour des appareils. Les exécutions non terminales sont considérées comme actives. Les statuts suivants ne sont pas terminaux :
-
CRÉÉ
Lorsque vous lancez 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 à n'importe quel 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écifiées. Pendant l'exécution, les appareils peuvent publier des réponses à la rubrique de réponse des commandes et mettre à jour l'état sur
IN_PROGRESS. À partir deIN_PROGRESS, les exécutions peuvent passer à n'importe quel statut terminal ou non terminal, à l'exceptionCREATEDde.Note
L'
UpdateCommandExecutionAPI peut être invoquée plusieurs fois avec unIN_PROGRESSstatut. Spécifiez des détails d'exécution supplémentaires à l'aide destatusReasonl'objet. -
TIMED_OUT
Le cloud et l'appareil peuvent déclencher cet état. Les exécutions
CREATEDouIN_PROGRESSle statut peuvent changerTIMED_OUTpour les raisons suivantes :-
Après avoir envoyé la commande, une minuterie 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 le statut par n'importe quel état du terminal ou signaler un délai d'expiration et régler le statut sur.
TIMED_OUTDans ce cas, le statut est conservéTIMED_OUT, mais les champsStatusReasond'objet changent en fonction des informations de l'appareil. L'exécution devient terminale.
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 devient un terminal lorsqu'elle n'accepte plus les mises à jour des appareils. Les statuts suivants sont terminaux. Les exécutions peuvent passer aux statuts de terminal à partir de n'importe quel statut non terminal :CREATED,IN_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 des commandes et mettre à jour l'état sur
SUCCEEDED. -
ÉCHEC
Lorsqu'un appareil ne parvient pas à terminer l'exécution, il peut publier une réponse à la rubrique de réponse des commandes et mettre à jour l'état sur
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 appeler l'
UpdateCommandExecutionAPI avec statutREJECTED. Utilisez lesreasonDescriptionchampsreasonCodeet de l'statusReasonobjet, ou CloudWatch des journaux, pour résoudre les problèmes.