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 High-level fluxo de trabalho de comandos.
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 de instrução enviados aos dispositivos
Tópico - Canal MQTT para comunicação de comandos
- 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 de sensores ou fazer upload de registros. Em seguida, os dispositivos retornam os resultados para a nuvem, permitindo o monitoramento e o 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 modelo de carga útil. 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 executar. 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. Os dispositivos que usam o protocolo MQTT5 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 útil
-
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 que você fornece. Por exemplo, em vez de criar cargas separadas para diferentes valores de temperatura, crie um modelo com um espaço reservado para temperatura e especifique o valor durante a execução. Isso elimina a manutenção de várias cargas semelhantes.
- Dispositivo alvo
-
Para executar um comando, especifique um dispositivo de destino usando o nome da coisa (para dispositivos registrados com AWS IoT) ou a 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. 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 é enviada ao 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 um ID de execução exclusivo é gerado. O dispositivo executa o comando e relata o progresso para AWS IoT o. Device-side a lógica determina o comportamento de execução e os relatórios de status para tópicos reservados.
Condições do 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 CommandParameterValue tipo
- 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 cadeias de caracteres 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 falhadas retornam um erro e impedem a criação da execução.
Prioridade e avaliação do valor do parâmetro
Ao iniciar 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 deles 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 em 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 está no estado Disponível e pode ser executado em dispositivos.
- Preterido
-
Marque comandos como suspensos quando não forem mais necessários. Comandos obsoletos não podem iniciar novas execuções, mas as execuções pendentes continuam até serem concluídas. Para ativar 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 descontinuado ou obsoleto 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, ele 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 simultaneidade para limitar as execuções por dispositivo e evitar sobrecarga. Para ver 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 por device/cloud? | 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 para tópicos do MQTT. Para fornecer contexto adicional, os dispositivos podem usar reasonDescription campos reasonCode e no statusReason objeto.
O diagrama a seguir mostra as transições do 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 seu dispositivo relatar explicitamenteTIMED_OUT, isso se tornará um status de terminal sem mais transições. Para obter mais informações, consulte Non-terminal execuções de comandos.
As seções a seguir descrevem as execuções terminais e não terminais e seus status.
Non-terminal execuções de comandos
Uma execução não é terminal se puder aceitar atualizações de dispositivos. Non-terminal as execuções são consideradas ativas. Os seguintes status não são terminais:
-
CREATED
Quando você inicia uma execução a partir do AWS IoT console ou usa a
StartCommandExecutionAPI, as solicitações bem-sucedidas alteram 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 específicas. Durante a execução, os dispositivos podem publicar respostas ao tópico de resposta do comando e atualizar o status para o.
IN_PROGRESSA partir deIN_PROGRESS, as execuções podem passar 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 em
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 da duração especificada, 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 do 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 passar para o status do terminal a partir de qualquer status não terminal:CREATED,, IN_PROGRESS ou. TIMED_OUT
-
SUCCEEDED
Se o dispositivo concluir a execução com êxito, ele poderá publicar uma resposta no 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 para o tópico de resposta do comando e atualizar o status para
FAILED. Use osreasonDescriptioncamposreasonCodee nostatusReasonobjeto, ou nos 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 nos CloudWatch registros, para solucionar problemas.