Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Microsoft Azure IoT, un'introduzione

Le funzionalità di Azure per gestire i dispositivi connessi basati sull'IoT, comunicare con essi e gestire i dati che vengono generati durante il loro funzionamento.
Le funzionalità di Azure per gestire i dispositivi connessi basati sull'IoT, comunicare con essi e gestire i dati che vengono generati durante il loro funzionamento.
Link copiato negli appunti

L'IoT, Internet of Things o "Internet delle Cose", offre enormi potenzialità di crescita a livello tecnologico ma anche commerciale.

La presenza crescente di "oggetti connessi" nel nostro quotidiano dà la misura di come si moltiplicano le opportunità per aziende e sviluppatori in questa nuova rivoluzione industriale. Per questo Microsoft Azure offre strumenti avanzati grazie ai quali creare applicazioni per l'IoT, comunicare con i dispositivi, monitorarli, automatizzare i processi produttivi e analizzare i dati prodotti.

Lavorare con l'IoT non è sempre semplice né economico e non di rado servono infrastrutture dotate di elevate capacità di elaborazione. Per supportare diverse tipologie di carico e sfruttare al meglio i dati, Azure prevede:

  • soluzioni preconfigurate, flessibili e personalizzabili, con cui accelerare i progetti IoT, collegarsi a una vasta gamma di device e sistemi operativi;
  • Advanced Analytics e apprendimento automatico per l'analisi dei dati e integrare i sistemi aziendali preesistenti.

Inoltre grazie ad Azure si può risparmiare sui costi pagando soltanto per le risorse necessarie al funzionamento di un progetto.

Sempre a proposito di risparmio, tra le applicazioni più interessanti abbiamo la manutenzione predittiva che consente di prevedere i malfunzionamenti prima che si verifichino, sfruttando i dati provenienti da sensori e dispositivi per rilevare segnali di allarme e agire preventivamente sui sistemi prima che siano necessarie spese di riparazione.

Microsoft Azure IoT Hub

Detto questo concentriamoci sull'Hub IoT di Azure. Si tratta del servizio che consente di connettere in modo semplice e sicuro tutti gli asset IoT aziendali. I dati raccolti da un device attraverso la telemetria vengono trasmessi al Cloud e ci permettono di monitorare lo stato di un sistema. Oltre a questo possiamo anche inviare comandi dal Cloud ai device beneficiando di una comunicazione bidirezionale.

Prova gratuitamente Azure

L'affidabilità delle comunicazioni viene garantita dal tracciamento dei recapiti e dalla notifica delle ricezioni; eventuali problemi di connessione (latenze o intermittenze) non impediscono l'invio delle istruzioni che in assenza di collegamento, vengono conservate ed eseguite successivamente, una volta ripristinato.

Piattaforme e protocolli

Quali piattaforme e quali protocolli si devono utilizzare per comunicare con gli oggetti connessi, gestirli e aggiornarli tramite l'Hub IoT di Azure?

Abbiamo il supporto per diversi protocolli, sia proprietari sia open source, e tecnologie che possono interoperare consentendo a sistemisti, sviluppatori e analisti di lavorare con sistemi operativi noti, come Windows o Linux, e protocolli standard tra cui HTTP, AMQP (Advanced Message Queuing Protocol) e MQTT (MQ Telemetry Transport).

I gateway su misura per le comunicazioni con i dispositivi sono implementabili anche con il framework Open Source Azure IoT Gateway SDK, un developer kit concepito per essere indipendente dall'hardware e compatibile con diversi sistemi operativi tra cui Ubuntu 14.04, Ubuntu 15.10, Yocto Linux 3.0 su Intel Edison e Windows 10.

Indipendentemente dallo standard scelto in fase di produzione e dalla piattaforma utilizzata, gli amministratori hanno un controllo completo sui device IoT gestiti; è possibile revocare selettivamente i diritti di accesso di dispositivi specifici sulla base delle proprie esigenze, così come configurare credenziali e identità per ciascun device garantendo la riservatezza dei messaggi scambiati.

Creazione di un Hub IoT su Microsoft Azure

Per creare un Hub IoT tramite Azure accediamo al portale e clicchiamo sulla voce "Esplora" nella sidebar di sinistra. Fatto questo possiamo utilizzare il motore di ricerca interno per trovare rapidamente il collegamento alla sezione "IoT Hub".

Figura 1. Sezione IoT Hub di Azure.
Sezione IoT Hub di Azure

