Demostración de AWS IoT Device Defender - FreeRTOS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Demostración de AWS IoT Device Defender

importante

Esta demostración está alojada en el repositorio de Amazon-FreeRTOS, que está en desuso. Recomendamos empezar por aquí al crear un nuevo proyecto. Si ya tiene un proyecto FreeRTOS existente basado en el repositorio Amazon FreeRTOS, ahora obsoleto, consulte Guía de migración del repositorio Github de Amazon-FreeRTOS.

Introducción

Esta demostración le muestra cómo utilizar la biblioteca de AWS IoT Device Defender para conectarse a AWS IoT Device Defender. La demostración utiliza la biblioteca coreMQTT para establecer una conexión MQTT con TLS (autenticación mutua) con el agente de MQTT de AWS IoT y la biblioteca coreJSON para validar y analizar las respuestas recibidas del servicio AWS IoT Device Defender. La demostración muestra cómo crear un informe con formato JSON utilizando las métricas recopiladas del dispositivo y cómo enviar el informe creado al servicio AWS IoT Device Defender. La demostración también muestra cómo registrar una función de devolución de llamada en la biblioteca coreMQTT para gestionar las respuestas del servicio AWS IoT Device Defender para confirmar si un informe enviado se ha aceptado o rechazado.

nota

Para configurar y ejecutar las demostraciones de FreeRTOS, sigue los pasos que se indican en Introducción a FreeRTOS.

Funcionalidad

Esta demostración crea una tarea de aplicación única que demuestra cómo recopilar métricas, crear un informe de Device Defender en formato JSON y enviarlo al servicio AWS IoT Device Defender a través de una conexión MQTT segura al agente de MQTT de AWS IoT. La demostración incluye las métricas de red estándar, así como métricas personalizadas. Para las métricas personalizadas, la demostración incluye:

  • Una métrica denominada “task_numbers”, que es una lista de identificadores de tareas de FreeRTOS. El tipo de esta métrica es “lista de números”.

  • Una métrica denominada “stack_high_water_mark”, que es el límite máximo de pila para la tarea de la aplicación de demostración. El tipo de esta métrica es “número”.

La forma en que recopilamos las métricas de red depende de la pila de TCP/IP que se utilice. Para FreeRTOS+TCP y las configuraciones IwIP compatibles, ofrecemos implementaciones de recopilación de métricas que recopilan métricas reales del dispositivo y las envían al informe AWS IoT Device Defender. Puede encontrar las implementaciones para FreeRTOS+TCP e IwIP en GitHub.

Para las placas que utilizan cualquier otra pila de TCP/IP, se proporcionan definiciones simuladas de las funciones de recopilación de métricas que devuelven ceros para todas las métricas de red. Implemente las funciones de freertos/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c para su pila de red para enviar métricas reales. El archivo también está disponible en el sitio web de GitHub.

Para el ESP32, la configuración de IwIP predeterminada no utiliza el bloqueo de núcleos y, por lo tanto, la demostración utilizará métricas simuladas. Si desea utilizar la implementación de recopilación de métricas de IwIP de referencia, defina las siguientes macros en 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

A continuación se muestra una salida de ejemplo al ejecutar la demostración.

Si la placa no utiliza FreeRTOS+TCP o una configuración IwIP compatible, la salida tendrá el siguiente aspecto.

El código fuente de la demostración está en su directorio freertos/demos/device_defender_for_aws/ de descargas o en el sitio web de GitHub.

Suscripción a temas de AWS IoT Device Defender

La función subscribeToDefenderTopics se suscribe a los temas de MQTT sobre los que se recibirán las respuestas a los informes publicados de Device Defender. Utiliza la macro DEFENDER_API_JSON_ACCEPTED para crear la cadena de temas en la que se reciben las respuestas a los informes aceptados por Device Defender. Utiliza la macro DEFENDER_API_JSON_REJECTED para crear la cadena de temas en la que se reciben las respuestas a los informes rechazados por Device Defender.

Recopilación de métricas de dispositivos

La función collectDeviceMetrics recopila métricas de red mediante las funciones definidas en metrics_collector.h. Las métricas recopiladas son la cantidad de bytes y paquetes enviados y recibidos, los puertos TCP abiertos, los puertos UDP abiertos y las conexiones TCP establecidas.

Generación del informe de AWS IoT Device Defender

La función generateDeviceMetricsReport genera un informe de Device Defender mediante la función definida en report_builder.h. Esta función toma las métricas de red y un búfer, crea un documento JSON en el formato esperado en AWS IoT Device Defender y lo escribe en el búfer proporcionado. El formato del documento JSON esperado en AWS IoT Device Defender se especifica en Métricas del lado del dispositivo en la Guía para desarrolladores de AWS IoT.

Publicación del informe de AWS IoT Device Defender

El informe de AWS IoT Device Defender se publica sobre el tema MQTT para la publicación de informes de AWS IoT Device Defender de JSON. El informe se crea con la macro DEFENDER_API_JSON_PUBLISH, como se muestra en este fragmento de código del sitio web de GitHub.

Devolución de llamada para gestionar las respuestas

La función publishCallback gestiona los mensajes de publicación de MQTT entrantes. Utiliza la API Defender_MatchTopic de la biblioteca de AWS IoT Device Defender para comprobar si el mensaje de MQTT entrante proviene del servicio de AWS IoT Device Defender. Si el mensaje proviene del servicio AWS IoT Device Defender, analiza la respuesta JSON recibida y extrae el ID del informe en la respuesta. A continuación, se comprueba que el ID del informe es el mismo que el enviado en el informe.