Utilizzare l’ESP32 con il servizio cloud AWS IoT Core

Amazon Web Services o AWS come abbreviazione è un popolare provider di servizi cloud che abilita servizi on-demand come elaborazione, archiviazione, networking, sicurezza, database, ecc. a cui è possibile accedere tramite Internet in tutto il mondo. AWS IoT Core è uno dei tanti servizi cloud offerti da Amazon Web Services (AWS). AWS IoT Core consente ai dispositivi connessi di interagire in modo semplice e sicuro con altre applicazioni cloud e altri dispositivi. In questo articolo impareremo come collegare l'ESP32 con AWS IoT Core e pubblicare la lettura dei sensori su AWS mediante protocollo MQTT.

Introduzione

AWS Internet of Things (AWS IoT) consente una comunicazione bidirezionale sicura tra oggetti connessi a Internet (come sensori, attuatori, dispositivi embedded o elettrodomestici smart) e il cloud AWS. Ciò consente di raccogliere, archiviare e analizzare i dati di telemetria da più dispositivi. Si possono anche creare applicazioni che consentono agli utenti di controllare questi dispositivi dai loro telefoni o tablet. AWS IoT è costituito dai seguenti componenti:

  • Broker di messaggi: fornisce un meccanismo sicuro per oggetti e applicazioni IoT per la ricezione e la pubblicazione di messaggi l'uno dall'altro. È possibile utilizzare il protocollo MQTT per pubblicare e sottoscrivere.
  • Motore delle regole: fornisce l'elaborazione dei messaggi e l'integrazione con altri servizi AWS. È possibile utilizzare un linguaggio basato su SQL per selezionare i dati dai payload dei messaggi, elaborare i dati e inviarli ad altri servizi, come Amazon S3, Amazon DynamoDB e AWS Lambda. È possibile anche utilizzare il broker di messaggi per ripubblicare i messaggi ad altri abbonati.
  • Registro degli oggetti: organizza le risorse associate a ciascun oggetto.
  • Thing Shadows: fornisce rappresentazioni persistenti degli oggetti nel cloud AWS. È possibile pubblicare informazioni aggiornate sullo stato all'oggetto ombra e l'oggetto reale può sincronizzare il suo stato nel momento della connessione. Gli oggetti possono anche pubblicare il loro stato corrente nell'oggetto ombra per l'uso da parte di applicazioni o dispositivi.
  • Servizio di sicurezza e identità: il broker di messaggi e il motore delle regole utilizzano le funzionalità di sicurezza di AWS per inviare i dati in modo sicuro ai dispositivi o ad altri servizi AWS.

Funzionamento di AWS IoT

AWS IoT consente agli oggetti connessi a Internet di connettersi al cloud AWS e consente alle applicazioni cloud di interagire con gli oggetti connessi a Internet. Le comuni applicazioni IoT raccolgono ed elaborano i dati di telemetria dai dispositivi o consentono agli utenti di controllare un dispositivo da remoto. Gli oggetti segnalano il loro stato inviando messaggi, in formato JSON, ai topic MQTT. Ogni topic MQTT possiede un nome gerarchico, ad esempio "casa mia/soggiorno/temperatura". Il broker di messaggi invia ciascun messaggio pubblicato su un topic a tutti i client sottoscritti al topic. È possibile creare regole che definiscono una o più azioni da eseguire in base ai dati in un messaggio. Ad esempio, è possibile inserire, aggiornare o interrogare una tabella DynamoDB o invocare una funzione Lambda. Le regole usano espressioni per filtrare i messaggi. Quando una regola è in accordo con un messaggio, allora esegue l'azione utilizzando le proprietà selezionate. Le regole contengono anche un ruolo IAM che concede l'autorizzazione AWS IoT alle risorse AWS utilizzate per eseguire l'azione. In Figura 1 viene raffigurato come AWS IoT fornisca i servizi cloud che collegano i dispositivi IoT ad altri dispositivi e ai servizi cloud AWS.

Figura 1: AWS IoT mette in contatto i dispositivi IoT e i servizi cloud offerti da AWS

AWS IoT Core supporta i seguenti protocolli di comunicazione:

  • MQTT (Message Queuing and Telemetry Transport)
  • MQTT over WSS (WebSockets Secure)
  • HTTPS (HyperText Transfer Protocol - Secure)
  • LoRaWAN (Long Range Wide Area Network)

Applicazione

In questo articolo vogliamo far interagire una scheda basata sul microcontrollore ESP32 con il servizio AWS IoT. Come puro esempio cercheremo di inviare al servizio cloud i dati di temperatura e umidità raccolti dalla scheda. Per farlo avremo bisogno dei seguenti strumenti hardware e software:

  • una scheda basata su microcontrollore ESP32
  • un sensore di temperatura e umidità DHT11
  • un account AWS
  • l'IDE Arduino per programmare l'ESP32

