IOT (Internet of Things) è uno dei più promettenti business della nuova generazione.
Ai giorni d’oggi non è neanche lontanamente immaginabile pensare di gestire le proprie attività quotidiane senza utilizzare internet o senza utilizzare almeno una volta durante la giornata un accessorio connesso alla grande rete.
Configurando un nuovo router a casa, sono rimasto impressionato dalla quantità di oggetti (hardware) installati nella mia abitazione che richiedevano una connessione ad internet per poter funzionare. Partiamo dai telefonini; In famiglia
siamo 4 quindi 4 connessioni. Poi gli ipad, ne abbiamo due vecchi più un tablel Android. Poi il kindle di mia moglie che, di sera, si rilassa leggendo un libro. Immediatamente dopo si passa alla smart TV, all’apple TV ed alla PS3.
Non dimentichiamo i computer, i punti di accesso remoti, le telecamere di sorveglianza wifi. Avete capito bene. Sto parlando di decine e decine di oggetti, permanentemente connessi alla grande rete senza la quale non funzionerebbero
e non potrebbero offrirci i servizi per i quali sono stati acquistati.
IOT è un concetto molto più complesso rispetto al semplice utilizzo che si può fare di un televisore o di un telefonino. IOT è una estensione fisica del mondo analogico verso il mondo digitale. Un po’ come se fossimo in grado di iniettare
noi stessi e le nostre cose all’interno della rete ed essere contemporaneamente in più punti.
Ovviamente, per il momento, è meglio rimanere con i piedi per terra. Limitiamoci per ora ad immaginare, semplicemente di voler accendere una lampada in casa mentre si stà comodamente seduti a casa di un amico a 20 KM di distanza dalla propria abitazione.
L’estensione di noi stessi è un piccolo oggetto che, collegato alla rete, si comporta come un vero e proprio interruttore azionato a distanza dal nostro telefonino. Questo strumento è stato la nostra estensione fisica verso l’abitazione
distante decine di chilometri. “Internet delle cose” ci permette anche questo.
Oltre ad aver collegato le nostre menti attraverso i social, i siti di share, i blog etc. adesso cominciamo a collegare anche le nostre cose, le nostre case, le nostre macchine, le nostre lavatrici, i frigoriferi e chissà dove arriveremo.
Capirete che qui si stà parlando di miliardi e miliardi di informazioni da gestire e migliaia e migliaia di potenziali servizi che potrebbero essere messi a disposizione di chi produce hardware “connettibile” ad internet.
Di questo hardware ci sono due principali caratteristiche che ci aiuteranno a disegnare e di seguito capire i miniservices. La prima è che IOT è fatto di cose semplici e minimali.
Il mercato stesso ci insegna che se vogliamo la diffusione di un prodotto dobbiamo tenerci bassi con i costi, con la semplicità d’uso ed con i componenti. Un altro aspetto fondamentale è che chi si dedica alla produzione di questi componenti,
vuole, principalmente, produrre hardware e sarebbe molto interessato ad avere già a disposizione tutto il software necessario a far funzionare le proprie macchine in maniera semplice e veloce.
La caratteristica economica rappresenta:
-- La poca complessità nello sviluppo
-- Semplici protocolli
-- Comunicazioni leggere
I due punti descritti, così come sono, e messi a fattor comune, aprono la strada ad un modello di business molto interessante. Questo modello potrebbe essere soddisfatto con la creazione dei MiniServices.
Un miniservice è una funziona semplice, sicura e versatile che può essere interrogata da un hardware progettato per l’IOT e che può fornire un servizio di storage dei dati, una funzione sessionless o una risposta ad una interrogazione:
Store: Salva i dati in un posto sicuro del quale io (produttore dell’hardware) non devo preoccuparmi.
Execute: Lancia una particolare funzione utilizzando un input fornito dall’oggetto IoT da solo o in combinazione con dati precedentemente memorizzati, e restituiscimi il risultato
Query: Interroga una certa base dati e restituiscimi il risultato dell’estrazione.
Con queste tre operazioni basiche i miniservices si propongono di semplificare enormemente la vita di qualsiasi produttore di dispositivi IOT. Possono essere utilizzati dal professionista, dal privato ma anche dalla grande azienda.
I miniservices offrono un sistema di sicurezza garantendo che l’accesso ai propri dati rimanga unico e personale e che i propri servizi siano accessibili solo ai propri dispositivi hardware certificati.
Tecnicamente un miniservice è una chiamata REST (Se ti interessa capire cosa sono le chiamate REST ho scritto un breve
tutorial) ridotta al minimo, effettuata dall’interfaccia web dell’hardware IoT
(una scheda wifi connessa ad un router od un modulo rete generico connesso via cavo finanche un modulo GPRS connesso ad un APN internet).
Prima di interrogare il vero e proprio servizio desiderato, si interroga un servizio di Autenticazione. Questo servizio restituisce una chiave univoca che viene utilizzata per accedere una ed una sola volta alla funzione desiderata.
Invocando in questa modalità il servizio scelto, vengono effettuate le operazioni alle quali il servizio è dedicato (Store, Execute, Query).
Nel grafico che segue ho cercato di rappresentare in maniera schematica un flusso applicativo relativo ad una chiamata effettuata verso un miniservice, fino ad ottenere la risposta output del servizio.
Di seguito l’elenco dei Miniservice disponibili con la versione 1.0 del prodotto.
Per ogni servizio è possibile trovare una breve scheda esplicativa, in inglese con la sintassi per l’uso in modalità REST:
Authenticator: Il core del sistema di autenticazione è rappresentato da questo servizio che, una volta verificate diverse informazioni di sicurezza relative al dispositivo chiamante, restituisce
un token valido una volta soltanto da utilizzare per le chiamate ad altri Miniservices.
GeoReference: Questo servizio salva in archivio una serie di coordinate geografiche aggiungendo diversi parametri che possono essere utilizzati, successivamente, durante la consultazione,
per determinare specifiche posizioni geografiche o percorsi
RetrieveCoordinates: Il servizio di output di GeoCoordinates, restituisce le coordinate conservate in archivio seguendo alcuni criteri di ordinamento ed applicando i filtri relativi al determinato
dispositivo IOT che le ha memorizzate.
ApplicationApprover: Autorizza i propri dispositivi o le proprie applicazioni a funzionare
ApproverConfig: Questo servizio può essere utilizzato per configurare quali dispositivi devono poter accedere a cosa. Più in generale, è possibile configurare questo servizio anche per approvazioni
diverse dall’accesso ai miniservices.
Utilizzando questa funzione, in teoria, si potrebbe anche semplicemente autorizzare o meno il proprio dispositivo (o quello dato ad un altro) a funzionare. Quello che viene configurato attraverso questo servizio, viene poi verificato consultando ApplicationApprover
GetIoTConfig: E’ possibile definire dei file di configurazione da scaricare sui propri dispositivi
ConfigurationConfig: Questo servizio permette di caricare dei veri e propri file di configurazione in formato XML che verranno, successivamente scaricati sul dispositivo da configurare utilizzando il miniservice ConfigurationDownload
TargetCoordinates: Molto spesso ci capita di voler memorizzare un particolare luogo di interesse. Magari, aggiungendo una particolare nota per ricordarci a cosa fosse legato quel luogo. Questo servizio fa proprio questo.
Le coordinate inserite sono poi recuperabili utilizzando il metodo RetrieveCoordinates
Temperature: Questo semplice servizio (facente parte del "MeteoSet group of Miniservices") permette di memorizzare i dati provenienti da un sensore di temperatura (come il DHT11 o il DHT22). I dati possono essere collegati o meno a delle particolari coordinate geografiche.
L’abbinamento consente di localizzare anche la posizione georeferenziata del punto in cui è stata rilevata la temperatura. Ovviamente, in questo caso il sensore di temperatura dovrà essere installato insieme ad un localizzatore GPS
GetTemperature: Tutte le informazioni meteo conservate attraverso le funzioni facenti parte del MeteoSet (Insieme Meteo) possono essere interrogate circa i dati memorizzati attraverso questa funzione che restituisce tutti i parametri memorizzati in un determinato intervallo di tempo.
Biomedical: Il servizio Biomedical (facente parte del "Healt group of Miniservices") permette di memorizzare valori biomedici restituiti da dispositivi medici IoT. Anche in questo campo sono molteplici i sensori medici che si possono utilizzare. La prima versione di questa categoria permette di memorizzare ed operare su dati
relativi al battito cardiaco, alla temperatura corporea ed all'ossigneazione del sangue. Uno dei sensori più comuni disponibili per i vari dispositivi IoT che possiamo costruire è, ad esempio, il max 30100 ma il panorama è complesso e variegato ed offre diverse possibilità per ampliare performace, caratteristiche e qualità dei dati restituiti.
Per tutti i Miniservices sono disponibili alcune librerie per supportare lo sviluppo di dispositivi IoT da utilizzare con la piattaforma BVRobotics.com. Si può fare riferimento alla
Miniservice controller library che può essere utilizzata per semplificare lo sviluppo di ogni componente hardware.
Se sei interessato a capire come implementare devices compatibili con l'infrastruttura Miniservices di Buonevacanze.org allora puoi vedere come ho costruito il modulo
IoT Meteo station. Ti sarà utile sia per avviarti verso la costruzione dei tuoi primi moduli, sia per capire come implementare gli accessi di autenticazione e di manipolazione dei dati nell'infrastruttura di Buonevacanze.org
Tutti i servizi IoT Miniservice, hanno un ulteriore criterio di protezione relativo al codice MAC chiamante. Questo codice viene inviato nel protocollo http durante la chiamata e validato da una access list presente nell’archivio del produttore. Per questo motivo l’attivazione (solo iniziale ovviamente) di un dispositivo richiede l’invio da parte del produttore di hardware del codice MAC da abilitare.
E’ possibile accedere ad un ambiente di test protetto che può essere utilizzato per provare tutte le funzionalità dei miniservices senza alcun impatto sull’ambiente stabile di produzione.
Per abilitare il tuo accesso agli IoT Miniservices di www.Buonevacanze.org contatta l’autore.