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.