Conceitos e status de comandos - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceitos e status de comandos

Use AWS IoT comandos para enviar uma instrução da nuvem para um dispositivo conectado AWS IoT a. Para usar o recurso de comandos:

  1. Primeiro, crie um recurso de comando com uma carga que contenha as configurações necessárias para executar o comando no dispositivo.

  2. Especifique o dispositivo de destino que receberá a carga e executará as ações especificadas.

  3. Execute o comando no dispositivo de destino e recupere as informações de status do dispositivo. Para solucionar qualquer problema, consulte os CloudWatch registros.

Para obter mais informações sobre esse fluxo de trabalho, consulte Fluxo de trabalho de comandos de alto nível.

Conceitos-chave de comandos

Veja a seguir alguns conceitos-chave para usar o recurso de comandos.

Comandos

Comandos são instruções enviadas da nuvem para seus dispositivos de IoT. Essas instruções (carga útil do comando) são enviadas aos dispositivos como MQTT mensagens. Depois que os dispositivos receberem a carga útil do comando, eles poderão processar as instruções para realizar a ação correspondente. Exemplos dessas ações incluem a modificação das configurações do dispositivo, a transmissão de leituras do sensor ou o upload de registros. Os dispositivos podem então executar o comando e retornar o resultado para a nuvem. Isso permite monitorar e controlar remotamente os dispositivos conectados.

Namespace

Ao usar o recurso de comandos, você pode especificar o namespace para o comando. Quando quiser criar um comando no AWS IoT Device Management, você deve usar o AWS-IoT namespace padrão. Ao usar esse namespace, você deve fornecer uma carga útil ao criar o comando. A carga será usada quando você executar o comando no dispositivo de destino. Se quiser criar um comando para AWS IoT FleetWise em vez disso, você deve usar o AWS-IoT-FleetWise namespace em vez disso. Para obter mais informações, consulte Comandos remotos no guia do AWS IoT FleetWise desenvolvedor para comandos.

Carga útil

Ao criar o comando, você deve fornecer uma carga que defina as ações que o dispositivo deve executar. A carga pode usar qualquer formato de sua escolha. Para garantir que o dispositivo possa ler e entender corretamente as informações que você está enviando, recomendamos que você especifique o tipo de formato da carga útil no comando. Se seus dispositivos usaremMQTT5, eles poderão seguir o MQTT padrão para identificar o formato da carga útil. Um indicador de formato para JSON ou CBOR estará disponível no tópico de solicitação de comandos.

Dispositivo de destino

Quando quiser executar o comando, você deve especificar um dispositivo de destino que receberá o comando e executará ações. Se o seu dispositivo foi registrado como uma coisa com AWS IoT, você pode usar o nome da coisa. Se seu dispositivo não tiver sido registrado, você poderá usar o ID do MQTT cliente em vez disso. O ID do cliente é um identificador exclusivo para seu dispositivo ou cliente definido no MQTT protocolo. Ele pode ser usado para conectar seu dispositivo AWS IoT a.

Execução de comandos

A execução de um comando é uma instância de um comando executado no dispositivo de destino. Quando você inicia a execução, o comando (carga) é entregue ao dispositivo de destino. Agora, um ID exclusivo de execução de comando é gerado para o destino. O dispositivo pode então executar o comando e relatar seu progresso para AWS IoT o. A lógica do lado do dispositivo determina como o comando será executado e como o status será publicado nos tópicos reservados.

Tópicos de comandos

Antes de executar o comando, seu dispositivo deve ter se inscrito no tópico de solicitação de comandos. Quando você envia a solicitação à nuvem para executar o comando, a carga útil será enviada ao dispositivo no tópico de solicitação de comandos. Depois que o dispositivo executa o comando, ele pode publicar o resultado e o status da execução no tópico de resposta do comando. Para obter mais informações, consulte Tópicos de comandos.

Estados de comando

Um comando que você cria no seu Conta da AWS pode estar no estado de exclusão Disponível, Obsoleto ou Pendente.

Disponível

Depois de criar com sucesso um recurso de comando, ele estará em um estado disponível. O comando agora pode ser usado para enviar uma execução de comando para o dispositivo.

Preterido

Se você não pretende mais usar um comando, você pode marcá-lo como obsoleto. Nesse estado, você não pode enviar nenhuma nova execução do comando para seus dispositivos. Todas as execuções pendentes que já tenham sido iniciadas continuarão sendo executadas no dispositivo até serem concluídas. Para enviar novas execuções, você deve restaurar o comando para que ele fique disponível.

Exclusão pendente

Quando você marca um comando para exclusão, se o comando tiver sido descontinuado por um período maior que o tempo limite máximo, o comando será excluído automaticamente. Essa ação é permanente e não pode ser desfeita. Por padrão, a duração máxima do tempo limite é de 12 horas. Se o comando não estiver obsoleto ou tiver sido preterido por um período menor que o tempo limite máximo, o comando estará em um estado de exclusão pendente. O comando será removido automaticamente da sua conta após o tempo limite máximo.

Status de execução do comando

Quando você inicia a execução do comando no dispositivo de destino, a execução do comando entra em um CREATED status. Em seguida, ele pode fazer a transição para qualquer outro status de execução de comando, dependendo do status relatado pelo dispositivo. Em seguida, você pode recuperar as informações de status e rastrear suas execuções de comandos.