Partendo da quest'ultima clicchiamo su "Aggiungi" e passiamo alla definizione dei parametri dell'Hub IoT. Scegliamo quindi un nome da associare all'Hub, ad esempio "HtmlHubIoT", e decidiamo il piano tariffario più adeguato al progetto che desideriamo sviluppare.

Figura 2. Assegnazione del nome all'Hub IoT.
Assegnazione del nome all'Hub IoT

I piani tariffari offerti si distinguono sulla base delle Unità di Hub utilizzabili, queste corrispondono al numero massimo di messaggi che possiamo gestire nell'arco di una giornata e alla quantità di dispositivi collegabili all'Hub.

Per testare il servizio possiamo sfruttare un piano gratuito da 1 unità, che permette l'invio di messaggi da dispositivo a Cloud e l'invio di istruzioni da Cloud a device. Con il piano gratuito possiamo connettere 500 dispositivi e scambiare un massimo di 8 mila messaggi al giorno.

Per volumi più grandi, dobbiamo acquistare delle unità di Hub, ricordando che per ciascuna unità abbiamo a disposizione un numero massimo di messaggi giornalieri. Il totale di messaggi supportati è dato quindi dal numero di unità moltiplicato per il numero di messaggi previsti dal piano tariffario.

Per esempio, se vogliamo un Hub IoT che supporti 800 mila messaggi, prendiamo 2 unità del piano S1 che prevede fino a 400 mila messaggi al giorno per singola unità.

Figura 3. Selezione del piano tariffario.
Selezione del piano tariffario

Una volta scelto il piano tariffario e impostato il numero delle unità IoT Hub sulla base della configurazione desiderata, utilizziamo l'apposito menu a discesa per selezionare la quantità di partizioni per i messaggi da dispositivo a Cloud, di default abbiamo a disposizione 4 partizioni ma si può modificare questo valore a seconda delle esigenze.

Il passaggio successivo è la creazione di un gruppo di risorse per l'Hub IoT, possiamo quindi utilizzare un gruppo preesistente o definirne uno nuovo ("IoTGroup" nel nostro esempio) per poi passare alla sezione dedicata alla scelta della sottoscrizione, quest'ultima viene impostata automaticamente come "a consumo" e si pagheranno soltanto le risorse utilizzate.

L'ultima impostazioni riguarda la località di riferimento per la distribuzione dell'Hub IoT che, se si opera dall'Italia, è l'Europa occidentale.

Figura 4. Creazione gruppo, sottoscrizione e selezione della località per la distribuzione dell'Hub.
Creazione gruppo, sottoscrizione e selezione della località per la distribuzione dell'Hub

Cliccando sul pulsante "Crea" viene avviata la distribuzione dell'Hub IoT ora reperibile nel gruppo di risorse di appartenenza.

Figura 5. Nuovo Hub IoT in Azure.
Nuovo Hub IoT in Azure

Connettere un dispositivo all'Hub IoT di Azure

Una volta creato l'Hub IoT in Azure è possibile effettuare un semplice test di funzionamento connettendo un dispositivo al servizio. L'esempio proposto riguarda il collegamento di una single board RaspBerry Pi 2 gestita tramite sistema operativo Linux compatibile, come per esempio Debian, Fedora, Raspbian (utilizzato per questo esempio), Ubuntu o Yocto Linux. Il linguaggio scelto per le istruzioni di connessione è JavaScript, ma si può optare anche per C, C# e Java.

Il codice JavaScript utilizzato per il collegamento tra dispositivo e Cloud deve essere implementato sul modello dello snippet seguente:

// Chiamata alla device library di Azure IoT Hub
var device = require('azure-iot-device');
// Stringa di connessione con l'IoT Hub
var connectionString = '[Stringa di connessione]';
// Indicazione del protocollo da utilizzare per la connessione del client
var client = new device.Client(connectionString, new device.Https());
// Definizione del messaggio da inviare all'Hub IoT
var data = JSON.stringify({ 'deviceId': 'NomeDevice', 'data': 'dati da inviare' });
var message = new device.Message(data);
message.properties.add('myproperty', 'myvalue');
client.sendEvent(message, function(err, res){
    if (err) console.log('Errore SendEvent: ' + err.toString());
    if (res) console.log('Status SendEvent: ' + res.statusCode + ' ' + res.statusMessage);
});
// Ricezione del messaggio dall'Hub IoT
client.receive(function (err, res, msg) {
  console.log('receive data: ' + msg.getData());
  client.complete(msg, function(err, res){
    if (err) console.log('Errore completo: ' + err.toString());
    if (res) console.log('Riepilogo status: ' + res.statusCode + ' ' + res.statusMessage);
  });
});

