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.
Mettre en œuvre l' AWS.SendCommand opération
L'AWS.SendCommandopération permet à Managed Integrations AWS IoT Device Management d'envoyer des commandes initiées par l'utilisateur final via le AWS client à votre serveur de ressources. Votre serveur de ressources peut prendre en charge plusieurs types de périphériques, chaque type ayant son propre modèle de réponse.
L'exécution de commandes est un processus asynchrone dans lequel Managed Integrations for AWS IoT Device Management envoie une demande d'exécution de commande avec untraceId, que votre connecteur inclura dans une réponse de commande renvoyée à Managed Integrations via l' AWS IoT Device Management API. SendConnectorEvent Managed Integrations for AWS IoT Device Management attend du serveur de ressources qu'il renvoie une réponse confirmant la réception de la commande, mais n'indiquant pas nécessairement que la commande a été exécutée.
Flux de travail d'exécution des commandes des appareils
Le schéma suivant illustre le flux d'exécution des commandes avec un exemple dans lequel l'utilisateur final essaie d'allumer les lumières de sa maison :
Étapes du flux de travail
-
L'utilisateur final envoie une commande - Un utilisateur final envoie une commande pour allumer une lumière à l'aide de l'application du AWS client.
-
Le client transmet les informations de commande : le client transmet les informations de commande à Managed Integrations pour AWS IoT Device Management les associer aux informations relatives à l'appareil de l'utilisateur final.
-
Managed Integrations génère TraceID - Managed Integrations for AWS IoT Device Management génère le « TraceID » que votre connecteur utilisera lors du renvoi des réponses aux commandes au service.
-
Demande de commande envoyée au connecteur - Managed Integrations for AWS IoT Device Management envoie la demande de commande à votre connecteur à l'aide de l'interface d'
AWS.SendCommandexploitation.-
La charge utile définie par cette interface comprend l'identifiant de l'appareil, les commandes du périphérique formulées sous la forme Matter endpoints/clusters /commands, le jeton d'accès de l'utilisateur final et les autres paramètres requis.
-
-
Le connecteur enregistre le TraceID : votre connecteur stocke les informations
traceIdà inclure dans la réponse à la commande.-
Votre connecteur traduit les intégrations gérées pour les demandes de AWS IoT Device Management commande dans le format approprié de votre serveur de ressources.
-
-
Connector gets UserId : votre connecteur obtient le jeton
UserIdd'accès fourni à l'utilisateur final et l'associe à la commande.-
Ils
UserIdpeuvent être récupérés de votre serveur de ressources à l'aide d'un appel séparé ou extraits du jeton d'accès dans le cas de JWT et de jetons similaires. -
La mise en œuvre dépend de votre serveur de ressources et des détails de votre jeton d'accès.
-
-
Le connecteur appelle le serveur de ressources : votre connecteur appelle le serveur de ressources pour « allumer » la lumière de l'utilisateur final.
-
Le serveur de ressources interagit avec le périphérique : le serveur de ressources interagit avec le périphérique.
-
Le connecteur transmet à Managed Integrations AWS IoT Device Management que le serveur de ressources a délivré la commande, en répondant par un ACK comme réponse de commande synchrone initiale.
-
Managed Integrations pour AWS IoT Device Management ensuite le retransmettre à l'application client.
-
-
L'appareil exécute la commande : une fois que le périphérique a allumé la lumière, cet événement est capturé par votre serveur de ressources.
-
Le serveur de ressources envoie un événement de périphérique : votre serveur de ressources envoie l'événement de périphérique au connecteur.
-
Le connecteur transforme l'événement : votre connecteur transforme l'événement de périphérique généré par le serveur de ressources en intégrations gérées pour le type d'opération d'événement AWS IoT Device Management DEVICE_COMMAND_RESPONSE.
-
Appels de connecteur SendConnectorEvent : votre connecteur appelle l'
SendConnectorEventAPI avec l'opération « DEVICE_COMMAND_RESPONSE ».-
Il joint les informations
traceIdfournies par Managed Integrations AWS IoT Device Management dans la demande initiale.
-
-
Les intégrations gérées avertissent le client - Les intégrations gérées pour AWS IoT Device Management informer le client du changement d'état de l'appareil de l'utilisateur final.
-
Le client informe l'utilisateur final - Le client informe l'utilisateur final que le voyant de l'appareil est allumé.
Note
La configuration de votre serveur de ressources détermine la logique de gestion des messages de demande de commande et de réponse du périphérique ayant échoué. Cela inclut les tentatives de nouvelle tentative de message utilisant le même ReferenceID pour la commande.
Exigences relatives au connecteur C2C pour l'exécution des commandes du périphérique
La liste suivante décrit les exigences relatives à votre connecteur C2C afin de faciliter l'exécution réussie des commandes du périphérique.
-
Le connecteur Lambda C2C peut
AWS.SendCommandtraiter les messages de demande d'opération provenant d'intégrations gérées pour AWS IoT Device Management. -
Votre connecteur C2C doit suivre les commandes envoyées à votre serveur de ressources et le mapper avec le `TraceID` approprié.
-
Vous pouvez appeler des intégrations gérées pour les API du service AWS IoT Device Management via SigV4 en utilisant les AWS informations d'identification Compte AWS utilisées pour enregistrer le connecteur C2C.
Processus d'exécution des commandes
Étape 1 : Managed Integrations envoie une commande au connecteur
Envoyez une requête POST avec l'une des charges utiles suivantes, selon le type d'autorisation :
Demande OAuth 2.0 :
/Send-Command { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "connectorDeviceId": "Your_Device_Id", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }] } }
Demande d'autorisation générale :
/Send-Command { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "connectorDeviceId": "Your_Device_Id", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3" } }] }] }] } }
Étape 2 : commande ACK du connecteur C2C
{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }
Étape 3 : le connecteur envoie un événement de réponse à la commande du périphérique
AWS-API: /SendConnectorEvent URI: POST /connector-event/{Your-Connector-Id} { "UserId": "End-User-Id", "Operation": "DEVICE_COMMAND_RESPONSE", "OperationVersion": "1.0", "StatusCode": 200, "Message": “Example message”, "ConnectorDeviceId": "Your_Device_Id", "TraceId": "traceId-3241u78123419", "MatterEndpoint": { "id": "1", "clusters": [{ "id": "0x0202", "attributes": [ { "0x0000": “3” } ], "commands": [ "0xff01": { "0x0000": "3” } ] }] } }
Note
Les modifications de l'état de l'appareil résultant de l'exécution d'une commande ne seront pas reflétées dans Managed Integrations AWS IoT Device Management tant que l'événement DEVICE_COMMAND_RESPONSE correspondant n'aura pas été reçu via l'API. SendConnectorEvent Cela signifie que tant que Managed Integrations for n'a pas AWS IoT Device Management reçu l'événement de l'étape 3 précédente, que votre réponse d'appel du connecteur indique un succès ou non, l'état de l'appareil ne sera pas mis à jour.
Important
N'incluez pas d'attributs dans la charge utile DEVICE_COMMAND_RESPONSE à moins que le périphérique n'ait confirmé que le changement d'état a bien été appliqué. Un DEVICE_COMMAND_RESPONSE sans attributs indique que la commande a été envoyée au tiers et entraîne une notification DEVICE_COMMAND. Pour signaler que les valeurs des attributs ont été mises à jour sur l'appareil, envoyez un DEVICE_EVENT distinct contenant les attributs mis à jour. Cette distinction permet d'éviter les faux positifs lorsqu'une commande semble réussir mais que le périphérique n'a jamais reçu le changement d'état, par exemple lorsqu'un appareil a été récemment déconnecté.
Interprétation des « points finaux » inclus dans la demande AWS.SendCommand
Les intégrations gérées utiliseront les fonctionnalités de l'appareil signalées lors de la découverte de l'appareil pour déterminer les commandes qu'un appareil peut accepter. Les capacités de chaque appareil sont modélisées grâce à AWS des implémentations du modèle Matter Data ; ainsi, toutes les commandes entrantes seront dérivées du champ « commandes » d'un cluster donné. Il est de la responsabilité de votre connecteur d'analyser le champ `endpoints`, de déterminer la commande Matter correspondante et de la traduire de telle sorte que la bonne commande atteigne le périphérique. Cela implique généralement de traduire le modèle de données Matter dans les demandes d'API associées.
Une fois la commande exécutée, votre connecteur détermine quels « attributs » définis par les AWS implémentations du Matter Data Model ont changé en conséquence. Ces modifications sont ensuite signalées aux intégrations gérées pour AWS IoT Device Management via les événements API DEVICE_COMMAND_RESPONSE envoyés avec l'API. SendConnectorEvent
Considérez le champ `endpoints` inclus dans l'exemple de charge utile suivant : AWS.SendCommand
"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
À partir de cet objet, le connecteur peut déterminer les éléments suivants :
-
Définissez les informations du point de terminaison et du cluster :
-
Réglez le point
idde terminaison sur « 1 ».Note
Si un appareil définit plusieurs points de terminaison de telle sorte qu'un seul cluster (par exemple On/Off) puisse contrôler plusieurs fonctionnalités (c'est-à-dire allumer une lumière on/off ou un stroboscope on/off), cet identifiant est utilisé pour acheminer la commande vers la fonctionnalité appropriée.
-
Réglez le cluster
idsur « 0x0202 » (cluster de contrôle du ventilateur).
-
-
Définissez les informations de commande :
-
Définissez l'identifiant de commande sur « 0xff01 » (commande Update State définie par). AWS
-
Mettez à jour les identificateurs d'attributs inclus avec les valeurs fournies dans la demande.
-
-
Mettez à jour l'attribut :
-
Définissez l'identifiant d'attribut sur « 0x0000 » (FanMode attribut du cluster de contrôle des ventilateurs).
-
Définissez la valeur de l'attribut sur « 3 » (vitesse du ventilateur élevée).
-
Managed Integrations a défini deux types de commandes « personnalisés » qui ne sont pas strictement définis par AWS les implémentations du modèle de données Matter : les commandes ReadState et UpdateState . Pour obtenir et définir les attributs de cluster définis par Matter, Managed Integrations enverra à votre connecteur une AWS.SendCommand demande avec des identifiants de commande relatifs à UpdateState (id : 0xff01) ou ReadState (id : 0xff02), avec les paramètres correspondants des attributs qui doivent être mis à jour ou lus. Ces commandes peuvent être invoquées pour TOUT type d'appareil pour les attributs définis comme mutables (modifiables) ou récupérables (lisibles) à partir de l' AWS implémentation correspondante du modèle de données de matière.