AWS IoT Device Defender demonstração - FreeRTOS

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

Esta é uma versão arquivada do Guia do usuário do FreeRTOS para usar com a versão 202210.00 do FreeRTOS. Para obter a versão mais recente deste documento, consulte o Guia do usuário do 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

Essa 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 maneira de coletar métricas de rede depende da pilha TCP/IP 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 em. GitHub

Para placas que usam uma outra pilha TCP/IP, fornecemos as definições de esboço das funções de coleta de métricas que retornam zeros para todas as métricas de rede. Implemente as funções em freertos/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c na sua pilha de rede para a pilha de rede enviar métricas reais. O arquivo também está disponível no GitHubsite.

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.

Console output showing MQTT connection, subscriptions, and message exchanges for a demo.

Se sua placa não estiver usando FreeRTOS+TCP ou uma configuração lwIP compatível, a saída será semelhante à seguinte.

Console output showing MQTT connection, subscription, and error messages for network stack implementation.

O código-fonte da demonstração está em seu download no freertos/demos/device_defender_for_aws/ diretório ou no GitHubsite.

Inscrevendo-se em tópicos AWS IoT Device Defender

A função subscribeToDefenderTópicos se inscreve nos tópicos do MQTT sobre os quais as respostas aos relatórios publicados do Device Defender serão recebidas. Ela usa a macro DEFENDER_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 collectDeviceMetricsfunção reúne métricas de rede usando as funções definidas emmetrics_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 generateDeviceMetricsReport gera um relatório do Device Defender usando a função definida emreport_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 no GitHub site.

Retorno de chamada tratar respostas

A função publishCallback trata as mensagens MQTT de publicação recebidas. Ele usa a Defender_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.