• Non ci sono risultati.

Realizzazione di un sistema di monitoraggio ambientale basato su una cloud pubblica con modello di servizio Platform as a Service (PaaS)

N/A
N/A
Protected

Academic year: 2021

Condividi "Realizzazione di un sistema di monitoraggio ambientale basato su una cloud pubblica con modello di servizio Platform as a Service (PaaS)"

Copied!
136
0
0

Testo completo

(1)

Introduzione

Come si è potuto constatare negli ultimi anni gli sviluppi tecnologici sono stati tali da rendere le attività umane e i comportamenti normali, mentre in passato erano impensabili. I progressi hanno portato alla diffusione capillare delle tecnologie ICT (Information and Communications Technology) e al loro incremento nella vita di ognuno di noi. Questo lento ma continuo radicarsi di smart objects nella vita quotidiana ha permesso agli utenti di essere collegati costantemente tra di loro . Questa situazione apre le porte alla nuova evoluzione di Internet, che dopo aver attraversato nel '90 la fase del world wide web e poi negli anni 2000 la fase del Mobile Internet , va verso la nuova rivoluzione tecnologica e sociale di internet e cioè “Internet of Things”. Le potenzialità di questa evoluzione sono davvero enormi e risiedono nel fatto che i dispositivi connessi alla rete saranno considerati non più come oggetti finali in grado di assolvere il proprio compito, ma oggetti dotati di “intelligenza” capaci di scambiarsi informazioni in maniera continua rendendo più veloce lo scambio di dati. Bisogna tenere presente che con la parola “oggetti” si indica non solamente computer, palmari e cellulari, ma ci si riferisce a tutti gli oggetti dai più sofisticati fino agli oggetti di uso quotidiano come gli elettrodomestici, le automobili, e perfino alimenti e indumenti. Potremo quindi affermare che il campo in cui l'internet delle cose troverà terreno fertile sarà l'intero genere umano, generando quindi una mole enorme di informazioni e permettendo la creazione di nuovi servizi per gli utenti. E' proprio da quest'ultima affermazione che dobbiamo partire per spiegare ciò che questo lavoro di tesi ha come obiettivo, infatti il

(2)

principio da cui siamo partiti era quello di creare un servizio individuabile nel mondo di internet delle cose che si basasse sull'uso di un PaaS. Una Platform as a Service è secondo definizione la distribuzione di piattaforme di elaborazione che mettono a disposizione soluzioni hardware e software per la creazione di nuovi servizi. Nel nostro caso la scelta è ricaduta su Xively, una PaaS che fornisce agli utenti pubblici e privati dati di ogni tipo che si possono condividere con profilo pubblico e privato in Internet. Xively permette di collegare sensori, pc, schede hardware e tanto altro consentendo agli utenti di monitorare in real time le informazioni che loro stessi vogliono controllare. Entrando in contatto con Xively mi sono reso conto della mole straordinaria di informazioni che si può trovare su questo semplice sito che da molti è stato definito il social network degli oggetti. Con il lavoro di tesi si è voluto nella prima parte dare informazioni su Internet of Things , cercando di ricostruire la storia partendo dalla definizione che negli ultimi anni si sono succedute, per poi passare al trattamento del tema di Xively. Questo argomento viene affrontato con la consapevolezza che il tema è talmente vasto che è impossibile descriverlo totalmente, ed è per questo motivo che il mio intento era di scrivere una vera e propria guida con tanto di prove di comunicazioni con Xively stesso in modo da dare i primi rudimenti per approcciare nel miglior modo possibile a l'uso di xively. Nella seconda parte della tesi, invece, ci soffermeremo sul servizio scelto. In questo caso si è pensato di affrontare il caso di monitoraggio ambientale partendo dal presupposto che la creazione di un servizio deve essere indissolubilmente legato al principio di utilità dello stesso,e tale argomento risulta avere a mio modesto parere un impatto forte sulla società sempre più attenta ai temi ambientali. Riuscire a costruire uno strumento capace di dare dati sugli indici ambientali di inquinamento fa capire ancora meglio quanto sia importante la rivoluzione di internet

(3)

delle cose. Il monitoraggio ambientale è argomento trattato da agenzie private e statali che si occupano di preservare l'ambiente elaborando di continuo dati che vengono trattati ed usati con regole precise e non violabili, consentendo di avere informazioni precise importantissime per la pericolosità che l'inquinamento rappresenta per il genere umano. Il mio progetto si pone , invece, l'obiettivo di dimostrare come questo tipo di servizio può essere realizzato con strumenti di dimensioni minori e meno costosi, in questo caso sensori che hanno bisogno di una connessione e di una alimentazione. In più questo tipo di servizio non teme sicuramente problemi di scalabilità visto che le informazioni vengono “salvate” su strumenti forniti da terzi , in questo caso Xively. Occorre puntualizzare che non tutti i dati in real-time hanno una valenza assoluta, ma sarà una giusta elaborazione a renderli validati , sebbene ciò, questo non ci allontana dall'obiettivo che ci siamo posti e cioè che è possibile grazie a questi strumenti creare servizi che hanno la capacità di darci informazioni importanti. Per dare uno sguardo completo su quello che da qui in poi si leggerà occorrerà sapere che il lavoro di tesi si completerà con una parte dedicata all'architettura del nostro progetto che metterà in luce i protocolli di comunicazione utilizzati e la parte di programmazione C++ che sfruttando i metodi HTTP ci permetterà di avere i dati che ci interesseranno.

(4)

Capitolo 1

1.1 Cosa è l'internet of things

Dare una definizione di Internet of Things o IoT nella forma abbreviata risulta davvero difficile, considerando l'evoluzione costante di questo tema e la vasta gamma di elementi e di principi che essa implica. Si possono infatti trovare in letteratura definizioni differenti che pongono l’accento su aspetti diversi dell’argomento a seconda di quale sia l'orientamento scientifico di chi ha fornito la definizione. Cercando di porre un ordine alle varie definizioni che nel corso degli anni si sono succedute sull'argomento possiamo e dobbiamo sicuramente partire da chi ha introdotto il tema o più precisamente il termine “Internet of Things”. Parliamo di Kevin Asthon, direttore esecutivo dell' AutoID center, gruppo di ricerca nel campo della rete radio-frequency identification (RFID). Asthon utilizzò le parole “Internet of Things” come titolo di una presentazione fatta presso Procter &Gambel (P&G) nel 1999. Durante un'intervista risalente al giugno 2009 rilasciata all' RFID JOURNAL, Asthon descrisse ciò che per lui significa IoT: “Oggi i computer e, di conseguenza, Internet sono quasi interamente

dipendenti dagli esseri umani per ottenere informazioni. Quasi tutti i circa 50 petabyte di dati disponibili su Internet sono stati elaborati e creati da esseri umani, il problema è che le persone hanno un limite di attenzione e di precisione, ciò significa che non sono molto bravi a catturare e ad usare i moltissimi dati riguardanti il mondo reale. La

nostra economia, la società e la sopravvivenza non sono basate sulle informazioni o

sulle idee, ma sono basate sulle cose. Le idee e le informazioni sono importanti, ma le cose lo sono molto di più. Se avessimo computer che conoscono tutto quello che c'è da

(5)

sapere sulle cose , i dati sarebbero raccolti senza alcun aiuto , saremmo in grado di monitorare e contare ogni cosa, e di ridurre notevolmente i rifiuti, perdite e costi. L'Internet delle cose ha il potenziale per cambiare il mondo, proprio come ha fatto Internet. Forse anche di più.” Si può notare come le parole dell'intervista pongano al

centro della definizione le “Cose” come soggetto principale di questa rivoluzione, collegandole ad una particolare intelligenza che permette ad esse di comunicare e gestire in maniera autonoma dati e conoscenze. Potremmo definire la visione di Asthon come “Things oriented”. Infatti l'attenzione nella sua intervista è focalizzata sull'informazione legata alle cose e questo risulta ancora più avvalorata dal fatto che lo stesso Ashton, con l’ Auto-ID Labs, sostenesse l'uso diffuso della tecnologia RFID e la creazione di standard globali EPCglobal Network, che attraverso componenti hardware e software collegano i singoli server/data base. Il Cluster of European Research Projects ha negli ultimi anni formulato una definizione che è possibile trovare nel documento (CERP-IoT 2009): ”Internet of Things (IoT) è parte integrante di Internet