Poiché l'interazione con il device deve avvenire tramite SSH, è necessario che questo protocollo sia abilitato nella nostra installazione di Raspbian, ciò consente l'accesso sicuro da remoto per l'invio di istruzioni tramite client come PuTTY o WinSCP. Altro requisito è la presenza di un'installazione di NodeJS in Raspbian, inoltre, per operare è necessario impersonare l'utente di root che consente di installare eventuali librerie accessorie se richieste.

Una volta connessi a RaspBerry Pi tramite SSH si devono scaricare i file package.json e simple_sample_device.js tramite wget dal reposity Node di Azure. Il sorgente di simple_sample_device.js è simile a quello del codice JavaScript precedentemente presentato e può quindi essere utilizzato come template apportando poche modifiche per specificare i parametri di connessione. Nello specifico si deve cercare la riga:

var connectionString = '[IoT Device Connection String]';

e sostituire la dicitura "IoT Device Connection String" con la stringa di connessione corretta che permette le comunicazioni tra dispositivo e servizio. Quest'ultima ha un formato simile al seguente:

HostName=HtmlHubIoT.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=JTgfhJKEDEKRD9HlYOVay917GIoLtvIulGEMeyxJULs3=

ed è prelevabile, dopo aver selezionato l'Hub IoT desiderato dal gruppo di appartenenza, attraverso il percorso "Nome Hub IoT (ad esempio il nostro "HtmlHubIoT") > Impostazioni > Criteri di accesso condivisi > iothubowner > Stringa di connessione – chiave primaria" del portale di Azure.

Figura 6. Recupero della stringa di connessione con l'Hub IoT.
Recupero della stringa di connessione con l'Hub IoT

Fatto questo utilizziamo il client SSH scelto per lanciare i seguenti comandi a partire dalla cartella in cui sono stati scaricati i file:

npm install
node .

Queste istruzioni manderanno in esecuzione il codice per la connessione, l'Hub IoT invierà un messaggio in risposta alla richiesta di connessione notificando l'avvenuto collegamento.

Microsoft Azure IoT Suite

Azure IoT Suite è una raccolta di strumenti che consentono di:

  • raccogliere e archiviare i dati inviati al Cloud dai dispositivi IoT,
  • analizzare i flussi dei dati,
  • eseguire query su dataset di grandi dimensioni,
  • visualizzare le informazioni in tempo reale,
  • eseguire integrazioni di device e dati con i sistemi backoffice aziendali.

Queste funzionalità sono disponibili perché Azure IoT Suite non offre soltanto i propri servizi Cloud based, ma include soluzioni preconfigurate personalizzabili e pronte all'uso. Sono implementazioni dei modelli di business più diffusi per massimizzare la produttività dell'IoT e ridurre i tempi di sviluppo: possono essere utilizzate anche come template da modificare durante lo sviluppo per non dover creare applicazioni IoT da zero.

Queste soluzioni preconfigurate combinano diversi servizi fornendo un'infrastruttura con cui eseguire procedure fondamentali per l'IoT, come il monitoraggio remoto, la manutenzione predittiva e l'automatizzazione dei processi.

Oltre al già citato IoT Hub, Azure integra tool comunemente utilizzati per interagire con i dispositivi connessi e lavorare con i dati inviati da questi ultimi; parliamo di strumenti come:

  • L'Analisi di flusso di Azure per l'analisi dei dati in movimento, Azure IoT Suite usa questo servizio per elaborare i dati generati dalla telemetria così come per rilevare e aggregare gli eventi prodotti dai dispositivi IoT. L'analisi di flusso permette ad esempio di elaborare i messaggi che contengono metadati o risposte dei dispositivi ai comandi e di inviare dati ad altri servizi.
  • L'Archiviazione di Azure per memorizzare i dati. Le soluzioni preconfigurate di Azure IoT Suite utilizzano archivi BLOB per lo storage dei dati prodotti dalla telemetria e li rendono disponibili per le analisi.
  • DocumentDB, un tool che consente di archiviare metadati e abilitare le funzionalità per la gestione dei device IoT.
  • App Web di Azure e Microsoft Power BI per la visualizzazione dei dati, dei servizi con cui creare velocemente dashboard interattive con cui monitorare e manipolare i dati di IoT Suite.

Per interagire con dispositivi e servizi sono disponibili diversi SDK, tutti rilasciati sotto licenza Open Source, che consentono di creare applicazioni per l'IoT con linguaggi e framework noti agli sviluppatori tra cui C, .NET, Java, Python e JavaScript (NodeJS).

Prova gratuitamente Azure

Ti consigliamo anche