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á.
Fluxo de trabalho de comandos de alto nível
Esse fluxo de trabalho mostra como os dispositivos interagem com AWS IoT Device Management os comandos. Todas as solicitações da API HTTP usam credenciais Sigv4 para assinatura.
Visão geral do fluxo de trabalho
Criar e gerenciar comandos
Para criar e gerenciar comandos para seus dispositivos, realize as etapas a seguir.
-
Criar um recurso de comando
Crie um comando no Command Hub
ou usando a CreateCommandAPI. -
Especificar a carga útil
Forneça uma carga em qualquer formato. Especifique o tipo de conteúdo para garantir a interpretação correta do dispositivo.
Para comandos dinâmicos com modelos de carga útil, a carga útil final é gerada em tempo de execução usando os parâmetros fornecidos. Os modelos oferecem suporte somente ao formato JSON, mas a carga gerada pode ser enviada como JSON ou CBOR.
-
(Opcional) Gerenciar os comandos criados
Atualize o nome de exibição e a descrição após a criação. Marque os comandos como obsoletos quando não forem mais necessários ou exclua-os permanentemente. Para modificar as informações do Payload, crie um novo Comando.
Escolher o dispositivo de destino para os comandos e assinar os tópicos do MQTT
Escolha seu dispositivo de destino e configure os tópicos do MQTT para receber comandos e publicar respostas.
-
Escolher o dispositivo de destino para o comando
Escolha um dispositivo de destino para receber e executar o Comando. Use um nome Thing para dispositivos registrados ou uma ID de cliente para dispositivos não registrados. Para obter mais informações, consulte Considerações sobre dispositivos de destino.
-
Configurar a política AWS IoT do dispositivo
Configure uma política do IAM concedendo permissões para receber execuções e publicar atualizações. Consulte Exemplo de política do IAM exemplos de políticas.
-
Estabelecer uma conexão do MQTT
Conecte dispositivos ao agente de mensagens e assine os tópicos de solicitação e resposta. Os dispositivos precisam de
iot:Connectpermissão. Encontre seu endpoint do plano de dados usando o comando daDescribeEndpointAPI ou dadescribe-endpointCLI:aws iot describe-endpoint --endpoint-type iot:Data-ATSA execução desse comando exibe o endpoint do plano de dados específico da conta, conforme mostrado abaixo.
account-specific-prefix.iot.region.amazonaws.com -
Inscreva-se nos tópicos de comandos
Inscreva-se no tópico de solicitação de comandos. Quando você inicia uma execução, o agente de mensagens publica a carga neste tópico. Seu dispositivo recebe e processa o Comando.
(Opcional) Inscreva-se nos tópicos de resposta (
acceptedourejected) para receber a confirmação se o serviço de nuvem aceitou ou rejeitou a resposta do dispositivo.Neste exemplo, substitua:
-
por<device>thingouclientdependendo de o dispositivo que você está considerando ter sido registrado como uma coisa da IoT ou especificado como um cliente do MQTT. -
pelo identificador exclusivo do seu dispositivo de destino. Esse ID pode ser o exclusivo do cliente do MQTT ou o nome de uma coisa.<DeviceID>
nota
Se o tipo de carga não for JSON ou CBOR, o
<PayloadFormat>campo pode não estar presente no tópico de solicitação de comandos. Para obter o formato da carga útil, recomendamos que você use MQTT5 para obter as informações de formato dos cabeçalhos das mensagens do MQTT. Para obter mais informações, consulte Tópicos 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> -
Iniciar e monitorar as execuções de comando para o dispositivo de destino
Depois de criar os comandos e especificar os destinos deles, você pode iniciar a execução no dispositivo de destino realizando as etapas a seguir.
-
Iniciar a execução do comando no dispositivo de destino
Inicie a execução no Command Hub
ou usando a StartCommandExecutionAPI com o endpoint específico da sua conta. Useiot:Data-ATSpara pilha dupla (IPv4/IPv6) ouiot:Jobssomente para. IPv4A API publica a carga no tópico de solicitação de comandos.
nota
Se o dispositivo estiver off-line e usar sessões persistentes do MQTT, o Comando aguarda no agente de mensagens. Quando o dispositivo se reconecta antes do tempo limite, ele pode processar o Comando e publicar os resultados. Se o tempo limite expirar, a execução expirará e a carga será descartada.
-
Atualizar o resultado da execução do comando
O dispositivo recebe a carga, processa o comando, executa as ações especificadas e publica os resultados no tópico de resposta dos comandos usando a API baseada em
UpdateCommandExecutionMQTT. Se estiver inscrito em tópicos aceitos e rejeitados, o dispositivo receberá a confirmação se o serviço de nuvem aceitou ou rejeitou a resposta.Dependendo do que você especificou no tópico da solicitação,
<devices>podem ser coisas ou clientes, e<DeviceID>pode ser o nome do seu AWS IoT item ou o ID do cliente MQTT.nota
Só
<PayloadFormat>pode ser JSON ou CBOR no tópico de resposta dos comandos.$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat> -
(Opcional) Recuperar o resultado da execução do comando
Recupere os resultados da execução do AWS IoT console ou usando
GetCommandExecution. O dispositivo deve publicar os resultados no tópico de resposta dos comandos para obter as informações mais recentes. Veja detalhes adicionais, incluindo hora da última atualização, resultado e hora de conclusão.
(Opcional) Habilitar notificações para eventos de comandos
Inscreva-se nos eventos de Commands para receber notificações quando o status de execução mudar.
-
Criar uma regra de tópico
Inscreva-se no tópico de eventos de Comandos para receber notificações de mudança de status. Crie uma regra de tópico para rotear dados do dispositivo para outros AWS IoT serviçosAWS Lambda, como Amazon SQS e AWS Step Functions, usando o AWS IoT console ou. Criação de uma AWS IoT regra
Neste exemplo, substitua
pelo identificador do comando para o qual você deseja receber notificações e<CommandID>pelo status da execução do comando.<CommandExecutionStatus>$aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>nota
Para receber notificações de todos os comandos e os status de execução deles, você pode usar caracteres curinga e assinar o tópico a seguir.
$aws/events/commandExecution/+/# -
Receber e processar eventos de comandos
Gerencie as notificações push de comandos e crie aplicativos usando os eventos inscritos.
O código a seguir mostra um exemplo de carga útil para as notificações de eventos de comandos que você receberá.
{ "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}