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á.
AWS IoT Demo da biblioteca de empregos
Importante
Essa demonstração está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos começar aqui ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente baseado no repositório Amazon-FreeRTOS que está preterido, consulte o Guia de migração do repositório Github do Amazon FreeRTOS.
Introdução
A demonstração da biblioteca AWS IoT Jobs mostra como se conectar ao serviço AWS IoT Jobs por meio de uma conexão MQTT, recuperar um trabalho e processá-lo em um dispositivo. AWS IoT O projeto de demonstração de AWS IoT Jobs usa a porta FreeRTOS para Windows
nota
Para configurar e executar as demonstrações do FreeRTOS, siga as etapas em Comece a usar os FreeRTOS.
Organização de código-fonte
O código de demonstração está no jobs_demo.c arquivo e pode ser encontrado no GitHub diretório.freertos/demos/jobs_for_aws/
Configurar a conexão do agente AWS IoT MQTT
Nesta demonstração, você usa uma conexão MQTT com o corretor AWS IoT MQTT. Essa conexão é configurada da mesma forma que Demonstração de autenticação mútua da coreMQTT.
Funcionalidade
A demonstração mostra o fluxo de trabalho usado para receber trabalhos AWS IoT e processá-los em um dispositivo. A demonstração é interativa e exige que você crie trabalhos usando o AWS IoT console ou o AWS Command Line Interface (AWS CLI). Para obter mais informações sobre como criar um trabalho, consulte create-job na Referência de comandos da AWS CLI . A demonstração exige que o documento do trabalho tenha uma chave actiondefinida como print para exibir uma mensagem no console.
Veja o formato a seguir para esse documento de trabalho.
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
Você pode usar o AWS CLI para criar um trabalho como no exemplo de comando a seguir.
aws iot create-job \ --job-id t12 \ --targets arn:aws:iot:region:123456789012:thing/device1 \ --document '{"action":"print","message":"hello world!"}'
A demonstração também usa um documento de trabalho que tem a chave action definida publish para republicar a mensagem em um tópico. Veja o formato a seguir para esse documento de trabalho.
{ "action": "publish", "message": "ADD_MESSAGE_HERE", "topic": "topic/name/here" }
A demonstração continua até receber um documento de trabalho com a chave action configurada exit para sair da demonstração. O formato do documento de trabalho é o seguinte.
{ "action: "exit" }
Ponto de entrada da demonstração da Jobs
O código-fonte da função de ponto de entrada de demonstração do Jobs pode ser encontrado em GitHub
-
Estabeleça uma conexão MQTT usando as funções auxiliares em
mqtt_demo_helpers.c. -
Inscreva-se no tópico MQTT para a API
NextJobExecutionChanged, usando funções auxiliares emmqtt_demo_helpers.c. A string do tópico é montada anteriormente, usando macros definidas pela biblioteca AWS IoT Jobs. -
Publique no tópico MQTT para a API
StartNextPendingJobExecution, usando funções auxiliares emmqtt_demo_helpers.c. A string do tópico é montada anteriormente, usando macros definidas pela biblioteca AWS IoT Jobs. -
Chame repetidamente
MQTT_ProcessLooppara receber mensagens de entrada que são entregues aoprvEventCallbackpara processamento. -
Depois que a demonstração receber a ação de saída, cancele sua inscrição do tópico MQTT e desconecte-se usando as funções auxiliares no arquivo
mqtt_demo_helpers.c.
Retorno de chamada para mensagens MQTT recebidas
A prvEventCallbackJobs_MatchTopic partir da biblioteca AWS IoT Jobs para classificar a mensagem MQTT recebida. Se o tipo de mensagem corresponder a um novo trabalho, prvNextJobHandler() será chamado.
A função prvNextJobHandlerprvSendUpdateForJob é particularmente interessante.
Enviar uma atualização para um trabalho em execução
A função prvSendUpdateForJob()Jobs_Update() da biblioteca Jobs para preencher a string de tópico usada na operação de publicação do MQTT que se segue imediatamente.