

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.

# AWS IoT Device Defender demostración
<a name="dd-demo"></a>

**importante**  <a name="deprecation-message-demo"></a>
Esta demostración está alojada en el Amazon-FreeRTOS repositorio, que está en desuso. Recomendamos [empezar por aquí](freertos-getting-started-modular.md) al crear un nuevo proyecto. Si ya tiene un proyecto de Freertos existente basado en el Amazon-FreeRTOS repositorio ahora obsoleto, consulte la. [Amazon-FreeRTOS Guía de migración del repositorio de Github](github-repo-migration.md)

## Introducción
<a name="dd-demo-introduction"></a>

Esta demostración le muestra cómo utilizar la biblioteca AWS IoT Device Defender para conectarse a. [AWS IoT Device Defender](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender.html) La demostración utiliza la biblioteca CoreMQTT para establecer una conexión MQTT mediante TLS (autenticación mutua) con el AWS IoT MQTT Broker 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 AWS IoT Device Defender servicio y confirmar si un informe enviado ha sido aceptado o rechazado.

**nota**  
Para configurar y ejecutar las demostraciones de FreeRTOS, siga los pasos que se indican en [Introducción a FreeRTOS](freertos-getting-started.md).

## Funcionalidad
<a name="dd-demo-functionality"></a>

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 AWS IoT Device Defender servicio a través de una conexión MQTT segura al MQTT Broker. 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 TCP/IP pila que se utilice. Para Freertos\+TCP y las configuraciones LWiP 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 de [Freertos\+TCP](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/metrics_collector/freertos_plus_tcp/metrics_collector.c) y LWiP en.](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/metrics_collector/lwip/metrics_collector.c) GitHub

Para las placas que utilizan cualquier otra TCP/IP pila, proporcionamos definiciones abreviadas 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 [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c)sitio web.

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.

![El resultado del registro de la consola muestra los eventos de conexión, publicación y uso de memoria en MQTT de la DemoThing aplicación.](http://docs.aws.amazon.com/es_es/freertos/latest/userguide/images/Defender_p4_supported.png)


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

![Registre los mensajes que muestren el establecimiento de la conexión MQTT, los intentos de suscripción por temas, las cargas útiles de publicación y la gestión de paquetes para una aplicación de demostración.](http://docs.aws.amazon.com/es_es/freertos/latest/userguide/images/Defender_p4_unsupported.png)


El código fuente de la demostración se encuentra en el `{{freertos}}/demos/device_defender_for_aws/` directorio de descargas o en el sitio [GitHub](https://github.com/aws/amazon-freertos/tree/main/demos/device_defender_for_aws)web.

### Suscribirse a AWS IoT Device Defender temas
<a name="dd-demo-subscribing"></a>

La ToDefenderTopics función de suscripción permite [suscribirse](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L514-L530) 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
<a name="dd-demo-collecting-metrics"></a>

La DeviceMetrics función de [recopilación](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L376-L511) 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.

### Generando el AWS IoT Device Defender report
<a name="dd-demo-generating-report"></a>

La DeviceMetricsReport función de [generación](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L552-L581) genera un informe de Device Defender utilizando la función definida en`report_builder.h`. Esa función toma las métricas de red y un búfer, crea un documento JSON en el formato esperado AWS IoT Device Defender y lo escribe en el búfer proporcionado. El formato del documento JSON esperado por AWS IoT Device Defender se especifica en [Device-side las métricas](https://docs.aws.amazon.com/iot/latest/developerguide/detect-device-side-metrics.html) de la *Guía para AWS IoT desarrolladores*.

### Publicar el AWS IoT Device Defender report
<a name="dd-demo-publishing-report"></a>

El AWS IoT Device Defender informe se publica sobre el tema MQTT para la publicación de AWS IoT Device Defender informes JSON. El informe se crea mediante la macro`DEFENDER_API_JSON_PUBLISH`, como se muestra en este [fragmento de código del](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L691-L695) sitio web. GitHub 

### Devolución de llamada para gestionar las respuestas
<a name="dd-demo-callback-handling"></a>

La función [ publishCallback](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L302-L373) gestiona los mensajes de publicación de MQTT entrantes. Utiliza la `Defender_MatchTopic` API de la AWS IoT Device Defender biblioteca para comprobar si el mensaje MQTT entrante proviene del servicio. AWS IoT Device Defender Si el mensaje proviene del AWS IoT Device Defender servicio, 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.