Conceptos y estado de los 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.

Conceptos y estado de los comandos

Usa AWS IoT comandos para enviar una instrucción desde la nube a un dispositivo al que esté conectado AWS IoT. Para usar la función de comandos:

  1. En primer lugar, cree un recurso de comandos con una carga útil que contenga las configuraciones necesarias para ejecutar el comando en el dispositivo.

  2. Especifique el dispositivo de destino que recibirá la carga útil y realice las acciones especificadas.

  3. Ejecute el comando en el dispositivo de destino y recupere la información de estado del dispositivo. Para solucionar cualquier problema, consulta los CloudWatch registros.

Para obtener más información acerca de este flujo de trabajo, consulte Flujo de trabajo de comandos de alto nivel.

Comandos y conceptos clave

A continuación se muestran algunos conceptos clave para utilizar la función de comandos.

Comandos

Los comandos son instrucciones que se envían desde la nube a sus dispositivos de IoT. Estas instrucciones (carga útil de comandos) se envían a los dispositivos en forma de MQTT mensajes. Una vez que los dispositivos reciben la carga útil de comandos, pueden procesar las instrucciones para realizar la acción correspondiente. Algunos ejemplos de estas acciones son la modificación de los ajustes de configuración del dispositivo, la transmisión de las lecturas de los sensores o la carga de registros. Luego, los dispositivos pueden ejecutar el comando y devolver el resultado a la nube. Esto le permite supervisar y controlar de forma remota los dispositivos conectados.

Namespace

Al utilizar la función de comandos, puede especificar el espacio de nombres del comando. Cuando desee crear un comando en AWS IoT Device Management, debe usar el espacio de nombres predeterminadoAWS-IoT. Al usar este espacio de nombres, debe proporcionar una carga útil al crear el comando. La carga útil se utilizará cuando ejecute el comando en el dispositivo de destino. Si quieres crear un comando AWS IoT FleetWise en su lugar, debes usar el espacio de AWS-IoT-FleetWise nombres en su lugar. Para obtener más información, consulte Comandos remotos en la guía de comandos para AWS IoT FleetWise desarrolladores.

Carga útil

Al crear el comando, debe proporcionar una carga útil que defina las acciones que debe realizar el dispositivo. La carga útil puede utilizar cualquier formato de su elección. Para asegurarte de que el dispositivo puede leer y comprender correctamente la información que envías, te recomendamos que especifiques el tipo de formato de carga útil en el comando. Si tus dispositivos lo utilizanMQTT5, pueden seguir el MQTT estándar para identificar el formato de carga útil. En el tema de solicitud de comandos CBOR habrá un indicador de formato disponible JSON o estará disponible.

Dispositivo de destino

Cuando desee ejecutar el comando, debe especificar un dispositivo de destino que recibirá el comando y realizará acciones. Si el dispositivo se ha registrado como un objeto AWS IoT, puede utilizar el nombre del dispositivo. Si tu dispositivo no está registrado, puedes usar el ID de MQTT cliente en su lugar. El ID de cliente es un identificador único para su dispositivo o cliente definido en el MQTT protocolo. Se puede usar para conectar el dispositivo a AWS IoT.

Ejecución de comandos

La ejecución de un comando es una instancia de un comando que se ejecuta en el dispositivo de destino. Al iniciar la ejecución, el comando (carga útil) se envía al dispositivo de destino. Ahora se genera un identificador de ejecución de comando único para el objetivo. A continuación, el dispositivo puede ejecutar el comando e informar de su progreso a AWS IoT. La lógica del dispositivo determina cómo se ejecutará el comando y cómo se publicará el estado en los temas reservados.

Temas de comandos

Antes de ejecutar el comando, el dispositivo debe estar suscrito al tema de solicitud de comandos. Cuando envíes la solicitud a la nube para ejecutar el comando, la carga útil se enviará al dispositivo en el tema de solicitud de comandos. Una vez que el dispositivo ejecute el comando, podrá publicar el resultado y el estado de la ejecución en el tema de respuesta al comando. Para obtener más información, consulte Temas de comandos.

Estados del comando

Un comando que cree en su Cuenta de AWS puede estar en estado Disponible, Obsoleto o Pendiente de eliminación.

Disponible

Una vez que haya creado correctamente un recurso de comandos, estará en un estado disponible. El comando ahora se puede usar para enviar la ejecución de un comando al dispositivo.

Obsoleto

Si ya no va a utilizar un comando, puede marcarlo como obsoleto. En este estado, no puede enviar ninguna ejecución nueva del comando a sus dispositivos. Las ejecuciones pendientes que ya se hayan iniciado seguirán ejecutándose en el dispositivo hasta que se completen. Para enviar nuevas ejecuciones, debe restaurar el comando para que esté disponible.

Eliminación pendiente

Al marcar un comando para su eliminación, si el comando ha quedado obsoleto durante un período superior al tiempo de espera máximo, el comando se eliminará automáticamente. Esta acción es permanente y no se puede deshacer. De forma predeterminada, el tiempo de espera máximo es de 12 horas. Si el comando no está en desuso o ha estado en desuso durante un período inferior al tiempo de espera máximo, estará pendiente de ser eliminado. El comando se eliminará automáticamente de tu cuenta una vez transcurrido el tiempo máximo de espera.

Estado de ejecución del comando

