Flujo de trabajo de comandos de - 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.

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.

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

    Cree un comando desde el centro de comandos o mediante la CreateCommandAPI.

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

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

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

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

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

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

  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 para doble pila (IPv4/IPv6) o iot:Jobs solo para. IPv4

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

  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 a los comandos mediante una API basada en UpdateCommandExecution MQTT. 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>
  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. 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.

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