del futuro e potrebbe essere definito come un infrastruttura di rete globale dinamico con funzionalità di auto-configurazione basata sullo standard e protocolli di comunicazione interoperabili dove 'cose' fisiche e virtuali hanno identità, attributi fisici, e personalità virtuali e utilizzano interfacce intelligenti, e sono perfettamente integrati nella rete di informazioni. Nel IoT, 'le cose' diventeranno parte attiva nei processi di business, di informazioni e nel sociale quando esse avranno il permesso di interagire e comunicare tra loro e con l'ambiente scambiando dati e informazioni , reagendo autonomamente con il mondo reale / fisico e influenzando i processi in esecuzione in modo da creare servizi con o senza intervento umano diretto.” Questa

(6)

Possiamo affermare infatti che l'organo preso in considerazione ci dà una visione di internet delle cose con un’ inclinazione “ Internet oriented”. In questo caso è chiara la centralità delle “ cose “ come fulcro della comunicazione, ma viene preso in considerazione un aspetto più vicino a internet e a tutto ciò che si avvicina ai suoi protocolli e alle sue regole. Ciò che si evince è la ricerca , in virtù di una nuova rivoluzione nell' uso di internet, di un modo nuovo che possa essere più vicino al mondo dell' IoT. Ciò accadde anche con internet e il World Wide Web, anche se in questo momento il tutto sta avvenendo contemporaneamente e quindi per essere al passo il cambiamento dovrà avvenire più velocemente e sicuramente dovrà andare di pari passo. Riguardo a questo potremmo già tracciare un piccolo passo avanti fatto dal mondo di internet verso il mondo del web things, considerando il web 2.0 come un passo verso il mondo delle cose e pensando ad un web dinamico in grado di un elevato livello di interazione tra web ed utente e fra utenti e cose soprattutto con la diffusione di applicazioni web. Bisogna a questo punto aggiungere un nuovo tassello che ci aiuta a completare la nostra discussione su internet delle cose. Infatti per rendere l’ IoT una cosa reale occorre assolutamente che le cose si parlino e affinché ciò accada bisogna dare un approccio “Semantic oriented”, che si aggiunge ai due precedenti e finalmente chiude il cerchio su questo argomento. Espressione di quest'ultimo punto di vista è quello dell'IP for Smart Objects Alliance che indica l'internet protocol come tecnologia di rete per connettere tutti gli oggetti e rendere cosi l' IoT una realtà. Ovviamente l'IP deve essere adattato e modificato e soprattutto bisogna tener conto del numero elevato di oggetti e di informazioni, ma è proprio quest'ultimo che permetterà la comunicazione. Vedremo poi in seguito come questo concetto verrà sviluppato. Riassumendo si può sottolineare l'esistenza di tre punti di vista:” internet oriented, thinghs oriented e

(7)

semantic oriented” sviluppati e uniti i quali si avrà Intenet of Things. La realizzazione di questo processo probabilmente avrà tempi lunghi e non sarà facile, proprio perché da quello visto finora pare chiaro che la crescita di questa materia prevede lo sviluppo di più aree e riguarda tutti i livelli della rete internet. Si può quindi affermare che “Internet delle cose” è una vera rivoluzione tecnica e sociale che parte dal mondo fisico e reale fatto di sensori e di smart tecnologie fino ad arrivare ai protocolli di comunicazione. Essa mette insieme in una sorta di comunità partecipata microelettronica, telecomunicazione e informatica fino ad arrivare al filosofico e al sociale considerando il rapporto dati-utente. Ciò avrà dei riflessi sulla società e sull'uomo che da ora in poi dovrà instaurare con le ”cose” un nuovo rapporto dato che loro stesse da oggi in poi comunicheranno tra di loro. Potendo immaginare in un grafico l'evoluzione della rete internet dall'inizio fino ai giorni nostri è possibile rappresentare l' IoT come la terza dimensione (Figura 1) in cui si vede chiaramente il passaggio da una connessione anytime ad una anyplace per approdare finalmente ad una connessione anything.

Figura 1 Internet of Things

(8)

1.2 Evoluzione tecnologica

Internet of Things , come si è descritto in precedenza , non può essere considerata una tecnologia ma deve essere, ovviamente, definita come un insieme di più tecnologie che faranno riferimento a più standard che convivono nello stesso tema. E' doveroso allora riconoscere che essendo numerose le tecnologie coinvolte sicuramente i problemi riguardanti l'evoluzione dell'IoT saranno numerosi e si moltiplicheranno tenendo conto della coesistenza di più standard differenti. L'evoluzione tecnologica dell' Internet of Things , considerato lo sviluppo in differenti direzioni dovrà assolutamente risolvere quesiti e problemi tecnici che in tempi diversi si presenteranno durante l'evoluzione. Nel passaggio da internet-utente ad internet of things bisogna tenere conto di alcuni temi importanti che se risolti potranno decretare lo sviluppo dell'IoT. Bisogna quindi pensare allo sviluppo dell' Iot tenendo conto di questi temi [1] :

Scalabilità: Internet delle cose ha potenzialmente una portata complessiva superiore

alla rete internet fatta da pc. Le cose cooperano principalmente all'interno di un ambiente locale ma la funzionalità di base come la comunicazione e la individuazione dei servizi devono essere ugualmente efficiente sia in piccoli ambienti che su larga scala.

Pronti all'uso: gli oggetti intelligenti di tutti i giorni non devono essere percepiti

come computer che richiedono ai loro utenti di essere configurati e di adattarle alle particolari situazioni. Cose mobili, che vengono utilizzati sporadicamente, hanno bisogno di connessioni stabili spontanee, e di organizzarsi e configurarsi per adattarsi all' ambiente.

(9)

Interoperabilità: Dal momento che il mondo delle cose fisiche è estremamente

vario, in Internet delle cose ogni tipo di oggetto intelligente può avere diverse informazioni diversa capacità di produzione e di comunicazione. Diversi oggetti intelligenti possono inoltre essere sottoposti a condizioni molto diverse come l'energia disponibile e la larghezza di banda necessaria per la comunicazione. Tuttavia, per facilitare la comunicazione e la cooperazione, pratiche comuni e gli standard sono necessari. Questo è particolarmente importante per quanto riguarda gli indirizzi degli oggetti. Questi dovrebbero rispettare un schema standardizzato, sul modello dello standard IP utilizzati in un dominio Internet convenzionale.

Scoperta: in ambienti dinamici, servizi adeguati per le cose devono essere

automaticamente identificati, per questo richiedono adeguati strumenti semantici per la descrizione delle loro funzionalità. Gli utenti vorranno ricevere informazioni relative ai prodotti e si desidera utilizzare i motori di ricerca che possono trovare cose o fornire informazioni circa lo stato di un oggetto.

La complessità del software: Anche se i sistemi software degli oggetti intelligenti

dovranno funzionare con risorse minime, come nei sistemi embedded convenzionali, sarà necessaria una più ampia infrastruttura software sulla rete e sui server di background , al fine di gestire gli oggetti intelligenti e di fornire servizi a loro sostegno.

I volumi di dati: alcuni scenari applicativi coinvolgeranno, frequentemente in

comunicazione, reti di sensori che comporteranno enormi volumi di dati sulla centrale e sui server di rete.

Interpretazione dei dati: Per supportare gli utenti delle cose, occorrerà interpretare

(10)

servizi bisognerà trarre profitto dai dati che saranno generati, si dovrà essere in grado di trarre alcune conclusioni generalizzabili dalla interpretazione dei dati del sensore. Tuttavia, generare informazioni utili dal sensore che possono poi essere riutilizzati non è affatto un'impresa banale.

Sicurezza e privacy personale: Oltre alla sicurezza e alla tutela degli aspetti di

Internet che noi tutti conosciamo (come le comunicazioni la riservatezza, l'autenticità e l'affidabilità del partner di comunicazione, e il messaggio di integrità), altri requisiti sarebbero importanti in Internet delle cose. Potremmo voler dare alle cose solo un accesso selettivo a determinati servizi, o impedire loro di comunicare con gli altri, e le transazioni commerciali che coinvolgono oggetti intelligenti avrebbero bisogno di essere protetti dagli occhi indiscreti.

Tolleranza di errore: Il mondo delle cose è molto più dinamico e mobile del mondo

dei computer, con i contesti che cambiano rapidamente e in modo inaspettato. Ma ci sarebbe ancora voglia di fare affidamento affinché le cose funzionino correttamente. La strutturazione di Internet delle cose in maniera robusta e affidabile richiederebbe abbondanza su più livelli e la capacità di adattarsi automaticamente alle condizioni che cambiano.

Alimentazione: Le cose di solito si muovono e non sono collegati a una fonte di

