Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Implementar la AWS.SendCommand operación
La AWS.SendCommand operación permite a Managed Integrations AWS IoT Device Management enviar los comandos iniciados por el usuario final a través del AWS cliente a su servidor de recursos. El servidor de recursos puede admitir varios tipos de dispositivos, cada uno de los cuales tiene su propio modelo de respuesta.
La ejecución de comandos es un proceso asíncrono en el que Managed Integrations for AWS IoT Device Management envía una solicitud de ejecución de comandos con untraceId, que el conector incluirá en una respuesta de comando que se devolverá a Managed Integrations a través de la API. AWS IoT Device Management SendConnectorEvent Managed Integrations for AWS IoT Device Management espera que el servidor de recursos devuelva una respuesta confirmando que se ha recibido el comando, pero no que indique necesariamente que se ha ejecutado.
Flujo de trabajo de ejecución de comandos
El siguiente diagrama ilustra el flujo de ejecución de comandos con un ejemplo en el que el usuario final intenta encender las luces de su casa:
Pasos del flujo de trabajo
-
El usuario final envía un comando: un usuario final envía un comando para encender una luz mediante la aplicación del AWS cliente.
-
El cliente transmite el comando: el cliente transmite la información del comando a Managed Integrations o AWS IoT Device Management junto con la información del dispositivo del usuario final.
-
Managed Integrations genera TraceID: Managed Integrations for AWS IoT Device Management genera el «TraceID» que su conector utilizará al enviar las respuestas de comando al servicio.
-
Solicitud de comando enviada al conector: Managed Integrations for AWS IoT Device Management envía la solicitud de comando a su conector mediante la interfaz de operación.
AWS.SendCommand-
La carga útil definida por esta interfaz consiste en el identificador del dispositivo, los comandos del dispositivo formulados como endpoints/clusters Matter/commands, el token de acceso del usuario final y otros parámetros necesarios.
-
-
El conector almacena el TraceID: su conector almacena el
traceIdque se incluirá en la respuesta al comando.-
El conector traduce las integraciones gestionadas para la solicitud de AWS IoT Device Management comandos al formato adecuado del servidor de recursos.
-
-
Conector obtiene UserId: el conector
UserIdobtiene el token de acceso del usuario final proporcionado y lo asocia al comando.-
UserIdPuede recuperarse del servidor de recursos mediante una llamada independiente o extraerse del token de acceso en el caso de JWT y otros similares. -
La implementación depende del servidor de recursos y de los detalles del token de acceso.
-
-
El conector llama al servidor de recursos: el conector llama al servidor de recursos para «encender» la luz del usuario final.
-
El servidor de recursos interactúa con el dispositivo: el servidor de recursos interactúa con el dispositivo.
-
El conector se transmite a Managed Integrations para AWS IoT Device Management que el servidor de recursos haya entregado el comando y responda con un ACK como respuesta de comando sincrónica inicial.
-
AWS IoT Device Management Luego, Managed Integrations lo devuelve a la aplicación del cliente.
-
-
El dispositivo ejecuta un comando: cuando el dispositivo enciende la luz, el servidor de recursos captura el evento del dispositivo.
-
El servidor de recursos envía el evento del dispositivo: el servidor de recursos envía el evento del dispositivo al conector.
-
Evento de transformación del conector: el conector transforma el evento del dispositivo generado por el servidor de recursos en integraciones gestionadas para el tipo de operación del evento AWS IoT Device Management DEVICE_COMMAND_RESPONSE.
-
Llamadas de conector SendConnectorEvent: el conector llama a la
SendConnectorEventAPI con la operación «DEVICE_COMMAND_RESPONSE».-
Adjunta lo
traceIdproporcionado por Managed Integrations en la solicitud inicial. AWS IoT Device Management
-
-
Managed Integrations notifica al cliente: Managed Integrations for AWS IoT Device Management notifica al cliente sobre el cambio de estado del dispositivo del usuario final.
-
El cliente notifica al usuario final: el cliente notifica al usuario final que la luz del dispositivo se ha encendido.
nota
La configuración del servidor de recursos determina la lógica para gestionar los mensajes de solicitud y respuesta de comandos del dispositivo fallidos. Esto incluye los intentos de reintento de los mensajes utilizando el mismo ReferenceID para el comando.
Requisitos del conector C2C para la ejecución de comandos del dispositivo
La siguiente lista describe los requisitos de su conector C2C para facilitar la ejecución correcta de los comandos del dispositivo.
-
El conector C2C Lambda puede
AWS.SendCommandprocesar los mensajes de solicitud de operación de las integraciones administradas para AWS IoT Device Management. -
Su conector C2C debe realizar un seguimiento de los comandos enviados a su servidor de recursos y asignarlos con el `TraceID` adecuado.
-
Puede llamar a las integraciones administradas de las API del servicio AWS IoT Device Management mediante SiGv4 con AWS las credenciales Cuenta de AWS utilizadas para registrar el conector C2C.
Proceso de ejecución de comandos
Paso 1: Managed Integrations envía el comando al conector
Envíe una solicitud POST con una de las siguientes cargas útiles, según el tipo de autorización:
Solicitud de 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” } }] }] }] } }
Solicitud de autorización general:
/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" } }] }] }] } }
Paso 2: Comando ACK del conector C2C
{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }
Paso 3: El conector envía el evento de respuesta al comando del dispositivo
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” } ] }] } }
nota
Los cambios de estado del dispositivo como resultado de la ejecución de un comando no se reflejarán en las integraciones gestionadas AWS IoT Device Management hasta que se reciba el evento DEVICE_COMMAND_RESPONSE correspondiente a través de la API. SendConnectorEvent Esto significa que hasta que Managed Integrations for AWS IoT Device Management reciba el evento del paso 3 anterior, independientemente de si la respuesta de invocación del conector indica que se ha realizado correctamente o no, el estado del dispositivo no se actualizará.
importante
No incluya atributos en la carga útil DEVICE_COMMAND_RESPONSE a menos que el dispositivo haya confirmado que el cambio de estado se aplicó realmente. Un DEVICE_COMMAND_RESPONSE sin atributos sirve como confirmación de que el comando se envió a un tercero y genera una notificación de DEVICE_COMMAND. Para informar de que los valores de los atributos se han actualizado en el dispositivo, envía un DEVICE_EVENT independiente con los atributos actualizados. Esta distinción evita los falsos positivos cuando un comando parece funcionar correctamente pero el dispositivo nunca recibió el cambio de estado, por ejemplo, cuando un dispositivo se desconectó recientemente.
El asunto de interpretación («puntos finales») está incluido en la solicitud AWS.SendCommand
Las integraciones gestionadas utilizarán las capacidades del dispositivo informadas durante la detección del dispositivo para determinar qué comandos puede aceptar un dispositivo. Las capacidades de cada dispositivo se modelan mediante AWS implementaciones del modelo de datos de materia; por lo tanto, todos los comandos entrantes se derivarán del campo «comandos» de un clúster determinado. Es responsabilidad del conector analizar el campo «puntos finales», determinar el comando Matter correspondiente y traducirlo de forma que el comando correcto llegue al dispositivo. Normalmente, esto implica traducir el modelo de datos de Matter a las solicitudes de API relacionadas.
Una vez ejecutado el comando, el conector determina qué «atributos» definidos en AWS las implementaciones del modelo de datos de Matter han cambiado en consecuencia. A continuación, estos cambios se notifican a las integraciones gestionadas de AWS IoT Device Management mediante los eventos DEVICE_COMMAND_RESPONSE de la API enviados con la API. SendConnectorEvent
Considere el campo «puntos finales» incluido en la siguiente carga útil de ejemplo: AWS.SendCommand
"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
A partir de este objeto, el conector puede determinar lo siguiente:
-
Establezca la información del punto final y del clúster:
-
Establezca el punto final
iden «1".nota
Si un dispositivo define varios puntos finales de forma que un solo clúster (por ejemplo On/Off) pueda controlar varias funciones (por ejemplo, encender una luz on/off o encender una luz estroboscópica on/off), este identificador se utiliza para dirigir el comando a la capacidad correcta.
-
Defina el clúster
iden «0x0202" (grupo Fan Control).
-
-
Configure la información del comando:
-
Establezca el identificador del comando en «0xff01" (comando Actualizar estado definido por). AWS
-
Actualice los identificadores de atributos incluidos con los valores proporcionados en la solicitud.
-
-
Actualice el atributo:
-
Establezca el identificador del atributo en «0x0000" (FanMode atributo del grupo de control del ventilador).
-
Establezca el valor del atributo en «3" (velocidad alta del ventilador).
-
Managed Integrations ha definido dos tipos de comandos «personalizados» que AWS las implementaciones del Matter Data Model no definen estrictamente: los comandos ReadState y UpdateState . Para obtener y establecer los atributos del clúster definidos por Matter, Managed Integrations enviará al conector una AWS.SendCommand solicitud con los identificadores de comando correspondientes a UpdateState (id: 0xff01) o ReadState (id: 0xff02), con los parámetros correspondientes de los atributos que deben actualizarse o leerse. Estos comandos se pueden invocar en CUALQUIER tipo de dispositivo para los atributos que estén configurados como mutables (actualizables) o recuperables (legibles) a partir de la implementación correspondiente del modelo de datos de Matter. AWS