Azure IoT Hub: guida introduttiva al back-end per soluzioni IoT
Azure IoT Hub è un servizio ospitato nel Cloud che permette di effettuare comunicazioni biridrezionali tra un’applicazione e miliardi di dispositivi IoT (Internet of Things), permettendo di monitorarli e controllarl e comportandosi come un punto di smistamento delel informazioni che vengono ricevute. Creare una soluzione IoT diventa semplicissimo e richiede pochissimi minuti per l’implementazione.
In questa guida introduttiva vi mostrerò come creare un Azure IoT Hub e come collegare un dispositivo RaspberryPi che invierà dati di telemetria (temperatura e umidità), senza scrivere una riga di codice.
Per poter creare un nuovo Azure IoT Hub è suffciente collegarsi al portale Azure e creare una nuova risorsa IoT Hub.
Figura 1: Creazione di una nuova risorsa IoT Hub nel portale di Azure
Inserite le informazioni relative alla sottoscrizione, al resource group, alla regione e il nome che volete dare vostro IoT Hub.
Figura 2: Informazioni relative alla creazione del nuovo Azure IoT Hub
Definite il Pricing and Scale Tier. Alla pagina https://azure.microsoft.com/it-it/pricing/details/iot-hub/ trovate maggior informazioni sui limiti dei messaggi che ogni dispositivo IoT può inviare e il relativo prezzo di acquisto dell’Hub. Nel mio caso ho deciso di usare un piano gratuito, che ha il limite di 8.000 messaggi al giorno.
Figura 3: Definizione del Pricing and scale tier dell’Azure IoT Hub
Controllate le informazioni inserite e procedete alla creazione dell’Azure IoT Hub.
Figura 4: Pagina di riepilogo della creazione del nuovo Azure IoT Hub
Figura 5: Creazione del nuovo Azure IoT Hub completata
Dalla pagina del portale è possibile visualizzare tutte le informazioni relative al nuovo Azure IoT Hub creato.
Figura 6: Pagina di Overview del nuovo Azure IoT Hub creato
Per aggiungere un nuovo dispositivo IoT da cui collezionare i dati cliccate sul collegamento IoT Devices presente nella sezione Explorers e fate clic su +New
Figura 7: Aggiunta di un nuovo dispositivo IoT
Scegliete un nome per identificare il vostro dispositivo e fate clic su Save. In questo modo verranno create delle chiavi che permetteranno al dispositivo di collegarsi all’Azure IoT Hub. L’Hub IoT consente un canale di comunicazione sicuro per i dispositivi per l’invio dei dati. L’autenticazione del dispositivo abilita ogni dispositivo a connettersi all’hub IoT e ad essere gestito in modo sicuro.
Figura 8: Creazione del nuovo dispositivo IoT nel portale di Azure
È possibile visualizzare le proprietà del dispositivo cliccando sul suo nome nel nodo IoT Devices presente nella sezione Explorers.
Figura 9: Il dispositivo creato è visibile nella pagina del portale di Azure
Selezionate il dispositivo creato e copiate il valore del Primary Connection String. Questa stringa verrà successivamente utilizzata per autenticare la connessione dal dispositivo IoT verso l’Azure IoT Hub.
Figura 10: Stringa di connessione utilizzata per autenticare la connessione dal dispositivo IoT verso l’Azure IoT Hub
Test del dispositivo utilizzando il Raspberry Pi Simulator
Per testare il dispositivo creato in Azure Iot Hub utilizzerò un online Raspberry Pi simulator. Dopo aver aperto la pagina, chiudete il popup e nell’area di codice presente sulla destra localizzate la riga 15 che riporta const connectionString = ‘[Your IoT hub device connection string]’;
Figura 11: Pagina dell’Azure IoT RaspeberryPI simulator
Figura 12: Stringa del codice da modificare
Modificate il codice presente tra gli apici [Your IoT hub device connection string] con la stringa di connessione che avete precedentemente copiato dal portale di Azure, relativa al dispositivo che state configurando. In figura 13 è mostrato il codice sostituito con i parametri di connessione corretti. Nel mio caso la stringa è HostName=ilmioHub.azure-devices.net;DeviceId=RaspberryPi01;SharedAccessKey=MiaChave
Al termine della sostituzione, cliccate su Run per cominciare ad inviare i dati dal simulatore RaspBerryPi ad Azure IoT Hub.
Figura 13: Codice modificato con la stringa di connessione per inviare dati ad Azure IoT Hub
In console noterete l’output con i dati che il sensore del RaspberryPi Simulator sta inviando all’Azure IoT Hub. Ogni volta che viene inviato un dato si illumina anche il led presente nella pagina.
Figura 14: Invio dei dati dal RaspberryPi Simulator all’Azure IoT Hub
Dal portale di Azure è possibile visualizzare quindi il numero dei messaggi che il vostro dispositivo IoT ha inviato ad Azure IoT Hub.
Figura 15: Dati inviati dal dispositivo IoT ad Azure Iot Hub
Congratulazioni! Avete appena terminato di configurare Azure IoT Hub per collezionare dati da sensori presenti su un dispositivo IoT.
Visualizzazione dei dati in tempo reale da Azure IoT Hub utilizzando una web app
È possibile visualizzare i dati che vengono collezionati da Azure IoT Hub utilizzando una semplice web app scritta in Node.js presente su GitHub all’indirizzo https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization
Figura 16: Visualizzazione dei dati in tempo reale da Azure IoT Hub utilizzando una web app
Create una nuova web app utilizzando il portale di Azure. I parametri necessari alla creazione sono:
- Publish: Code
- Runtime stack: Node 10.6
- Operating System: Windows
Potete utilizzare un App Service Plan gratuito di tipo Free F1
Figura 17: Creazione della nuova web app e relativi parametri necessari per l’esecuzione dell’applicazione node.js
Figura 18: Schermata di riepilogo della creazione della nuova web app
Figura 19: Creazione della nuova web app completata
Figura 20: Schermata di Overview della nuova web app
Procuratevi dall’Azure IoT Hub che avete creato precedentemente due informazioni, che verranno utilizzate per connettere la web app al vostro hub:
- La connection string per il service endpoint, recuperabile dal nodo Shard Access Policies di Azure IoT Hub
- Il Consumer Group, recuperabile dal nodo Built-in endpoints
Nelle figure sotto sono mostrate le immagini relative alle informazioni da recuperare:
Figura 21: Service connection endpoint di Azure IoT Hub
Figura 22: Consumer Group di Azure IoT Hub
Modificate la Web App che avete creato precedentemente inserendo due nuovi Application Settings:
- IoTHubConnectionString
- EventHubConsumerGroup
E indicando i valori che avete visualizzato prima.
Nel mio caso il parametro IoTHubConnectionString è HostName=ilmioHub.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=chiavediaccesso, mentre il parametro EventHubConsumerGroup è $Default
Figura 23: Creazione dell’application setting IoTHubConnectionString
Figura 24: : Creazione dell’application setting EventHubConsumerGroup
Modificate le configurazioni della web app inserendo come Stack
.NET Core e mettete i Web Sockets su On
Figura 25: Modifica dello stack e dei web sockets della web app
Distribuzione dell’applicazione web
Come ho già scritto, l’applicazione web da utilizzare è presente su GitHub all’indirizzo https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization. Utilizzate il Deployment Center della Azure Web App per poterla scaricare e successivamente eseguire nella vostra web app. Scegliete il manual deployment e come origine dei dati scegliete External.
Figura 26: Configurazione dell’origine dati della web app
Figura 27: Scelta del Build provider
Indicate come origine dei dati da inserire nella web app il Repository https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization e come Branch utilizzate master. Ricordatevi di mettere a No il valore del Private Repository.
Figura 28: Configurazione del repository della web app
Figura 29: Schermata finale della configurazione del deployment della web app
Attendete che i file della web app vengano scaricati dal repository di Github e quando lo status sarà Success la vostra applicazione si sarà installata.
Figura 30: Installazione della web app completata
Collegandovi all’indirizzo della web app potrete vedere i dati in tempo reale che l’applicazione web sta visualizzando e che sta recuperando dal vostro Azure IoT Hub.
Figura 31: La web app mostra i dati collezionati dall’Azure IoT Hub
Conclusioni
Azure IoT Hub permette di collezionare un alto volume di dati telemetrici proveniente di dispositivi IoT e di poterli successivamente processare. Le funzionalità offerte consentono di compilare soluzioni IoT scalabili complete ed è adattabile a milioni di dispositivi simultaneamente connessi e a milioni di eventi al secondo per supportare carichi di lavoro anche molto elevati. Grazie all’autenticazione, ogni dispositivo può connettersi ed essere gestito in maniera sicura e bidirezionale.