Al iniciar la ejecución del comando en el dispositivo de destino, la ejecución del comando pasa a un CREATED estado. A continuación, puede pasar a cualquiera de los demás estados de ejecución de comandos en función del estado registrado por el dispositivo. A continuación, puede recuperar la información de estado y realizar un seguimiento de las ejecuciones de los comandos.

nota

Para un dispositivo de destino determinado, puede ejecutar varios comandos al mismo tiempo. Puede utilizar la función de control de simultaneidad para limitar el número máximo de ejecuciones que se envían al mismo dispositivo, lo que evita que el dispositivo se sobrecargue. Para obtener información sobre el número máximo de ejecuciones simultáneas que puede ejecutar en cada dispositivo, consulte AWS IoT Device Management las cuotas de comandos.

La siguiente tabla muestra los diferentes estados de la ejecución de un comando y la forma en que la ejecución del comando pasa entre los distintos estados en función del progreso de la ejecución.

Estado y origen de la ejecución de los comandos
Estado de ejecución del comando ¿Iniciado por el dispositivo o la nube? ¿Ejecución terminal? Transiciones de estado permitidas
CREATED Cloud No
  • EN_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

IN_PROGRESS Dispositivo No
  • EN_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

TIMED_OUT Dispositivo y nube No
  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

SUCCEEDED Dispositivo No aplicable
FAILED Dispositivo No aplicable
REJECTED Dispositivo No aplicable

A medida que sus dispositivos ejecutan el comando, pueden publicar las actualizaciones del estado y el resultado en cualquier momento en la nube mediante los comandos en los MQTT temas reservados. Para proporcionar un contexto adicional sobre el estado de cada ejecución de comandos en la nube, puede usar reasonDescription los reasonCode y contenidos en el statusReason objeto.

El siguiente diagrama muestra los distintos estados de ejecución de comandos y cómo se produce la transición entre ellos.

Imagen que muestra cómo el estado de ejecución de un comando pasa de un estado a otro.

En la siguiente sección se describen las ejecuciones de comandos terminales y no terminales, los distintos estados de ejecución y su funcionamiento.

Ejecuciones de comandos que no son de terminal

La ejecución del comando no es terminal si la ejecución puede aceptar actualizaciones de dispositivos o clientes. Una ejecución en un estado no terminal se considera Activa. Los siguientes estados no son terminales.

  • CREATED

    Cuando inicias la ejecución de un comando desde la AWS IoT consola o utilizas la StartCommandExecution API para enviar el comando a tu dispositivo mediante el tema de solicitud de comandos. Si la solicitud se realiza correctamente, el estado de ejecución del comando cambia aCREATED. A partir de este estado, la ejecución del comando puede pasar a cualquier otro estado terminal o no terminal.

  • EN_ PROGRESS

    Tras recibir la carga útil del comando, el dispositivo puede empezar a ejecutar las instrucciones de la carga útil y realizar las acciones especificadas. Mientras ejecuta el comando, el dispositivo puede publicar una respuesta al tema de respuesta al comando y actualizar el estado de ejecución del comando como. IN_PROGRESS A partir del IN_PROGRESS estado, la ejecución del comando puede pasar a cualquiera de los otros estados terminales o no terminales distintos de. CREATED

    nota

    Se UpdateCommandExecution API puede invocar varias veces con un estado de. IN_PROGRESS Puede especificar detalles adicionales sobre la ejecución mediante el statusReason objeto.

  • TIMED_OUT

    Tanto la nube como el dispositivo pueden activar este estado de ejecución de comandos. Una ejecución en CREATED o un IN_PROGRESS estado pueden cambiar a ese TIMED_OUT estado debido a los siguientes motivos.

    • Una vez que se envía el comando al dispositivo, se inicia un temporizador. Si el dispositivo no responde dentro de un período de tiempo específico, la nube cambia el estado de ejecución del comando aTIMED_OUT. En este caso, la ejecución del comando no es terminal.

    • El dispositivo puede cambiar el estado a cualquiera de los demás estados del terminal, o informar de que se ha agotado el tiempo de espera al ejecutar el comando y establecer el estado en. TIMED_OUT En este caso, el estado de ejecución permanece igual, TIMED_OUT pero los campos del StatusReason objeto cambian en función de la información proporcionada por los dispositivos. La ejecución del comando pasa ahora a ser terminal.

    Para obtener más información, consulte Valor de tiempo de espera y estado TIMED_OUT de ejecución.

Ejecuciones de comandos de terminal

La ejecución de un comando pasa a ser terminal si la ejecución ya no acepta actualizaciones adicionales de los dispositivos. Los siguientes estados son terminales. Una ejecución puede pasar a los estados de terminal desde cualquiera de los estados no terminales,, CREATED o. IN_PROGRESS TIMED_OUT

  • SUCCEEDED

    Si el dispositivo completó correctamente la ejecución del comando, puede publicar una respuesta al tema de respuesta al comando y actualizar el estado de ejecución del comando a. SUCCEEDED

  • FAILED

    Si el dispositivo no completa la ejecución del comando, puede publicar una respuesta al tema de respuesta al comando y actualizar el estado de ejecución del comando aFAILED. Puede utilizar los reasonDescription campos reasonCode y del statusReason objeto, o los CloudWatch registros, para seguir solucionando los errores.

  • REJECTED

    Cuando el dispositivo reciba una solicitud no válida o incompatible, podrá invocarla UpdateCommandExecution API con un estado igual a. REJECTED Puedes usar los reasonDescription campos reasonCode y del statusReason objeto, o los CloudWatch registros, para seguir solucionando cualquier problema.