alimentazione, quindi la loro intelligenza ha bisogno di essere alimentato da una energia autosufficiente. Anche se i transponder RFID passivi non hanno bisogno di una propria fonte di energia , la loro funzionalità e la gamma di comunicazione sono molto limitate. Le batterie per portatili sono problematiche a causa della loro dimensione e peso, e soprattutto a causa delle loro esigenze di manutenzione. Sfortunatamente, la tecnologia delle batterie sta facendo progressi relativamente

(11)

lenti, e "energia raccolta ", ossia produzione di elettricità da l'ambiente (usando temperatura differenze, vibrazioni, correnti d'aria, luce, ecc), non è ancora abbastanza potente per soddisfare il fabbisogno energetico dei sistemi elettronici attuali in molte applicazioni. Le speranze sono riposte su futuri processori a basso consumo e unità di comunicazione per sistemi embedded che possono funzionare con molta meno energia. Il risparmio di energia è un fattore non solo in architettura hardware e di sistema, ma anche di software, ad esempio la realizzazione di un protocollo. Ci sono già alcuni sensori wireless senza batterie che possono trasmettere le loro letture a distanza di pochi metri. Come i sistemi RFID, ottengono la potenza di cui hanno bisogno in remoto o dal processo di misurazione in sé, per esempio utilizzando materiale piezoelettrico o materiali piroelettrico per pressione e temperatura.

Interazioni e comunicazioni a corto raggio: la comunicazione wireless su distanze

di pochi centimetri sarà sufficiente, per esempio, se un oggetto viene toccato da un altro oggetto o semplicemente che l' utente tenga il cellulare contro di esso. Nelle comunicazioni a piccole distanze è richiesta poca potenza e l'indirizzamento è semplificato e di solito non c'è alcun rischio di essere interferito da altri. NFC è un esempio di questo tipo di comunicazione. Durante la comunicazione, un partner è in modalità attiva e l'altra può essere in modalità passiva. Unità NFC attivi sono abbastanza piccoli per essere utilizzati nei telefoni cellulari; unità passive sono simili a RFID transponder e sono notevolmente più piccoli, più economici e non hanno bisogno di loro fonte di alimentazione.

Le comunicazioni senza fili: da un punto di vista energetico, le tecnologie quali

GSM, UMTS, Wi-Fi e Bluetooth sono molto meno adatti; i più recenti standard WPAN come ZigBee e altri ancora i in fase di sviluppo possono utilizzare una

(12)

larghezza di banda più stretta, ma consumano molta meno energia.

1.3 Tecnologie alla base dell'internet delle cose

In questo paragrafo cercherò di descrivere le principali tecnologie che stanno permettendo lo sviluppo dell'internet of things, descrivendo le proprietà in modo da specificare il loro utilizzo e capire il ruolo che queste stesse hanno in questo tipo di tecnologia.

1.3.1 Radio frequency Identification (RFID)

La radio frequency identification è sicuramente la tecnologia di trasmissione cardine dell'internet of things. Come indica il nome , questo strumento creato per identificare gli elementi utilizza le onde radio. Un impiego simile a quello del semplice codice a barre, ma a differenza di esso , il sistema rfid è anche in grado di tener traccia degli elementi in tempo reale , per ottenere importanti informazioni sulla loro posizione. Questa modalità di trasmissione dei dati si avvale dell'utilizzo delle onde radio per trasmettere i dati da un trasponder, chiamato anche tag, ad un lettore. l tag è il componente che, applicato ad un oggetto o ad una persona, consente la sua identificazione senza alcun collegamento o contatto diretto, tramite l'invio di un segnale radio eventualmente in risposta ad un comando ricevuto da una stazione remota. Interamente il tag è composto da due elementi fondamentali, l’antenna e il chip, mantenuti assieme da un supporto fisico dipendente da dove verrà collocato e in che modo sarà impiegato il tag [2].

Chip: è il componente elettronico, un micro-circuito intelligente, che contiene la

(13)

informazioni tra tag e reader.

Antenna: è l'apparato che raccoglie e trasmette i segnali radio da e verso i reader.

Deve essere progettata e realizzata in funzione della distanza di lettura del tag e delle dimensioni dell'antenna del transponder. A seconda della banda di funzionamento del tag l’antenna sarà ad induzione elettrica o magnetica (bassa frequenza, banda LF), ad accoppiamento magnetico (alta frequenza, banda HF) o ad accoppiamento elettromagnetico (altissima frequenza, banda UHF).

Inlay: è la struttura che collega e protegge il chip e l'antenna. La scelta dei tipo di

supporto è di fondamentale importanza in relazione alle applicazioni cui il tag è destinato, in quanto ne determina la resistenza agli urti, agli agenti chimici, all'umidità e allo sporco. Esso può essere un semplice film in materiale plastico che permette di ottenere etichette autoadesive, resistenti anche alle alte temperature, oppure in materiale cartaceo, o ancora un solido in plastica, a forma di disco oppure cilindrica, applicabile anche su materiali metallici, oppure ancora assumere la forma di un badge, tipo carta di credito, caratterizzato da alta resistenza e flessibilità. In generale sarà l’applicazione a determinare il design migliore del supporto, risultando un buon compromesso tra efficienza di funzionamento e costi di produzione.

E’ importante notare che affinché possa avvenire la comunicazione tra tag e antenna, questi devono essere sintonizzati alla stessa frequenza. Nel caso del tag questo equilibrio è molto fragile: basta infatti anche solo apporre il tag su una superficie metallica per spostare tale frequenza e di fatto rendere il tag illeggibile. Esistono diversi tipi di tag rfid, alcuni dei quali standardizzati su bande di frequenza operative ben definite. Possiamo riassumere i vari tipi di tag in quattro tipologie fondamentali:

(14)

Tag passivi: il termine passivo è attribuito per l'assenza di fonti di alimentazioni

proprie. L'energia necessaria a trasmettere il proprio id è ottenuta dal lettore, il quale emette un campo elettromagnetico/elettrico, che tramite il processo della induzione genera nell'avvolgimento elicoidale del tag, una tensione che alimenta il chip cosi alimentato comunica tutte le sue informazioni, irradiandole tramite l'avvolgimento , verso il lettore. Solitamente, il guadagno, dato dal rapporto tra potenza del segnale ricevuto dal lettore e la potenza del segnale trasmesso dal lettore stesso, è molto basso, ma grazie alle antenne direttive molto utilizzate dai lettori, l'id tag può essere ricevuto correttamente all'interno di una copertura di pochi metri. La trasmissione può avvenire in diverse bande di frequenza che vanno dalla bassa frequenza LF a 124-135 Khz fino a ultra-alte frequenze (UHF) a 860-960 Mhz, che offrono la copertura più ampia.

Etichetta RFID attiva: diversamente dalla passiva , è alimentata da una piccola

batteria interna che gli consente di ottenere una copertura radio maggiore, anche se questo si ottiene a spese dei costi di produzione più elevati. La necessità della batteria è correlata alla capacità di emettere segnali continui, ripetitivi nel tempo, utilizzati per comunicare alle antenne circostanti la loro posizione. Il range di frequenze utilizzato è quello UHF, solitamente nella banda 433 Mhz .

Etichetta RFID semi-attiva: è dotata di batteria che alimenta il chip ed il

trasmettire, in cui risparmiare energia l'etichetta rfid è disattivata (power save mode) e viene attivata tramite un ricevitore con la stessa tecnologia dei tag passivi. Quindi in assenza di interrogazioni, il tag può operare per tempi lunghi.

(15)

microchip o apparati ausiliari (sensori), ma non per alimentare un trasmettitore, in quanto in trasmissione si comportanocome un'etichetta rfid passiva.

1.3.2 Reader

Il reader è uno degli elementi chiave di un sistema RFId: il suo ruolo è quello di connettere tra loro il mondo fisico e quello degli applicativi per la gestione dei dati, svolgendo la funzione di interprete: presenta quindi due interfacce, quella di ingresso (verso le antenne) e quella di uscita (verso un elaboratore di dati) il cui output è gestito dal middleware. Il lettore, a seconda del design e della tecnologia utilizzata, può essere un dispositivo di sola lettura o lettura/scrittura. Il lettore contiene tipicamente al suo interno un modulo a radio frequenza, che funziona da trasmettitore e da ricevitore, una unità di controllo e un elemento di accoppiamento, l’antenna, che gli permette di dialogare coi tag.

1.3.3 Le antenne

Mentre l’antenna del tag deve essere progettata rispondendo a vincoli di miniaturizzazione e risparmio energetico, le antenne collegate al reader nascono secondo regole differenti. Sono antenne alimentate, ad elevato guadagno, le quali devono illuminare con il loro segnale una regione di spazio sufficientemente ampia da inglobare le dimensioni dell’unità logistica da tracciare. Il loro dimensionamento è subordinato alla particolare applicazione da svolgere, con particolare riferimento al volume della regione di spazio da irradiare col segnale ed alla distanza tra antenna e tag. In generale il fascio di radiazione di queste antenne è schematizzabile come un cono ampio 70° sia in verticale che in orizzontale.

(16)

1.4 IPv6

Considerando lo sviluppo sempre più veloce di intenet delle cose e pensando alla diffusione che lo stesso sta avendo, quando l'IoT sarà all'apice del funzionamento bisognerà tenere sotto controllo il numero di apparecchi on-line che saranno in rete. Il numero elevato di elementi che accederà alla rete, sicuramente produrrà molti problemi dal punto di vista delle politiche di indirizzamento della rete. Ora , il protocollo IPv4 identifica ogni nodo della rete tramite pacchetti a 4 byte e identificati da uno spazio di indirizzamento limitato formato da 32 bit che corrispondono a 4.3 milioni di indirizzi possibili. Già ai nostri giorni , con la diffusione di internet nel mondo, il numero di indirizzi IPv4 disponibili sta diminuendo rapidamente e si è dovuto ricorrere a mezzi quali il Network address Translation (Nat), una tecnica usata per sostituire nell’intestazione di un pacchetto IP un indirizzo, sorgente o destinazione, con un altro indirizzo. Nei primi anni '90 l'IETF diede inizio allo sviluppo dell'IPv6 per risolvere i problemi dello spazio di indirizzamento.Nei primi anni '90 l'IETF diede inizio allo sviluppo dell'IPv6 per risolvere i problemi dello spazio di indirizzamento.

1.4.1 Formato del pacchetto e integrazione con rfid

Il formato del è pacchetto IPv6 è stato sviluppato in modo tale da modificare automaticamente alcuni parametri di configurazione della rete, avere un header più semplice e soprattutto costante eliminando campi dell'ipv4 come le opzioni, la checksum e i campi per la frammentazione. Sicuramente , di vitale importanza anche per lo sviluppo dell'IoT [1] , è il maggiore spazio di indirizzamento. Gli indirizzi di IPv6 sono espressi mediante 128 bit, quindi è possibile definire indirizzi 10^38, un numero

(17)

sufficientemente alto per coprire le stime degli oggetti connessi. L'integrazione tra rfid e ipv6 è ancora in fase di studio, quindi costantemente ci sono nuove proposte sull'utilizzo dei campi del formato ipv6. Ad esempio, durante la conferenza internazionale sulle avanzate tecnologie di comunicazioni, alcuni ricercatori hanno proposto di utilizzare i 64 bit dell'identificatore di interfacciadell'indirizzo ipv6, per segnalare l'dentificatore tag rfid, mentre gli altri 64 bit del prefisso di rete, vengono usati per affrontare il gateway tra il sistema rfid e internet.

Figura 2 Indirizzi IPv6

Ovviamente nel caso di tag rfid di 96 bit, non c'è sufficiente spazio. Per non incombere in questo problema alcuni hanno proposto di utilizzare un elemento di rete appropriato, chiamato agente , che associa l'identificatore Rfid in un dato campo che verrà utilizzato come Id di interfaccia per l'indirizzo IPv6. Un approccio diverso è invece quello che vuole il messaggio RFID e gli header inclusi nel payload del pacchetto IPv6.

(18)

Figura 3 Pacchetto IPv6 con Id RFID

1.5 Wireless Sensor Network (WSN)

Una WSN [3] è una rete costituita da un insieme di sensori distribuiti nell’ambiente che cooperano tra di loro allo scopo di rilevare fenomeni fisici. Essa è solitamente formata di una “stazione base” eventualmente connessa ad altre reti (gateway) e da un certo numero di sensori wireless (nodi). Queste tipologie di reti sono composte da tre elementi fondamentali che variano di volta in volta sulla base dell'ambiente in cui la rete

(19)

deve operare. I tre elementi sono : i sensori, i nodi e l'alimentazione. I sensori hanno il preciso compito di rilevare la grandezza che occorre misurare. I nodi hanno il compito di acquisire la grandezza rilevata dai sensori e trasmettere tali dati al gateway. La particolarità dei nodi è che non sono mai uguali in due reti differenti ma vengono customizzati in base all'applicazione. L'alimentazione ha un ruolo importante nelle reti WSN (Figura 4) poiché i nodi e i sensori hanno bisogno di energia per operare. Come già si è visto nei paragrafi precedenti i dispositivi possono essere alimentati o con delle microbatterie o con sistemi che permettono all'oggetto di avere l'energia necessaria dall'ambiente in cui si opera. Per quanto riguarda le reti WSN occorre tener conto del fatto che esistano diverse tipologie di reti che possono adattarsi all'applicazione che si sviluppa o al protocollo di trasmissione con cui i nodi si scambiano le informazioni. Le diverse tipologie di reti possono essere divise secondo questa classificazione:

1. Rete a stella in cui è presente un nodo centrale, di solito il gateway, collegato a tutti

gli altri nodi della rete.

2. Rete ad anello in cui ogni nodo è connesso in serie con il successivo e in cui la testa

e la coda della rete sono connesse tra loro.

3. Rete a bus in cui tutti i nodi sono collegati tra di loro per mezzo di un bus, cioè un

canale che possiede due estremità e n accessi ad esso.

4. Rete ad albero in cui i nodi sono collegati in modo ramificato.

5. Rete fully connected in cui ogni nodo è collegato in modo diretto a tutti gli altri

nodi.

6. Rete mesh in cui ogni nodo è collegato in modo diretto solamente con i nodi più

vicini a lui, mentre per comunicare con quelli più distanti deve passare attraverso altri nodi.

(20)

La scelta della tipologia della rete dipende dal costo, dalla tipo dell'applicazione e dal grado di affidabilità che si richiede alla applicazione.

Figura 4 WSN

1.6 M2M

Machine to Machine (M2M) [4] è il nome che può essere usato per descrivere qualsiasi tecnologia che consente ai dispositivi collegati in rete per lo scambio di informazioni e di eseguire azioni senza l'assistenza manuale di esseri umani. Essa identifica la tecnologia che permette la comunicazione fra device con analoghe capacità, utilizzando

(21)

reti sia cablate sia wireless. Le applicazioni M2M, attraverso sensori o misuratori , catturano informazioni dall’ambiente (temperatura, umidità, consumo gas ecc) e, tramite reti strutturate, ingegnerizzano il dato in modo opportuno all’applicazione stessa, ad esempio una temperatura si può trasformare in un allarme di fuori soglia o la rilevazione del consumo del gas può diventare un dato di fattura per il cliente. La diffusione delle reti wireless ha permesso di estendere l’utilizzo di questa tecnologia di comunicazione fra macchine ad un utilizzo sempre più esteso, questo grazie anche ai costi di comunicazione sempre più vantaggiosi. Le applicazioni M2M, nel prossimo futuro, saranno sempre più presenti nella vita di tutti i giorni. La telemetria può essere considerata il precursore dell’M2M poiché entrambe le tecnologie trasmettono dati prelevati dai sensori ad una macchina, ma la maggiore differenza che si riscontra tra le due tecnologie è che l’M2M utilizza delle reti esistenti per la trasmissione dei dati al posto di un segnale radio dedicato. Inoltre c’è anche un’evoluzione dei sensori utilizzati: nel caso della telemetria erano molto costosi e richiedevano molta energia per trasmettere i dati, mentre nell’M2M, anche grazie alla crescita esponenziale delle reti wireless pubbliche degli ultimi anni, è possibile sviluppare sensori e applicazioni che sfruttano queste reti rendendo più facile, veloce ed economica la trasmissione.

1.7 Domini Applicazioni dell'internet of thinghs

Descrivere gli ambiti applicativi in cui Internet of Things può essere utilizzata è pressocché impossibile. Per elencare le attività in cui questa tecnologia trova utilizzo non basterebbe un solo lavoro di laurea e proprio per questo occorrerà fare un sunto e cercare di indicare quai potrebbero essere le principali occupazioni.

(22)

1.7.1 Aerospaziale e aeronautica

