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.
Flujo de trabajo de comandos de
Este flujo de trabajo muestra cómo los dispositivos interactúan con AWS IoT Device Management los comandos. Todas las solicitudes de la API HTTP utilizan credenciales Sigv4 para firmarlas.
Información general sobre el flujo de trabajo
Creación y administración de comandos
Para crear y administrar comandos para los dispositivos, siga los pasos que se indican a continuación.
-
Creación de un recurso de comandos
Cree un comando desde el centro de comandos
o mediante la CreateCommandAPI. -
Especificación de la carga útil
Proporcione una carga útil en cualquier formato. Especifique el tipo de contenido para garantizar una interpretación correcta del dispositivo.
En el caso de los comandos dinámicos con plantillas de carga útil, la carga útil final se genera en tiempo de ejecución con los parámetros proporcionados. Las plantillas solo admiten el formato JSON, pero la carga útil generada se puede enviar como JSON o CBOR.
-
(Opcional) Administración de los comandos creados
Actualice el nombre para mostrar y la descripción después de la creación. Marque los comandos como obsoletos cuando ya no sean necesarios o elimínelos permanentemente. Para modificar la información de carga útil, crea un comando nuevo.
Selección del dispositivo de destino para los comandos y suscripción a los temas de MQTT
Elija su dispositivo de destino y configure los temas de MQTT para recibir comandos y publicar respuestas.
-
Selección del dispositivo de destino para el comando
Elija un dispositivo de destino para recibir y ejecutar el comando. Utilice un nombre de cosa para los dispositivos registrados o un ID de cliente para los dispositivos no registrados. Para obtener más información, consulte Consideraciones sobre los dispositivos de destino.
-
Configure la política de AWS IoT dispositivos
Configure una política de IAM que conceda permisos para recibir ejecuciones y publicar actualizaciones. Consulte Ejemplo de política de IAM para ver ejemplos de políticas.
-
Establecimiento de una conexión con MQTT
Conecte los dispositivos al agente de mensajes y suscríbase a los temas de solicitud y respuesta. Los dispositivos necesitan
iot:Connectpermiso. Busque el punto final de su plano de datos mediante el comandoDescribeEndpointAPI odescribe-endpointCLI:aws iot describe-endpoint --endpoint-type iot:Data-ATSAl ejecutar este comando, se devolverá el punto de conexión del plano de datos específico de la cuenta, tal como se muestra a continuación.
account-specific-prefix.iot.region.amazonaws.com -
Suscríbase a los temas de comandos
Suscríbase al tema de solicitud de comandos. Al iniciar una ejecución, el agente de mensajes publica la carga útil de este tema. El dispositivo recibe y procesa el comando.
(Opcional) Suscríbase a los temas de respuesta (
acceptedorejected) para recibir confirmación de si el servicio en la nube ha aceptado o rechazado la respuesta del dispositivo.En este ejemplo, sustituya:
-
con<device>thingoclienten función de si el dispositivo al que se dirige se ha registrado como un objeto de IoT o se ha especificado como un cliente de MQTT. -
con el identificador único del dispositivo de destino. Este ID puede ser el ID único de cliente de MQTT o el nombre de un objeto.<DeviceID>
nota
Si el tipo de carga útil no es JSON o CBOR, es posible que el
<PayloadFormat>campo no esté presente en el tema de solicitud de comandos. Para obtener el formato de carga útil, le recomendamos que lo utilice MQTT5 para obtener la información de formato de los encabezados de los mensajes de MQTT. Para obtener más información, consulte Temas de comandos.$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat> -
Inicio y supervisión de las ejecuciones de comandos en el dispositivo de destino
Una vez creados los comandos y especificado los destinos del comando, puede iniciar la ejecución en el dispositivo de destino realizando los siguientes pasos.
-
Inicio de la ejecución de comandos en el dispositivo de destino
Inicie la ejecución desde el centro de comandos
o utilice la StartCommandExecutionAPI con el punto final específico de su cuenta. Úseloiot:Data-ATSpara doble pila (IPv4/IPv6) oiot:Jobssolo para. IPv4La API publica la carga útil en el tema de solicitud de comandos.
nota
Si el dispositivo está desconectado y utiliza sesiones persistentes de MQTT, el comando espera en el intermediario de mensajes. Cuando el dispositivo se vuelva a conectar antes de que se agote el tiempo de espera, puede procesar el comando y publicar los resultados. Si se agota el tiempo de espera, se agota el tiempo de espera de la ejecución y se descarta la carga útil.
-
Actualización del resultado de la ejecución de comandos
El dispositivo recibe la carga útil, procesa el comando, realiza las acciones especificadas y publica los resultados en el tema de respuesta a los comandos mediante una API basada en
UpdateCommandExecutionMQTT. Si se ha suscrito a los temas aceptados y rechazados, el dispositivo recibe la confirmación de si el servicio en la nube ha aceptado o rechazado la respuesta.Según lo que haya especificado en el tema de la solicitud,
<devices>pueden ser cosas o clientes, y<DeviceID>puede ser su nombre o el AWS IoT ID de cliente de MQTT.nota
Solo
<PayloadFormat>puede ser JSON o CBOR en el tema de respuesta a los comandos.$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat> -
(Opcional) Recuperación del resultado de la ejecución de comandos
Recupere los resultados de la ejecución desde la AWS IoT consola o mediante
GetCommandExecution. El dispositivo debe publicar los resultados en el tema de respuesta a los comandos para obtener la información más reciente. Vea detalles adicionales, incluida la hora de la última actualización, el resultado y la hora de finalización.
(Opcional) Habilitación de las notificaciones para los eventos de comandos
Suscríbase a los eventos de Commands para recibir notificaciones cuando cambie el estado de ejecución.
-
Creación de una regla del tema
Suscríbase al tema de eventos de comandos para ver las notificaciones de cambios de estado. Cree una regla temática para enrutar los datos del dispositivo a otros AWS IoT serviciosAWS Lambda, como Amazon SQS y AWS Step Functions, mediante la AWS IoT consola o. Crear una AWS IoT regla
En este ejemplo, sustituya
por el identificador del comando del que desea recibir notificaciones y<CommandID>por el estado de la ejecución del comando.<CommandExecutionStatus>$aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>nota
Para recibir notificaciones de todos los comandos y estados de ejecución de los comandos, puede utilizar caracteres comodín y suscribirse al tema siguiente.
$aws/events/commandExecution/+/# -
Recepción y procesamiento de los eventos de comandos
Administre los comandos, envíe notificaciones y cree aplicaciones utilizando los eventos suscritos.
En el siguiente código se muestra un ejemplo de carga útil para las notificaciones de eventos de comandos que recibirá.
{ "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}