IoT per makers: le iniziative e i progetti di Microsoft

La domanda sorge spontanea: che cosa c'entra Microsoft con il mondo IoT?!?

Leggendo questo post potrete farvene un'idea!

Sempre più spesso si sente parlare di Internet of Things (IoT), a volte in associazione ad argomenti come Smart City e Smart Home, ma anche quando si parla di piccole schede come Arduino, Raspberry o Intel Galileo.

Ma di fatto, che cos'è l'Internet of Things?

Secondo Gartner, l'IoT è la rete di oggetti fisici che usano tecnologia embedded per comunicare e interagire sia con il proprio stato interno, sia con l'ambiente che li circonda. I sensori sono in grado di raccogliere svariate tipologie di dati, che vengono collezionati, analizzati ed utilizzati per prendere decisioni, eseguire azioni o semplicemente mostrare risultati. La parte fondamentale da sottolineare quando si parla di IoT è appunto l'elaborazione dei dati e l'utilizzo che ne viene fatto. Questa è la ragione principale per cui non è sufficiente connettere la propria board alla piattaforma cloud per creare IoT... Ma è sicuramente il miglior punto di partenza!

Vediamo ora iniziative e progetti di Microsoft dedicati a chi vuole avvicinarsi a questa realtà, sempre più attuale.

clip_image001

 

Windows Developer Program for IoT

Microsoft ha attivato ormai da tempo un programma dedicato ai makers denominato Windows Developer Program for IoT: iscrivendosi qui è possibile ricevere in anteprima tutte le informazioni connesse all'evoluzione del programma che lega Microsoft al mondo IoT.

La prima board per la quale è stata rilasciata un'immagine di Windows dedicata è stata la Intel Galileo di prima generazione, seguita poi dalla Galileo gen 2, il cui annuncio ufficiale è stato fatto durante la Maker Faire che si è tenuta a Roma nell'ottobre dello scorso anno. E' quindi possibile scaricare l'immagine di Windows sulla scheda e cominciare a fare qualche esperimento, magari seguendo uno dei tanti esempi che si trovano sul sito www.windowsondevices.com.

Il 2 febbraio 2015, in occasione dell'uscita di Raspberry Pi 2, è stato inoltre annunciato il passo successivo del programma, che consiste nella prossima pubblicazione di un'immagine di Windows 10 per questa nuova scheda. Per i dettagli vi invito a consultare il link ufficiale.

Da un punto di vista pratico e concreto, sono disponibili gratuitamente su GitHub alcuni esempi per connettere ad Azure non solo le suddette schede, ma anche altri tipi di board, come ad esempio Arduino e Tessel.

Diamo quindi un'occhiata a due progetti particolarmente interessanti.

 

Connect the Dots

Il primo progetto di cui voglio parlare in questo post si chiama Connect the Dots ed è stato realizzato da MS OpenTech. Si tratta di un progetto completamente open source che usa semplici schede per inviare dati su Azure, sfruttando poi servizi quali Event Hubs, Stream Analytics e Machine Learning per analizzare ed elaborare questi dati.

clip_image002

Lo scopo di questo progetto è proprio quello di fornire un punto di partenza semplice e rapido per implementare la vostra prima soluzione IoT utilizzando i servizi di Azure. Lo scenario applicativo è quello di una semplice telemetria per l'analisi dei dati di temperatura e umidità rilevati tramite un Weather Shield.

L'immagine riportata qui sopra mostra lo scenario originale del progetto al momento della prima pubblicazione (dicembre 2014): la prima scheda supportata è stata Arduino (utilizzata in accoppiamento allo shield con il ruolo di sensore) connessa ad una Raspberry Pi (usata come gateway). La porta di accesso al cloud è il servizio Event Hubs di Azure, tramite l'utilizzo del protocollo AMQP. Da qui i dati vengono poi trasmessi a Stream Analytics (attualmente in preview) per poter effettuare analisi real-time e segnalazioni di allarme. Queste informazioni vengono infine rese visibili all'utente tramite un Website.

E' molto importante precisare, però, che il codice sorgente (disponibile a questo link) subisce continue integrazioni. L'idea del team che segue il progetto è infatti quella di ampliare la gamma di schede connesse e servizi utilizzati, in modo da fornire istruzioni step-by-step per nuovi scenari applicativi.

Ad esempio, è sufficiente una rapida occhiata per verificare che è stato introdotto il supporto per .NET MF Gadgeteer e Intel Galileo.

 

Microsoft Developer eXperience: IoT hands-on labs

Un altro progetto interessante disponibile gratuitamente su GitHub è questo. Si tratta di 3 scenari distinti (Lab 1, Lab 2, Lab 3) che possono essere integrati per un comune progetto di Smart Home, convogliando quindi in un'unica visualizzazione su WebSite, descritta nel Lab 4.

clip_image003

Il primo scenario (Lab 1) è di nuovo la classica telemetria di dati provenienti da un sensore di temperatura. Le differenze fondamentali rispetto al progetto Connect the Dots sono due:

  1. Le board supportate: in questo caso potete trovare le istruzioni step-by-step per la scheda Tessel (che prevede il supporto a Javascript) e per Arduino Yun.
  2. Il protocollo usato per la trasmissione dei dati verso Azure: questo esempio prevede l'utilizzo d HTTPS invece di AMQP

Il secondo scenario (Lab 2) descrive il monitoraggio del consumo di energia tramite una scheda Arduino Due. In questo caso il focus è legato all'importanza della protezione dei dati: molti dispositivi (come appunto la Arduino Due) non sono in grado di supportare SSL, ma è possibile risolvere questo problema utilizzando un cloud gateway. In questo modo si può usare un protocollo di comunicazione custom che trasmetta i dati in maniera sicura tra il device e il cloud gateway, poi sarà quest'ultimo ad occuparsi dell'opportuna gestione di questi dati per inviarli ad altri servizi, in questo caso Event Hubs.

L'altra tematica fondamentale affrontata all'interno di questo scenario è legata al concetto di scalabilità, sia in termini di numero di trasmissioni al secondo, sia in termini di bilanciamento delle operazioni di gestione dei dati ricevuti.

Il terzo scenario (Lab 3) prevede la gestione di una comunicazione bidirezionale tra la scheda e il cloud service, con lo scopo di poter controllare la board inviando comandi specifici. Rimanendo in tema Smart Home, si pensi all'utilità di poter inviare comandi ai dispositivi per alzare e abbassare le tapparelle o il riscaldamento. L'architettura è molto semplice ma significativa: una scheda Arduino Uno con un LED (usato semplicemente come indicatore per verificare la ricezione dei comandi), connessa ad una Raspberry Pi con il ruolo di gateway, ed una comunicazione col cloud tramite protocollo AMQP.

Infine, il Lab 4 è legato all'integrazione e alla visualizzazione dei dati raccolti negli scenari descritti in precedenza.

 

Conclusioni

Grazie ad iniziative come il Windows Develper Program for IoT e il rilascio su GitHub del codice sorgente di progetti come quelli appena descritti, sta diventando sempre più semplice per chiunque avvicinarsi al mondo dell'IoT. Ovviamente il quadro fornito non è assolutamente completo in termini di schede considerate e presentazione dei servizi messi a disposizione da Azure per scenari IoT, ma è importante sottolineare che questo genere di progetti è in continua evoluzione.

Lo scopo di questo post è quello di fornire una prima overview del ruolo e dell'offerta di Microsoft rivolta ai makers, alla quale seguiranno ulteriori post di approfondimento.

Nel frattempo cominciamo a divertirci monitorando la temperatura di casa nostra!