L'internet delle cose può contribuire a migliorare la sicurezza dei prodotti e dei servizi proteggendoli dalla contraffazione. Nel settore del trasporto aereo le parti di un aeromobile devono soddisfare requisiti di conformità che solitamente sono certificate da documenti di accompagnamento che ogni volta dovranno essere controllati provocando una perdita di tempo non indifferente. Nonostante ciò , alcune volte risulta difficile comunque essere precisi nella valutazione dei documenti e quindi può succedere che alcune contraffazioni non possano essere scoperte. Questo problema può essere risolto con l'introduzione di un pedigree elettronico per le parti dell'aeromobile che documentano l'origine e il ciclo di vita degli elementi. I nodi di una tale rete saranno utilizzati, oltre per la contraffazione, anche per misurare alcuni dati di vitale importanza per l'aviazione tipo le vibrazioni, la temperatura ecc. Naturalmente questi sono solo alcuni impieghi ma si potrebbe tranquillamente continuare nell'elenco considerando ad esempio l'ambito dei bagagli e del monitoraggio di carico.

1.7.2 Sistemi automotive

Nel settore automobilistico l'uso di cose intelligenti ricopre numerosi parti. Si parte dall'assemblaggio dell'auto fino all'uso in applicazioni dell'auto su strada. L'utilizzo di tag rfid durante l'assemblaggio possono ottimizzare la produzione dei veicoli e migliorare la logistica. Ovviamente il tutto può migliorare il controllo della qualità in quanto i dispositivi utilizzati contengano informazioni importanti per il prodotto che in ogni momento possono dare dei dati in tempo reale con conseguente miglioramento della gestione del prodotto. Gli stessi sensori sul singolo veicolo possono tra di loro

(23)

comunicare e questo naturalmente può sicuramente portare dei benefici a livello di informazioni da condividere ad esempio per qunto riguarda il traffico ed altro.

1.7.3 Telecomunicazioni

Internet degli oggetti creerà la possibilità di fusione di diverse tecnologie di telecomunicazione. Un esempio è l'uso del GSM, NFC (Near Field comunicazione), Bluetooth a bassa potenza, WLAN, multi-hop reti multi-hop , GPS e reti di sensori insieme con la tecnologia SIM-card. NFC permette la comunicazione tra gli oggetti in modo semplice e sicuro semplicemente tenendoli uno vicino all'altro. Il telefono cellulare può quindi essere utilizzato come NFC-reader e trasmettere i dati letti ad un server centrale. Quando viene utilizzato un telefono cellulare, la SIM-card gioca un ruolo importante per l'autenticazione dei dati NFC e credenziali (come i numeri dei biglietti, carte di credito ,ID informazione, ecc.). A lungo termine, i confini tra IoT e reti di telecomunicazione classici si assottiglieranno sempre di più e questo servirà per sostenere la creazione di servizi per la comprensione delle informazioni, per la protezione dalle frodi (che inevitabilmente andando a crescere come Internet è sempre più utilizzato), garantendo la privacy.

1.7.4 Building automation

Le tecnologie di building automation sono state in genere utilizzate soltanto in applicazioni di alto livello e appartamenti di lusso. Considerando la tecnologia in continuo sviluppo e la diffusione di reti senza fili il campo di applicazione si è reso più ampio. Per esempio, è sempre più popolare misurare il consumo di energia e trasmettere questa informazione al fornitore della stessa. Utilizzare sensori di

(24)

temperatura, umidità per fornire dati necessari per autoregolare automaticamente il livello di comfort e di ottimizzazione per l'uso dell'energia per il riscaldamento o il raffreddamento. Il Web basato sulla misura dell'energia intelligente e localizzazione e la mappatura del consumo energetico sarà una delle applicazioni dell'internet degli oggetti. In questo scenario, le tecnologie e le architetture rappresenteranno la soluzione del sistema per adattarsi all'ambiente. Altri esempi di utilizzo possono venire ad esempio utilizzando l'interconnessione di microfoni permettendo interconnessione di diversi dispositivi e sistemi. Interconnessione di sistemi di automazione domestica e dispositivi con altri sistemi e dispositivi esterna alla rete Intranet sarà raggiunto tramite Reti private virtuali personali (VPN). L'uso di VPN personale anche per la rete domestica diventerà sempre più popolare grazie al basso costo. Le soluzioni saranno utilizzate per condividere file tra computer a casa, ufficio. Qualsiasi dispositivo o cosa che ha input umano si può interfacciare in modo sicuro con i servizi dell'edificio per monitorare lo stato e modificarne le impostazioni.

1.7.5 Sanità

L’Internet of Things può fornire molte applicazioni utili al settore della salute attraverso la possibilità di inserire nelle etichette dei medicinali anche informazioni sulle modalità di assunzione, controindicazioni, ecc. Dotando di tag RFID i medicinali infatti, attraverso lo smartphone (o attraverso un altro terminale) si potranno leggere le informazioni dei medicinali riportate sul tag e quindi assumere i medicinali con una consapevolezza maggiore. Anche le reti di sensori possono fornire un grande aiuto nel settore sanità. Grazie alla miniaturizzazione infatti sarà sempre più agevole indossare dei sensori che siano in grado di leggere i nostri parametri vitali e che possono così

(25)

fungere da piattaforma informativa sul nostro stato di salute. Queste applicazioni sono molto utili per persone che soffrono di diabete, cancro, problemi cardiaci, Alzheimer, ma anche per persone a cui sono stati installati apparecchi medicali come pacemaker, stent, ecc. In questo modo i medici che hanno in cura questi pazienti non solo monitorano costantemente la salute del paziente pur non essendo a diretto contatto con esso ma vengono anche allertati in modo automatico dal sistema in caso di complicazioni. Questo tipo di applicazioni inoltre, quando l’evoluzione tecnologica ne permetterà una diffusione capillare anche per le persone sane porteranno due enormi vantaggi. Il primo vantaggio è di tipo preventivo, poiché un monitoraggio continuo permette di scoprire tempestivamente eventuali patologie e quindi di curarle quando sono ancora in una fase embrionale risparmiando tempo e risorse. Il secondo vantaggio invece è rappresentato dalla precisione e dalla velocità di diagnosi che il sistema garantisce in caso di incidente. I dispositivi intelligenti, infatti, non solo raccolgono i dati e i parametri vitali della persona ma sono anche in grado di immagazzinarli e in questo modo salvare la vita dei pazienti in condizioni di emergenza fornendo tali dati ai soccorritori. (CERP IoT 2010). Nell’ambito sanitario ricade anche il servizio di assistenza a persone non autosufficienti all’interno delle loro abitazioni. In questo ambito l’Internet of Things è uno strumento che aiuta sia gli assistenti nella cura sia i pazienti che spesso vorrebbero un po’ più di privacy a casa loro. Una rete di sensori distribuita in casa può infatti monitorare costantemente le azioni che la persona svolge, oltre ai suoi parametri vitali, individuare le azioni che escono dalla routine del paziente e avvertire l’assistente che in questo modo può intervenire solamente in caso di bisogno.

(26)

I dispositivi di identificazione wireless vengono utilizzati in molte aree per aumentare la sicurezza e la protezione di persone e cose.

Alcune di queste aree sono:

• Controllo ambientale: terremoti, tsunami, incendi, alluvioni, ecc

• Controllo di edifici: fughe di gas, perdite d’acqua, incendi, accessi non autorizzati, atti di vandalismo, ecc.

• Controllo delle persone: rapine, sistemi di pagamento, controllo e protezione di identità, ecc.

Quando si utilizzano dispositivi intelligenti di identificazione wireless le opportunità e le minacce che tali dispositivi apportano derivano dalla quantità di dati che generano, dalla loro condivisione e dalla possibilità che qualcun altro che non ne ha l’autorizzazione possa leggere tali dati. La necessità di definire una strategia e una politica comune che regoli l’Internet of Things è quindi una priorità all’interno della Commissione Europea che deve salvaguardare la sicurezza delle informazioni riservate dei propri cittadini. La privacy, infatti, è sempre stata in contrasto con la tracciabilità e l’etichettatura delle persone ma, nonostante questo, ultimamente si assiste ad alcune tendenze in cui le persone acconsentono di essere etichettate con un tag RFID. Come è stato illustrato nel paragrafo “salute e medicina” infatti tali dispositivi possono salvare la vita delle persone monitorandone i parametri vitali, come la concentrazione di zuccheri nel sangue per i diabetici. Un altro argomento in aperto conflitto con la privacy sono gli “oggetti” che i cittadini di uno stato devono possedere per accedere ad alcuni servizi. Ne sono un esempio le tessere sanitarie, le carte di identità elettroniche e i passaporti poiché tutti questi strumenti di identificazioni contengono informazioni in forma elettronica e quindi, come conseguenza, il loro impatto sulla privacy e sulla

(27)

sicurezza vanno valutati (CERP IoT 2010).

1.7.7 Trasporti

Anche l’ambito trasporti si può dividere in due macro-ambiti: il trasporto merci e il trasporto di persone. Per quanto riguarda il trasporto di persone le tecnologie attuali permettono di controllare in modo sicuro, anche se abbastanza lento, passeggeri e bagagli delle migliaia di persone che ogni giorno prendono un aereo soddisfacendo così la sempre maggiore necessità di sicurezza di questa modalità di viaggio. Ma il trasporto quotidiano è costituito solamente per una minima parte dal trasporto aereo. Ogni giorno, infatti, milioni di persone si muovono utilizzando i mezzi più svariati, dal treno alla bicicletta, all’auto (di cui si è parlato diffusamente nel paragrafo dedicato al fleet management) al trasporto pubblico. Soprattutto in quest’ultimo ambito le tecnologie Internet of Things possono contribuire in modo considerevole alla gestione della flotta, al monitoraggio del flusso dei passeggeri, all’ottimizzazione dei percorsi e dei consumi, consentendo così ai gestori di offrire un servizio migliore ai cittadini. Per quanto riguarda il trasporto merci invece le tecnologie Internet of Things consentono un monitoraggio e un controllo continuo su tutte le merci in transito su qualsiasi mezzo, al contrario di quanto avviene oggi in cui i controlli sono effettuati solamente per quanto riguarda il trasporto aereo, aumentando così il livello di sicurezza non solo degli aeroporti (grazie ad un controllo più efficace), ma anche di porti e stazioni ferroviarie. Un esempio di applicazione che aumenta la sicurezza in questo ambito può essere l’equipaggiamento di un container che contiene prodotti pericolosi con una rete di sensori che lo rendono “intelligente” e in questo modo durante il trasporto e lo stoccaggio può generare degli allarmi nel caso in cui vengano meno alcune condizioni

(28)

di sicurezza, come ad esempio la presenza nello stesso luogo di due sostanze chimiche incompatibili (CERP IoT 2010).

1.7.8 Monitoraggio ambientale

L’utilizzo delle tecnologie dell’Internet of Things per applicazioni “verdi” e di conservazione dell’ambiente è un settore in rapida espansione ai giorni nostri. Le tecnologie RFID e WSN, infatti, permettono lo sviluppo di nuove applicazioni con impatto positivo per la società che si possono suddividere in due grandi gruppi: le applicazioni per il monitoraggio della salute dell’ambiente e le applicazioni che hanno finalità di safety, quindi che mirano a prevedere ed evitare eventuali disastri. Le applicazioni con finalità di safety sono caratterizzate principalmente da reti di sensori distribuiti sul territorio che hanno il compito di rilevare eventuali cambiamenti nella conformazione dell’ambiente e, se tali cambiamenti possono essere potenzialmente pericolosi, inviare dei segnali di allarme alle forze di sicurezza competenti. Tramite queste applicazioni sarà possibile evitare o limitare i danni di disastri naturali come alluvioni, monitorando il livello dei fiumi, frane, monitorando la stabilità del suolo, incendi, monitorando l’aridità delle zone a rischio, ecc. Le applicazioni per il monitoraggio della salute dell’ambiente invece hanno lo scopo di misurare i cambiamenti che avvengono nell’ecosistema a causa dell’azione umana. In particolare sono state sviluppate applicazioni che monitorano la qualità dell’aria distinguendo le varie fonti dell’inquinamento: da quelle classiche come il traffico e il riscaldamento, alle contaminazioni di origine industriale, alla fuoriuscita di gas dal sottosuolo. Ci sono poi applicazioni che monitorano la qualità delle acque, i livelli di inquinamento elettromagnetico, acustico e luminoso. Tutte queste attività grazie all’avvento

(29)

dell’Internet of Things diventano più economiche e soprattutto, grazie alla presenza della rete, i dati raccolti si possono confrontare e analizzare più velocemente e in modo più completo consentendo così la realizzazione di interventi più efficaci.

Capitolo 2

2.1 Xively

Xively è una Platform as a Service (PaaS) per l'internet delle cose che permette l'interconnessione di dispositivi, dati, persone e l'archiviazione dei dati che in tempo reale possono essere consultati o usati . Platform as a Service (PaaS) è un modo di

(30)

“noleggiare” l'hardware, i sistemi operativi, memorie e capacità di rete su Internet. Il modello di erogazione del servizio consente al cliente di noleggiare server virtualizzati e servizi associati per l'esecuzione di applicazioni già esistenti o in via di sviluppo e la sperimentazione di nuove. Questa piattaforma è stata creata dall'architetto Usman Haque con il nome pachube che nel giro di pochi anni è diventato prima cosm e in ultimo xively. Il sito xively mette a disposizione una piattaforma che consente di condividere dati , a cui gli utenti tramite iscrizione al sito possono crearsi un profilo e da esso controllare i propri dispositivi. Bisogna fare chiarezza soprattutto su due delle cose dette precedentemente e cioè su i dispositivi e le modalità di collegamento. Per quanto riguarda i dispositivi è possibile collegare al sito sensori di ogni tipo dai semplici misuratori di temperatura, di umidità fino a sensori sofisticati che compiono particolari azioni. L'utente che decide di iscriversi al sito può essere un utente privato che può decidere di rendere i proprio dati pubblici oppure tenere il proprio profilo privato in modo da controllare i dati senza renderli noti e allo stesso modo l'utente pubblico ( comuni, associazioni ecc) può esattamente fare la stessa cosa. Un client xively ha sostanzialmente a disposizione gli strumenti necessari per poter raccogliere dati e controllarli da qualsiasi oggetto dotato di connessione e in ogni luogo. Questa è la rivoluzione sostanziale di questa piattaforma web, essa permette di condividere informazioni di qualunque tipo ma permette anche di gestire in maniera privata i propri dati. La condivisione dei dati e la visualizzazione in tempo reale permetterà ad ognuno di noi di poter utilizzare i dati stessi in qualunque modo. Xively può essere considerato un cloud computing, cioè un insieme di tecnologie che permettono, tipicamente sotto forma di un servizio offerto da un provider al cliente, di memorizzare, archiviare o elaborare dati (tramite cpu o software) grazie all'utilizzo di risorse hardware e software

(31)

distribuite e virtualizzate in rete in un'architettura tipica client-server. Sostanzialmente il client interagendo con il sito ha a disposizione tutto ciò che serve per inviare/memorizzare dati, oppure può costruirsi le proprie applicazioni , può scegliere il linguaggio informatico più adatto per costruire le proprie applicazioni oppure usare le applicazioni già esistenti in modo da collegare i sensori con la rete. Esistono all'interno del sito varie pagine che passo per passo guidano l'utente al corretto approccio , in modo tale da poter stabilire con esso il giusto rapporto. Sono presenti anche diverse librerie , per ogni linguaggio informatico esistente, che permettono di collegarsi con i server e danno spunti interessanti per creare applicazioni nuove partendo da basi già esistenti.

2.2 Xively API

Per poter usare la piattaforma Xively e poter procedere all'iscrizione per utilizzare un proprio profilo bisogna conoscere alcuni termini che saranno presenti nel sito. Lo stesso deve essere fatto per poter prendere coscienza della organizzazione dello stesso in modo da poterne fare un ottimo uso considerate le grandissime qualità che Xively possiede.

2.2.1 I feed

Un feed [6] è l'insieme di flussi di dati che corrispondono ai dispositivi. Ad un feed possono essere opzionalmente associati alcuni metadati per specificare e descrivere le caratteristiche dei dispositivi in modo da renderli più trasparenti possibili. Esempi di metadati sono informazioni sulla posizione, sull'esistenza dello stesso, quindi se è fisico o virtuale, se è fisso o mobile , indoor o outdoor, ecc. Ogni dispositivo corrisponde esattamente ad un feed. Nel momento in cui viene fatta l'iscrizione al sito e viene creato un feed, dopo l'attiviazione viene associato al feed un numero di serie generato dal

(32)