Setup hardware

La configurazione degli elementi hardware viene riportata in Tabella 1:

Tabella 1: L'uscita a 3,3 V dell'ESP32 va ad alimentare il DHT11, i dati vengono invece trasferiti dal sensore alla scheda tramite il pin 14
ESP32 DHT11
3V3 VCC
GND GND
PIN14 DATA

Account AWS

Dopo l'hardware dobbiamo configurare l'account AWS. Occorre quindi creare un account AWS per chi non ne avesse uno. Dopo aver creato l'account ed eseguito correttamente l'accesso, si aprirà la finestra della Console di gestione AWS. Nella barra di ricerca dei servizi in alto, scriviamo "IoT core" e andiamo a fare clic sul primo risultato. Si aprirà una nuova schermata e sul lato sinistro noteremo la dashboard, con tante opzioni. In realtà ci interessano solo due opzioni: Gestione e Sicurezza. Ora dobbiamo creare un oggetto associato al nostro progetto. Per questo, seguiremo i seguenti passaggi:

  • Specificare le proprietà dell'oggetto
  • Configurazione del certificato del dispositivo
  • Allegare policy al certificato

Proprietà oggetto

Sotto l'opzione di Gestione, fare clic su Oggetti, quindi su Crea Oggetti. Ci viene chiesto di selezionare se creare un singolo oggetto o molti. Ma per la nostra applicazione, selezioniamo Crea singolo oggetto. Quindi fare clic su Successivo. Seguirà la pagina in cui occorre specificare le proprietà dell'oggetto. Per prima cosa, diamo un nome al nostro oggetto, ad esempio, lo possiamo chiamare ESP32_DHT11. In Configurazioni aggiuntive, non è necessario apportare modifiche. Mentre in basso nella pagina l'opzione Device shadow, basta lasciare selezionata la prima opzione Nessuna copia shadow. Quindi fare clic su Successivo.

Certificato del dispositivo

Ora è necessario configurare il certificato del dispositivo. Il servizio IoT di Amazon è sicuro per impostazione predefinita e richiede che ogni dispositivo disponga di un certificato univoco. Questo certificato non solo crittografa i dati inviati dal dispositivo, ma fornisce anche un modo per bloccare i dispositivi. Così, nella pagina appena comparsa, lasciamo selezionata la prima opzione Generazione automatica di un nuovo certificato. Facciamo clic su Successivo.

Allegare la policy al certificato

Ora dobbiamo allegare una policy al certificato che abbiamo creato. Una policy in AWS viene associata ad un'identità o ad una risorsa, e ne definisce le autorizzazioni. Le autorizzazioni determinano ciò che ad un'identità o ad una risorsa è consentito o negato fare. Ma nella lista delle policy, che si è appena aperta, non è presente nessuna. Quindi dobbiamo prima creare una policy. Facciamo clic su Crea Policy. Si aprirà una nuova scheda, in cui dovremo inserire il nome della policy, ad esempio ESP32_policy. Nella parte in basso Documento di policy è dove vanno inserite le autorizzazioni. Sotto Operazione della policy, dal menù a tendina selezioniamo iot:Connect. Questo darà il permesso al dispositivo di connettersi al broker MQTT. All'interno di Risorsa della policy dobbiamo inserire quanto segue:

arn:aws:iot:Region:ID_Account:client/ESP_DHT11

Bisogna fare attenzione a sostituire Region e ID_Account con la regione e con il proprio identificativo Account. Questo ID si trova in alto a destra facendo clic sul proprio nome, con apposita funzione di copia. Dopo aver fatto le modifiche, fare clic su Aggiungi nuova istruzione. Nella nuova riga, in Operazione della policy, selezioniamo iot:Publish per consentire all'oggetto di pubblicare sul topic esp32/pub. All'interno di Risorsa della policy dobbiamo inserire quanto segue:

arn:aws:iot:Region:ID_Account:topic/esp32/pub

Sempre attenzione a sostituire Region e ID_Account. Dopo aver fatto le modifiche fare infine clic su Crea. Ora la policy è stata creata correttamente. Nella scheda di creazione oggetto eravamo rimasti a dover selezionare una policy che non c'era. Adesso invece la policy è presente nella lista delle opzioni, basterà quindi spuntarla e fare clic su Crea oggetto. A questo punto comparirà una nuova scheda dalla quale dovremo scaricare i certificati. In Figura 2 vengono evidenziati in rosso i file da scaricare.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2126 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

2 Commenti

  1. Avatar photo Davide Villa 25 Maggio 2022

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend