View a markdown version of this page

High-level flujo de trabajo de comandos - AWS IoT Core

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.

Descripción general del flujo de trabajo de alto nivel de los comandos del AWS IoT Device Management dispositivo.

Creación y administración de comandos

Para crear y administrar comandos para los dispositivos, siga los pasos que se indican a continuación.

  1. Creación de un recurso de comandos

    Crea un comando desde el Command Hub o mediante la CreateCommand API.

  2. 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.

  3. (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.

  1. 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.

  2. 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.

  3. 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:Connect permiso. Busque el punto final de su plano de datos mediante el comando de la DescribeEndpoint API o la describe-endpoint CLI:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    Al 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
  4. 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:

    • <device> con thing o client en 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.

    • <DeviceID> 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.

    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.

  1. Inicio de la ejecución de comandos en el dispositivo de destino

    Inicie la ejecución desde el centro de comandos o utilice la StartCommandExecution API con el punto final específico de su cuenta. Úselo iot:Data-ATS solo para dual-stack (IPv4/IPv6) o iot:Jobs para 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á.

  2. 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 UpdateCommandExecution MQTT. 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>
  3. (Opcional) Recuperación del resultado de la ejecución de comandos

    Recupere los resultados de la ejecución desde la AWS IoT consola o medianteGetCommandExecution. 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.

  1. 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 <CommandID> por el identificador del comando del que desea recibir notificaciones y <CommandExecutionStatus> por el estado de la ejecución del comando.

    $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/+/#
  2. 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 }