sistema e allo stesso viene associata una api key (poi si vedrà a cosa serve). Il numero associato al feed sarà esclusivo per esso e all'interno dell' URL andrà ad identificare la pagina in cui saranno poi visionati i risultati del feed (https://api.xively.com/feeds/10011 ) . Come si è detto in precedenza ogni feed nel momento della creazione può essere caratterizzato da particolari tag che ne permettono la descrizione e ne fissano alcune caratteristiche principali. In particolare all'interno della pagina del feed apparirà la scritta feed manual se il feed viene aggiornato manualmente dal dispositivo remoto oppure si leggerà feed automatic se l'aggiornamento avverrà automaticamente. Queste due tipologie di feed saranno a loro volta live se l'aggiornamentoè avvenuto negli ultimi 15 minuti altrimenti viene detto frozen che invece indicherà lo stato di non aggiornamento del feed.

2.2.2 Datastream

Un datastream è un canale di comunicazione bidirezionale che consente lo scambio di dati tra xively e i dispositivi corrispondenti. Ogni datastream è rappresentato da due attributi specifici l'unità di misura e il tag della grandezza misurata. Ad ogni feed possono corrispondere più datastream e gli stessi possono essere cancellati anche dopo la creazione del feed. Il datastream sostanzialmente ci da il grafico delle grandezze e il loro variare in base alle variabili che abbiamo scelto.

2.2.3 Datapoint

Un Datapoint rappresenta un singolo valore di un flusso di dati in un momento preciso nel tempo. È semplicemente una coppia di valori composta da un timestamp e il valore del flusso. Xively usa il tempo sul server quando riceve la richiesta di assegnare un

(33)

timestamp a ogni Datapoint, quindi non è necessario assegnare in modo esplicito uno. Se si desidera impostare il timestamp manualmente, la procedura consigliata è quella di impostarlo dopo l'attributo "at" durante la creazione del datastream. La struttura degli URL per accedere ai dati / metadati riflette la struttura gerarchica dei tre principali tipi di dati: feed/datastream/datapoints.

2.2.4 Api keys

Le Api Keys determinano le autorizzazioni per l'accesso alle risorse Xively. Xively crea una chiave API automaticamente, che identifica unicamente il mio feed e determina ogni tipo di funzione relativo all'accesso al feed e non solo saranno determinanti per ogni azione: leggere, aggiornare, creare, eliminare. E' possibile creare chiavi con permessi specifici per maggiore sicurezza per limitare l'accesso a feed, datastream e datapoints Xively. Le chiavi possono essere usate limitando le funzioni in base al grado di sicurezza e privacy che si vuole dare al nostro profilo, infatti è possibile per esempio avere una una chiave per specificare una autorizzazione che fornisce un accesso in sola lettura a tutte le risorse pubbliche e un altra che limita l'accesso per un particolare indirizzo IP per un singolo feed in scrittura. L'api key è costituita da una sequenza di caratteri, maiuscoli e minuscoli, e numeri ; in totale gli elementi della chiave sono 48. La chiave come abbiamo visto viene generata automaticamente, nel caso in cui per qualunque motivo si voglia cambiare l'api key , si può rigenerarla e automaticamente le funzioni che possedeva prima saranno ripristinate, quindi il funzionamento con la nuova chiave sarà identico al precedente , tutte le sue funzioni saranno conservate.

(34)

I trigger sono le soglie che possono essere impostate per un flusso di dati, in modo tale da indicare le eventuali soglie di allarme che si vogliono dare ai nostri sensori per monitorare e quindi operare telecontrollo negli ambienti. Una volta impostato il trigger, essi vengono elaborati automaticamente da xively e quando la soglia è superata il trigger invia una richiesta HTTP posto ad un URL fornito da noi al momento della creazione del trigger. La richiesta include un documento json che indica le caratteristiche dei dati (Fig 1).

Figura 1 Documento Json

2.2.6 Waypoint e tag

Il tag è una parola chiave o un termine descrittivo che viene asssegnato al feed. Esso può essere una sola parola, che identifica un concetto descrittivo oppure un insieme di parole intervallate da virgole e non da virgolette e apostrofi che descrivono il feed e permettono di trovarlo in caso di ricerca web. Mentre il waypoint è sostanzialmente un

(35)

documento che viene creato nel momento in cui il feed definito mobile , cambia luogo ed è in questo caso che viene creato uno storico dei waypoint con un timestamp associato.

2.3 Primo approccio a xively

Dopo aver fatto un piccolo glossario dei termini, che di fatto saranno all'ordine del giorno utilizzando xively, si può passare a dare qualche piccola informazione sull'utilizzo iniziale della piattaforma. Con precisione cerchiamo di fare una piccola guida che dia qualche piccolo aiuto e spiegazione per la creazione di un profilo. La prima cosa da fare, come accade ogni volta che ci si iscrive ad un servizio online, bisognerà naturalmente scegliere un username ed una password e poi riempire alcuni campi che identificano più precisamente la posizione e la persona. Le operazioni da fare sono:

1.Portarsi sul sito https://xively.com/ ed effettuare con le proprie credenziali il login.

2. Entrare nel proprio profilo e controllare ciò che automaticamente è assegnato cioè

l'api key con la specificazione dei permessi (read, create, update, delete) e il feed Id e l'URL del profilo.

3. Indicare il nome del datastream , aggiungere i tags (in questo caso è importante

scrivere parole inerenti all'oggetto della misura), scrivere l'unità di misura e il simbolo della stessa e infine se si vuole ,manualmente si può aggiungere il valore corrente del sensore da cui la misurazione partirà. A questo punto si può salvare.

4. Inserire il luogo in cui si trova il sensore.

(36)

indicare i tags e i collegamenti con un sito web se il progetto avesse anche un sito come riferimento e infine la mail per essere contattato per qualsiasi motivo (la mail serve per instaurare comunicazioni con chi è entrato in contatto con il progetto).

6. E' possibile rigenerare l'api key e decidere di averne più di una in base ai permessi

che si scelgono

7. Decidere le soglie e indicare i valori che si vogliono controllare.

A questo punto si può salvare il tutto e il profilo (Fig. 2) è quasi funzionante. Il “quasi” si riferisce al fatto che ora dobbiamo collegare il nostro feed al sensore o ai sensori che si è deciso di utilizzare in modo tale che il feed possa registrare i dati in tempo reale.

Figura 2 Parti di profilo Xively

(37)

protocolli di comunicazione e gli strumenti che ci permettono di collegare al sito i nodi.

2.4 Comunicazione con Xively

Prima di cominciare a descrivere il tipo di connessioni client-server occorre capire quali particolari protocolli la piattaforma xively utilizza per la comunicazione. Bisogna tenere presente che la comunicazione con xively in entrambe le direzioni deve essere piuttosto leggera e soprattutto deve garantire il concetto di scalabilità. Per queste ragioni il protocollo scelto per la comunicazione è il REST basato sui metodi HTTP. Vediamo che cosa è il REST .

2.4.1 Il REST

L’acronimo REST [7] , REpresentational State Transfer ("trasferimento dello stato di rappresentazione") deriva dalla tesi di dottorato di Roy Fielding intitolata "Architectural Styles and the Design of Network-based Software Architectures" ("stili architetturali e progettazione di architetture software basate sul networking"). Fielding è uno dei principali autori del protocollo HTTP, HypertText Transfer Protocol, ("protocollo di trasferimento degli ipertesti") versione 1.0 e 1.1.Il REST non è un’architettura bensì uno "stile architetturale" formato da vincoli, linee guida e best practice. La formulazione dello stile REST è stata ottenuta dopo un’attenta analisi effettuata da Fielding sulle risorse e le tecnologie disponibili per la creazione di applicazioni distribuite. L’assioma di base è che, senza imporre alcun vincolo, i sistemi tendono "naturalmente" a evolvere in maniera entropica, generando le conseguenze negative che tutti noi ben conosciamo (sistemi costosi da creare, difficili da mantenere e da far evolvere, etc.). Con questo

(38)

assunto in mente, Fielding ha iniziato la sua esplorazione nel dominio degli stili e delle architetture distribuite partendo dal limite inferiore da lui definito "spazio nullo" (null

space), rappresentato da organizzazioni dotate di sistemi a basso grado di maturità in

cui tutte le risorse tecnologiche sono disponibili, tutti gli stili sono ammessi, senza regole ne’ limiti. Continuando lungo la direttrice evolutiva, Fielding ha poi definito lo stato di totale maturità caratterizzato da sistemi che rispettano le regole da lui definite e che quindi possono essere definiti compatibili con le linee guida REST (RESTful). Queste regole sono condensate in alcuni vincoli che devono essere rispettati e adesso vediamo quali sono.

2.4.2 I vincoli del REST

I vincoli sono regole imprescindibili , che devono essere applicate o che comunque devono rappresentare la connessione . La prima regola è che il sistema deve essere di tipo client-server, in cui le parti interagiscono attraverso interfacce uniformi. Il secondo vincolo da rispettare è che il sistema deve essere stateless. Non deve essere necessario implementare sul lato server funzionalità atte a mantenere le sessioni utenti. In questo modo ogni nuova richiesta è indipendente da quelle precedenti e quindi può essere gestita da un’istanza qualsiasi del server. Quindi ogni richiesta deve contenere tutte le informazioni necessarie per permettere a ogni istanza del server di gestirla. La ragione di questo vincolo è garantire un elevato grado di scalabilità del server e anche a renderlo più affidabile. Tuttavia questo vincolo non vieta la possibilità ai server di gestire una propria cache al fine di migliorare le prestazioni. L’esempio classico è l’applicazione delle politiche di sicurezza. In particolare, è prassi che il server e il client si scambino un token come attestato di autenticazione dell’utente (l’utente è effettivamente chi aveva

(39)

dichiarato di essere). Tuttavia, ciò è solo la punta dell’iceberg. Il sistema deve poi usare il profilo dell’utente per autorizzarlo a eseguire una serie di funzioni e accedere ai dati. Al fine di migliorare le prestazioni, è prassi che il server inserisca nella cache i profili degli utenti collegati, con una validità temporale che dipende dalle politiche di sicurezza. Quindi, anche se il server mantiene informazioni sugli utenti, la comunicazione rimane stateless. Il terzo vincolo è che il sistema deve essere in grado di supportare cache a diversi livelli. I browser commerciali sono in grado di eseguire il caching delle informazioni inviate dai vari server disponibili in Internet. Pertanto le risposte devono, implicitamente o esplicitamente, definire i livelli consentiti di cache al fine di supportare il client nell’ottimizzazione consistente delle performance. Il quarto vincolo è che i sistemi devono essere accessibili in modo uniforme: ogni risorsa deve avere un indirizzo univoco globale e un punto valido di accesso. Ciò definisce un’interfaccia uniforme che permette un elevato grado di disaccoppiamento tra client e server. Infine come ultimo vincolo Il sistema deve essere stratificato (multi-tiered). Un client internet normalmente non è in grado di determinare se è connesso direttamente con il server o se è connesso attraverso un agente intermedio, come del resto tipicamente avviene. In effetti, le architetture classiche prevedono la presenza di agenti intermedi ( proxy dotati di cache, sistemi di sicurezza tipo firewall, e così via). C'è da aggiungere che i vincoli sopracitati non dettano le regole per un particolare tipo di tecnologia da utilizzare, bensi definiscono come devono essere trasferiti i dati.

2.4.3 Organizzazione a livelli di REST

Visti i concetti base del protocollo REST passiamo ora alla descrizione più matura del sistema ideato da Richardson e documentato da Martin Fowler. Questo modello consiste

(40)

in una visione del protocollo a quattro livelli (figura 3).

Figura 3 Livelli REST

2.4.4 Livello 0

Il livello 0 chiamato The swamp of pox che letteralmente significa “La palude del vaiolo” anche se pox è l'acronimo di “Plain Old Xml”. I sistemi Pox sono quelli che si scambiano messaggi in modo sincrono attraverso il protocollo HTTP.

Secondo Richardson si tratta di una palude in quanto questi servizi cosi strutturati non seguono le direttive REST, e quindi il sistema nel suo complesso risulta non organizzato razionalmente, difficile da controllare, da far evolvere, e così via. Il livello 0 dunque è caratterizzato da sistemi che utilizzano il protocollo di networking alla base del WWW come protocollo di integrazione, limitandosi però a un utilizzo base (request-response sincrono) che non include le direttive REST come identificazione delle risorse, utilizzo di verbi, etc. Pertanto i sistemi a questo livello sono posti alla base, al livello 0, del modello di maturità. L’interazione tra le due componenti è basata su uno scambio sincrono di messaggi XML ( json,csv) attraverso il protocollo HTTPS.

(41)

2.4.5 Livello 1

Il livello 1 invece consiste nell'organizzazione dei servizi in termini di risorse. Una risorsa è qualunque cosa accessibile nel web, ossia il cui stato sia trasferibile tra server e client. Il concetto di risorsa è centrale per le architetture REST e una delle direttive base richiede di assegnare a tutte le risorse un identificativo univoco che nel mondo WWW equivale a un URI, Uniform Resource Identfier, (identificatore uniforme di risorse). Quindi tutte le risorse devono essere identificate univocamente a livello globale per mezzo di apposito URI. L’utilizzo di un metodo predefinito e consistente di assegnare identificativi univoci genera tutta una serie di vantaggi. In primo luogo non è necessario ogni volta inventarsi uno schema, giacche’ questo esiste già, è largamente utilizzato su scala mondiale, non presenta problemi, tutti sono in grado di comprenderlo ed è uno standard internazionale. Inoltre, risorse identificate attraverso un URI sono di fatto un link che è possibile condividere con diverse persone (per esempio inviandolo attraverso una e-mail). Insomma è evidente che identificare univocamente le risorse attraverso l’URI, oltre a essere un metodo standard, fornisce tutta una serie di importanti vantaggi. Dall’analisi degli esempi precedenti si può notare che l’indirizzo URI, in prima analisi, è composto da una parte fissa e da una parte variabile che identifica la specifica istanza. Ora, mentre la parte fissa è pressoche’ definita, per la parte variabile il suggerimento consiste nell’utilizzare un id generato dal sistema (per esempio un sequence number). A questo punto è utile enfatizzare la potenza degli ID espressi in termini di URI. In particolare questi sono link a risorse che possono essere fornite da processi, applicazioni, sever sparsi per il mondo: URI esprimono link secondo uno standard

(42)

globale.

A questo punto dovrebbe essere chiaro su cosa si intenda con il termine risorsa anche se in informatica questo vocabolo è utilizzato con diversi significati. Di certo in questo contesto non si fa riferimento a risorse fisiche come microprocessori, memorie, stampanti, o simili. Molto pragmaticamente le risorse sono le principali astrazioni ossia gli "oggetti" che il servizio intende esporre. Qualora si partisse dal disegno di un diagramma delle classi rappresentante il business oggetto di studio (modello tipicamente detto "Domain Object Model"), allora gli oggetti (ossia le classi) principali presenti in tale modello, verosimilmente, potrebbero diventare risorse in termini REST.

2.4.6 Livello 2

Come visto nel paragrafo precedente, gli URI sono molto potenti sia perche’ permettono di individuare una risorsa messa a disposizione da un server ubicato in qualsiasi parte del mondo, sia perché i browser sono in grado di effettuare la richiesta e di interpretare in qualche modo la risposta. Questo è possibile grazie all’esistenza di un altro standard: i "verbi" HTTP. Da notare che durante i primissimi anni della programmazione web, le comunicazioni client server si basavano quasi esclusivamente sul metodo HTTP GET, che veniva utilizzato per fare quasi tutto: reperire dati, inviare form da memorizzare, etc. Al GET, in alcuni casi, si preferiva il metodo POST, quando ci si imbatteva in alcune limitazione del metodo GET, come la dimensione limitata per l’invio dati. Le cose, da allora, si sono evolute tanto che il livello 2 richiede di utilizzare i metodi HTTP standard GET, PUT, POST, DELETE, in modo congruente. Il metodo GET serve per recuperare tutte le informazioni, sotto forma di un’entità, relative alla risorsa identificata

Figura

Figura 2 Indirizzi IPv6
Figura 4  Hardware collegabili con xively
Figura 1 File json
Figura 4 richiesta feed privato
+7

Riferimenti

Documenti correlati

Resta pertanto possibile la messa a punto di qualsiasi circuito accordato o a larga banda operante in alta frequenza, mediante l' osserva­. zione contemporanea

La campagna “Siamo tutti pedoni” giunge quest’anno alla decima edizione, un lungo periodo che ci permette di fare qualche bilancio: se da una parte, in questi anni, è deci-

Il progetto è stato formulato partendo da una lettura critica di questi dati statistici a cui è seguita una fase di identificazione dei bisogni del Territorio realizzata

CloudFlare è un servizio che migliora le prestazioni di un sito web e la sua sicurezza. Utilizzando tale servizio, il traffico del sito web viene instradato attraverso la loro

Altri esempi di regionalismi che non vengono resi sono “fatto la manuzza” (p. 36), tradotto in svedese “hade blivit riktigt duktig på (p. 91) Questo è un esempio interessante

casi solo nei primi tre mesi dell’anno in corso. Le ragioni di tale successo sono molteplici: sicuramente ha inciso in maniera determinante la legge 120/2010, che ha previsto

P: Intendo, se Tizio non conosce Caio direttamente, ma conosce Sempronio che a sua volta conosce Caio, allora Tizio e Caio sono separati da una catena lunga due.. Per esempio, io

Un progetto più ambizio- so, BPEL4WS (Business Process Execution Language for Web Service), definisce un lin- guaggio di composizione tra servizi che può anche essere utilizzato