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 Device Defender demonstração
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
Esta demonstração mostra como usar a biblioteca do AWS IoT Device Defender para se conectar AWS IoT Device Defendera. A demonstração usa a biblioteca CoreMQTT para estabelecer uma conexão MQTT via TLS (autenticação mútua) com o AWS IoT MQTT Broker e a biblioteca CoreJSON para validar e analisar as respostas recebidas do serviço. AWS IoT Device Defender A demonstração mostra como criar um relatório em formato JSON usando métricas coletadas do dispositivo e como enviar o relatório construído para o AWS IoT Device Defender serviço. A demonstração também mostra como registrar uma função de retorno de chamada na biblioteca CoreMQTT para lidar com as respostas do AWS IoT Device Defender serviço e confirmar se um relatório enviado foi aceito ou rejeitado.
nota
Para configurar e executar as demonstrações do FreeRTOS, siga as etapas em Conceitos básicos do FreeRTOS.
Funcionalidade
Esta demonstração cria uma única tarefa de aplicativo que demonstra como coletar métricas, criar um relatório do Device Defender no formato JSON e enviá-lo ao AWS IoT Device Defender serviço por meio de uma conexão MQTT segura com o MQTT Broker. AWS IoT A demonstração inclui as métricas de rede padrão, bem como métricas personalizadas. Para métricas personalizadas, a demonstração inclui:
-
Uma métrica chamada "
task_numbers" que é uma lista de tarefas do FreeRTOS. IDs O tipo dessa métrica é "lista de números". -
Uma métrica chamada "
stack_high_water_mark" que é a marca d'água no topo da pilha para a tarefa da aplicação de demonstração. O tipo dessa métrica é "números".
A forma como coletamos métricas de rede depende da TCP/IP pilha em uso. Para FreeRTOS+TCP e configurações LWIP compatíveis, fornecemos implementações de coleta de métricas que coletam métricas reais do dispositivo e as enviam no relatório. AWS IoT Device Defender Você pode encontrar as implementações do FreeRTOS+TCP e do LWIP
Para placas que usam qualquer outra TCP/IP pilha, fornecemos definições de esboços das funções de coleta de métricas que retornam zeros para todas as métricas de rede. Implemente as funções em na sua pilha de rede para a pilha de rede enviar métricas reais. O arquivo também está disponível no GitHubfreertos/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c
Pois ESP32, a configuração padrão do LWIP não usa bloqueio central e, portanto, a demonstração usará métricas fragmentadas. Se desejar usar a implementação da coleção de métricas lwIP de referência, defina as seguintes macros em lwiopts.h:
#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1
Veja um exemplo de saída quando você executa a demonstração a seguir.
Se sua placa não estiver usando FreeRTOS+TCP ou uma configuração lwIP compatível, a saída será semelhante à seguinte.
O código-fonte da demonstração está em seu download no diretório ou no GitHubfreertos/demos/device_defender_for_aws/
Inscrevendo-se em tópicos AWS IoT Device Defender
A função subscribeToDefenderTópicosDEFENDER_API_JSON_ACCEPTED para criar a sequência de tópicos na qual as respostas aos relatórios aceitos do Device Defender são recebidas. Ela usa a macro DEFENDER_API_JSON_REJECTED para criar a sequência de tópicos na qual as respostas aos relatórios rejeitados do Device Defender serão recebidas.
Coleta de métricas de dispositivos
A collectDeviceMetricsmetrics_collector.h. As métricas coletadas são o número de bytes e pacotes enviados e recebidos, as portas TCP abertas, as portas UDP abertas e as conexões TCP estabelecidas.
Gerando o AWS IoT Device Defender relatório
A função generateDeviceMetricsReportreport_builder.h. Essa função pega as métricas de rede e um buffer, cria um documento JSON no formato esperado AWS IoT Device Defender e o grava no buffer fornecido. O formato do documento JSON esperado por AWS IoT Device Defender é especificado nas métricas do lado do dispositivo no Guia do desenvolvedor.AWS IoT
Publicando o AWS IoT Device Defender relatório
O AWS IoT Device Defender relatório é publicado no tópico MQTT para publicação de relatórios JSON AWS IoT Device Defender . O relatório é construído usando a macroDEFENDER_API_JSON_PUBLISH, conforme mostrado neste trecho de código
Retorno de chamada tratar respostas
A função publishCallbackDefender_MatchTopic API da AWS IoT Device Defender biblioteca para verificar se a mensagem MQTT recebida é do AWS IoT Device Defender serviço. Se a mensagem for do AWS IoT Device Defender serviço, ela analisará a resposta JSON recebida e extrairá o ID do relatório na resposta. Em seguida, será verificado se o ID do relatório é o mesmo que foi enviado no relatório.