nota

Para um determinado dispositivo de destino, você pode executar vários comandos simultaneamente. Você pode usar o recurso de controle de simultaneidade para limitar o número máximo de execuções enviadas para o mesmo dispositivo, o que evita que o dispositivo seja sobrecarregado. Para obter informações sobre o número máximo de execuções simultâneas que você pode executar para cada dispositivo, consulte cotas de AWS IoT Device Management comandos.

A tabela a seguir mostra os diferentes status da execução de um comando e como a execução do comando faz a transição entre os vários status, dependendo do progresso da execução.

Status e origem da execução do comando
Status de execução do comando Iniciado por dispositivo/nuvem? Execução do terminal? Transições de status permitidas
CREATED Nuvem Não
  • EM_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

IN_PROGRESS Dispositivo Não
  • EM_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

TIMED_OUT Dispositivo e nuvem Não
  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

SUCCEEDED Dispositivo Sim Não aplicável
FAILED Dispositivo Sim Não aplicável
REJECTED Dispositivo Sim Não aplicável

Conforme seus dispositivos executam o comando, eles podem publicar atualizações do status e do resultado a qualquer momento na nuvem usando os MQTT tópicos reservados dos comandos. Para fornecer contexto adicional sobre o status de cada execução de comando na nuvem, ela pode usar os reasonCode e reasonDescription que estão contidos no statusReason objeto.

O diagrama a seguir mostra os vários status de execução do comando e como a transição ocorre entre eles.

Imagem mostrando como o status de execução de um comando faz a transição entre vários status.

A seção a seguir descreve as execuções de comandos terminais e não terminais, os vários status de execução e como elas funcionam.

Execuções de comandos não terminais

A execução do comando não é terminal se a execução puder aceitar atualizações de dispositivos ou clientes. Uma execução em um status não terminal é considerada Ativa. Os status a seguir não são terminais.

  • CREATED

    Quando você inicia a execução de um comando no AWS IoT console ou usa o tópico StartCommandExecution API para enviar o comando ao seu dispositivo usando o tópico de solicitação de comandos. Se a solicitação for bem-sucedida, o status de execução do comando será alterado paraCREATED. A partir desse status, a execução do comando pode fazer a transição para qualquer outro status não terminal ou terminal.

  • EM_ PROGRESS

    Depois de receber a carga útil do comando, seu dispositivo pode começar a executar as instruções na carga útil e realizar as ações especificadas. Ao executar o comando, o dispositivo pode publicar uma resposta ao tópico de resposta de comandos e atualizar o status de execução do comando comoIN_PROGRESS. A partir do IN_PROGRESS status, a execução do comando pode fazer a transição para qualquer outro status terminal ou não terminal, exceto. CREATED

    nota

    O UpdateCommandExecution API pode ser invocado várias vezes com o status deIN_PROGRESS. Você pode especificar detalhes adicionais sobre a execução usando o statusReason objeto.

  • TIMED_OUT

    Esse status de execução do comando pode ser acionado tanto pela nuvem quanto pelo dispositivo. O IN_PROGRESS status de uma execução em CREATED ou pode mudar para o TIMED_OUT status devido aos seguintes motivos.

    • Depois que o comando é enviado ao dispositivo, um cronômetro é iniciado. Se não houver resposta do dispositivo dentro de um período especificado, a nuvem alterará o status de execução do comando paraTIMED_OUT. Nesse caso, a execução do comando não é terminal.

    • O dispositivo pode substituir o status por qualquer um dos outros status do terminal ou relatar que ocorreu um tempo limite ao executar o comando e definir o status como. TIMED_OUT Nesse caso, o status de execução permanece emTIMED_OUT, mas os campos do StatusReason objeto mudam dependendo das informações relatadas pelos dispositivos. A execução do comando agora se torna terminal.

    Para obter mais informações, consulte Valor do tempo limite e status TIMED_OUT de execução.

Execuções de comandos do terminal

A execução de um comando se torna terminal se a execução não aceitar mais nenhuma atualização adicional dos dispositivos. Os status a seguir são terminais. Uma execução pode fazer a transição para os status do terminal a partir de qualquer um dos status não terminais,,CREATED, IN_PROGRESS ou. TIMED_OUT

  • SUCCEEDED

    Se o dispositivo concluir com êxito a execução do comando, ele poderá publicar uma resposta ao tópico de resposta dos comandos e atualizar o status de execução do comando paraSUCCEEDED.

  • FAILED

    Quando seu dispositivo não consegue concluir a execução do comando, ele pode publicar uma resposta ao tópico de resposta dos comandos e atualizar o status de execução do comando paraFAILED. Você pode usar os reasonDescription campos reasonCode e do statusReason objeto, ou os CloudWatch registros, para solucionar ainda mais as falhas.

  • REJECTED

    Quando seu dispositivo recebe uma solicitação inválida ou incompatível, ele pode invocá-la UpdateCommandExecution API com o status de. REJECTED Você pode usar os reasonDescription campos reasonCode e do statusReason objeto, ou os CloudWatch registros, para solucionar ainda mais quaisquer problemas.