

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

**Importante**  <a name="deprecation-message-demo"></a>
Questa demo è ospitata nel repository Amazon-FreeRTOS che è obsoleto. Ti consigliamo di [iniziare da qui quando crei un nuovo progetto](freertos-getting-started-modular.md). Se disponi già di un progetto FreeRTOS esistente basato sull'ormai obsoleto repository Amazon-FreerTOS, consulta il. [Guida alla migrazione del repository Github di Amazon-FreeRTOS](github-repo-migration.md)

## Introduzione
<a name="dd-demo-introduction"></a>

Questa demo mostra come utilizzare la libreria Device Defender a cui connettersi. AWS IoT [AWS IoT Device Defender](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender.html) La demo utilizza la libreria CoreMQTT per stabilire una connessione MQTT tramite TLS (autenticazione reciproca) a AWS IoT MQTT Broker e la libreria CoreJSON per convalidare e analizzare le risposte ricevute dal servizio. AWS IoT Device Defender La demo mostra come creare un report in formato JSON utilizzando le metriche raccolte dal dispositivo e come inviare il report costruito al servizio. AWS IoT Device Defender La demo mostra anche come registrare una funzione di callback con la libreria CoreMQTT per gestire le risposte del AWS IoT Device Defender servizio e confermare se un report inviato è stato accettato o rifiutato.

**Nota**  
Per configurare ed eseguire le demo di FreerTOS, segui i passaggi indicati. [Inizia con FreerTOS](freertos-getting-started.md)

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

Questa demo crea un'unica attività applicativa che dimostra come raccogliere metriche, creare un report Device Defender in formato JSON e inviarlo al AWS IoT Device Defender servizio tramite una connessione MQTT sicura a MQTT Broker. AWS IoT La demo include le metriche di rete standard e le metriche personalizzate. Per quanto riguarda le metriche personalizzate, la demo include:
+ Una metrica denominata "`task_numbers`" che è un elenco di attività FreerTOS. IDs Il tipo di questa metrica è «elenco di numeri».
+ Una metrica denominata "`stack_high_water_mark`" che indica lo stack high watermark per l'attività dell'applicazione demo. Il tipo di questa metrica è «numero».

Il modo in cui raccogliamo le metriche di rete dipende dallo TCP/IP stack in uso. Per FreeRTOS\+TCP e configurazioni LWIP supportate, forniamo implementazioni di raccolta di metriche che raccolgono metriche reali dal dispositivo e le inviano nel rapporto. AWS IoT Device Defender [Puoi trovare le implementazioni per [FreeRTOS\+TCP e LWip su](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/metrics_collector/freertos_plus_tcp/metrics_collector.c).](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/metrics_collector/lwip/metrics_collector.c) GitHub

Per le schede che utilizzano qualsiasi altro TCP/IP stack, forniamo definizioni stub delle funzioni di raccolta delle metriche che restituiscono zeri per tutte le metriche di rete. Implementa le funzioni nel tuo stack di rete `{{freertos}}/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c` per inviare metriche reali. Il file è disponibile anche sul sito Web. [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c)

Infatti ESP32, la configurazione LWip predefinita non utilizza il core locking e quindi la demo utilizzerà metriche stubbed. Se desideri utilizzare l'implementazione della raccolta di metriche LWip di riferimento, definisci le seguenti macro in: `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
```

Di seguito è riportato un esempio di output quando si esegue la demo.

![Output del log della console che mostra gli eventi di connessione MQTT, pubblicazione e utilizzo della memoria per l' DemoThing applicazione.](http://docs.aws.amazon.com/it_it/freertos/latest/userguide/images/Defender_p4_supported.png)


Se la scheda non utilizza FreeRTOS\+TCP o una configurazione LWIP supportata, l'output sarà simile al seguente.

![Messaggi di log che mostrano la creazione di una connessione MQTT, i tentativi di sottoscrizione agli argomenti, i payload di pubblicazione e la gestione dei pacchetti per un'applicazione demo.](http://docs.aws.amazon.com/it_it/freertos/latest/userguide/images/Defender_p4_unsupported.png)


Il codice sorgente della demo si trova nella `{{freertos}}/demos/device_defender_for_aws/` directory di download o sul sito Web. [GitHub](https://github.com/aws/amazon-freertos/tree/main/demos/device_defender_for_aws)

### Iscrizione agli argomenti AWS IoT Device Defender
<a name="dd-demo-subscribing"></a>

La funzione [ subscribeToDefenderTopics sottoscrive gli argomenti](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L514-L530) MQTT sui quali verranno ricevute le risposte ai report pubblicati da Device Defender. Utilizza la macro `DEFENDER_API_JSON_ACCEPTED` per costruire la stringa dell'argomento in base alla quale vengono ricevute le risposte ai report di Device Defender accettati. Utilizza la macro `DEFENDER_API_JSON_REJECTED` per costruire la stringa dell'argomento in base alla quale verranno ricevute le risposte ai report di Device Defender rifiutati.

### Raccolta delle metriche dei dispositivi
<a name="dd-demo-collecting-metrics"></a>

La [ collectDeviceMetrics](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L376-L511)funzione raccoglie le metriche di rete utilizzando le funzioni definite in. `metrics_collector.h` Le metriche raccolte sono il numero di byte e pacchetti inviati e ricevuti, le porte TCP aperte, le porte UDP aperte e le connessioni TCP stabilite.

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

La funzione [ generateDeviceMetricsReport](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L552-L581) genera un rapporto Device Defender utilizzando la funzione definita in`report_builder.h`. Questa funzione prende le metriche di rete e un buffer, crea un documento JSON nel formato previsto da AWS IoT Device Defender e lo scrive nel buffer fornito. *Il formato del documento JSON previsto da AWS IoT Device Defender è specificato nelle metriche lato [dispositivo nella Guida per gli sviluppatori](https://docs.aws.amazon.com/iot/latest/developerguide/detect-device-side-metrics.html).AWS IoT *

### Pubblicazione del rapporto AWS IoT Device Defender
<a name="dd-demo-publishing-report"></a>

Il AWS IoT Device Defender rapporto è pubblicato sull'argomento MQTT per la pubblicazione di report JSON AWS IoT Device Defender . Il report viene creato utilizzando la macro`DEFENDER_API_JSON_PUBLISH`, come illustrato in questo [frammento di codice](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L691-L695) sul sito Web. GitHub 

### Callback per la gestione delle risposte
<a name="dd-demo-callback-handling"></a>

La funzione [publishCallback](https://github.com/aws/amazon-freertos/blob/main/demos/device_defender_for_aws/defender_demo.c#L302-L373) gestisce i messaggi di pubblicazione MQTT in entrata. Utilizza l'`Defender_MatchTopic`API della AWS IoT Device Defender libreria per verificare se il messaggio MQTT in arrivo proviene dal servizio. AWS IoT Device Defender Se il messaggio proviene dal AWS IoT Device Defender servizio, analizza la risposta JSON ricevuta ed estrae l'ID del rapporto nella risposta. L'ID del rapporto viene quindi verificato in modo che sia lo stesso di quello inviato nel rapporto.