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 instruções da nuvem para dispositivos conectados. Para usar esse atributo:
-
Crie um comando com uma carga contendo as configurações necessárias para execução no dispositivo.
-
Especifique o dispositivo de destino que receberá a carga e executará as ações.
-
Execute o comando no dispositivo de destino e recupere as informações de status. Para solucionar problemas, consulte CloudWatch os registros.
Para obter mais informações sobre esse fluxo de trabalho, consulte Fluxo de trabalho de comandos de alto nível.
Conceitos de chaves de comandos
Os conceitos-chave a seguir ajudam você a entender o recurso Comandos. Os termos são usados de forma consistente em toda esta documentação:
Comando - Um modelo reutilizável que define as instruções do dispositivo
Execução - Uma instância de um comando em execução em um dispositivo
Nome da coisa - Identificador para dispositivos registrados no registro de IoT
ID do cliente - identificador MQTT para dispositivos não registrados
Carga útil - Os dados da instrução enviados aos dispositivos
Tópico - Canal MQTT para comunicação de comando
- Comandos
-
Os comandos são instruções enviadas da nuvem para seus dispositivos de IoT como mensagens MQTT. Depois de receber a carga, os dispositivos processam as instruções e realizam as ações correspondentes, como modificar as configurações, transmitir leituras do sensor ou carregar registros. Os dispositivos então retornam os resultados para a nuvem, permitindo monitoramento e controle remotos.
- Namespace
-
Ao criar um comando, especifique seu namespace. Para AWS IoT Device Management comandos, use o
AWS-IoTnamespace padrão e forneça uma carga ou um payloadTemplate. Para AWS IoT FleetWise comandos, use oAWS-IoT-FleetWisenamespace. Para obter mais informações, consulte Comandos remotos no Guia do AWS IoT FleetWise desenvolvedor. - Carga útil
-
Ao criar um comando, forneça uma carga estática que defina as ações que o dispositivo deve realizar. A carga pode usar qualquer formato compatível. Para garantir que os dispositivos interpretem corretamente a carga, recomendamos especificar o tipo de formato da carga útil. Os dispositivos que usam o MQTT5 protocolo podem seguir o padrão MQTT para identificar o formato. Os indicadores de formato para JSON ou CBOR estão disponíveis no tópico de solicitação de comandos.
- Modelo de carga
-
Um modelo de carga útil define uma carga de comando com espaços reservados que geram cargas diferentes em tempo de execução com base nos valores de parâmetros fornecidos por você. Por exemplo, em vez de criar cargas separadas para diferentes valores de temperatura, crie um modelo com um espaço reservado de temperatura e especifique o valor durante a execução. Isso elimina a manutenção de várias cargas úteis semelhantes.
- Dispositivo de destino
-
Para executar um comando, especifique um dispositivo de destino usando o nome do item (para dispositivos registrados com AWS IoT) ou o ID do cliente MQTT (para dispositivos não registrados). O ID do cliente é um identificador exclusivo definido no MQTT protocolo usado para conectar dispositivos AWS IoT a. Para obter detalhes, consulte Considerações sobre dispositivos de destino.
- Tópicos de comandos
-
Antes de executar um comando, os dispositivos devem se inscrever no tópico de solicitação de comandos. Quando você executa um comando, a carga útil é enviada para o dispositivo neste tópico. Após a execução, os dispositivos publicam os resultados e o status no tópico de resposta dos comandos. Para obter mais informações, consulte Tópicos de comandos.
- Execução de comandos
-
Uma execução é uma instância de um comando em execução em um dispositivo de destino. Quando você inicia uma execução, a carga é entregue ao dispositivo e uma ID de execução exclusiva é gerada. O dispositivo executa o comando e relata o progresso para AWS IoT. A lógica do lado do dispositivo determina o comportamento de execução e os relatórios de status para tópicos reservados.
Condições de valor do parâmetro
Ao criar comandos com modelos de carga útil, defina condições de valor para validar os valores dos parâmetros antes da execução. As condições de valor garantem que os parâmetros atendam aos requisitos, evitando execuções inválidas.
Operadores suportados por CommandParameterValuetipo
- Tipos numéricos (INTEGER, LONG, DOUBLE, UNSIGNEDLONG)
-
EQUALS- O valor deve ser igual ao número especificadoNOT_EQUALS- O valor não deve ser igual ao número especificadoGREATER_THAN- O valor deve ser maior que o número especificadoGREATER_THAN_EQUALS- O valor deve ser maior ou igual ao número especificadoLESS_THAN- O valor deve ser menor que o número especificadoLESS_THAN_EQUALS- O valor deve ser menor ou igual ao número especificadoIN_RANGE- O valor deve estar dentro do intervalo especificado (inclusive)NOT_IN_RANGE- O valor deve estar fora do intervalo especificado (inclusive)IN_SET- O valor deve corresponder a um dos números especificadosNOT_IN_SET- O valor não deve corresponder a nenhum dos números especificados
- Tipo de string (STRING)
-
EQUALS- O valor deve ser igual à string especificadaNOT_EQUALS- O valor não deve ser igual à string especificadaIN_SET- O valor deve corresponder a uma das cadeias de caracteres especificadasNOT_IN_SET- O valor não deve corresponder a nenhuma das strings especificadas
- Tipo booleano
-
As condições de valor não são suportadas
- Tipo binário
-
As condições de valor não são suportadas
Exemplo: comando de controle de temperatura
{ "commandId": "SetTemperature", "namespace": "AWS-IoT", "payloadTemplate": "{\"temperature\": \"${aws:iot:commandexecution::parameter:temperature}\"}", "parameters": [ { "name": "temperature", "type": "INTEGER", "valueConditions": [ { "comparisonOperator": "IN_RANGE", "operand": { "numberRange": { "min": "60", "max": "80" } } } ] } ] }
Neste exemplo, o temperature parâmetro deve estar entre 60 e 80 (inclusive). Solicitações de execução com valores fora desse intervalo falham na validação.
nota
As condições de valor são avaliadas na invocação da StartCommandExecution API. As validações com falha retornam um erro e impedem a criação da execução.
Prioridade e avaliação do valor do parâmetro
Ao iniciar as execuções de comandos com modelos de carga útil, os valores dos parâmetros são resolvidos usando a seguinte prioridade:
Parâmetros da solicitação de execução - Os valores fornecidos na
StartCommandExecutionsolicitação têm a maior prioridadeValores padrão do comando - Se um parâmetro não for fornecido na solicitação de execução, o parâmetro
defaultValueserá usadoSem valor - Se nenhum for fornecido, a execução falhará como parâmetro necessário para gerar a solicitação de execução
As condições de valor são avaliadas no valor final do parâmetro derivado acima na prioridade e antes da criação da execução. Se a validação falhar, a solicitação de execução retornará um erro.
Exemplo: SetTemperature comando com defaultValue
{ "parameters": [ { "name": "temperature", "type": "INTEGER", "defaultValue": {"I": 72}, "valueConditions": [ { "comparisonOperator": "IN_RANGE", "operand": {"numberRange": {"min": "60", "max": "80"}} } ] } ] }
Ao iniciar a execução:
Se você fornecer
"temperature": {"I": 75}na solicitação, 75 será usadoSe você omitir o parâmetro de temperatura, o valor padrão 72 será usado
Ambos os valores são validados em relação à condição de intervalo [60,80]
Estados de comando
Os comandos no seu Conta da AWS podem estar em um dos três estados: Disponível, Obsoleto ou Exclusão pendente.
- Disponível
-
Após a criação bem-sucedida, um comando fica no estado Disponível e pode ser executado em dispositivos.
- Preterido
-
Marque comandos para suspensão de uso quando não forem mais necessários. Comandos obsoletos não podem iniciar novas execuções, mas as execuções pendentes continuam sendo concluídas. Para habilitar novas execuções, restaure o comando para o estado Disponível.
- Exclusão pendente
-
Quando você marca um comando para exclusão, ele é excluído automaticamente se for descontinuado por mais tempo do que o tempo limite máximo (padrão: 12 horas). Essa ação é permanente. Se não for preterido ou for preterido por menos do que o tempo limite, o comando entrará no estado de exclusão pendente e será removido após o tempo limite expirar.
Status de execução do comando
Quando você inicia uma execução em um dispositivo de destino, ela entra no CREATED status e pode fazer a transição para outros status com base nos relatórios do dispositivo. Você pode recuperar informações de status e acompanhar as execuções.
nota
Você pode executar vários comandos simultaneamente em um dispositivo. Use o controle de concorrência para limitar as execuções por dispositivo e evitar sobrecargas. Para obter o máximo de execuções simultâneas por dispositivo, consulte cotas de AWS IoT Device Management comandos.
A tabela a seguir mostra os status de execução e suas transições com base no progresso da execução.
| Status de execução do comando | Iniciado pelo dispositivo/nuvem? | Execução do terminal? | Transições de status permitidas |
|---|---|---|---|
CREATED |
Nuvem | Não |
|
IN_PROGRESS |
Dispositivo | Não |
|
TIMED_OUT |
Dispositivo e nuvem | Não |
|
SUCCEEDED |
Dispositivo | Sim | Não aplicável |
FAILED |
Dispositivo | Sim | Não aplicável |
REJECTED |
Dispositivo | Sim | Não aplicável |
Os dispositivos podem publicar atualizações de status e resultados a qualquer momento usando comandos reservados aos tópicos do MQTT. Para fornecer contexto adicional, os dispositivos podem usar reasonCode reasonDescription campos no statusReason objeto.
O diagrama a seguir mostra as transições de status de execução.
nota
Quando não AWS IoT detecta nenhuma resposta do dispositivo dentro do período de tempo limite, ele é definido TIMED_OUT como um status temporário, permitindo novas tentativas e alterações de estado. Se o seu dispositivo reportar explicitamenteTIMED_OUT, isso se tornará um status de terminal sem mais transições. Para obter mais informações, consulte Execuções de comandos não terminais.
As seções a seguir descrevem as execuções terminais e não terminais e seus status.
Execuções de comandos não terminais
Uma execução não é terminal se puder aceitar atualizações de dispositivos. As execuções não terminais são consideradas ativas. Os seguintes status não são terminais:
-
CREATED
Quando você inicia uma execução no AWS IoT console ou usa a
StartCommandExecutionAPI, as solicitações bem-sucedidas mudam o status paraCREATED. A partir desse status, as execuções podem passar para qualquer outro status não terminal ou terminal. -
IN_PROGRESS
Depois de receber a carga, os dispositivos podem começar a executar instruções e realizar ações especificadas. Durante a execução, os dispositivos podem publicar respostas ao tópico de resposta dos comandos e atualizar o status para
IN_PROGRESS. A partir deIN_PROGRESS, as execuções podem fazer a transição para qualquer status terminal ou não terminal, exceto.CREATEDnota
A
UpdateCommandExecutionAPI pode ser invocada várias vezes comIN_PROGRESSstatus. Especifique detalhes adicionais de execução usando ostatusReasonobjeto. -
TEMPORIZADO_LIMITE
Tanto a nuvem quanto o dispositivo podem acionar esse status. As execuções
CREATEDouIN_PROGRESSo status podem mudarTIMED_OUTpara pelos seguintes motivos:-
Depois de enviar o comando, um cronômetro é iniciado. Se o dispositivo não responder dentro do período especificado, o status da nuvem mudará para
TIMED_OUT. Nesse caso, a execução não é terminal. -
O dispositivo pode substituir o status de qualquer terminal ou relatar um tempo limite e definir o status como.
TIMED_OUTNesse caso, o status permaneceTIMED_OUT, mas os campos doStatusReasonobjeto mudam com base nas informações do dispositivo. A execução se torna terminal.
Para obter mais informações, consulte Valor do tempo limite e status de execução TIMED_OUT.
-
Execuções de comandos terminais
Uma execução se torna terminal quando não aceita mais atualizações de dispositivos. Os status a seguir são terminais. As execuções podem fazer a transição para status de terminal a partir de qualquer status que não seja terminal:CREATED,, IN_PROGRESS ou. TIMED_OUT
-
SUCCEEDED
Se o dispositivo concluir com êxito a execução, ele poderá publicar uma resposta ao tópico de resposta do comando e atualizar o status para
SUCCEEDED. -
FAILED
Quando um dispositivo não consegue concluir a execução, ele pode publicar uma resposta ao tópico de resposta do comando e atualizar o status para
FAILED. Use osreasonDescriptioncamposreasonCodee nostatusReasonobjeto, ou CloudWatch registros, para solucionar falhas. -
REJEITADA
Quando um dispositivo recebe uma solicitação inválida ou incompatível, ele pode invocar a
UpdateCommandExecutionAPI com status.REJECTEDUse osreasonDescriptioncamposreasonCodee nostatusReasonobjeto, ou CloudWatch registros, para solucionar problemas.