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.
High-level flujo de trabajo de comandos
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 la firma.
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
Crea un comando desde el Command Hub
o mediante la CreateCommandAPI. -
Especificación de la carga útil
Proporcione una carga útil en cualquier formato. Especifique el tipo de contenido para garantizar la 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 utilizando los parámetros proporcionados por usted. 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
Actualiza el nombre para mostrar y la descripción después de crearlos. Marque los comandos como obsoletos cuando ya no los necesite o elimínelos de forma permanente. Para modificar la información de la 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. Usa 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 el AWS IoT política de 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
Conecta los dispositivos al intermediario de mensajes y suscríbete a los temas de solicitud y respuesta. Los dispositivos necesitan
iot:Connectpermiso. Busque el punto final de su plano de datos mediante el comando de laDescribeEndpointAPI o ladescribe-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 sobre comandos
Suscríbase al tema de solicitud de comandos. Al iniciar una ejecución, el intermediario 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 la 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, te recomendamos que utilices MQTT5 para obtener la información sobre el 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-ATSsolo para dual-stack (IPv4/IPv6) oiot:Jobspara IPv4.La API publica la carga útil en el tema de solicitud de comandos.
nota
Si el dispositivo está desconectado y usa sesiones persistentes de MQTT, el comando espera en el intermediario de mensajes. Cuando el dispositivo se vuelve 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 ejecución y la carga útil se descartará.
-
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 del comando mediante una API basada en
UpdateCommandExecutionMQTT. Si está suscrito a los temas aceptados y rechazados, el dispositivo recibe una confirmación de si el servicio en la nube ha aceptado o rechazado la respuesta.Según lo que hayas especificado en el tema de la solicitud,
<devices>pueden ser cosas o clientes, y<DeviceID>puede ser tu nombre o el AWS IoT ID de cliente de MQTT.nota
Solo
<PayloadFormat>pueden ser JSON o CBOR en el tema de respuesta del comando.$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. Consulta detalles adicionales, como 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. Para obtener información detallada sobre los eventos de ejecución de comandos, incluidos el formato del mensaje del evento y los atributos de la carga útil, consulteEventos de ejecución de comandos.
-
Creación de una regla del tema
Suscríbase al tema Comandos y eventos para ver las notificaciones de cambios de estado. Cree una regla temática para enrutar los datos del dispositivo a otros AWS IoT servicios AWS Lambda, como Amazon SQS y AWS Step Functions, mediante la AWS IoT consola oCrear un 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, las notificaciones push 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}