Tesi Pasquini Alex Matricola 076035

110
Universit` a degli Studi di Camerino Scuola di Scienze e Tecnologie Corso di Laurea in Informatica (Classe 26) Progettazione e Sviluppo di un Sistema di Monitoraggio Ambientale basato su Wireless Sensor Network Tesi sperimentale in Ingegneria del Software Laureando Relatore Alex Pasquini Ing. Alberto Polzonetti Matricola 076035 Correlatore Dott. Francesco De Angelis A.A. 2009/2010

Transcript of Tesi Pasquini Alex Matricola 076035

Page 1: Tesi Pasquini Alex Matricola 076035

Universita degli Studi di Camerino

Scuola di Scienze e Tecnologie

Corso di Laurea in Informatica (Classe 26)

Progettazione e Sviluppo di un Sistema

di Monitoraggio Ambientale basato su

Wireless Sensor Network

Tesi sperimentale in Ingegneria del Software

Laureando Relatore

Alex Pasquini Ing. Alberto PolzonettiMatricola 076035

Correlatore

Dott. Francesco De Angelis

A.A. 2009/2010

Page 2: Tesi Pasquini Alex Matricola 076035
Page 3: Tesi Pasquini Alex Matricola 076035

Un sentito e sincero ringraziamento vaal Prof. Ing. Alberto Polzonetti, mio Relatore

e al Dott. Francesco De Angelis, mio Correlatore,per la loro disponibilita e competenza nell’aiutarmi a svolgere questo lavoro.

Ringrazio i miei amici piu veri tra cui Giovanni, Davide, Maikol, Marco, Giorgio,Raffaele, Alberto, Daniele, Vittorio, Alessandro, Antonio, Flavio e Igor.

Mi hanno aiutato piu di quanto possano sospettare...

Per ultimi, ma non da ultimi, ringraziomio padre Franco, mia madre Ida, mio fratello Giuseppe,

mio nonno Francesco, mia nonna Graziosa e la mia ragazza Borana,i quali, trovando il giusto compromesso tra critiche e incoraggiamenti,

hanno saputo tirar fuori il meglio di me.

Page 4: Tesi Pasquini Alex Matricola 076035
Page 5: Tesi Pasquini Alex Matricola 076035

Indice

1 Introduzione 7

2 Tecnologia a Radiofrequenza Passiva e Attiva 11

2.1 Tecnologia a Radiofrequenza passiva . . . . . . . . . . . . . . . . . . . . 11

2.1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.2 Classificazione dei dispositivi . . . . . . . . . . . . . . . . . . . . 12

2.1.3 Proprieta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.1.4 Applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2 Tecnologia a Radiofrequenza Attiva . . . . . . . . . . . . . . . . . . . . . 16

2.2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2.2 Protocolli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2.3 Applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Implementazione di una WSN per il monitoraggio ambientale 27

3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.2 Specifiche Tecniche del kit utilizzato . . . . . . . . . . . . . . . . . . . . 28

3.2.1 Sensore di pressione . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2.2 Sensore di temperatura . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.3 Monossido di carbonio . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.4 Anidride carbonica . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.3 Ambiente di sviluppo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4 Implementazione delle WSN di monitoraggio . . . . . . . . . . . . . . . 32

3.4.1 Studio dei nodi della rete . . . . . . . . . . . . . . . . . . . . . . 33

3.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4 Il software Ambient Monitoring 41

4.1 Descrizione del sistema e finalita . . . . . . . . . . . . . . . . . . . . . . 41

4.2 Architettura del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.3 Attori del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.3.1 Modello UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.3.2 Class Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.4 Interfacciamento con le WSN . . . . . . . . . . . . . . . . . . . . . . . . 52

4.4.1 Struttura del DataBase . . . . . . . . . . . . . . . . . . . . . . . 52

4.4.2 Acquisizione dati . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Page 6: Tesi Pasquini Alex Matricola 076035

Indice

4.5 Interfaccia utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.5.1 Classi di dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.5.2 Pagina di Introduzione . . . . . . . . . . . . . . . . . . . . . . . . 62

4.5.3 Gestione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.5.4 Gestione degli Allarmi . . . . . . . . . . . . . . . . . . . . . . . . 63

4.5.5 Pagina dei Dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.5.6 Gestione dei Mote . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.5.7 Pagina delle preferenze . . . . . . . . . . . . . . . . . . . . . . . . 70

4.5.8 Classi di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.6 Tecnologie di implementazione . . . . . . . . . . . . . . . . . . . . . . . 76

4.6.1 Groovy on Grails . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4.6.2 AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4.6.3 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.6.4 Google maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5 Impiego statistico dei dati rilevati 85

5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

5.2 Tecnologie di apprendimento dati . . . . . . . . . . . . . . . . . . . . . . 85

5.2.1 Obiettivi del data mining e della scoperta di conoscenza. . . . . . 86

5.3 Classificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5.4 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5.5 Tecniche e algoritmi di data mining . . . . . . . . . . . . . . . . . . . . . 89

5.5.1 K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

5.5.2 Alberi decisionali . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

5.5.3 Regressione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5.5.4 Reti neurali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

5.6 Software KNIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

5.6.1 Descrizione generale . . . . . . . . . . . . . . . . . . . . . . . . . 96

5.6.2 Architettura interna . . . . . . . . . . . . . . . . . . . . . . . . . 97

5.6.3 Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

5.7 Prove sperimentali sull’applicazione Ambient Monitoring . . . . . . . . . 99

5.7.1 PNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

5.7.2 Decision Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.7.3 SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5.7.4 SOTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.7.5 Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.7.6 Fuzzy Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

5.8 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

6 Conclusioni 107

6

Page 7: Tesi Pasquini Alex Matricola 076035

1. Introduzione

Il lavoro svolto ha come obiettivo principale quello di progettare e sviluppare un sistemadi monitoraggio ambientale, per garantire la sicurezza di aree di lavoro o la qualita dellamerce che vi si trova all’interno. La tesi si presenta come la raccolta di un lavoro distudio, analisi e progettazione del sistema ed il relativo sviluppo di un prototipo. Inquesto documento verranno discusse le scelte effettuate e i relativi problemi che sonosorti, indicando i vari modi di risoluzione.

Grazie allo sviluppo di nuove tecnologie di comunicazioni senza fili e grazie all’esigen-za di ridurre al minimo lo spazio all’interno di componenti elettronici, oggi possiamoparlare di reti di sensori, un insieme di dispositivi elettronici autonomi, che rilevanodelle grandezze fisiche nell’ambiente per poi inviarle ad un calcolatore che si occuperadi elaborarle e di presentarle.

Gli odierni sensori che si possono trovare in commercio, sono spesso definiti attividove con “attivo” si intende un componente che, grazie ad una fonte esterna di energia,fornisce in uscita un segnale di potenza amplificato. Con i componenti attivi e possibilerealizzare una Wireless Sensor Network in grado di aggregare i valori rilevati da piudispositivi senza la necessita di collegamenti cablati poiche i singoli nodi sfruttanotecnologie a radiofrequenza per la comunicazione.

Fino a qualche anno fa, questi sistemi non erano diffusi e cio si puo elencare in treproblematiche:

1. L’eccessivo spazio occupato dai sensori

2. Poca robustezza dei componenti

3. L’ingombranza dei cavi che collegavano i sensori ai calcolatori

4. L’eccessivo costo dei componenti

Dal primo punto possiamo capire come non era possibile piazzare sensori in tuttipunti strategici dell’ambiente da monitorare, dato che una scheda con all’interno varisensori era molto ingombrante e quindi non adatte all’implementazione desiderata.

Con il secondo punto vogliamo sottolineare come i componenti erano poco robusti,svolgevano il compito per cui erano stati progettati, ma con il verificarsi di eventinaturali (pioggia, temporali) i sensori riscontravano problemi sia di comunicazione chedi correttezza dei dati.

Grazie al terzo punto, possiamo notare come l’implementazione di questi sensoriportavano ad un enorme uso di cavi, i quali ingombravano l’ambiente da monitorare.

Con il quarto punto, dobbiamo sottolineare come i prezzi dei componenti erano alti,e quindi l’implementazione di una rete di sensori, oltre ai problemi sopracitati, portavaad una spesa molto alta.

Page 8: Tesi Pasquini Alex Matricola 076035

Tuttavia oggi, con lo sviluppo della tecnologia e dei sistemi di comunicazione, abbi-amo protocolli che ci permettono di inviare dati senza l’utilizzo dei cavi, si e riuscito aridurre lo spazio che occupava una scheda di sensori e inoltre i prezzi dei componentisono scesi enormemente. Tutto cio porta ad un enorme utilizzo in campo industrialedi sensori, non solo per monitorare un ambiente, ma sopratutto per monitorare le mac-chine impiegate nella catena di produzione. Ovviamente le reti di sensori non trovanouso solamente in campo industriale, infatti essi sono utilizzati nei settori piu svariati,come per esempio nel campo meidoc-sanitario, dove l’utilizo di una wireless sensor net-work e rivolta a fornire un’interfaccia per persone affette da handicap, e nella ricerca,dove e possibile recuperare i dati che riguardano le abitudini degli animali.

Per la progettazione di questo sistema, ho studiato i vari modi di comunicazionewireless dei componenti utilizzati, concludendo che il protocollo ZigBee era l’ideale perla nostra applicazione. A riguardo ho utilizzato un kit di prototipazione per reti disensori che lo implementa.

Nella parte del sistema relativa al software ho effettuato la programmazione deisensori sia per la rilevazione dei dati ambientali, sia per la comunicazione. Lo sviluppodell’applicazione web di controllo e avvenuta grazie al framework Groovy & Grails.L’applicazione e stata progettata secondo le best practice dell’ingegneria del software esono stati sviluppati modelli UML che hanno aiutato enormemente la parte del lavororelativa all’implementazione. Inoltre ho utilizzato tecnologie quali AJAX e GoogleMaps per rendere piu dinamico l’ambiente di controllo, tenendo sempre aggiornati idati visualizzati.

La tesi si sviluppera in altri cinque capitoli:

• Capitolo 2: Introdurra le tecnologie a radiofrequenza passiva e attiva. In questocapitolo tratteremo la tecnologia RFID, con i relativi sistemi, le diverse tipolo-gie dei TAG, i campi di frequenza in cui lavorano, le relative problematiche ededicheremo gran parte di spazio ai protocolli utilizzati, con un confronto finale.

• Capitolo 3: Trattera l’implementazione di una Wireless Sensor Network per ilmonitoraggio ambientale. In questo capitolo parleremo di come abbiamo svilup-pato la rete di sensori, con quale topologia, elencando i pregi e i difetti. Parleremoinoltre dei componenti acquistati dalla Libelium e della loro programmazione.

• Capitolo 4: Dettaglia il software Ambient Monitoring. In questo capitolo par-leremo della progettazione del software, del “tragitto” che dovranno effettuare idati, la presentazione dei vari modelli UML, della scelta del database usato e dicome verra strutturato. Inoltre verra discusso il metodo di inserimento dei datinel database, grazie ad un applicativo java e parleremo dell’implementazione del-l’interfaccia utente, sviluppata con il framework Grails seguendo il modello MVC.Infine verranno presentate le tecnologie utilizzate per rendere l’applicazione piudinamica e renderla consona agli standard del Web 2.0.

• Capitolo 5: Mostra un possibile impiego statistico dei dati rilevati. In questocapitolo tratteremo una delle potenzialita offerte dalla nostra applicazione, la pos-sibilita di interfacciarsi con dei strumenti statistici per trattare i dati. Parleremodelle varie tecniche di apprendimento dei dati e dei vari algoritmi per l’elabo-razione statistica. Infine verra proposto un software open source con il quale ilnostro sistema riesce ad interfacciarsi, rendendo meno elaborato il compito svoltodal software Ambient Monitoring.

8

Page 9: Tesi Pasquini Alex Matricola 076035

• Capitolo 6: Conclusioni. In questo ultimo capitolo si affronteranno le conclusionidel lavoro, indicando i punti deboli e i punti di forza del sistema sviluppato,si parlera di come sono stati affrontati i problemi e come la fase di analisi eprogettazione e stata poi utile nella fase di implementazione.

Per lo sviluppo della tesi si e scelto di dividere il documento in tre parti principali. Laprima parte e dedicata alla progettazione del sistema, con i vari studi sulle tecnologieda implementare e i relativi risultati. Una seconda che contiene informazioni su comee stato condotto il lavoro di implementazione. Infine la terza parte che tratta comequesto progetto, in fase prototipale, puo essere ulteriormente evoluto.

Per dubbi o eventuali informazioni riguardante il progetto, potrete contattarmi al-l’indirizzo di posta elettronica [email protected].

9

Page 10: Tesi Pasquini Alex Matricola 076035
Page 11: Tesi Pasquini Alex Matricola 076035

2. Tecnologia a RadiofrequenzaPassiva e Attiva

2.1 Tecnologia a Radiofrequenza passiva

2.1.1 Introduzione

RFID (o Radio Frequency IDentification o Identificazione a radio frequenza) e una tec-nologia per l’identificazione automatica di oggetti, animali o persone (AIDC AutomaticIdentifing and Data Capture) basata sulla capacita di memorizzare e accedere a distan-za a tali dati usando dispositivi elettronici (chiamati TAG o transponder) che sono ingrado di rispondere comunicando le informazioni in essi contenute quando interrogati.Un sistema di identificazione a radiofrequenza e costituito da due componenti princi-pali: un trasponder o tag, e un reader. Il tag e l’etichetta che si appone all’oggetto,e qui che sono contenute tutte le informazioni ad esso relative e che lo identificanoin modo univoco. I dati, memorizzati in un microchip, possono essere letti grazie aun’antenna che riceve e trasmette i segnali radio da e verso il reader Rfid. Il microchipe l’antenna, insieme formano il tag Rfid e sono tenuti insieme su un supporto fisico,il reader e il dispositivo, fisso o portatile, deputato alla lettura del tag Rfid, in gradodi convertire le onde radio del tag in un segnale digitale che puo essere trasferito suun computer, per comunicare fra loro il tag e il reader devono essere sintonizzati allastessa frequenza.

Figura 2.1: Sistema RFID

Esistono diversi tipi di tag Rfid, alcuni dei quali normati da standard ISO:

• 125/134 kHz

• 13,56 MHz

• 868/915 MHz

• 2,45 GHz

Page 12: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza passiva

I tag 125 kHz 13,56 MHz sono previsti dalle norme ISO come passivi (senza batterie)mentre per i tag RFID UHF1 e Ultrawide band esistono attivi, semi-attivi e passivi. Itag attivi sono alimentati da batterie, i tag semiattivi sono alimentati da batterie soloper mantenere attiva la parte circuitale interna mentre per l’irradiazione utilizzano unaparte dell’energia ricevuta dall’onda radio che trasmette anche le informazioni, mentrei tag passivi non hanno nessuna fonte di alimentazione interna ma traggono l’energiadall’onda radio inviata dal lettore che li interroga per attivarsi e ritrasmettere i dati.

2.1.2 Classificazione dei dispositivi

I dispositivi RFID vengono progettati per ottimizzare le prestazioni di uno specificoprocesso e questa personalizzazione e importante per le caratteristiche dei trasponder,poiche ogni processo prevede prestazioni specifiche che domandano diverse distanze dilettura, capacita di memorizzare informazioni, ambienti aggressivi e cosı via. Per questaragione sono stati sviluppati diversi tipi di dispositivi che si differenziano in funzionedelle caratteristiche seguenti:

• Chipless vs chip

• Passivi, semipassivi e attivi

• Solo lettura e lettura-scrittura

2.1.2.1 Chipless vs chip

Il prezzo dei chip varia in funzione della complessita del sistema che si dovra realizzare.

Nel caso in cui il tag debba contenere un codice fisso con una funzione elementare,e possibile utilizzare tecnologie che non richiedono chip in silicio (chipless). Questesoluzioni sono indicate per applicazioni che richiedono gradissime quantita di transpon-der che hanno il solo scopo di creare un’etichetta per un’identificazione univoca delsingolo prodotto fisico. Un esempio sono i sistemi di antitaccheggio.

2.1.2.2 Tag Passivi

Il principio grazie a cui il tag Rfid e in grado di ricevere e di trasmettere le informazionicontenute nel chip e l’induzione magnetica. Quando entra nel campo di azione di unreader (da pochi centimetri ad alcuni metri) il tag viene svegliato dal campo elet-tromagnetico generato dal reader e gli risponde riflettendone il segnale. Il segnale dirisposta viene quindi ricevuto dal reader che lo decodifica. Questo tipo di tag, dettopassivo, e il piu diffuso sul mercato grazie soprattutto al prezzo che lo rende utilizzabilein molte applicazioni. Il limite prestazionale dei tag passivi e la distanza di lettura el’impossibilita di integrare sensori ausiliari. Inoltre, il fatto che si attivino solamentequando si trovano nel campo di azione di un reader, non li rende adatti ad applicazionidi localizzazione in tempo reale (Rtls2).

1UHF e l’acronimo di Ultra High Frequency2Real-time locating systems

12

Page 13: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza passiva

2.1.2.3 Tag Attivi

I tag Rfid possono integrare un sistema ricetrasmittente come i reader e questo e ilcaso dei tag attivi, che necessitano pero di una batteria di alimentazione per la gen-erazione del segnale. Grazie all’alimentazione integrata, i tag attivi possano attivarsiindipendentemente dalla presenza di un reader nelle vicinanze e raggiungere distanzedi lettura anche molto superiori ai tag passivi. Per il fatto che sono sempre accesi, i tagattivi sono utilizzati quando c’e la necessita di realizzare dei sistemi di localizzazionein tempo reale (Rtls). Il loro funzionamento puo essere continuo o a intervalli di temponell’ottica del risparmio della batteria. La presenza della stessa permette ai tag attividi montare ed alimentare anche dei sensori aggiuntivi, per esempio per la rilevazionedella temperatura o della pressione. Tra gli svantaggi dei tag attivi sono da segnalarele dimensioni usualmente piu ingombranti di quelle dei tag passivi, i costi di acquistomaggiori rispetto ai tag passivi, i costi di manutenzione o sostituzione della batteria,le difficolta di utilizzo in situazioni ambientali difficili come quelli caratterizzati datemperature molte alte proprio per la presenza della batteria.

2.1.2.4 Tag semipassivi

Esiste anche una terza categoria di tag detti semi-passivi o Bap (Battery Assisted Pas-sive). Si tratta di tag passivi ma assistiti da batteria. Sostanzialmente, non usanol’energia fornita dalla batteria per trasmettere il segnale ma, come i tag passivi, “riflet-tono”, modulato, il segnale generato dal reader. La batteria ha due utilizzi: alimentaresensori aggiuntivi se il tag ne e provvisto, oppure aiutare il chip a “svegliarsi” tenendoloin uno stato di “stand by”, inattivo ma “acceso”. Essendo la distanza di lettura deitag passivi molto spesso limitata dalla difficolta del chip a “svegliarsi” se non sufficien-temente stimolato dall’energia del campo del reader, l’aiuto della batteria nei tag Bap,permette a questi ultimi di offrire distanze di lettura ben superiori. A livello di prezzi,i tag Bap si collocano in linea di massima tra i tag passivi e quelli attivi. Come nelcaso dei tag attivi, la necessita di preservare la batteria puo limitare l’utilizzo dei tagBap negli ambienti piu difficili.

2.1.2.5 Tag di sola lettura e di lettura/scrittura

I tag si possono dividere in base alla loro memoria che puo essere di sola lettura, dovesi puo scrivere una volta sola, o dove la scrittura puo avvenire in piu momenti.

Le memorie di sola lettura (ROM, Read Only Memory) sono normalmente configuratedal produttore del componente con un numero limitato di informazioni tra le quali nondovrebbe mancare il codice univoco d’identificazione del tag secondo la normativa ISO15963 (Unique Identifier). I pregi di queste memorie sono sostanzialmente due: sonopoco costose e hanno una vita molto lunga.

Un tipo di memoria intermedio e la WORM (Write Once Read Memory) che per-mette all’utente di scrivere una volta sola nella memoria senza poterne permetteresuccessivamente la cancellazione o la modifica del contenuto. Una volta programmatala funzione di questa memoria e uguale alla ROM.

Lo sviluppo della tecnologia in questo settore ha reso disponibili delle memorie chepermettono di scrivere e leggere praticamente senza limitazioni. Queste memorie sonodi due tipi: RAM e EEROM.

13

Page 14: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza passiva

Le memorie RAM sono utilizzate da molto tempo in tutte le applicazioni elettronichee permettono di ragigungere grandi densita di dati memorizzati a costi molto compet-itivi. Il loro unico limite e che necessitano di una fonte di energia permanente permantenere i dati in memoria.

Le EEROM hanno il vantaggio rispetto alle RAM di richiedere la presenza di unafonte di energia soltanto durante l’operazione di lettura e scrittura in memoria. Icostruttori dichiarano che le EEROM possono mantenere i dati in memoria senza alcunaalimentazione per almeno 10 anni.

2.1.3 Proprieta

La tecnologia RFID si distingue dalle altre tecnologie di identificazione grazie alleseguenti caratteristiche:

• Non deve essere a contatto per essere letto come le bande magnetiche

• Non deve essere visibile per essere letto come per i codici a barre

• Si possono anche aggiungere informazioni sui chip in funzione della tipologia delchip (Read Only: si possono solo leggere le informazioni contenute, Write Once,Read Many: si possono scrivere nel chip le informazioni una sola volta, ma leggerleun numero illimitato di volte, Read and Write: si possono leggere e memorizzareinformazioni per un numero limitato ma grande di volte)

• L’identificazione e la verifica avvengono in 1/10 di secondo

• La comunicazione puo essere in chiaro o cifrata

• Affidabilita della lettura

• Capacita di lavorare in ambienti contaminati, e sporchi

• Capacita di resistere, con opportune protezioni, all’aggressione di agenti chimicie ambientali, di poter operare immerso in un fluido, dentro l’oggetto che si vuoleidentificare oppure all’interno di un altro contenitore (purche non completamentemetallici)

• Possibilita di leggere, nello stesso contenitore, il codice di decine o centinaia dietichette in un lasso temporale di pochi secondi, e di trasmetterlo al sistemainformativo di gestione.

2.1.4 Applicazioni

Diversi sono i campi di applicazione della tecnologia RFID. In particolare i campi diadozione principali esistenti sono:

• Le soluzioni su tag 125/134 kHz trovano campi applicativi: tracciabilita ani-mali domestici e di allevamento(cani, mucche, ...), apertura serrature (settorealberghiero e controllo accessi)

• Le soluzioni su tag 13,56 MHz trovano applicazioni in:

– standard ISO 15693 per la tracciabilita (alimentare, prodotti, etc), borsellinielettronici non bancari (villaggi vacanze, discoteche, etc);

14

Page 15: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza passiva

– standard ISO 14443 (ad alta sicurezza) per carte bancarie, tessere documentidi identita elettronici, titoli di viaggio elettronici

• Le soluzioni con tag UHF ISO 18000 sono dedicate alla logistica sia interna cheesterna d’azienda

• Le soluzioni con tag 2,4 GHz e oltre per la mobilita (telepass e similari) e gliinterporti

2.1.4.1 Logistica Magazzini

Identificare ogni contenitore e ogni scaffale di magazzino con tag riduce gli errori neiprelievi e fornisce una identificazione certa dell’item. Non e necessario aprire gli imbal-laggi per verificare il contenuto cercando il codice a barre, cosı come non e piu necessarioeffettuare il conteggio manuale per la verifica dell’inventario fisico. Con una serie discansioni a distanza e possibile identificare e verificare la presenza di specifici oggetti inmagazzino. Infatti la tecnologia permette di leggere contemporaneamente piu etichette(tag) in generale fino a 100 in contemporanea. La tecnologia permette di conoscere intempo reale le giacenze di magazzino, riordinare i capi esauriti (in tempo reale). Latecnologia utilizzata e un tag 868 MHz ISO 18000-6

2.1.4.2 Rilevazione dei parametri ambientali

L’ultima frontiera tecnologica in ambito RFID riguarda l’introduzione di tag attiviequipaggiati con sensori in grado di rilevare i parametri climatici (temperatura, pres-sione, umidita, ecc.) dell’ambiente in cui sono immersi. Le grandezze rilevate dai sensorivengono memorizzate in una apposita memoria interna, e lı permangono fino a quandoun operatore, dotato di apposito lettore, non ne esegue lo scarico su un PC palmare.Queste caratteristiche si rivelano strategiche per il monitoraggio dei parametri opera-tivi dei macchinari in particolari realta industriali, dove e necessario garantire regimioperativi controllati. I tag, grazie alle ridottissime dimensioni, possono essere collocatiin punti scomodi, dove sarebbe difficile portare il cavo necessario ad alimentare un ap-parecchio di misura, ed offrono, a costi decisamente contenuti, una soluzione affidabilee di facile implementazione. Grazie all’utilizzo di tali soluzioni si puo monitorare lostato di conservazione di una sostanza, oppure segnalare eventuali allarmi quando ilparametro temperatura non fosse nei range voluti, senza aprire le confezioni che pro-teggono la sostanza conservata in temperatura e gestendo il dato in via informatica,magari da un sito centrale, dove poter prendere le decisioni del caso:

• eliminare il prodotto

• accelerare il trattamento di un processo, ecc.

15

Page 16: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

2.2 Tecnologia a Radiofrequenza Attiva

2.2.1 Introduzione

La differenza tra transponder attivi e passivi non risiede solamente nell’utilizzo dellabatteria, nella distanza che puo coprire il segnale o nella percentuale degli errori. Infatticon i tag attivi c’e la possibilita di creare reti di dispositivi nei quali possono esseremontati sensori, infatti osservare l’ambiente in cui siamo immersi e il primo passo per laconoscenza, attraverso i sensi possiamo far arrivare al cervello numerose informazionie percezioni che vengono elaborate al fine di produrre conoscenza che arricchisce ilbagaglio della nostra esperienza. Maggiore e il numero di “sensazioni” che raccogliamoe piu accurata sara la nostra conoscenza della realta a questo scopo le Wireless SensorNetwork - WSN - sono un insieme numeroso di dispositivi elettronici, detti nodi, dotatidi sensori, di un microprocessore e un’interfaccia radio per la comunicazione. I nodicooperano tra loro per monitorare determinate caratteristiche di un evento fisico qualitemperatura, umidita, accelerazione, luce, presenza ecc. L’interazione fra i nodi e unaspetto fondamentale, dato che l’interesse dell’utilizzatore finale non e rivolto all’in-formazione che si ricava dal singolo nodo sensore, ma dal complesso di informazionirilevate dai sensori disposti in una specifica area. Affinche questo “ammasso di dati”possa trasformarsi in conoscenza empirica e necessario un protocollo ben definito che daun lato permetta di trasmettere le informazioni lungo la rete e dall’altro possa sfruttareappieno le peculiarita della rete stessa. Attraverso la definizione un protocollo di co-municazione e possibile far confluire l’insieme dei dati raccolti attraverso un canale dicomunicazione senza filo verso un nodo speciale, detto stazione base o sink. Come sipuo vedere dalla figura sottostante, il nodo sink e collegato a sua volta ad un pc otramite un cavo (seriale, Usb o ethernet) o in modo wireless (internet, satellite).

Figura 2.2: Rete di sensori wireless

Le reti di sensori possono migliorare in modo significativo la qualita delle infor-mazioni: ad esempio possono garantire una elevata fedelta, possono fornire informazioniin tempo reale anche da ambienti ostili e possono ridurre i costi di trasmissione dellestesse informazioni. Lo scopo fondamentale di una rete di sensori e di produrre su unperiodo esteso di tempo, una informazione globale significativa ottenuta da una serie didati locali provenienti dai singoli sensori. E importante notare che la rete deve essererealizzata in modo da garantirne l’integrita per un periodo di tempo che sia il piu lungopossibile, allo scopo di ottenere informazioni accurate anche in caso di attacco alla reteda parte di organi esterni o di cedimenti hardware.

16

Page 17: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

Una WSN ha delle specifiche molto stringenti che e possibile sintetizzare nei seguentipunti:

• le applicazioni sviluppate sono data-centric: l’importanza risiede nei dati con-tenuti nei nodi piuttosto che nel programma che eseguono;

• i nodi sensore vengono disposti con densita spaziali molto elevate: fino a decinedi unita nello spazio di pochi metri;

• i nodi sono soggetti a malfunzionamenti: per garantire una certa tolleranza aiguasti, e non compromettere il corretto funzionamento della rete, deve essereprevista una certa ridondanza nel numero di nodi;

• sia per guasti che per la mobilita dei nodi stessi, la topologia della rete puovariare nel tempo in modo molto frequente;

• i nodi sensore hanno forti limiti in termini di risorse fisiche: ogni nodo ha unapotenza di calcolo nell’ordine di qualche decina di MHz e qualche kilobyte dimemoria RAM per l’esecuzione dei programmi;

• i nodi devono essere piccoli e poco costosi.

Se da un lato queste caratteristiche possono rappresentare dei vincoli molto forti, dal-l’altro invece, e necessario mettere in evidenza quelli che sono i benefici che queste retioffrono. Le reti di sensori senza filo permettono una facile dislocazione dei nodi: questi,infatti, possono essere disposti anche in aree pericolose o difficilmente raggiungibilisenza una collocazione ben precisa. Le tradizionali reti wired, al contrario, prevedonocosti per la messa in opera dell’impianto da parte di personale specializzato e la posadi macrosensori e limitata a certe aree. La notevole quantita di dati collezionabile dauna rete di sensori senza filo permette di avere un’accuratezza elevata del fenomenoche si intende monitorare. Infine, le reti di sensori senza filo devono avere un costoper dispositivo molto contenuto. Se cosı non fosse, i vantaggi tecnologici elencati inprecedenza sarebbero annullati dallo svantaggio economico nei confronti delle reti cab-late. Attualmente, un nodo completo di sensore costa pochi dollari ed e facile prevedereche una rapida espansione di questa tecnologia possa innescare i vantaggi tipici delleeconomie di scala. Una progressiva riduzione dei costi e un incremento delle risorsefisiche dei nodi permettera in futuro di soddisfare ancor di piu i requisiti discussi sopra.

Queste caratteristiche ben si adattano a numerosi scenari applicativi che possiamoracchiudere in quattro macrocategorie:

• Monitoring: la rete e predisposta per tenere traccia di determinate grandezzefisiche nel tempo in una particolare area geografica.

• Event detection: la rete e predisposta per monitorare l’ambiente e riconoscereil verificarsi di determinati eventi rilevabili dai nodi sensori o gruppi di essi.

• Object Classification: la rete e predisposta per riconoscere determinati oggettiin base alle grandezze misurate

• Object Tracking: la rete e predisposta per riconoscere gli spostamenti di unoggetto all’interno di una determinata area.

17

Page 18: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

2.2.2 Protocolli

Lo standard 802.15.4, definito dall’IEEE, definisce i soli Physical e Medium Access Con-trol Layer per le reti di sensori; nessuna assunzione viene invece avanzata per i livelliprotocollari superiori. L’assenza di uno standard “de iure” per i livelli 3-7 dello stack sie tradotta nello sviluppo di molteplici protocolli per lo strato di rete e applicativo checercassero di sfruttare i vantaggi che le reti 802.15.4 offrono e, possibilmente, acquisireuna quota di mercato crescente.Ancora oggi non esiste uno standard prevalente, e lo sce-nario si caratterizza per la presenza di molteplici protocolli che si appoggiano all’IEEE802.15.4. ZigBee costituisce probabilmente il tentativo di standardizzazione piu ar-ticolato e completo, ma sul mercato sono presenti innumerevoli soluzioni proprietarie.Tra i protocolli piu conosciuti abbiamo:

• Bluetooth

• Z-Wave

• UWB3

• Zigbee

2.2.2.1 Bluetooth

Figura 2.3: logo Bluetooth

Bluetooth e una specifica industriale per reti personali senza fili (WPAN: WirelessPersonal Area Network). Fornisce un metodo standard, economico e sicuro per scam-biare informazioni tra dispositivi diversi attraverso una frequenza radio sicura a cortoraggio. La specifica Bluetooth e stata sviluppata da Ericsson e in seguito formalizzatadalla Bluetooth Special Interest Group (SIG). SIG, la cui costituzione e stata formal-mente annunciata il 20 maggio 1999, e un’associazione formata da Sony Ericsson, IBM,Intel, Toshiba, Nokia e altre societa che si sono aggiunte come associate o come membriaggiunti. Lo standard Bluetooth puo essere utilizzato per la creazioni di reti ad hocper utenti su uree limitate o come punto d’accesso verso un’area piu grande. Vieneutilizzata una banda di frequenza che va dai 2.4 ai 2.4835 GHz con canali da 1 MHz,con potenza che varia da 1 a 100 mw (10 - 100 m). Questo standard si basa su unarelazione master-slave dove il master concorda la sincronizzazione con gli slave e lo slavesi puo trovare in due modalita, o attivo o in modalita sleep, per il risparmio energetico.Una rete di dispositivi Bluetooth viene chiamata piconet, dove possiamo trovare almassimo un master con sette slave attivi. Le specifiche Bluetooth prevedono 3 tipi ditopologie: punto-punto, punto-multipunto e scatternet. Diverse piconet possono esserecollegate tra loro in una topologia chiamata scatternet.

3Ultra Wide Band

18

Page 19: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

Figura 2.4: collegamenti tra piconet

2.2.2.2 Z-Wave

Figura 2.5: logo z-wave

Z-Wave e un protocollo di comunicazione wireless progettato per l’automazione do-mestica, in particolare per applicazioni di controllo remoto in ambienti residenziali ecommerciali. Questa tecnologia per comunicare usa onde radio a bassa potenza pergestire dispositivi come l’illuminazione, controllo di accesso a casa, sistemi di intrat-tenimento e di elettrodomestici. A differenza di Wi-Fi e di altri sistemi IEEE 802.11wireless LAN che sono progettati principalmente per il flusso di dati a banda larga, ilsistema a radiofrequenza Z-Wave opera nella gamma di frequenze tra gli 868 e i 908MHz, con il vantaggio di essere meno soggetto alle interferenze presenti nella banda dei2.4 GHz. La distanza che puo coprire questo protocollo va dai 10 ai 100 metri dovepossiamo inserire un massimo di 232 nodi. Z-Wave e attualmente supportato da oltre200 produttori in tutto il mondo e compare in una vasta gamma di prodotti di consumonegli Stati Uniti e in Europa. Questo protocollo usa una tecnologia di rete a magliein cui ogni nodo o dispositivo sulla rete e in grado di inviare e ricevere i comandi dicontrollo attraverso le pareti o pavimenti e sfrutta i nodi interni per evitare gli ostacoliche si possono verificare in casa.

19

Page 20: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

2.2.2.3 Ultra Wide Band

Figura 2.6: logo uwb

Ultra wide band e un protocollo di trasmissione wireless dei dati, che permette di rag-giungere una banda dell’ordine di gigabit/secondo attraverso emissioni alla frequenzadi circa 4 GHz con una potenza elettrica in antenna di decimi di watt. Essa puo essereutilizzata con antenne omnidirezionali o comunque a largo angolo di copertura per dis-tanze brevi, fino a 10 metri, ad esempio come sistema per la localizzazione di oggetti,mediante triangolazione in antenna o etichette RFID poste sugli oggetti. In alternativa,viene utilizzata con antenne direzionali per trasmissioni su distanze maggiori. La capac-ita di portanza dei sistemi UWB rende la tecnologia potenzialmente concorrenziale conle tradizionali reti a fibre ottiche. Le architetture WiMax permettono la trasmissionedati su una rete senza fili Wi-Fi (le recenti sperimentazioni arrivano a 400Mb/s). Illimite consiste in elementi fisici, tra cui la necessita di avere speciali antenne orientatein direzione dell’antenna sorgente al fine di migliorare la qualita del segnale. InoltreUWB e in grado di offrire prestazioni di gran lunga superiori al Bluetooth (10-100x)con consumi contenuti e IEEE 802.15.4a4 ha proposto l’utilizzo di UWB come livellofisico alternativo

2.2.2.4 Zigbee

Figura 2.7: logo ZigBee

ZigBee prende il nome dal singolare modo di volare, zigzagando, delle api ed e unprotocollo pensato per sviluppare sistemi wireless che richiedano basso data rate ed unridottissimo consumo energetico. Cio nondimeno, questi sistemi devono poter prevederereti con un gran numero di nodi, a bassissimo costo, a partire dal protocollo IEEE802.15.4. Questo protocollo opera nelle frequenze radio assegnate per scopi industriali,scientifici e medici (ISM); 868 MHz in Europa, 915 MHz negli Stati Uniti e 2,4 GHznella maggior parte del resto del mondo. Questa tecnologia ha lo scopo di esserepiu semplice e piu economica di altre WPAN come, ad esempio, Bluetooth. ZigBee,permette di ottenere buoni risultati per quanto riguarda il risparmio energetico grazie adapplicazioni che riducono al massimo il tempo di attivita del dispositivo durante il qualel’assorbimento di energia e maggiore, lasciandolo in uno stato “dormiente”, sleep mode,

4Standard per reti WPAN in via di sviluppo.

20

Page 21: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

per la maggior parte del tempo. Inoltre ZigBee assicura la scalabilita, supportandoreti autoconfigurabili, ossia dove i nodi possano unirsi ad una rete in maniera del tuttotrasparente alla rete stessa. Per quanto riguarda la sicurezza della trasmissione deidati per mezzo del canale wireless, viene utilizzato il protocollo crittografico AES a 128bit e, se l’applicazione lo richiede, sono previsti meccanismi di verifica dell’integrita e diautenticazione. Il primo livello della pila protocollare descritto dallo standard ZigBee eil livello di rete. Esso si appoggia direttamente sul livello MAC dell’IEEE 802.15.4. Ilmotivo principale di questa stretta sinergia tra i due standard e da ricercare nello sforzoda parte di ZigBee di costruire un protocollo di rete quanto piu semplice ed efficientepossibile, al fine di ridurre la dimensione del pacchetto, il relativo tempo di trasmissionee aumentare di conseguenza la durata dell’alimentazione dei dispositivi. La possibilitateorica di avere in una rete fino a 65536 nodi e la possibilita di connessioni peer to peerpresume l’utilizzo di applicazioni avanzate in reti a topologia estremamente complessain cui le connessioni siano riconfigurabili in modo automatico al fine di ottimizzarnei collegamenti o sopperire ad eventuali guasti. Obiettivo di questo livello, oltre allagestione della rete, e ricevere pacchetti dal livello applicativo, immagazzinarlo e gestirnel’inoltro verso un altro nodo nella rete.

Figura 2.8: stack del protocollo ZigBee/IEEE 802.15.4

ZigBee discerne da un punto di vista logico e funzionale tre tipologie di dispositivi:ZigBee Coordinator (ZC), ZigBee Router (ZR) e ZigBee End Device (ZED).

Lo ZigBee Coordinator, e equivalente al coordinatore al livello MAC. Si tratta diun dispositivo FFD a cui e demandata la formazione della rete: ogni dispositivo che,in fase di commissioning, si voglia associare alla rete effettua una richiesta alla qualelo ZC deve rispondere con un messaggio di conferma. Allo ZC e demandata, inoltre, lagestione degli aspetti di sicurezza. Lo ZigBee Router e un dispositivo FFD del livelloMAC a tutti gli effetti ma con diverse competenze funzionali specifiche: l’instradamentodei pacchetti che per giungere a destinazione devono attraversare la rete seguendo un

21

Page 22: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

percorso multi-hop. Gli ZigBee End Device sono perlopiu dispositivi RFD del livelloMAC: hanno limitate risorse fisiche ed implementano solo una parte del protocollo.Non possono pertanto inoltrare i messaggi, ne gestire l’associazione di nuovi nodi allarete.

Al di sopra del livello di rete, ZigBee definisce in maniera molto precisa e articolata illivello applicativo che e composto da tre parti: Application Sublayer (APS), Appli-cation Framework e lo ZigBee Device Object (ZDO). L’Application Sublayer(APS) rappresenta un substrato del livello applicativo che funge da interfaccia con illivello sottostante. Da un punto di vista funzionale, possiamo suddividere l’APS in dueentita: l’APS Data Entity e l’APS Management Entity. La prima e responsabiledel trasporto di messaggi applicativi fra due o piu dispositivi, mentre la seconda gestiscel’inizializzazione di alcuni parametri al livello APS. L’APS Data Entity e utilizzata siadagli oggetti dell’Application Framework che dai ZigBee Device Object; mentre l’inter-faccia APS Management Entity e utilizzabile solo dallo ZDO. Lo ZDO puo utilizzareopzionalmente l’Application Sublayer per la comunicazione con gli strati inferiori dellostandard, mentre e necessario per la comunicazione degli Application Object in quantone definisce la struttura di comunicazione definendo i concetti di Application Profile eCluster.

ZigBee Alliance ha standardizzato le tipologie di reti utilizzabili con lo standardZigBee: reti Star, Mesh e Hybrid (coimposizione di reti Star e Mesh).

Le reti Star prevedono l’esstenza di un centro che ha il ruolo di gestire tutte lecomunicazioni da e verso le singole periferiche. Le caratteristiche principali di una retetar sono le seguenti:

• Semplicita della struttura e del protocollo di comunicazione.

• Bassi costi di realizzazione perche i nodi sono semplici.

• La vita della batteria e determinata dall’attivita del coordinator che gestisce tuttele comunicazioni.

• Singolo punto di guasto: il coordinator determina l’affidabilita totale.

Figura 2.9: topologia di rete Star

Mentre le reti Star hanno un centro che teradizionalmente le gestisce, le reti Meshpossono utilizzare ogni apparato connesso sia come terminale di comunicazione sia come“ripetitore” per estendere la portata fisica e l’affidabilita della rete stessa.

22

Page 23: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

Le caratteristiche di una rete Mesh sono molto interessanti.

• Alta affidabilita determinata dall’introduzione dei router e dai percorsi alternativi.

• Range operativo aumentato dalla presenza dei router.

• Nessun problema di vita della batteria perche il coordinator ha un’attivita ridottaal puro coordinamento dei percorsi anziche gestire tutte le comunicazioni.

• Elevata complessita didefinizione e gestione dei percorsi tra un nodo e l’altro.

Figura 2.10: topologia di rete Mesh

Infine c’e la possibilita di realizzare reti Hybryd che combinano le strutture Star eMesh in una rete mista.

Le caratteristiche principali di questa rete sono le seguenti:

• Alta affidabilita paragonabile alla rete Mesh.

• Flessibilita operativa.

• Vita della batteria paragonabile alla rete Star.

• Elevata complessita di progettazione della rete e definizione e gestione dei percorsitra un nodo e l’altro.

Figura 2.11: topologia di rete Hybrid

23

Page 24: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

2.2.2.5 Conclusioni

Bluetooth:

• Puo essere una buona soluzione per i dispositivi che fungono da gateway o chedevono trasmettere dati ad alta velocita

• L’intermediazione di un master e sempre necessaria per comunicare tra slave

• Troppo pochi i nodi nella piconet

• Modalita di scanning del canale energeticamente poco efficiente

• Wibree5 potrebbe essere una valida alternativa, ma e forse gia troppo in ritardosul mercato

Z-Wave:

• Meno diffuso dei diretti concorrenti

• Adatto per reti semplici, meno indicato per reti complesse

• Meno soggetto ad interferenze

• Non e standardizzato da IEEE e le specifiche non sono ad oggi disponibili liber-amente

UWB:

• Molto promettente

• Al momento ancora poco diffuso

ZigBee:

• Per molti e il protocollo delle WSN futuro

• La suite di protocolli si appoggia sullo standard de facto IEEE 802.15.4

• Basso costo

• Specifiche disponibili

• Garanzia di interoperabilita tra diversi costruttori

• Ancora distante la teoria dalla pratica (ad esempio la velocita di trasmissione edil meshing)

5Standard per la creazione di WSN introdotto da Nokia

24

Page 25: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

Figura 2.12: un confronto tra i vari protocolli

2.2.3 Applicazioni

Una rete di sensori puo essere vista come un insieme di sensori di diverso tipo capacidi rilevare grandezze come temperatura, umidita, pressione, luce, ma anche capaci dirilevare il movimento di veicoli, la composizione del terreno, livello di rumore e moltealtre cose. E possibile classificare le applicazioni in cui si possono usare le reti di sensoriin militari, ambientali, sanitarie, casalinghe e commerciali.

2.2.3.1 Applicazioni militari

La facilita e rapidita di distribuzione, l’auto-organizzazione e la tolleranza ai guastifanno di una rete di sensori una tecnica promettente per applicazioni militari. Poicheuna rete di sensori e basata su una disposizione densa di nodi monouso ed a bassocosto, la distruzione di alcuni nodi da parte del nemico non danneggia le operazionimilitari come potrebbe accadere con la distruzione dei sensori tradizionali. Le possibiliapplicazioni vanno dal monitoraggio di forze alleate, equipaggiamenti e munizioni allasorveglianza del campo di battaglia. Sempre nel campo militare, e possibile usare unarete di sensori per effettuare il riconoscimento di nemici, la stima dei danni di unabattaglia oppure il riconoscimento del tipo di attacco (nucleare, biologico o chimico).

2.2.3.2 Applicazioni ambientali

In questo ambito, le reti di sensori potrebbero essere usate per alcune applicazioniche riguardano, ad esempio, il monitoraggio del movimento di uccelli, piccoli animali,insetti. E possibile anche effettuare il monitoraggio di una foresta e rilevare prontamenteeventuali incendi ad esempio negli Stati Uniti e stato messo a punto un sistema perla previsione e rilevazione di inondazioni. Il sistema si chiama ALERT SYSTEM6 ede formato da molti sensori in grado di rilevare la quantita di pioggia caduta, il livellodell’acqua di un fiume e condizioni climatiche come ad esempio temperatura, l’umiditaetc... Le reti di sensori possono essere utilizzate anche nell’agricoltura di precisione. Tragli obiettivi che e possibile raggiungere c’e quello di monitorare il livello dei pesticidinell’acqua, il livello di erosione del terreno e il grado di inquinamento dell’aria. Il tutto

6http://alert.dot.pima.gov

25

Page 26: Tesi Pasquini Alex Matricola 076035

Tecnologia a Radiofrequenza Attiva

effettuato in tempo reale. Altra applicazione e quella del monitoraggio dell’habitatdi animali, e lo studio del loro comportamento. Sempre nel settore ambientale, lereti di sensori possono essere di interesse per studiare gli spostamenti ed il dinamismoall’interno dei ghiacciai. A tal proposito i sensori vengono distribuiti all’interno delghiaccio a profondita differenti. I sensori sono capaci di rilevare temperatura e pressionecomunicando con una stazione base posizionata in cima al ghiacciaio che provvedera altrasferimento di questi a chi di competenza.

2.2.3.3 Applicazioni domestiche

Un esempio di utilizzo di una rete di sensori in ambito domestico e l’automazione dellacasa che consiste nell’inserire sensori nel forno, aspirapolvere, refrigeratore, videoregis-tratore etc... Questi nodi, inseriti negli elettrodomestici, possono interagire l’uno conl’altro e anche con reti esterne tramite l’utilizzo di internet o del satellite permettendola gestione anche da distanze remote. L’ambiente domestico viene ad assumere cosıle stesse caratteristiche di un piccolo centro fornito di una rete in grado di mettere incomunicazione tra loro tutti i vari strumenti di cui l’ambiente e composto.

2.2.3.4 Applicazioni commerciali

In questo ambito, i sensori potrebbero essere usati per le seguenti applicazioni:

• Rilevamento del furto di auto: nodi sensore sono stati disposti per scoprire eidentificare minacce che avvengono in una determinata zona geografica. Tutte leinformazioni rilevate sono inviate, tramite internet, agli utenti finali per essereanalizzate e per prendere i giusti provvedimenti;

• Rilevamento della posizione e del movimento di veicoli (car tracking): tramiteuna rete di sensori e possibile monitorare la posizione di un’auto in movimento.E inoltre possibile monitorare il traffico su strade particolarmente transitate;

• Controllo dell’ambiente in ufficio: di solito il sistema di gestione del riscaldamentoo dell’aria condizionata e centralizzato e quindi la temperatura in ufficio puo esserediversa a seconda della zona (una parte piu calda e una parte piu fredda) proprioper il controllo della temperatura e del flusso dell’aria centralizzato (esiste un solotermometro e un solo bocchettone da dove esce l’aria). Con una rete di sensorinelle stanze e possibile controllare la temperatura e la distribuzione dell’aria caldanelle varie zone.

26

Page 27: Tesi Pasquini Alex Matricola 076035

3. Implementazione di una WSNper il monitoraggio ambientale

3.1 Introduzione

Lo scopo di una tipica applicazione di monitoraggio e quello di rilevare i dati relativiad un particolare ambiente lavorativo per mantere la sicurezza all’interno di questa.

Per la nostra applicazione considereremo i valori di temperatura, pressione, monossidodi carbonio e anidride carbonica, dato che grazie a queste quattro grandezze riusciamogeneralmente a monitorare abbastanza bene un ambiente lavorativo.

Un esempio di applicazione puo essere all’interno di una cella frigorifera, dove, avendoposizionato i sensori in punti chiave nell’ambiente, avviamo il processo di raccolta dati,per poi analizzarli e vedere se ricadono in un certo range di valori relativi alla norma ose sollevano qualche allarme.

Per eseguire il rilevamento di queste grandezze abbiamo bisogno di una WirelessSensor Network, la quale avra lo scopo di raccogliere i dati e registrarli in un database.

Nella nostra rete formata da n nodi, avremmo n-1 sensori che raccoglieranno legandezze sopracitate in punti chiave nell’ambiente, per poi inviarle ad un nodo chefunge da “accentratore dei dati”, il quale avra il compito di memorizzare i dati in undatabase.

Dopo aver analizzato le varie possibili topologie per la rete di sensori, abbiamo decisodi implementare lo schema a stella per la sua semplicita di progettazione e per il ruolocentrale che risiede nel nodo raccoglitore di tutti i dati.

Figura 3.1: rete con topologia a stella

Page 28: Tesi Pasquini Alex Matricola 076035

Specifiche Tecniche del kit utilizzato

Lo studio per l’individuazione dell’hardware a noi piu adatto, ha riscontrato che laWaspmote Board della societa spagnola Libelium1 con il modulo ZigBee e la scelta piugiusta da fare.

Infatti, il protocollo ZigBee, anche se non e l’unico nel campo wireless, come abbiamoparlato nel precedente capitolo, e quello piu evoluto ad oggi e inoltre gode dell’appoggiosullo standard IEEE 802.15.4.

Figura 3.2: Waspmote Board della Libelium

3.2 Specifiche Tecniche del kit utilizzato

Il kit comprende:

• 5 x Waspmote Board

• 1 x Waspmote Gateway

• 5 x Batterie a Litio

• 5 x Batterie Ausiliari (batterie a bottone)

• 6 x Cavi USB

• 6 x Moduli ZigBee

• 6 x Antenne XBee

• 0-5 x GPS + antenna

• 0-5 GPRS + antenna

• 0-5 SD Card

1www.libelium.com

28

Page 29: Tesi Pasquini Alex Matricola 076035

Specifiche Tecniche del kit utilizzato

Grazie a questo kit abbiamo la possibilita di creare delle reti wireless di tipo star,mesh o hybrid. Ogni modulo zigbee puo cambiare tipo, per esempio, da router puodiventare coordinator o da coordinator puo diventare end device, grazie al WaspmoteGateway. Abbiamo anche a disposizione il gps che una volta collegato con il satellitepuo comunicarci per ricavare dati quali ora, data e posizione. Il collegamento impiegatempo (all’incirca 1 minuto), ma una volta stabilito, lo scambio di dati e veloce eaffidabile se si e all’aperto.

Figura 3.3: Modulo con antenna GPS

Inoltre e possibile acquistare i sensori con la relativa scheda. Dato le esigenze delprogetto, abbiamo acquistato i sensori di temperatura, pressione, monossido di carbonioe anidride carbonica.

Figura 3.4: Scheda dei sensori

3.2.1 Sensore di pressione

La pressione e una grandezza fisica, definita come il rapporto tra il modulo della forzaagente ortogonalmente su una superficie e la superficie stessa. La pressione puo essereclassificata in due modi:

• pressione assoluta o reale e la pressione misurata assumendo come riferimento ilvuoto;

• pressione relativa e la pressione misurata assumendo come riferimento un’altrapressione (tipicamente quella atmosferica).

L’unita di misura SI2 della pressione e il pascal (Pa), che equivale a 1 newton sumetro quadrato.

2Sistema Internazionale

29

Page 30: Tesi Pasquini Alex Matricola 076035

Specifiche Tecniche del kit utilizzato

Il sensore di pressione ha un range che va dalle 15 alle 115kPa, con tolleranza del1.5%V. Esso opera tra i -40 ai +125◦C

Il sensore di pressione e un sensore che converte la pressione atmosferica in un analogovalore di voltaggio nel range tra i 0.2V e i 4.7V. Poiche si tratta di una gamma chesupera il valore massimo ammesso dalla Waspmote, un partitore di tensione3 e statoaggiunto a ciascuno dei suoi ingressi per adattarla, fornendo una gamma definitiva tra0.12V e 2.82V.

3.2.2 Sensore di temperatura

La temperatura e la proprieta che regola il trasferimento di energia termica o calore,da un sistema ad un altro. Quando due sistemi si trovano in equilibrio termico enon avviene nessun trasferimento di calore, si dice che sono alla stessa temperatura.Quando esiste una differenza di temperatura, il calore tendera a muoversi dal sistemache diremo a temperatura piu alta verso il sistema che diremo a temperatura piu bassa,fino al raggiungimento dell’equilibrio termico.

L’unita base della temperatura nel Sistema Internazionale e il kelvin, ma nelle appli-cazioni di tutti i giorni e spesso conveniente usare la scala Celsius (scala centigrada),nella quale assume il valore di 0 ◦C corrisponde al punto di fusione del ghiaccio e ilvalore di 100 ◦C corrisponde al punto di ebollizione dell’acqua a livello del mare.

Figura 3.5: Sensore di temperatura

Il sensore di temperatura ha un range che va da -40◦C a +125◦C, con tolleranza di2 ◦C per il range che va da 0◦C a 70◦C, mentre per il range che va da -40◦C a +125◦Cla tolleranza e di 4◦C.

Il sensore di pressione e un sensore analogico che converte la temperatura in unvalore proporzionale di tensione. Il range di voltaggio dell’output e compreso tra i100mV (-40◦C) e 1.75V (125◦C)

Essendo un sensore analogico deve essere posto sul connettore 5 della scheda deisensori.

3.2.3 Monossido di carbonio

Il monossido di carbonio e un gas inodore ed incolore, viene generato durante la com-bustione incompleta degli idrocarburi quando la quantita di ossigeno a disposizione einsufficiente. Il CO e l’inquinante gassoso piu abbondante in atmosfera, l’unico per ilquale l’unita di misura con la quale si esprimono le concentrazioni e il milligrammo almetro cubo (mg/m3).

3Un partitore di tensione e una tipologia di circuito costituito da due o piu componenti passivecollegate in serie ai capi delle quali, se viene applicata una tensione, essa si ripartira sulle stessecomponenti in base al loro valore.

30

Page 31: Tesi Pasquini Alex Matricola 076035

Specifiche Tecniche del kit utilizzato

Figura 3.6: Sensore di monossido di carbonio

Il sensore di Monossido di carbonio ha un range che va dai 30 ai 1000ppm4, ed operaad una temperatura che va dai -10 ai 50◦C. Il TGS2442 e un sensore resistivo sensibile aicambiamenti nella concentrazione di monossido di carbonio (CO) e, molto leggermente,all’idrogeno (H2). Esso deve essere inserito nel connettore 3 o 4. La lettura di questosensore richiede un ciclo di un secondo durante il quale vengono generati due impulsidi alimentazione.

3.2.4 Anidride carbonica

L’anidride carbonica, e un gas incolore e inodore e piu pesante dell’aria, per cui lotroviamo piu facilmente vicino a terra che non in aria. Questo e il motivo per cuipreoccupa il suo accumulo nelle citta. E un gas velenoso solo alle alte concentrazioni,oltre il 30%, e il suo uso piu conosciuto, oltre a metterlo nelle bevande per farle gassate,e come materiale refrigerante, il famoso ghiaccio secco, che si ottiene raffreddando ilgas a -80 ◦C.

Figura 3.7: Sensore di anidride carbonica

Il sensore di anidride carbonica ha un range che va dai 350 ai 10000ppm, ed operaad una temperatura che va dai -10 ai 50◦C. Il sensore TGS4161 fornisce una tensioneproporzionale alla concentrazione di CO2 nell’atmosfera. Si presenta con un valorecompreso tra 220 e 490mV per una concentrazione di 350 ppm (circa la normale con-centrazione di CO2 nell’aria). Esso deve essere inserito nel connettore 1A. Il tempo dirisposta di questo sensore e di un minuto e mezzo.

4Parti Per Milione

31

Page 32: Tesi Pasquini Alex Matricola 076035

Ambiente di sviluppo

3.3 Ambiente di sviluppo

Figura 3.8: waspmote-ide v0.1

Una volta acquistato il materiale per effettuare il monitoraggio ambientale, bisognaistruire le schede in modo che possano svolgere il loro compito. Per fare cio la libeli-um, casa costruttrice delle schede, ci mette a disposizione un ambiente di sviluppo(waspmote-ide v0.1) che ci permettere di scrivere script in linguaggio C/C++. Oltrea questo ambiente di sviluppo la libelium ci offre la possibilita di consultare guide etutorial (in lingua inglese) riguardante tutti i materiali da loro prodotti. Viene offertaanche la possibilita di interagire con la casa spagnola grazie al forum, nel quale si puodiscutere di problemi tecnici e dove le risposte avvengono con frequenza giornaliera.

L’ambiente di sviluppo e ricco di esempi riguardanti i componenti hardware dellalibelium. Tramite le porte seriali COM possiamo interagire con le schede che vogliamoprogrammare. Grazie alla funzione di import abbiamo la possibilita di caricare il nostroscript sulla basetta e testarla.

3.4 Implementazione delle WSN di monitoraggio

Una volta che abbiamo ottenuto le nostre schede non ci resta altro che programmarlecon il materiale fornito dalla nostra casa costruttrice. Prima di tutto dobbiamo deciderenei dettagli cosa dovra fare la nostra applicazione per poi studiare come svolgera il suocompito.

La nostra applicazione dovra andare nelle schede fornite di sensori e per prima cosadovra collegarsi ad una rete. In un secondo momento dovra collegarsi con il satellite,in modo che sara chiara la data e l’ora in cui verranno svolte le misurazioni riguardantii dati ambientali. Una volta collegata al satellite tramite il modulo gps, la nostraapplicazione dovra inviare i dati raccolti ad un altro nodo, il quale si preoccupera ditrascriverli sul database.

Ora siamo in grado di capire che ci serviranno due tipologie di nodi nella rete:

• un Coordinator: il quale avra il compito di avviare la rete, nel quale si col-legheranno gli altri nodi, di ricevere i messaggi dai nodi presenti nella rete e ditrascrivere i dati in un database.

32

Page 33: Tesi Pasquini Alex Matricola 076035

Implementazione delle WSN di monitoraggio

Figura 3.9: L’ambiente di sviluppo con relativo esempio

• una serie di Router/End Device: i quali avranno il compito descritto preceden-temente, cioe di inserirsi nella rete generata dal coordinator, collegarsi al satellite,raccogliere i dati ambientali ed inviarli al nodo coordinator.

3.4.1 Studio dei nodi della rete

3.4.1.1 Ricevitore

Prima di iniziare la descrizione del codice del ricevitore, premetto che la parte relativaall’imagazzinamento e delegata ad un’applicazione java che tratteremo nei prossimicapitoli.

Il nodo ricevitore deve essere impostato come coordinatore. Cio si fa grazie all’ap-plicazione X-CTU messa a disposizione dalla digi.

Questo programma prende in input una porta seriale COM, nella quale deve esserecollegato il gateway, fornito nel kit waspmote dalla libelium, nel quale viene applicatoil modulo zigbee da trasformare come coordinatore. Una volta che il modulo vienemodificato come coordinatore, passiamo alla programmazione della scheda sulla qualeverra inserito.

33

Page 34: Tesi Pasquini Alex Matricola 076035

Implementazione delle WSN di monitoraggio

Figura 3.10: logo digi

1 packetXBee* paq_sent;2

3 void setup()4 {5 beginSerial(38400,1);6

7 xbeeZB.init(ZIGBEE,FREQ2_4G,NORMAL);8

9 xbeeZB.ON();10

11 xbeeZB.setNodeIdentifier("WASP-01#");12

13 XBee.begin();14

15 printString("WASP-01# setup completato ", 1);16 printString("\n\r",1);17

18 Utils.setLED(LED0, LED_ON);19 }20

21 void loop()22 {23 while( true )24 {25 if( XBee.available() )26 {27 xbeeZB.treatData();28 if( !xbeeZB.error_RX )29 {30 while(xbeeZB.pos>0)31 {32 printString(xbeeZB.packet_finished[xbeeZB.pos-1]->data,1);33 free(xbeeZB.packet_finished[xbeeZB.pos-1]);34 xbeeZB.packet_finished[xbeeZB.pos-1]=NULL;35 xbeeZB.pos--;36 }37 } else {38 printString("WASP-01# ", 1);39 printString(" zigbee error",1);40 printString("\n\r",1);41 Utils.setLED(LED1, LED_ON);42 }43

44 }45 }46

47 delay(1000);48 }

Listing 3.1: Codice Ricevitore

Come possiamo vedere dal codice, viene fatta la dichiarazione di un pacchetto XBee,che sarebbe il pacchetto di dati che invia il trasmettitore al nodo in questione. Laparte relativa all’inizializzazione dei componenti e l’avvio della rete PAN e delegatoal metodo void setup() il quale inizialmente apre la porta seriale con bit rate 38400,

34

Page 35: Tesi Pasquini Alex Matricola 076035

Implementazione delle WSN di monitoraggio

con cui comunica con la nostra scheda con una determinata frequenza. Di seguitoviene inizializza la variabile xbeeZB con frequenza a 2,4GHz, che sarebbe la frequenzacon cui il modulo ZigBee comunica con lo UART5. Una volta inizializzata la variabilexbeeZB, viene aprto lo UART e cambia lo stato del modulo ZigBee a ON in modo chesi puo avviare la comunicazioni tra questi due componenti. Viene inoltre dato un nomeidentificativo al nodo “WASP-01 ”, in modo che se si effettua la ricerca nella rete, ilrisultato sara univoco. Fatto cio stampa un messaggio e accende un led verde che sta asignificare che il metodo setup e conclusa. Una volta conclusa la fase di inizializzazionedei componenti e avviato la rete, mettiamo il ricevitore nello stato di ricevere i messaggitramite il metodo loop. Esso dichiara un ciclo infinito e verifica se la variabile XBee edisponibile, nel caso affermativo il ricevitore rimane in uno stato di attesa. Una voltache il messaggio arriva al ricevitore, esso muta lo stato in attivo e legge il pacchettotramite il metodo xbeeZB.treatData();.

In un ambiente ideale i messaggi si scambiano all’interno dell’etere senza alcun prob-lema, ma nel mondo reale vi sono delle problematiche quali rumori di segnale e in-terferenze che possono provocare dei problemi di trasmissione. Nel caso il pacchettonella trasmissione arriva integro a destinazione, viene stampato il contenuto dell’ultimopacchetto, viene svuotato il buffer e aggiornato il contatore, nel caso il pacchetto nonarriva integro (quindi abbiamo l’errore di trasmissione), viene stampato un messaggiodi errore. Se abbiamo spesso errori di trasmissione, la causa potrebbe essere la distanzatra il ricevitore e il trasmettitore o l’ambiente in cui vengono inseriti che genera moltorumore.

3.4.1.2 Trasmettitore

I nodi trasmettitori sono quei nodi che vanno inseriti nei punti chiave nell’ambienteche rilevano i dati ambientali e li inviano al ricevitore. Essi devono essere impostaticome router o end-device ed il procedimento e uguale a quello descritto in precedenzariguardo al ricevitore. Una volta che il modulo viene modificato come router/end-device, passiamo alla programmazione della scheda sulla quale verra montato.

1

2 packetXBee* paq_sent;3 char payload[400];4 uint8_t destination[8];5

6

7 void setup()8 {9 beginSerial(38400,1);

10

11 xbeeZB.init(ZIGBEE,FREQ2_4G,NORMAL);12

13 xbeeZB.ON();14

15 XBee.begin();16

17 USB.begin(); // starts using the serial port18 USB.print("wasp-03> setup started\n\r");19

20 GPS.setMode(GPS_ON);21 GPS.ON();22

23 SensorGas.setBoardMode(SENS_ON); // accensione board dei gas24 USB.print("wasp-03> sensor board on\n\r");

5Lo UART o Universal Asynchronous Receiver-Transmitter (ricevitore-trasmettitore asincronouniversale) e un dispositivo hardware di uso generale o dedicato.

35

Page 36: Tesi Pasquini Alex Matricola 076035

Implementazione delle WSN di monitoraggio

25

26 SensorGas.setSensorMode(SENS_ON, SENS_PRESSURE); //sensor pressione ON27 USB.print("wasp-03> sensor pressure on\n\r");28

29 SensorGas.configureSensor(SENS_CO2, 16); //sensor C02 gain30 USB.print("wasp_01# sensor CO2 gain setup\n\r");31

32 SensorGas.setSensorMode(SENS_ON, SENS_CO2); //sensor C02 on33 USB.print("wasp_01# sensor CO2 on\n\r");34

35 SensorGas.configureSensor(SENS_SOCKET3B, 101, 10); //sensor CO36 USB.print("wasp-03> sensor CO configuration\n\r");37

38 xbeeZB.scanNetwork("WASP-01");39

40 int i = 0;41

42 while(i<4)43 {44 destination[i]=xbeeZB.scannedBrothers[0].SH[i];45 i++;46 }47 while(i<8)48 {49 destination[i]=xbeeZB.scannedBrothers[0].SL[i-4];50 i++;51 }52

53 while( !GPS.check() ) {54 USB.println("Not Connected");55 delay(5000);56 }57 USB.println("Connected");58

59 USB.print("wasp-03> setup done!\n\r");60 delay(1000);61 }62

63

64 char time[400];65 char date[400];66

67 void loop()68 {69 while(true){70 GPS.getPosition();71 GPS.getTime();72 GPS.getDate();73

74 sprintf(time,"%c%c-%c%c-%c%c",GPS.timeGPS[0], GPS.timeGPS[1], GPS.timeGPS[2], GPS.timeGPS[3], GPS.timeGPS[4], GPS.timeGPS[5]);

75 sprintf(date,"%c%c/%c%c/%c%c",GPS.dateGPS[0], GPS.dateGPS[1], GPS.dateGPS[2], GPS.dateGPS[3], GPS.dateGPS[4], GPS.dateGPS[5]);

76

77 float altitudine = atof(GPS.altitude);78 float latitudine = atof(GPS.latitude);79 float longitudine = atof(GPS.longitude);80

81 int altituded = ftoi(altitudine);82 int latituded = ftoi(latitudine);83 int longituded = ftoi(longitudine);84

85 float tmpResult = SensorGas.readValue(SENS_TEMPERATURE);86 float temperature = ((tmpResult - 0.500) / 0.010);87

88 float tmpPressure = SensorGas.readValue(SENS_PRESSURE);89 float pressure = (tmpPressure + (0.095*3.3)) / (3.3*0.009);90 float pressure2 = ((tmpPressure * 1000) + 285) / 27;91

92 float carbonMonoxide = SensorGas.readValue(SENS_SOCKET3B);

36

Page 37: Tesi Pasquini Alex Matricola 076035

Implementazione delle WSN di monitoraggio

93

94 float carbonMonoxideResistance = ((50000/carbonMonoxide) - 10000);95

96 float carbonMonoxideFraction = carbonMonoxideResistance / 2490;97

98 float ppmCarbonMonoxide = ( 7900 - (7000*carbonMonoxideFraction) ) / 9;99

100 int powerLevel = PWR.getBatteryLevel();101

102 int temperatured = ftoi(temperature);103 int pressured = ftoi(pressure);104 int carbonMonoxided = ftoi(carbonMonoxide);105

106 sprintf(payload,"wasp-03#%s - %s#%0d.%d#%0d.%d#%0d.%d#NOCO2#%d#%0d.%d#%0d.%d#%0d.%d\n\r",date, time, (int)temperature, temperatured, (int)pressure, pressured, (int)carbonMonoxide, carbonMonoxided, powerLevel, (int)latitudine, latituded, (int)longitudine, longituded, (int)altitudine, altituded);

107

108 printString("\n\r",1);109 printString("local-", 1);110 printString(payload, 1);111 printString("\n\r",1);112

113 paq_sent=(packetXBee*) calloc(1,sizeof(packetXBee));114 paq_sent->mode=UNICAST;115 paq_sent->MY_known=0;116 paq_sent->packetID=0x52;117 paq_sent->opt=0;118 xbeeZB.hops=0;119 xbeeZB.setOriginParams(paq_sent, "5678", MY_TYPE);120 xbeeZB.setDestinationParams(paq_sent, destination, payload, MAC_TYPE,DATA_ABSOLUTE);121 xbeeZB.sendXBee(paq_sent);122

123 if( !xbeeZB.error_TX )124 {125 printString("local-wasp-03# packet sent ", 1);126 printString("\n\r",1);127 }128 else129 {130 printString("local-wasp-03# zigbee error", 1);131 printString("\n\r",1);132 Utils.setLED(LED1, LED_ON);133 }134

135 free(paq_sent);136 paq_sent=NULL;137 delay(2000);138

139 }140 }141

142 // Funzione che trasforma decimali in interi143 int ftoi(float decimal)144 {145 return ((decimal - ((int)decimal))*1000);146 }

Listing 3.2: Codice Trasmettitore

Il trasmettitore una volta avviati i suoi componenti, si inserisce nella rete PAN,cattura il mac del dispositivo ricevente in modo da inviargli i dati.

Nel codice del trasmettitore viene dichiarato un pacchetto di tipo packetXBee chesarebbe il pacchetto di dati che verra inviato al ricevitore, una serie di caratteri nel qualeverranno inseriti i dati in formato stringa e un intero di 8 cifre che servira a prendere ilmac. Il metodo successivo che viene eseguito e void setup(), che ha il compito di avviarei componenti. Infatti esso apre la porta seriale con bit rate 38400, la frequenza con il

37

Page 38: Tesi Pasquini Alex Matricola 076035

Implementazione delle WSN di monitoraggio

quale comunica con la scheda. Inoltre inizializza la variabile xbeeZB con frequenza a2,4GHz, cioe la frequenza con cui comunica con lo UART. Una volta inizializzata lavariabile xbeeZB, viene aprto lo UART e cambia lo stato del modulo ZigBee a ON inmodo che si puo avviare la comunicazioni tra questi due componenti.

Per avviare la comunicazione tra scheda e terminale abbiamo scelto di aprire la portausb. Grazie all’apertura della porta avviene la stampa di un messaggio di avvio delsetup.

Inoltre, per apprendere i dati relativi alla data, all’ora e alla posizione della schedadobbiamo avviare il modulo GPS Infatti di seguito il programma avvia il modulo GPScon la scheda dei sensori ed i relativi sensori (temperatura, pressione, anidride carbonicae monossido di carbonio).

Per una minore dipendenza del codice dall’hardware, invece di inserire manualmenteil MAC del ricevitore, effettuiamo una ricerca sulla rete del nodo denominato “WASP-01 ” e poi ricaviamo tramite degli appositi metodi l’indirizzo mac di questo nodo.

Infatti come possiamo vedere nel codice abbiamo il metodo scanNetwork con parametro“WASP-01 ” che appunto cerca nella rete il nodo con quel nome. Una volta rintraccia-to il ricevitore, si avvia un ciclo while nel quale viene memorizzato nell’array di interidichiarato all’inizio, l’indirizzo mac del nodo interessante. Memorizzato il mac il setupcerca di agganciare il satellite mandando messaggi di errore o di avvenuta connessioneogni 5 secondi. Una volta connesso viene stampato il messaggio di fine metodo.

Terminato il metodo setup dobbiamo ora raccogliere tutti i dati relativi all’ambienteper poi inviarli al ricevitore grazie al modulo ZigBee.

Prima di iniziare il metodo loop vengono dichiarate due variabili di carattere timee date che serviranno appunto per la memorizzazione dell’ora e della data relative allemisure. Nel codice abbiamo un ciclo infinito, nel quale ricaviamo grazie al GPS laposizione della nostra scheda (altitudine, latitudine e longitudine), l’ora e la data dellamisurazione. Questi ultimi due dati, tramite il metodo sprintf vengono inseriti nellevariabili precedentemente dichiarate.

Per utilizzare gli operatori aritmetici effettuiamo la conversione dei dati ricavati dalgps, da stringa a float grazie al metodo atof.

Per inviare i dati al ricevitore noi utilizziamo una singola stringa. L’immissione diun valore decimale tramite il metodo sprintf non e supportato. Quindi per aggirarequesto limite il numero decimale viene trasformato in due valori interi; un intero cherappresenta la parte intera del numero decimale e un intero che rappresenta fino aivalori millesimali della parte decimale. Procedendo in questo modo possiamo inserirenella stringa il valore decimale inserendo prima l’intero che rappresenta la parte interadel valore decimale, seguito da un punto che sta a significare il simbolo che separa laparte intera dalla parte decimale e di seguito la parte intera che rappresenta il restantevalore del numero decimale.

Grazie al metodo ftoi che abbiamo implementato alla fine del codice e che spieghere-mo in seguito, riusciamo a prendere i numeri decimali delle grandezze precedentementerilevate.

Una volta che abbiamo tutti i dati che ci interessano, li registriamo dentro la variabilepayload. E da notare che non abbiamo preso volutamente la misurazione dell’anidridecarbonica, perche come descritto prima nella parte relativa ai sensori, la misurazioneimpiega un tempo di 1 minuto e mezzo ed e un limite abbastanza ingombrante in fasedi sviluppo.

38

Page 39: Tesi Pasquini Alex Matricola 076035

Conclusioni

Una volta registrati i dati dentro alla variabile, viene stampata a video per mostrarneil contenuto.

Di seguito avviene l’immissione dei dati dentro al pacchetto e, una volta che vengonoimpostati i parametri di trasmissione, avviene l’invio al ricevitore grazie all’indirizzomac catturato nel metodo precedente.

Come descritto precedentemente nel ricevitore, anche nel trasmettitore abbiamo lapossibilita che la trasmissione dei dati non avviene correttamente.

Se non ci sono errori viene stampato un messaggio di avvenuta trasmissione, al-trimenti se viene sollevato un errore viene stampato un messaggio di problema ditrasmissione.

Il sistema ha a disposizione un buffer, nel quale vengono inseriti i messaggi impac-chettati per poi essere spediti. Nel caso la coda si riempia o non venga mai svuotataavremmo sempre errori di trasmissione. Per questo motivo nella restante parte delcodice ci occupiamo dello svuotamento del buffer.

Concluso il metodo loop, abbiamo l’implementazione del metodo ftoi il quale prendecome parametro un numero decimale e non fa altro che sottrarre la parte intera emoltiplicare la parte decimale per 1000, dato che ci interessano solamente le tre cifredopo la virgola. L’implementazione di questo metodo e stata forzata dal limite delmetodo sprintf descritto precedentemente.

3.5 Conclusioni

I devices, presenti nella rete, dopo un primo momento (all’incirca 2 minuti) di inizial-izzazione della rete e di avvio dei componenti, comunicano abbastanza bene, con unapercentuale di errore al di sotto del 5%6.

Ovviamente le condizioni ambientali devono essere favorevoli alla trasmissione didati, altrimenti la percentuale di errore si alza significativamente.

Tuttavia nella realizzazione delle applicazioni, ci siamo imbattuti in varie problem-atiche.

La prima, come abbiamo accennato precedentemente, riguarda il sensore di anidridecarbonica, il quale impiega circa un minuto e mezzo per la rilevazione della grandezza.Per questo abbiamo scelto di non usufruire del servizio offertoci da questo sensore incambio della possibilita di effettuare piu misurazioni a parita di tempo.

Una seconda problematica l’abbiamo riscontrata a livello di codice. Infatti, nelleprime versioni delle applicazioni facevamo inviare la stringa con i dati dal trasmettitoreal ricevitore, e nel ricevitore effettuavamo il compito di inserire il carattere di returnalla fine della stringa, e facevamo stampare un messaggio di avvenuta ricezione. Cioportava a degli errori di sincronizzazione, dato che le stringhe si mescolavano e cioportava ad esempio all’inserimento dei dati in modo errato nel database.

Un limite che e abbastanza grande all’avvio del programma, che dopo la fase diinizializzazione sparisce, e il tempo di connessione del modulo GPS al satellite.

Infatti la connessione con il satellite impiega all’incirca un minuto, e cio spiega perchei sensori impiegano molto tempo per iniziare la comunicazione. Tuttavia, come prece-dentemente detto, questo limite puo essere sopportato dato che avviene solamenteall’avvio del programma e una volta iniziata la trasmissione non si presenta piu.

6La percentuale e stata ricavata in un ambiente aperto con distanza tra una scheda e l’altra dimassimo 20 metri, senza ostacoli nel mezzo

39

Page 40: Tesi Pasquini Alex Matricola 076035

Conclusioni

D’altro canto possiamo dire che, se nel trasmettitore abbiamo bisogno di tutto questotempo per la connessione con il satellite, nel ricevitore abbiamo bisogno di tempo perla creazione della rete. Ovviamente il tempo di attesa e molto piu breve rispetto allaproblematica del GPS, ma e anche vero che bisogna mensionarla.

Prima di avviare le schede bisogna accertarsi che il ricevitore deve essere attivo, datoche e lui ad avviare la rete. Se il ricevitore e spento ed il trasmettitore e attivo, ricev-eremo tutti messaggi di errata trasmissione, dato che per prima cosa, non siamo nellarete con il ricevitore, e seconda cosa il trasmettitore non sa a chi inviare le misurazionieffettuate.

Inoltre la nostra applicazione riesce ad effettuare una misurazione con un tempo ditre secondi, e cio, per questo genere di applicazioni, e un margine molto breve.

Dopo aver elencato i limiti e le potenzialita delle nostre applicazioni possiamo con-cludere dicendo che per questo genere di lavoro, le schede e i programmi utilizzati vannopiu che bene.

40

Page 41: Tesi Pasquini Alex Matricola 076035

4. Il softwareAmbient Monitoring

4.1 Descrizione del sistema e finalita

Si vuole realizzare un sistema software per il monitoraggio ambientale che sia in gradodi visualizzare e analizzare i dati ricevuti dalla WSN costruita precedentemente.

Il monitoraggio ambientale e organizzato da utenti che svolgono visite sul databaseriguardanti i dati rilevati, le schede utilizzate e gli allarmi implementati.

Inoltre l’utente ha l’esigenza di visualizzare la posizione geografica dei punti in cuisono poste le schede, di inserire, modificare o cancellare gli allarmi e di disporre dei datipresenti nel database in vari formati, per poterli usare, ad esempio, in sistemi statistici.

Il sistema deve tendere a massimizzare le informazioni accessibili all’utente finale,dunque qualsiasi informazione possa essere rilevata dalle misurazioni sono da consid-erarsi utili. In particolare devono essere accessibili informazioni accurate riguradantitemperatura, precisione, monossido di carbonio, la data e l’ora della rilevazione.

Dato che l’applicazione e sviluppata per un utilizzo a livello interno, abbiamo tralas-ciato per il momento la parte relativa all’autenticazione e di seguito possiamo descriverele esigenze principali:

L’utente finale accede al sistema per controllare i dati relativi all’ambiente di lavoroal fine di poter vedere se c’e stata l’attivazione di qualche allarme e il conseguentecambiamento di stato della merce presente. Inoltre ha la necessita di visualizzare datisempre aggiornati, ed il sistema quindi, deve implementare qualche tipo di logica perrisolvere questa problematica.

4.2 Architettura del sistema

Queste note descrivono le scelte architetturali per il progetto Ambient Monitoring.

Dato che questo progetto ha un effettivo utilizzo nel mondo reale sono usate tec-nologia del mondo Web. In particolare si e utilizzata un’architettura di tipo three-tierdividendo l’interfaccia grafica, dalla logica di business residente sull server, e dallastrutturazione dei dati implementata e gestita successivamente tramite un DBMS.

Si e deciso di sviluppare la parte Web del progetto con il framework open sourceGrails con linguaggio Groovy, mentre la parte relativa all’immissione dei dati nelDBMS e stata sviluppata completamente in Java.

Il framework open source sviluppera la Graphical User Interface (GUI). La compo-nente contenente la logica di business invece dovra essere capace di interagire con unDBMS, la scelta fatta e quella di MySQL, ed in particolare questo potra essere fatto

Page 42: Tesi Pasquini Alex Matricola 076035

Attori del sistema

Figura 4.1: Architettura del Sistema Ambient Monitoring

utilizzando la libreria JDBC. Inoltre il sistema deve essere in grado di effettuare queryin linguaggio SQL al DBMS.

4.3 Attori del sistema

A livello aziendale, questa applicazione a livello prototipale e stata sviluppata con loscopo di monitorare l’ambiente di lavoro. Per questo motivo il sistema avra un soloattore, l’amministratore di sistema.

Infatti l’attore avra tutti i privilegi implementati dal sistema sviluppato.

C’e inoltre una precisazione da fare, infatti, anche se c’e un solo attore, abbiamo lapossibilita di collegare al sistema sviluppato, un altro sistema, che chiameremo SistemaStatistico. Infatti il sistema puo essere esteso con un sistema statistico, il quale va asostituire parzialmente la parte della logica legata agli allarmi.

Questa parte verra trattata in seguito in un capitolo separato.

4.3.1 Modello UML

In UML, gli Use Case Diagram (UCD o diagrammi dei casi d’uso) sono diagrammidedicati alla descrizione delle funzioni o servizi offerti da un sistema, cosı come sonopercepiti e utilizzati dagli attori che interagiscono col sistema stesso. Sono impiegatisoprattutto nel contesto della Use Case View (vista dei casi d’uso) di un modello, e in

42

Page 43: Tesi Pasquini Alex Matricola 076035

Attori del sistema

Figura 4.2: Modello three-tier

tal caso si possono considerare come uno strumento di rappresentazione dei requisitifunzionali di un sistema.

4.3.1.1 Elementi del modello

• System

Il sistema nel suo complesso e rappresentato come un rettangolo vuoto. Questosimbolo viene messo in relazione con gli altri nel senso che i model element cherappresentano caratteristiche del sistema verranno posizionati all’interno del ret-tangolo, mentre quelli che rappresentano entita esterne (appartenenti al dominioo al contesto del sistema) sono posizionati all’esterno. In molti diagrammi UMLil simbolo per il sistema viene omesso in quanto la distinzione fra concetti relativial sistema e concetti relativi al suo contesto si puo in genere considerare implicita.

• Actor

Gli attori sono rappresentati graficamente nel diagramma da un’icona che rapp-resenta un uomo stilizzato (stickman). Formalmente, un attore e una classe constereotipo �actor�. Praticamente, un attore rappresenta un ruolo coperto da uncerto insieme di entita interagenti col sistema (inclusi utenti umani, altri siste-mi software, dispositivi hardware e cosı via). Un ruolo corrisponde a una certafamiglia di interazioni correlate che l’attore intraprende col sistema.

• Use Case

Un caso d’uso e rappresentato graficamente come un’ellisse contenente il nome delcaso d’uso. Formalmente, lo Use Case e un classifier dotato di comportamento; losi potrebbe intendere come una classe di comportamenti correlati. Praticamente,uno use case rappresenta una funzione o servizio offerto dal sistema a uno o piuattori. La funzione deve essere completa e significativa dal punto di vista degliattori che vi partecipano.

43

Page 44: Tesi Pasquini Alex Matricola 076035

Attori del sistema

4.3.1.2 Schema degli Use Case

Dopo uno studio iniziale dell’applicazione, delle potenziali esigenze che gli utenti finalipotrebbero avere e le possibili soluzioni di sviluppo del sistema siamo riusciti a stilareun modello UML1.

Per le motivazioni precedentemente sottolineate, il sistema avra un unico attore,l’amministratore di sistema, il quale avra a disposizione molti casi d’uso nel sis-tema implementato, in particolare ne avra uno il quale potra estendere un caso d’usoappartenente ad un altro sistema, chiamato Sistema Statistico.

Di seguito verra presentato il modello e la descrizione dei casi d’uso.

Figura 4.3: Modello use case

4.3.1.3 Sviluppo degli Use Case

Dopo uno studio e il modellamento dello schema Use Case, sviluppiamo i punti chiavedi ogni punto, in modo da rendere chiaro cio che l’applicazione dovra svolgere.

ID: 001

NOME: Visulizza dati

BREVE DESCRIZIONE: L’utente vuole visualizzare i dati raccoltinella fase di monitoraggio

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Nessuna

SEQUENZAPRINCIPALE:

1. L’utente sceglie di visualizzare i dati

2. Il sistema invia la richiesta al DBMS

3. Il DBMS restituisce i dati al sistema

4. Il sistema visualizza l’elenco dei dati

POST CONDIZIONI: Il sistema deve mostrare i dati sempreaggiornati

SEQUENZE ALTERNATIVE: Nessuna

1Unified Modeling Language, linguaggio di modellazione unificato.

44

Page 45: Tesi Pasquini Alex Matricola 076035

Attori del sistema

ID: 002

NOME: Visulizza mote

BREVE DESCRIZIONE: L’utente vuole visualizzare i dati relativiai waspmote

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Nessuna

SEQUENZAPRINCIPALE:

1. L’utente sceglie di visualizzare i datidei waspmote

2. Il sistema invia la richiesta al DBMS

3. Il DBMS restituisce i dati al sistema

4. Il sistema visualizza l’elenco dei datidei waspmote

POST CONDIZIONI: Nessuna

SEQUENZE ALTERNATIVE: Nessuna

ID: 003

NOME: Visulizza allarmi

BREVE DESCRIZIONE: L’utente vuole visualizzare i dati relativiagli allarmi

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Nessuna

SEQUENZAPRINCIPALE:

1. L’utente sceglie di visualizzare i datidegli allarmi

2. Il sistema invia la richiesta al DBMS

3. Il DBMS restituisce i dati al sistema

4. Il sistema visualizza l’elenco dei datidegli allarmi

POST CONDIZIONI: Nessuna

SEQUENZE ALTERNATIVE: Nessuna

45

Page 46: Tesi Pasquini Alex Matricola 076035

Attori del sistema

ID: 004

NOME: Aggiungi allarme

BREVE DESCRIZIONE: L’utente vuole inserire un allarme

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Nessuna

SEQUENZAPRINCIPALE:

1. L’utente sceglie di inserire un al-larme

2. Il sistema richiede i dati perl’inseirmento degli allarmi

3. L’utente inserisce i dati

4. Il sistema conferma l’inserimento

POST CONDIZIONI: Il sistema inserisce un nuovoallarme

SEQUENZE ALTERNATIVE: Nessuna

ID: 005

NOME: Modifica allarme

BREVE DESCRIZIONE: L’utente vuole modificare un allarme

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Deve esistere almeno un allarme

SEQUENZAPRINCIPALE:

1. L’utente sceglie di modificare unallarme

2. Il sistema visualizza i campi chepossono essere modificati

3. L’utente inserisce i dati da modifi-care

4. Il sistema conferma la modifica

POST CONDIZIONI: L’allarme viene modificato

SEQUENZE ALTERNATIVE:

4. Il sistema avvisa l’utente che ci sonodei dati inconsistenti

5. Si torna al punto 2

46

Page 47: Tesi Pasquini Alex Matricola 076035

Attori del sistema

ID: 006

NOME: Cancella allarme

BREVE DESCRIZIONE: L’utente vuole cancellare un allarme

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Deve esistere almeno un allarme

SEQUENZAPRINCIPALE:

1. L’utente sceglie di eliminare unallarme

2. Il sistema invia la query al DBMS

3. Il DBMS elimina il record relativoall’allarme

4. Il sistema notifica l’avvenuta cancel-lazione

POST CONDIZIONI: L’allarme non persiste nella lista degliallarmi

SEQUENZE ALTERNATIVE: Nessuna

ID: 007

NOME: Mappa dei mote

BREVE DESCRIZIONE: L’utente vuole visualizzare la posizionegeografica dei mote all’internodi una mappa

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Nessuna

SEQUENZAPRINCIPALE:

1. L’utente sceglie di visualizzare lamappa

2. Il sistema visualizza la mappacon dei segnaposti allecoordinate dei mote

POST CONDIZIONI: Nessuna

SEQUENZE ALTERNATIVE: Nessuna

47

Page 48: Tesi Pasquini Alex Matricola 076035

Attori del sistema

ID: 008

NOME: Esportazione dei dati

BREVE DESCRIZIONE: L’utente vuole scaricare dei datidal database in vari formati

ATTORI PRINCIPALI: Amministratore

PRE CONDIZIONI: Nessuna

SEQUENZAPRINCIPALE:

1. L’utente sceglie di scaricarei dati

2. Il sistema mostra i formatidisponibili

3. L’utente sceglie il formatodesiderato

POST CONDIZIONI: Il sistema deve inviare il fileall’utente

SEQUENZE ALTERNATIVE: Nessuna

4.3.2 Class Diagram

I diagrammi delle classi (class diagram) sono uno dei tipi di diagrammi che possonocomparire in un modello UML. In termini generali, consentono di descrivere tipi dientita, con le loro caratteristiche, e le eventuali relazioni fra questi tipi.

Uno degli assunti fondamentali del paradigma a oggetti e che il concetto di classe,e concetti correlati come l’ereditarieta o il polimorfismo, si prestino a rappresentare inmodo diretto e intuitivo la realta, in qualsiasi ambito (per usare le parole di GradyBooch, “un oggetto e qualsiasi cosa a cui si possa pensare”). I diagrammi delle classiUML sono basati su versioni astratte di tali concetti, e possono essere utilizzati perdescrivere sostanzialmente qualsiasi contesto a qualsiasi livello di astrazione (enfatiz-zandone, pero, solo alcuni aspetti). Di conseguenza, UML prevede un loro impiegoa livello di analisi e in particolare analisi del dominio (ovvero la descrizione del con-testo in cui un sistema software deve operare), ma anche a livello di progettazione(nella descrizione della struttura interna del sistema, dei suoi componenti e delle lororelazioni).

4.3.2.1 Concetti principali

Il class diagram che andremo a sviluppare, dovra renderci chiaro come andremo ad im-plementare il codice. Per questo la cosa piu chiara da fare e specificare il class diagramseguendo il paradigma orientato ad oggetti. Tramite l’astrazione dei nostri compo-nenti riusciamo a capire qual’e il lavoro che quel modulo dovra svolgere, rendendocil’implementazione meno faticosa.

Seguendo questo paradigma, la prima cosa da fare e astrarre le nostre classi principalie le loro proprieta.

48

Page 49: Tesi Pasquini Alex Matricola 076035

Attori del sistema

Detto cio le nostre classi principali saranno:

• SensorData

• SensorMote

• SensorAlarms

Nella prima classe le proprieta che andremmo a dichiarare saranno le grandezze cherileveremo dall’esterno, quindi avremmo:

• Anidride carbonica

• Monossido di carbonio

• Pressione

• Temperatura

• Data e ora

Una volta che abbiamo i dati, dobbiamo specificare con quale mezzo li abbiamo presi.Di conseguenza viene naturale sviluppare la classe SensorMote, e la cosa piu logica elegare insieme le due classi. La classe SensorMote avra come proprieta:

• IdMote

• Livello di potenza

• Altitudine

• Latitiudine

• Longitudine

• Altre Informazioni

Da notare che Altre informazioni e stato inserito solamente perche il progetto eancora nella fase prototipale, e quindi rimane comodo agli sviluppatori effettuare deitest. Tuttavia le altre informazioni sono tutte necessarie. Passiamo ora a specificarel’associazione che dovra esserci tra la classe SensorMote e SensorData. Prima di tuttodobbiamo riconoscere che le due classi sono legate da qualcosa, perche se abbiamo idati l’abbiamo presi sicuramente da qualche Mote, ed i Mote d’altra parte, possonoavere dei dati correlati. Dalla parte dei dati abbiamo un legame forte, di composizione.Infatti non possono esistere dei dati senza un Mote, perche per forza di cose da qualchescheda dovranno essere arrivati. Tuttavia un dato non puo avere piu di un Mote che loha rilevato.

La classe SensorMote non ha lo stesso legame forte che hanno i dati. Infatti i Motepossono esistere al di la del fatto che hanno rilevato qualche dato. Quindi hanno unlimite inferiore di zero dati, mentre il limite superiore puo essere tranquillamente ilnumero dei dati esistenti, infatti questo e il caso in cui tutti i dati sono rilevati dallostesso Mote.

49

Page 50: Tesi Pasquini Alex Matricola 076035

Attori del sistema

Una volta sviluppate le classi dei Dati e dei Mote, ci apprestiamo a sviluppare la classedegli allarmi. Infatti le grandezze raccolte nell’ambiente di lavoro, possono sollevarel’attivazione di qualche allarme.

La classe SensorAlarms quindi avra nelle proprieta un range per ogni valore raccolto,dunque sara composta in questo modo:

• Monossido di carbonio massimo

• Monossido di carbonio minimo

• Pressione massima

• Pressione minima

• Temperatura massima

• Temperatura minima

Se un Dato avra il valore di qualche grandezza che non ricade dentro questi range,avremmo una sollevazione dell’allarme violato. L’associazione tra la classe SensorDatae SensorAlarms sara un’associazione debole. Infatti l’esistenza di un allarme non efunzione dell’esistenza dei dati e viceversa. La classe SensorAlarms potra avere unminimo di zero dati associati (quando l’allarme non viene richiamato da nessun dato)a un massimo di n, dove n equivale al numero di dati esistenti (quando ogni datoraccolto solleva l’allarme in questione). Dall’altra parte, ogni dato puo avere da unminimo di zero allarmi (quando quel dato non solleva nessun allarme) ad un massimodi m, dove m equivale al numero di allarmi esistenti (quando un dato solleva tutti gliallarmi implementati).

Una volta sviluppate le classi principali il nostro lavoro sarebbe finito. Ma bisogna ri-cordare che stiamo lavorando con grails, e quindi oltre alle classi che abbiamo sviluppato(chiamate classi di dominio), dobbiamo sviluppare i vari controller.

I controller hanno il compito di rispondere alle esigenze dell’utente finale, il qualeinvia i comandi tramite lo strato View del framework.

Di conseguenza avremo tre classi controller:

• SensorDataController

• SensorMoteController

• SensorAlarmsController

Il controller dei dati, come gli altri, dovra dare la possibilita all’utente di interagirecon il sistema. Pe questo la classe SensorDataController dovra avere come proprieta:

• Create: questa propireta ci permettera di creare dei dati.

• List: con questa proprieta possiamo elencare tutti i dati che abbiamo nel nostrodatabase.

• List4bis: grazie a questo abbiamo la possibilita di elencare tutti i dati in unformato json.

• Show: ci da la possibilita di vedere nel dettaglio un dato.

50

Page 51: Tesi Pasquini Alex Matricola 076035

Attori del sistema

Questa classe ovviamente avra un associazione diretta con la classe di dominio. Infat-ti, abbiamo un’associazione tra la classe SensorData e la classe SensorDataController,con la classe di dominio che avra un solo controller ed il controller che avra n dati, doven rappresenta il numero di dati raccolti.

La classe SensorMoteController rappresenta la classe che dovra rispondere alle richi-este emesse dal relativo view, e dovra quindi avere queste proprieta:

• Create: questa propireta ci permettera di creare dei mote.

• List: con questa proprieta possiamo elencare tutti i mote che abbiamo nel nostrodatabase.

• Show: ci da la possibilita di vedere nel dettaglio un mote.

Il controller e collegata alla classe di dominio con un associazione debole, dovre ilcontroller avra n istanze di mote, dove n sta a rappresentare il numero di mote, e laclasse di dominio avra un solo controller.

La classe SensorAlarms, oltre a presentare le relative proprieta per la risposta diinput derivanti dal view, ha anche un metodo Controllo. Questo metodo prende comeparamentro un’istanza di SensorData e restituisce un numero, il quale indica un codicedi allarme. Quindi ha il compito di verificare se un dato solleva qualche allarme, e selo solleva identifica l’allarme violato.

Le proprieta sviluppate sono:

• Create: questa propireta ci permettera di creare un allarme.

• Delete: questa propireta ci permettera di cancellare un allarme precedentementecreato.

• Edit: questa propireta ci permettera di modificare un allarme precedentementecreato.

• List: con questa proprieta possiamo elencare tutti gli allarmi che abbiamo nelnostro database.

• Save: con questa proprieta possiamo registrare un’allarme creato nel database.

• Show: ci da la possibilita di vedere nel dettaglio un allarme.

Questa classe ha un associazione con la relativa classe di dominio, dove la classedi dominio ha un solo controller, mentre il controller ha n istanze di allarmi, dove nrappresenta il numero totale degli allarmi.

Oltre a queste classi elencate, abbiamo un quarto controller SensorPreference-Controller. Esso ha il compito di dare la possibilita agli utenti di visualizzare le listedi dati, mote e allarmi in quattro vari formati:

• Testuale

• Comma-Separated Values

• JSON

• XML

51

Page 52: Tesi Pasquini Alex Matricola 076035

Interfacciamento con le WSN

Per fare questo, la classe ha un’associazione per ogni classe di dominio (SensorData,SensorMote, SensorAlarms), per prendere i dati relativi ad ogni entita. Ovviamente ilcontroller delle preferenze deve avere di tutte le entita le n-esime istanze, mentre ogniclasse di dominio avra un solo controller di preferenza.

4.3.2.2 Class Diagram

Figura 4.4: Diagramma delle classi

4.4 Interfacciamento con le WSN

Il sistema in questione, come precedentemente spiegato, e stato progettato per prenderei dati dall’ambiente, grazie alla rete di sensori che comunicano tra di loro grazie alprotocollo ZigBee, per poi inserirli nel database. Tuttavia, per fare cio, abbiamo dimezzo vari passaggi. Infatti, come deve essere strutturato il Database per risponderealle query in modo veloce ed efficiente? E poi, una volta presi i dati con i sensori, comefacciamo ad inserirli nel Database? In questa sezione spieghero come abbiamo scelto lastruttura del Database e la modalita di inserimento.

4.4.1 Struttura del DataBase

La struttura del DataBase e molto importante, infatti e necessario che ogni recordpossa essere identificato univocamente e che possa essere collegato ad altri record dialtre tabelle.

La nostra applicazione ha bisogno di riconoscere tra Entita fondamentali, che sono:

1. I mote da cui riceviamo i dati;

2. I dati che riceviamo;

3. Gli allarmi che abbiamo inserito.

52

Page 53: Tesi Pasquini Alex Matricola 076035

Interfacciamento con le WSN

Ognuna di queste entita avra dei campi al loro interno, in modo che ogni record saraunivoco.

Dato la nostra esigenza, abbiamo scelto di isnerire nel DataBase tre tabelle (piu unatabella creata in modo automatico dal framework per l’applicazione web):

1. sensor alarms

2. sensor data

3. sensor mote

4.4.1.1 Sensor Alarms

La prima tabella, che si occupa di conservare i dati relativi agli allarmi impostati,conterra i record inseriti nella pagina dell’applicazione web. La tabella presenta deicampi che sono:

• id: rappresenta un numero intero, che ogni volta che viene inserito un nuovoallarme aumenta di uno. Serve per rendere il record unico, infatti non avremomai due record con il campo id uguale.

• carbon monoxidemax: questo e un campo rivolto a numeri decimali. L’am-ministratore inserira il massimo valore di monossido di carbonio tollerato, se ab-biamo un dato con monossido di carbonio superiore, verra segnalata l’attivazionedell’allarme.

• carbon monoxidemin: questo e un campo rivolto a numeri decimali. L’am-ministratore inserira il minimo valore di monossido di carbonio tollerato, se ab-biamo un dato con monossido di carbonio inferiore, verra segnalata l’attivazionedell’allarme.

• pressuremax: questo e un campo rivolto a numeri decimali. L’amministratoreinserira il massimo valore di pressione tollerato, se abbiamo un dato con pressionesuperiore, verra segnalata l’attivazione dell’allarme.

• pressuremin: questo e un campo rivolto a numeri decimali. L’amministratoreinserira il minimo valore di pressione tollerato, se abbiamo un dato con pressioneinferiore, verra segnalata l’attivazione dell’allarme.

• temperaturemax: questo e un campo rivolto a numeri decimali. L’amministra-tore inserira il massimo valore di temperatura tollerato, se abbiamo un dato contemperatura superiore, verra segnalata l’attivazione dell’allarme.

• temperaturemin: questo e un campo rivolto a numeri decimali. L’amministra-tore inserira il minimo valore di temperatura tollerato, se abbiamo un dato contemperatura inferiore, verra segnalata l’attivazione dell’allarme.

Questa tabella e direttamente collegata alla tabella relativa ai dati, in quanto epossibile effettuare un test per ogni grandezza rilevata e vedere se cade nel range ditollerabilita impostata per ogni allarme.

53

Page 54: Tesi Pasquini Alex Matricola 076035

Interfacciamento con le WSN

Figura 4.5: Tabella degli allarmi

4.4.1.2 Sensor Data

La seconda tabella si occupa dell’immagazzinamento dei dati ricevuti dall’esterno. Perquesto per ogni dato rilevato abbiamo bisogno di un campo. Nello specifico i campipresentati dalla rtabella in questione sono:

• id: rappresenta un numero intero, che ogni volta che viene inserito un nuovo datoaumenta di uno. Serve per rendere il record unico, infatti non avremo mai duerecord con il campo id uguale.

• carbon dioxide: questo e un campo rivolto a numeri decimali. Infatti qui vieneregistrato il valore dell’anidride carbonica. Abbiamo deciso di inserirlo perchenelle successive versioni dell’applicazione verra sicuramente rilevata l’anidride car-bonica, anche se con tempi abbastanza larghi. Tuttavia, in questa fase prototipaledel progetto, abbiamo scelto di inserire una stringa per ogni record (“NOCO2”).

• carbon monoxide: questo e un campo rivolto a numeri decimali. Infatti quiviene registrato il valore del monossido di carbonio rilevato nel monitoraggioambientale.

• mote id: questo e un campo di numeri interi. Qui viene rappresentato il nu-mero identificativo della scheda, equipaggiata di sensori, che ha rilevato le variegrandezze.

• pressure: questo e un campo rivolto a numeri decimali. Qui viene registrato ilvalore della presisone rilevata nel monitoraggio ambientale.

• temperature: questo e un campo rivolto a numeri decimali. Infatti qui vieneregistrato il valore della temperatura rilevata nel monitoraggio ambientale.

• time stamp: questo e un campo rivolto ad una stringa. Infatti qui vieneregistrata la data e l’ora della rilevazione ambientale.

• alarm id: creato automaticamente dal framework Groovy on Grails.

Questa tabella e direttamente collegata alla tabella relativa agli allarmi, in quantoe possibile effettuare un test per ogni grandezza rilevata e vedere se cade nel rangedi tollerabilita impostata per ogni allarme, e direttamente collegata ai mote in quantoriusciamo ad estrapolare l’id della scheda che ha effettuato la rilevazione ambientale.

4.4.1.3 Sensor Mote

La terza tabella si occupa dell’immagazzinamento dei dati relativi al waspmote cheeffettua la rilevazione. Andiamo a vedere nello specifico quali dati relativi al mote sonoutili per l’applicazione che andiamo a sviluppare:

54

Page 55: Tesi Pasquini Alex Matricola 076035

Interfacciamento con le WSN

Figura 4.6: Tabella delle grandezze rilevate

• id: rappresenta un numero intero, che ogni volta che abbiamo un nuovo moteaumenta di uno. Serve per rendere il record unico, infatti non avremo mai duerecord con il campo id uguale.

• id mote: questo e un campo rivolto alle stringhe. Qui verra inserita la stringamnemonica che identifichera il waspmote.

• other info: questo e un campo rivolto alle stringhe. Questo campo e statosviluppato per effettuare prove, e magari, in futuro, inserire qualche informazionerelativa ai mote, che puo essere essenziale nell’ambito in cui sara implementatal’applicazione.

• power level: questo e un campo rivolto a numeri decimali. In questo campoverra inserito il valore espresso in percentuale della carica della batteria.

• altitude: questo e un campo rivolto a numeri decimali. Qui viene registrato ilvalore dell’altitudine rilevata dal modulo GPS del waspmote.

• latitude: questo e un campo rivolto a numeri decimali. Qui viene registrato ilvalore della latitudine rilevata dal modulo GPS del waspmote.

• longitude: questo e un campo rivolto a numeri decimali. Qui viene registrato ilvalore della longitudine rilevata dal modulo GPS del waspmote.

Figura 4.7: Tabella dei waspmote utilizzati

Questa tabella e direttamente collegata alla tabella relativa ai dati, specificandoqual’e il waspmote che ha effettuato la misura.

55

Page 56: Tesi Pasquini Alex Matricola 076035

Interfacciamento con le WSN

4.4.1.4 Conclusioni

Lo studio relativo alla progettazione e allo sviluppo della struttura del database portaa tutto cio che abbiamo detto in questi paragrafi. Grazie a queste entita che abbiamoastratto e alle loro relazioni, garantiamo un alta efficienza ed affidabilita sul tratta-mento e la persistenza dei dati immagazzinati. Inoltre abbiamo implementato delleroutine, per la cancellazione dei dati e per l’inserimento dei dati, per migliorare l’ef-ficienza e la scalabilita del sistema, in modo che il lavoro non e incentrato solamentesu un singolo componente. Approfondiremo l’argomento di seguito nella parte relativaall’applicazione Java.

Tutto cio e implementato sulla piattaforma Open Source MySQL precedentementediscussa.

4.4.2 Acquisizione dati

Grazie alla rete di sensori riusciamo a recepire i dati relativi al nostro ambiente lavora-tivo e grazie al database riusciamo a far riferire ad ogni serie di dati, il waspmote chel’ha rilevato e gli allarmi che potrebbe sollevare.

Tuttavia il sistema e ancora incompleto. Infatti l’anello mancante risiede sul col-legamento tra la rete di sensori e il database. Non abbiamo ancora parlato di come ilwaspmote riesce ad inserire i dati nel database.

Per fare questo abbiamo delegato il lavoro ad un programmino sviluppato in Java.

La scelta di utilizzare un programma esterno e fondamentale, infatti ci assicura chele operazioni fatte sul database vengono fatte in modo affidabile grazie al Driver offertoda MySQL2. Ovviamente e stato scelto il linguaggio Java perche fortemente utilizzatonella realta accademica e quindi non abbiamo bisogno di ulteriore tempo di studio dellinguaggio.

Dopo aver fatto una piccola introduzione addentriamoci nei particolari.

Il nostro sistema quindi subira un ulteriore cambiamento, infatti tra la rete a stella deisensori ed il database, vi si collochera il programma sviluppato in java che si occuperadi gestire l’input passato dal coordinatore della rete, per poi inserirlo nel database coni giusti controlli e le giuste query.

In particolare la nostra applicazione Java si inserira nella porta COM del coordinator,ricavando le informazioni ambientali, per poi inviarle al server tramite l’host e la porta.

Dato che la nostra applicazione usera la porta COM abbiamo deciso di svilupparenella parte prototipale del progetto, solamente la parte relativa alle porte seriali, lim-itandoci a dare un errore qual’ora dovessimo ricavare le informazioni da una portaparallela.

Il programma in Java presenta un estenzione .jar, tipica delle applicazioni sviluppatein questo linguaggio, e per avviarla abbiamo bisogno di una shell.

Una volta che siamo arrivati nel giusto path, possiamo avviare il programma da rigadi comando grazie a questa stringa:

1 java -jar SensorMonitoring.jar -c COM5

Listing 4.1: Stringa per avviare il programma Java

2http://www.mysql.com/products/connector/

56

Page 57: Tesi Pasquini Alex Matricola 076035

Interfacciamento con le WSN

Figura 4.8: Architettura del Sistema Ambient Monitoring con applicazione Java

Ovviamente dobbiamo modificare la porta inserendo quella con cui comunica il nodocoordinatore (qui ho utilizzato la COM5 per esempio).3

Una volta visto come avviare il programma ed aver accennato come funziona ilsistema, andiamo a vedere piu da vicino come e fatto questo programma.

Innanzitutto, per lanciare l’applicazione e necessario specificare il flag -c con il rel-ativo valore, altrimenti il programma non sapra dove prendere i messaggi di input erestituira un errore. Il flag della porta seriale non e l’unico, infatti abbiamo la possibilitadi inserirne altri tre:

• -h: e il flag relativo all’host del database. Abbiamo la possibilita di inserirel’host su cui risiede il database, altrimenti, se non specificato, ci collegheremo perdefault su localhost.

• -p: e il flag relativo alla porta del database. Abbiamo la possibilita di inserirela porta con per comunicare con il database, altrimenti, se non specificato, cicollegheremo alla porta di default 3306.

• -d: e il flag relativo alla cancellazione dei dati all’interno del database. La can-cellazione non ha un valore di default, ma una volta inserito il flag -d dobbiamoinserire uno dei due valori:

– ALL: se vogliamo cancellare tutti i dati di tutte e tre le tabelle presenti neldatabase;

– DW: se vogliamo cancellare solamente i dati relativi ai rilevamenti ambien-tali e ai waspmote, lasciando intatti i dati relativi agli allarmi.

3Se non abbiamo impostato la variabile d’ambiente di java riceveremo un errore

57

Page 58: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Il programma inizialmente si collega al database e verifica se c’e la presenza di qualcheflag che implica l’interazione con la sistema di conservazione dei dati.

Come abbiamo visto nei capitoli precedenti, il coordinatore stampa un messaggiocon un determinato formato, infatti i dati sono divisi dal simbolo del cancelletto(#).Questa e stata una scelta progettuale che ci ritorna utile ora, infatti il programma Javaadesso puo dichiarare un pattern che indica la formattazione della stringa di input chesi aspetta.

1 Pattern.compile(".*#.*#.*#.*#.*#.*#.*#.*#.*#.*");

Listing 4.2: Costruzione di un pattern

Una volta dichiarato il pattern dobbiamo solo connetterci alla porta COM specificatanella stringa di avvio dell’applicazione.

Il sistema dichiara un buffer, nel quale verranno inseriti i messaggi che provengonodalla porta COM. L’applicazione scorre il buffer e quando arriva all’ultima posizione(che rappresenta l’ultima stringa del messaggio completo) lo segnala, e invia la stringacompleta ad un controllore che confronta il pattern e il messaggio.

Se l’esito del controllo e positivo, viene chiamato un metodo il quale apporta dellemodifiche sul messaggio (eliminando i return) e tramite lo StringTokenizer divide ilmessaggio in piu stringhe in funzione del carattere cancelletto (#). A questo puntoabbiamo tutti i dati registrati in variabili. Non ci resta che inserirli nel database. Perfare questo usiamo un CallableStatement il quale richiama la routine nel database (in-sertimentodati) per poi passargli come parametri, le stringhe in cui abbiamo registratoi dati del messaggio proveniente dalla porta COM.

La funzione insertimentodati sviluppata in linguaggio SQL, non fa altro che inserirenelle giuste tabelle i valori e aggiornare i dati che bisogna aggiornare come ad esempioil power level.

Questi passaggi vengono ripetuti per ogni messaggio che viene inserito nel buffer.

Tuttavia se il confronto con il pattern risulta negativo, per esempio un messaggio chepuo avere subito delle modifiche durante il tragitto, viene semplicemente scartato.

4.5 Interfaccia utente

Ricapitolando il nostro sistema per ora riesce a prendere i dati dall’ambiente esternotramite la WSN, li controlla e li elabora tramite l’applicazione Java SensorCapture, egrazie alle routine i dati vengono finalmente inseriti nel database MySQL.

Adesso l’unica cosa che manca e il modo in cui l’utente interagisce con il sistema.

Per effettuare l’interfaccia utente ci siamo rivolti al framework Grails, principalmenteper tre motivi:

1. Web Application Vs Desktop Application

2. Utilizzo di Groovy

3. Open Source

La scelta di una web application e venuta fuori in base alla volonta di non centralizzareil sistema, infatti facendo un’applicazione web non abbiamo bisogno di installare intutte le macchine su cui vogliamo interfacciarci con il sistema, l’applicazione sviluppata.

58

Page 59: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Quindi ci e sembrata la scelta ottima sviluppare il sistema tramite una web applicationanziche una desktop application.

L’utilizzo di Groovy ci spinge ad usare il framework Grails rispetto agli altri frame-work basati sul modello MVC, dato che utilizza un linguaggio molto produttivo (inpoco tempo riusciamo a la percentuale di produzione e alta) e simile a Java, rendendoil tempo di apprendimento di Groovy abbastanza breve rispetto agli altri.

Inoltre il framework in questione e open source e quindi la scelta effettuata racchiudetre principi che la rende migliore per lo sviluppo di questa applicazione rispetto aglialtri.

Nella fase prototipale del progetto e sufficiente implementare i servizi e le funzioniricavate dall’use case diagram, seguendo il class diagram. Quindi la nostra web appli-cation dovra sostanzialmente avere una pagina principale che permette di raggiungerei servizi implementati nelle pagine degli allarmi, dati, waspmote e preferenze.

• Nella pagina relativa agli allarmi, dovremmo dare modo all’utente di interagirecon gli allarmi per esempio creandoli, modificandoli o cancellandoli.

• Nella pagina dei dati, dovremmo sostanzialmente dare all’utente la possibilita divisualizzare i dati rilevati nell’ambiente lavorativo.

• Nella pagina dei waspmote, il sistema deve visualizzare i dati relativi ai waspmoteutilizzati per effettuare le misurazioni.

Per lo sviluppo di questi servizi, il framework organizza il lavoro in vare directory.

Ogni directory svolge il suo ruolo nel framework, ma fra tutte ve ne sono tre che sonole principali per uno sviluppatore:

1. Domain (Model)

2. View (View)

3. Controller (Control)

La prima directory ha la funzione di rappresentare gli attributi per ogni classe, cioche ogni oggetto di quel tipo deve avere. Ogni classe e sviluppata in linguaggio groovy,infatti ogni file ha l’estenzione .groovy.

La directory View contiene le pagine che l’utente finale andra a visualizzare. Questepagine sono scritte in HTML con l’ausilio di comandi groovy, vengono denominateGroovy Server Page ed hanno un estenzione .gps. Le pagine gps, seguendo perfet-tamente la teoria del Model-View-Controller, si preoccupa di interagire con gli utenti.

La directory Controller invece, contiene la parte logica del sistema per ogni classespecificata, infatti riceve i comandi dell’utente attraverso il View e li attua eseguendoil codice.

Per sviluppare l’applicazione abbiamo installato l’ambiente di sviluppo chiamataSpringSource Tool Suite4 basato su eclipse.

Dopo aver spiegato a grandi linee cio che l’applicazione web dovra sviluppare, dobbi-amo creare il collegamento tra l’applicazione ed il database, in modo da fornirgli i datida elaborare per poi far visualizzare all’utente finale.

4http://www.springsource.com/products/springsource-tool-suite-download

59

Page 60: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.9: Esempio di gerarchia delle directory

Questa operazione e semplicissima nel framework Grails. Infatti e necessario im-postare nella directory grails-app\conf\DataSource.groovy il driver utilizzato per laconnessione al database, l’host, la porta, l’username e la password.

1 dataSource {2 pooled = true3 driverClassName = "com.mysql.jdbc.Driver"4 username = "user" // nome dell’utente5 password = "password" // password dell’utente6 url = "jdbc:mysql://localhost:3306/sensordata?autoreconnect=true"7 }

Listing 4.3: Dati per la connessione al database

Una volta inseriti i dati, la connessinoe al database e risolta, ora possiamo prenderei dati che vogliamo.

4.5.1 Classi di dominio

Dopo una panoramica di come sviluppare l’applicazione, passiamo all’implementazionevera e propria iniziando dalle classi di dominio.

Nella nostra web application abbiamo tre classi di dominio:

1. SensorAlarms

2. SensorData

60

Page 61: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

3. SensorMote

La prima si presenta dichiarando subito una relazione uno a molti riferito ai dati,infatti un allarme puo avere tutti i dati rilevati che lo sollevano oppure nell’altro caso,nessun dato lo richiama. Di seguito abbiamo gli altri campi visti in precedenza nel classdiagram

1 class SensorAlarms {2

3 static hasMany = [data:SensorData]4

5 float temperaturemin6 float temperaturemax7 float pressuremin8 float pressuremax9 float carbonMonoxidemin

10 float carbonMonoxidemax11

12

13 }

Listing 4.4: classe di dominio SensorAlarms

Nella classe di dominio SensorData abbiamo oltre la relazione specificata prima, conla classe degli allarmi, ha gli altri campi definiti prima nel class diagram.

1 class SensorData {2

3 String timeStamp4 float temperature5 float carbonMonoxide6 String carbonDioxide7 float pressure8

9 SensorMote mote10 static belongTo = [sensoralarms : SensorAlarms]11

12 }

Listing 4.5: classe di dominio SensorData

Nell’ultima classe di dominio, SensorMote, abbiamo oltre la relazione da uno a moltiriferita ai dati, le grandezze descritte nel class diagram e inoltre abbiamo un metodoper la stampa del proprio nome mnemonico.

1 class SensorMote {2

3 static hasMany = [data:SensorData]4

5 String idMote6 float powerLevel7 String otherInfo8 float altitude9 float latitude

10 float longitude11

12 String toString(){13 return idMote14 }15

16 }

Listing 4.6: classe di dominio SensorMote

Quello che abbiamo visto nelle classi di dominio e abbastanza semplice, e vieneutilizzato per definire come un oggetto di quel tipo deve essere caratterizzato.

61

Page 62: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Passiamo ora a descrivere il contenuto della directory View.

Dentro la directory abbiamo le pagine che visualizzeremo nel web. Come preceden-temente detto, i file contenuti sono Groovy Server Page ed hanno estenzione .groovy.

All’interno di questa cartella abbiamo tante sottocartelle quanti sono gli argomentitrattati. Per esempio nella nostra applicazione abbiamo quattro cartelle piu una per lapagina iniziale e sono:

1. sensorAlarms

2. sensorData

3. sensorMote

4. sensorPreferences

4.5.2 Pagina di Introduzione

In questo progetto, dobbiamo dare all’utente la possibilia di accedere a molte funzioni,ognuna delle quali riguarda un campo specifico. Per questo abbiamo deciso di sviluppareil nostro sistema con una pagina di introduzione, nella quale viene spiegato lo scopodell’applicazione web.

Figura 4.10: Pagina di introduzione visualizzata sul browser

Nella cartella view, dove sono contenute le altre directory, abbiamo inserito la paginaindex.gps. Questa pagina rappresenta la pagina iniziale della nostra applicazione webe infine ci sono i collegamenti per le altre pagine relative agli altri componenti (allarmi,dati, waspmote, preferenze).

Il codice e sviluppato in questo modo: abbiamo una parte iniziale che riguarda lo stile,l’header e la barra dei menu. Di seguito, all’interno di un paragrafo viene specificatolo scopo dell’applicazione web, per la rilevazione dei dati in un ipotetico ambiente dilavoro, per segnalare condizioni non idonee e salvaguardare la sicurezza.

Di seguito sono elencati i collegamenti verso le altre pagine dell’applicazione web,che saranno poi inserite nelle varie directory all’interno di View.

4.5.3 Gestione degli errori

Tuttavia nella cartella view abbiamo anche un’altra pagina: error.gps.

62

Page 63: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.11: Pagina di errore visualizzata sul browser

Qui viene specificato cio che bisogna visualizzare quando siamo in presenza di unerrore, in modo che lo sviluppatore possa capire da cosa e generato e dove ha sbagliato.

Inizialmente viene dichiarato uno stile, e di seguito, la pagina si basa su un elenco dimessaggi che vengono generati dall’errore.

4.5.4 Gestione degli Allarmi

4.5.4.1 list.gps

Nella prima cartella abbiamo quattro file .gps, ognuno per ogni azione disponibile perl’utente finale.

Figura 4.12: Pagina list.gps visualizzata sul browser

Il file list.gps e il file che serve per visualizzare la lista di allarmi che sono attualmentein funzione. Per fare questo il file dichiara un header e i menu in alto nella pagina,dopodiche si appresta a creare una tabella con valori ordinabili, dove avremmo comeintestazione i campi precedentemente registrati nelle classi di dominio.

Una volta creata la tabella si crea il collegamento con la lista degli allarmi presentinel database e si riempie la tabella dichiarata.

63

Page 64: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.13: Pagina show.gps degli allarmi visualizzata sul browser

4.5.4.2 show.gps

Scorrendo lungo la lista di groovy server page troviamo il file show.gps.

Questo file serve qualora l’utente finale vuole visualizzare un singolo allarme nellospecifico. Dopo aver dichiarato il solito header, con la solita barra dei menu, visual-izziamo il titolo di default della pagina (Show SensorAlarms), e inoltre grazie a groovyriusciamo a riferirci all’allarme selezionato prelevando tutti i campi definiti nella classedi dominio, per poi inserirli in una tabella.

Inoltre vengono dichiarati due pulsanti, per modificare l’allarme e per cancellarlo.Questi pulsanti richiamano delle funzioni implementate nel controller degli allarmi.

4.5.4.3 create.gps

Figura 4.14: Pagina create.gps degli allarmi visualizzata sul browser

Di seguito troviamo il file create.gsp che ha la funzione di rappresentare la paginaper la creazione degli allarmi. Dovra quindi fornire un metodo per l’inserimento.

Il metodo scelto nella nostra applicazione web avviene tramite dei text box dove epossibile inserire il valore desiderato. Scendendo nei particolari possiamo notare cheoltre al solito header e al titolo della pagina, la dichiarazione di una tabella dove sullaparte sinistra abbiamo una label dove e specificato il nome della grandezza, mentresulla destra ci sara la textbox dove verra inserito il valore.

64

Page 65: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Ogni valore da inserire si riferira alle grandezze specificate nella classe di dominiodegli allarmi.

Infine avremmo un pulsante per la creazione, il quale richiamera il metodo Createspecificato nel relativo controller.

4.5.4.4 edit.gps

Figura 4.15: Pagina create.gps degli allarmi visualizzata sul browser

Infine, nella directory views riferita agli allarmi abbiamo il file edit.gps.

Questo file deve permettere al cliente la modifica su un allarme specifico.

Nella nostra applicazione questo accade selezionando prima l’allarme nella lista degliallarmi, e poi selezionando il bottone Edit.

Una volta arrivati nella nostra pagina abbiamo un header, la classica barra dei menue il corpo della pagina. Il corpo della pagina si basa (come nel file create.gps) inuna tabella di valori, dove a destra abbiamo delle label dove sono inseriti i nomi dellegrandezze, mentre nel lato sinistro abbiamo le textbox riempite dai valori impostatiprima della modifica.

Una volta modificati i campi possiamo registrare il cambiamento tramite il bottoneUpdate che troviamo alla fine.

In questa pagina abbiamo inoltre un bottone Delete che ci da la possibilita dicancellare l’allarme.

4.5.5 Pagina dei Dati

Nella sezione view dei dati, abbiamo bisogno di dare all’utente l’opportunita di visual-izzare i dati raccolti e tenerli sempre in aggiornamento.

Come nella directory degli allarmi, anche qui ritroviamo le quattro pagine .gps.Infatti abbiamo:

• list.gps

• show.gps

• create.gps

• edit.gps

65

Page 66: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Di seguito esponiamo cio che conterra ogni pagina.

4.5.5.1 list.gps

Figura 4.16: Pagina list.gps dei dati visualizzata sul browser

Nel file list.gps, notiamo subito nel main che vengono dichiarati degli script injavascript., che serviranno poi per i grafici e la linea verticale che li scorrera. Andandonel body di questa pagina notiamo come sempre la barra dei menu e la dichiarazione diuna selezoine a tendina dove abbiamo la possibilita di scegliere di quale mote vogliamovedere i grafici.

Fatto cio ogni grafico viene richiamato sotto il nome della relativa grandezza.

Dopo aver implementato i grafici in funzione della selezione del waspmote, ci pre-occupiamo ora a far visualizzare i dati in modo sempre aggiornato. Per fare questoabbiamo utilizzato la tecnologia ajax, che riesce ad aggiornare dopo un tempo sta-bilito solamente una parte di pagina, senza dover effettuare il caricamento completo,aumentando le prestazioni dell’applicazione.

Grazie ad Ajax riusciamo a creare la tabella dove andiamo ad inserire i dati all’internodel database e grazie alla funzione fnReloadAjax(); riusciamo a tenerla aggiornata.

Dopo varie prove e sapendo che non abbiamo l’esigenza che i dati vengano aggiornatiin modo molto veloce, abbiamo deciso come tempo di aggiornamento dieci secondi,in modo da non appesantire troppo l’applicazione web e da non aggiornare la paginatroppe poche volte.

4.5.5.2 show.gps

Scorrendo la lista di file ci imbattiamo nella pagina show.gps.

Nella nostra applicazione per visualizzare i campi completi di un dato, e necessarioselezionare il record che ci interessa. Inoltrandoci nel codice notiamo che, come nellapagina show.gps relativa agli allarmi, e presente una tabella, dove a sinistra non abbi-amo piu le label relative agli allarmi, ma adesso le label si riferiscono a cio che abbiamodichiarato nella classe di dominio di SensorData, e a destra i valori relativi al dato presoin cosiderazione.

Alla fine di questa tabella, come in quella relativa agli allarmi, troviamo i due pulsantidedicati alla cancellazione e alla modifica del dato.

66

Page 67: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.17: Pagina show.gps dei dati visualizzata sul browser

4.5.5.3 create.gps

Figura 4.18: Pagina create.gps dei dati visualizzata sul browser

Nella nostra applicazione a scopo prototipale, abbiamo deciso di implementare ancheuna pagina create, che e in grado di creare un dato. Questo e stato fatto per effettuaredelle prove, vedere qual’e l’allarme che si vuole selezionare in presenza del sollevamentodi piu allarmi ecc...

Vedendo il codice, riusciamo a capire che la pagina e strutturata come la paginacreate.gps relativa agli allarmi. Infatti troviamo una tabella dove sulla parte sinistraabbiamo il nome di ogni campo, mentre a destra troviamo il valore di default per ognicampo, il quale puo (e dovrebbe) essere modificato.

Alla fine presenta un pulsante per avviare il processo di creazione.

4.5.5.4 edit.gps

La pagina edit.gps ci e stata creata per problemi di “sporcizia dei dati”. Con questotermine voglio indicare il problema iniziale di comunicazione. Infatti inizialmente idati non venivano scambiati bene tra le varie connessioni del sistema, infatti potevamoavere qualche problema di sintonia tra i vari componenti della rete sensoriale, o magari

67

Page 68: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.19: Pagina edit.gps dei dati visualizzata sul browser

il pattern non riconosceva bene la stringa ed inseriva valori sbagliati. Grazie a questapagina riuscivamo mano a mano a sistemarli senza agire dal database.

Tuttavia, ora che i problemi sopracitati sono stati risolti, e dopo una lunga fase ditesting, possiamo affermare che questa pagina non serve piu.

Vedendo solamente la parte grafica si puo intuire che e stata creata seguendo lapagina edit.gps degli allarmi, avente una tabella con due colonne, dove nella primaabbiamo l’intestazione di ogni campo, mentre nel secondo i valori raccolti.

Una volta modificati i valori si puo registrare il lavoro tramite il pulsante Update ocancellare direttamente il record con il pulsante Delete.

4.5.6 Gestione dei Mote

Nella sezione dedicata alla view dei waspmote, dobbiamo dare all’utente un modo perinteragire con le informazioni raccolte sui sensori.

La nostra idea e stata quella di sviluppare una prima pagina dove si possono scorrerele informazioni raccolte in una tabella sempre aggiornata, e delle sottopagine per dellefunzioni avanzate.

La nostra directory avra quindi:

• list.gps

• map

• edit.gps

4.5.6.1 list.gps

Il nostro file list.gps deve permettere all’utente finale di visualizzare tutti i dati relativialle schede wasp. Questi dati sono dichiarati nella classe di dominio Sensormote.

Inoltrandoci nel codice possiamo vedere che questa classe prende spunto dalla classelist.gps relativa ai dati, infatti anche qui abbiamo una porzione di codice in Ajax, laquale crea una tabella dove vengono inseriti i dati del database.

In questo punto, a differenza del file list.gps dei dati, la tabella ha un tempo diaggiornamento di 1 secondo, questo perche i record relativi ai waspmote sono significa-

68

Page 69: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.20: Pagina list.gps dei waspmote visualizzata sul browser

tivamente minori rispetto a quelli dei dati ambientali, e quindi diminuendo il tempo direfresh non diminuiscono le prestazioni.

4.5.6.2 map.gps

Figura 4.21: Pagina list.gps dei waspmote visualizzata sul browser

La pagina map.gps deve dare all’utente la possibilita di visualizzare il collocamentogeografico delle varie schede di sensori. Per sviluppare questo, ci siamo serviti dellemappe di Google.

Se studiamo il codice notiamo oltre al solito header, la barra dei menu e le opzionidi stile, la dichiarazione di una funzione Javascript. Questa funzione imposta il centrodella mappa da visualizzare con lo zoom di default, e di seguito, per ogni waspmote,ricava le coordinate, per inserire dei marcatori nei luoghi indicati.

Infine questo script viene richiamato nella divisione sotto la barra dei menu.

Grazie a questo l’utente potra visualizzare dove e posizionato il sensore.

4.5.6.3 edit.gps

In questa pagina dobbiamo dare la possibilita all’utente di modificare i dati relativi almote. Questa pagina non offre una grande utilita all’utente finale, ma e stata comoda

69

Page 70: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.22: Pagina edit.gps dei waspmote visualizzata sul browser

realizzarla per lo sviluppo, dato che all’inizio c’erano molti problemi di connessione equindi i dati risultavano sporchi e non veritieri. Grazie a questa pagina siamo riuscitia modificare i dati senza agire sul database e in maniera abbastanza veloce.

Passando al codice, questa pagina implementa una tabella che ha nella sua colonnasinistra tutte le intestazioni dei campi, mentre sulla destra notiamo i relativi valoriche possono essere modificati. Inoltre possiamo notare alla fine la dichiarazione di duepulsanti i quali hanno la funzione di aggiornare i dati nel database e nella lista, mentrel’altro ha la funzione di cancellare in modo permanente i dati del waspmote.

4.5.7 Pagina delle preferenze

In questa directory di view dobbiamo dare all’utente la possibilita di scaricare infor-mazioni in vari formati riguardanti sia gli allarmi, sia i dati che i waspmote.

Abbiamo deciso di effettuare tutto questo in una sola pagina con una grafica sempliceed intuitiva. Ovviamente la parte logica e delegata al controller.

Data la premessa sopracitata abbiamo deciso che Preferences avra solamente un file.gps, la list.

4.5.7.1 list.gps

La funzione di questa pagina e quella di dare all’utente l’accesso ai dati presenti neldatabase in vari formati.

Cio viene fatto perche magari l’amministratore del sistema avra bisogno di interfac-ciarsi con altri software per la gestione dell’ambiente lavorativo.

Nel codice possiamo notare come la pagina si sviluppa in una tabella composta da 5colonne, dove nella prima abbiamo inserito la l’intestazione dei dati che si vogliono scari-care, mentre nelle altre colonne abbiamo solamente dei form che inoltrano la richiestaal controller il quale gestisce la parte logica.

4.5.8 Classi di controllo

Le classi di controllo contengono la logica dell’applicazione web. Infatti tramite le viewvengono inoltrate le richieste che andranno al controller.

70

Page 71: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Figura 4.23: Pagina list.gps delle preferenze visualizzata sul browser

Le classi controller che abbiamo sviluppato sono quattro:

• SensorAlarmsController

• SensorDataController

• SensorMoteController

• SensorPreferencesController

Tutte le classi controller sono sviluppate con il linguaggio Groovy e portano l’esten-zione .groovy.

4.5.8.1 SensorAlarmsController

Nel controllo degli allarmi viene definita la parte logica degli allarmi. Per ogni azioneche si svolge nella pagina della web application esiste una logica specificata nel con-troller. Per esempio, nel creare un nuovo allarme, si specifica una nuova istanza diSensorAlarms, gli si assegnano i parametri scelti e si ritorna un allarme completo.

Come vediamo all’inizio del listato notiamo che index e la pagina di default, e nelcontrollo degli allarmi questa viene reindirizzata alla variabile list, la quale raccoglietutti i dati contenuti nel database. Tramite il collegamento che c’e tra il view e ilcontroller, questi dati vengono inseriti nella tabella.

Abbiamo inoltre la variabile save che dato un istanza di allarmi (tramite create), lasalva nel database insieme ai parametri.

Per vedere nello specifico un allarme, abbiamo a disposizione la pagina show, che nelcontroller recupera l’id dell’allarme selezionato e lo mostra. Nel caso viene inserito illink in modo manuale e non esiste un allarme con l’id specificato, viene ritornato unmessaggio di errore.

Il controller della pagina edit si basa sul passaggio dell’id, nel caso non esiste unallarme con quell’id allora verra tornato indietro un messaggio di errore, nel caso es-istesse, viene ritornato l’allarme desiderato, e quindi grazie alla relazione che c’e tracontroller e view possiamo vedere nella tabella realizzata, i valori corretti.

Inoltre abbiamo anche la possibilita di cancellare un allarme. Questo e possibile nellaschermata di visualizzazione specifica di un singolo allarme. Infatti in basso possiamo

71

Page 72: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

vedere che c’e un pulsante per cancellare l’allarme (Delete). Questo pulsante cattural’id dell’allarme (se l’azione viene svolta tramite un link inserito manualmente fa ilcontrollo sull’id passato) e prova a cancellarlo dal database restituendo un messaggiodi riuscita o di fallimento.

Infine il controller presenta un metodo, che per ogni dato verifica se avviene ilsollevamento di qualche allarme.

4.5.8.2 SensorDataController

In questo file viene scritta la logica della pagina dei dati.

Se riusciamo a vedere i dati nella tabella, se possiamo creare, modificare, cancellaredati, e grazie alla logica che viene implementata in questa classe.

Vedendola nello specifico, la classe indirizza subito la pagina principale sulla paginalist.gps, il quale mostra tutti i dati nel database in una tabella realizzata da list.gps.Gli altri metodi specificati sono:

• Create

• Delete

• Edit

• Index

• List5

• Save

• Show

• Upload

Il metodo Create specifica l’azione della creazione di un nuovo record, crea una nuovaistanza di SensorData, passa i parametri specificati in create.gps e ritorna l’istanza coni nuovi parametri impostati.

L’azione Show serve per visualizzare un record di dati gia esistente, passando comeparametro l’id. La parte logica dell’azione ricava l’id e grazie a questo riempie i variparametri visualizzati su show.gps. Ovviamente se l’id viene inserito in modo manualeviene effettuato un controllo sull’esistenza, e nel caso non dovesse esistere viene visu-alizzato un messaggio di errore e si viene reindirizzati alla pagina list.gps. Le unicheazioni abilitate una volta che viene effettuato il comando Show, sono Delete ed Edit

Edit e un azione simile a Show, solamente che i comandi che sono abilitati una voltaentrati in questa azione sono Delete e Update. Nella pagina edit.gps avremmo tuttetextbox con i valori delle grandezze, in modo che si possono modificare, al contrariodella pagina show.gps in cui abbiamo solamente delle label, questo perche l’azione shownon deve modificare nulla, ma ha il solo scopo di visualizzare il contenuto.

Delete puo essere svolta dopo che viene svolta l’azione di Show o di Edit (non e cosısolo se l’azione viene svolta manualmente dalla barra degli indirizzi). Siamo quindi inpossesso del dato da cancellare, quindi l’azione svolta dal controller e solamente quelladi cancellarla dal database restituendo un messaggio di conferma.

72

Page 73: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Update viene richiamato dopo una modifica di un record di dati. Ha la funzione di ag-giornare il contenuto di quel record. Una volta effettuata la modifica, viene visualizzatoil messaggio di conferma o di errore, e si ritorna alla pagina list.gps.

Save e simile ad Update ma viene svolta solamente per la creazione di un nuovorecord di dati. Come l’azione precedente, anche Save restituisce degli errori nel casovengono inseriti valori non consistenti. Nel caso non ci siano errori si viene reindirizzatinella pagina list.gps, dopo aver avuto un messaggio di conferma.

List5 serve per creare un file di tipo json che poi viene passato sia alla tabella (serveda input per riempirla di valori), sia ai grafici. Una volta richiamato in modo manualevisualizza il json in formato testuale.

Figura 4.24: Rendering di list5 sul browser

4.5.8.3 SensorMoteController

Il Controller dei Mote gestisce la parte logica che lega i dati della classe di dominio perfarle visualizzare nei view.

L’azione di default del controller e Index il quale reindirizza il controllo all’azioneList. List visualizza i dati relativi alle schede di sensori ordinate per id. La relazioneche si crea tra Controller e View fa si che i dati vengono inseriti nella relativa tabella.

Le azioni che vengono dichiarate in seguito sono:

• Create

• Show

• Edit

• Delete

• Update

• Save

• ListData

L’azione Create costruisce un nuovo mote, ed ha il compito di passare a create.gpsl’intestazione dei campi e i relativi valori di default. Per fare questo viene creata unanuova istanza di SensorMote, vengono passati i parametri alla pagina del modello viewe ritorna l’istanza creata con i parametri di default impostati.

Show ha la funzione di ricavare i dati relativi ad uno specifico mote. Il controller ri-cava l’id e tramite questo riempie i vari parametri visualizzati su show.gps. Ovviamentese l’id viene inserito in modo manuale viene effettuato un controllo sull’esistenza, e nelcaso non dovesse esistere viene visualizzato un messaggio di errore e si viene reindi-rizzati alla pagina list.gps. Le uniche azioni abilitate una volta che viene effettuato ilcomando Show, sono Delete ed Edit.

73

Page 74: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

Edit ha la funzione di modificare un mote gia esistente. E un azione simile a Show,solamente che i comandi che sono abilitati una volta entrati in questa azione sono Deletee Update. Il controller passa al relativo view le intestazioni e i valori del mote specifico,quindi nella pagina edit.gps avremmo tutte textbox con i valori delle grandezze, inmodo che si possono modificare, al contrario della pagina show.gps in cui abbiamosolamente delle label, questo perche l’azione show non deve modificare nulla, ma ha ilsolo scopo di visualizzare il contenuto.

Delete ha la funzione di cancellare un mote dal database e di conseguenza dalla listache viene visualizzata. Come nel controller dei dati puo essere svolta dopo che vienesvolta l’azione di Show o di Edit (non e cosı solo se l’azione viene svolta manualmentedalla barra degli indirizzi). Come precedentemente detto, ricava l’id del mote e locancella, notificando l’avvenuto tramite un messaggio.

Update ha la funzione di aggiornare un mote precedentemente modificato. Dato chedeve svolegere questa funzione, viene richiamato dopo un Edit. Una volta effettuata lamodifica, viene visualizzato il messaggio di conferma o di errore, e si ritorna alla paginalist.gps.

Save ha la funzione di registrare all’interno del database un mote che e stato appenacreato. A livello di codice e simile ad Update ma viene svolta solamente dopo l’azionedi Create. Restituisce degli errori nel caso vengono inseriti valori non consistenti nel-l’azione di creazione. Nel caso non ci siano errori si viene reindirizzati nella paginalist.gps, dopo aver avuto un messaggio di conferma.

ListData serve per creare un file di tipo json riguardanti i Mote, che poi viene passatosia alla tabella di list.gsp(serve da input per riempirla di valori). Una volta richiamatoin modo manuale visualizza il json in formato testuale.

Figura 4.25: Rendering di listdatamote sul browser

4.5.8.4 SensorPreferencesController

Lo scopo di questo controller e quello di raccogliere dati dal database e incapsularli infile di vari formati, che verranno poi passati al view. Questo serve per dare all’utentefinale la possibilita di passare i dati in altre piattaforme.

Questo controller si articola in varie azioni:

• List4bis

• List4biscsv

• List4bisjson

• List4bisxml

• ListAlarms

• ListAlarmscsv

• ListAlarmsjson

74

Page 75: Tesi Pasquini Alex Matricola 076035

Interfaccia utente

• ListAlarmsxml

• ListData

• ListDatacsv

• ListMotejson

• ListMotexml

• ProvaPmml

List4bis, ListAlarms e ListData hanno il compito di raccogliere i dati e salvare ilcontenuto in un file di tipo testuale. Questi file raccolgono rispettivamente i record diDati, Allarmi e Mote. Abbiamo scelto di rappresentare il file testuale come se fosse inJson, data la sua intuitivita.

Figura 4.26: Rendering dei dati in formato testuale sul browser

List4biscsv, ListAlarmscsv e ListDatacsv hanno il compito di raccogliere i dati esalvare il contenuto in un file di tipo CSV5. Questi file raccolgono rispettivamente irecord di Dati, Allarmi e Mote e li incapsula in file .csv. I file di questo tipo possonoessere aperti con programmi tipo Excell, e visualizzare i dati in una tabella.

Figura 4.27: Implementazione dei dati in Excell

List4bisjson, ListAlarmsjson e ListMotejson hanno il compito di raccogliere i datie salvare il contenuto in un file di tipo Json. Questi file raccolgono rispettivamente irecord di Dati, Allarmi e Mote e li incapsula in file .json. Il browser da la possibilitadi scaricare il file.

List4bisxml, ListAlarmsxml e ListMotexml hanno il compito di raccogliere i dati esalvare il contenuto in un file di tipo XML6. Questi file raccolgono rispettivamente irecord di Dati, Allarmi e Mote e li incapsula in file .xml. Il file ha una struttura adalbero e il browser da la possibilita di visualizzarlo.

5Comma-Separated Values6eXtensible Markup Language

75

Page 76: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

Figura 4.28: Download del file json

Figura 4.29: Download del file json

4.6 Tecnologie di implementazione

Per l’implementazione di questa applicazione, ci siamo dovuti appoggiare a diverse tec-nologie, alcune delle quali devono ancora svilupparsi. Le varie scelte si sono basate so-pratutto su programmi open source di eccellenza, che offrono servizi abbastanza buoni,che per le nostre esigenze sono piu che ottime, senza nessuna spesa.

Di seguito tratteremo tutte le tecnologie utilizzate, elencandone i pregi e i difettiinsieme alle motivazioni d’uso.

4.6.1 Groovy on Grails

Grails, o Groovy on Grails e un framework open source per applicazioni Web progetta-to per consentire un’elevata produttivita sulla piattaforma Java, rilasciato sotto licenzaApache. Il termine piattaforma e piu esteso di linguaggio e in effetti Grails si appoggiaa Groovy, un linguaggio dinamico, come linguaggio di programmazione principale.

Groovy e un linguaggio basato su Java adatto alla programmazione agile. Ha moltecaratteristiche in comune con Python, Ruby, Perl poiche, come questi, e un linguaggio discripting orientato agli oggetti. Groovy e pensato per aumentare la produttivita, ovverola velocita con cui si sviluppano applicazioni: riduce il codice necessario e semplifical’accesso alle basi di dati. Integra tutti gli oggetti e le librerie Java e la compilazione

76

Page 77: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

Figura 4.30: Logo Grails

Figura 4.31: Logo Groovy

produce file in formato bytecode che si possono utilizzare in ogni situazione in cui sipuo usare Java.

Groovy puo essere inoltre utilizzato come linguaggio di scripting da console e quasitutti i costrutti Java sono validi anche in Groovy. La sua potenza e semplicita hannopermesso lo sviluppo di Grails, considerato da molti sviluppatori un ottimo frameworkper lo sviluppo rapido di applicazioni web al pari di Rails. In comune con Java c’ela struttura base della grammatica (sia pure con qualche rilevante differenza), ma so-prattutto il fatto che il bytecode prodotto sia assolutamente simile a quello delle classiJava, caratteristica che permette di chiamare classi Java da Groovy e viceversa.

Tra le altre caratteristiche di Groovy:

• Consente la modifica a runtime di classi e metodi, ad esempio definendo un nuovometodo di classe;

• mancano i punti e virgola “;”, infatti in Groovy sono opzionali. Le istruzionisono separate dal carattere di nuova linea;

• gestisce le liste e le espressioni regolari come costrutti built-in nel linguaggio;

• supporta i DSL (Domain-Specific Language) e altre sintassi compatte in modoche il codice sia facile da leggere e mantenere;

• supporta vari linguaggi di markup come XML ed HTML all’interno del codice diprogrammazione. Questa caratteristica permette di definire e manipolare moltitipi di dati eterogenei con una sintassi ed una metodologia di programmazioneuniformi;

• l’operatore “==”

– in Java: ha significati diversi, per i tipi primitivi indica uguaglianza (divalori) mentre per gli oggetti indica identita (stesso oggetto);

– in Groovy: e sempre l’uguaglianza di valori (equals() in Java), ancheperche non esistono in Groovy i tipi primitivi. Per indicare l’identita di dueoggetti si utilizza il metodo is();

77

Page 78: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

• la stringa in non puo essere usata come nome di variabile in quanto e una parolachiave;

• Cicli e contatori

– In Java: {for (int i=0; i < len; i++) {...}– In Groovy: len.times {...}

• l’istruzione return alla fine dei metodi e opzionale;

• la parola chiave this puo essere usata anche in contesti statici e indica la classein oggetto;

• metodi e classi hanno visibilita pubblica di default;

• Groovy non supporta la definizione di classi annidate;

• Groovy e un linguaggio a tipizzazione dinamica, quindi non mostra errori in fasedi compilazione nel caso si utilizzino membri non dichiarati o passati ai metodiargomenti di tipo errato.

Groovy e un linguaggio di programmazione adatto a diversi tipi di utilizzo (generalpurpose) che puo essere utilizzato in molteplici contesti in quanto:

• puo essere impiegato in alcuni componenti di progetti scritti in Java poiche medi-ante le chiusure e la sua sintassi compatta permette di esprimere comportamentidifficilmente esprimibili in Java;

• e adatto per rappresentare e gestire strutture dati gerarchiche in quanto le suestrutture dati, liste e mappe e le sue api, ad esempio i costruttori (builders) cheimplementano il design pattern builders, rendono semplice la manipolazione difile XML o strutture gerarchiche di altro tipo;

• non necessita di ambienti di esecuzioni particolari in quanto la sola precondizionedi utilizzo e la presenza della virtual machine Java, il che lo rende facilmenteimpiegabile in molti scenari pratici e su sistemi operativi differenti;

Come la maggior parte dei framework web anche Grails si basa sul pattern MVC(Model View Controller). Come gli altri framework Java, Grails ha delle classi specifichedi dominio che trasportano i dati dal model (modelli che contengono i dati) alle view(viste che permettono di visualizzare i dati al browser). La view generica di Grailse fatta tramite le GSP (Groovy Server Pages) che tipicamente restituiscono codiceHTML da far interpretare ai vari browser, inoltre questo componente include anche unlayout flessibile, template caratteristici e semplici librerie di tag. I controller (classi chefungono da arbitri) gestiscono tutte le richieste pervenute dai vari client e a secondadell’azione associata comunicheranno con gli altri due componenti. Inoltre i controllerdi Grails sono “request-scoped”, il che significa che viene creata una nuova istanza perogni nuova richiesta.

Grazie ai vantaggi di Groovy, Grails e in grado di abbreviare il ciclo di sviluppo diun’applicazione.

Grazie al fatto che e open source, che e efficiente ed affidabile e dato che usa Groovycome linguaggio di programmazione che e molto simile a Java e cio non comporta unulteriore tempo di apprendimento del linguaggio, la nostra scelta si e concentrata suquesto framework.

78

Page 79: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

4.6.2 AJAX

Figura 4.32: Logo Ajax

Dal 2001 al 2005 il World Wide Web e passato attraverso una crescita spaventosa intermini di tecnologie e metodologie utilizzate per portare questo strumento statico allavita. Le brochure e i cataloghi online hanno smesso di dominare Internet nel momentoin cui le applicazioni web sono divenute una parte significativa delle destinazioni online.Le applicazioni web si differenziavano dai loro “antenati” siti web nell’offrire ai propriutenti un servizio immediato non solo di tipo informativo. Che lo scopo fosse la gestionedi procedure commerciali o l’interesse personale, gli sviluppatori erano costretti a crearenuovi paradigmi di interazione, visto che gli utenti iniziavano ad aspettarsi funzionalitapiu avanzate.

A condurre questo movimento e stato Google. Dopo che il gigante dei motori diricerca uscı allo scoperto, iniziarono ad apparire nuovi esperimenti condotti dai suoiingegneri da una sezione del sito chiamata Google Labs7. Molti dei progetti dei GoogleLabs, come Google Suggest e Google Maps, consistevano in un’unica pagina web che purnon venendo mai scaricata veniva tuttavia costantemente aggiornata. Tali innovazioni,che cominciarono a portare le affordance delle interfacce dei software desktop entro iconfini di un browser, furono elogiate in tutto il Web e considerate come l’avvento diuna nuova era dell sviluppo web. E lo furono davvero.

Nel febbraio 2005 Jesse James Garrett di Adaptive Path LLC pubblico online unarticolo intitolato “Ajax: A new Approach to Web Applications”8, in questo scrittoGarrett spiegava come, a suo avviso, le applicazioni web stessero colmando lo scartofra il Web e le applicazioni desktop tradizionali.

Malgrado la presenza di svariate FAQ9 a supplemento dell’articolo di Garret, rimaneancora una certa confusione su cio che concerne la vera essenza di Ajax. In parolesemplici, Ajax non e altro che un approccio all’interazione web. Tale approccio riguardala trasmissione di solo una piccola quantita di informazioni da e verso il server, inmodo da offrire all’utente l’esperienza piu reattiva possibile. Invece dal modello diapplicazione web tradizionale, in cui il browser stesso si occupa di avviare richiesteal server web e di processare le richieste provenienti da quest’ultimo, il modello Ajaxprevede un livello intermedio, che Garrett chiama motore Ajax (Ajax engine) atto agestire tale comunicazione. Un motore Ajax e in realta un semplice oggetto o funzioneJavaScript che viene chiamato ogni qual volta e necessario richiedere informazioni alserver. A differenza del modello tradizionale, che fornisce un collegamento a un’altrarisorsa (per esempio un’altra pagina web), ogni collegamento esegue una chiamata almotore Ajax, che programma ad eseguire la richiesta. Essa viene eseguita in modoasincrono, ovvero l’esecuzione del codice non attende una risposta prima di continuare.

7labs.google.com8“Ajax. Un nuovo Approccio alle Applicazioni Web” http://www.adaptivepath.com/ideas/essays/archives/000385.php9Frequently Asked Questions

79

Page 80: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

Il server, che solitamente servirebbe HTML, immagini, CSS o JavaScript, viene con-figurato per inviare dati che il motore Ajax puo utilizzare. Questi dati possono esseretesto puro, XML, o qualsiasi altro pretalo.

Quando il motore Ajax riceve la risposta dal server, passa all’azione, spesso esam-inando i dati e apportando svariati cambiamenti all’interfaccia utente basandosi sulleinformazioni ricevute. Dato che questo processo comporta il trasferimento di una mi-nore quantita di informazioni rispetto al tradizionale modello di applicazione web, l’in-terfaccia utente viene aggiornata piu velocemente, e l’utente e in grado di svolgere ilproprio lavoro con maggiore efficienza.

Figura 4.33: Differenze fra il modello web tradizionale e quello di Ajaxl

Essendo un nuovo modello di applicazione web, Ajax e ancora nella sua prima in-fanzia. Tuttavia molti sviluppatori web hanno considerato questo nuovo sviluppo comeuna sfida. La sfida e distinguere cio che rende ottima un’applicazione web Ajax da cioche rende la rende pessima o mediocre. Michael Mahemoff10, sviluppatore di softwareed esperto di usabilita, ha identificato svariati principi chiave di ottime applicazioniAjax:

• Traffico minimo: le applicazioni Ajax dovrebbero ricevere e inviare la minorquantita di informazioni possibile da e verso il server. Insomma, Ajax puo mini-mizzare il traffico fra client e server. Assicurarsi che la propria applicazione Ajaxnon invii e riceva informazioni inutili ne favorisce la robustezza.

10www.mahemoff.com

80

Page 81: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

• Niente sorprese: le applicazioni Ajax solitamente introducono modelli di inter-azione utente diversi rispetto alle applicazioni web tradizionali. A differenza dellostandard web di fare clic e attendere, alcune applicazioni Ajax si servono di altriparadigmi di interfaccia, quali drag and drop o il doppio clic. A prescindere daquale modello di interazione utente si scelga, si mantenga una generale coerenza,in modo che l’utente sappia sempre come agire.

• Convenzioni prestabilite: non si perda tempo a inventare nuovi modelli diinterazione utente che risulteranno estranei agli utenti finali. Meglio prendere aprestito il piu possibile da applicazioni web e desktop tradizionali, cosı da avereuna curva d’apprendimento minima.

• Nessuna distrazione: evitare elementi di pagine inutili e che distraggono, comeanimazioni continue, e sezioni di pagina lampeggianti. Espedienti di questo tipodistolgono l’utente da cio che stanno cercando di realizzare.

• Accessibilita: tenere presente chi saranno i propri utenti primari e secondarie come interaggiranno con l’applicazione Ajax. Evitare di progettare un’appli-cazione che possa tagliare fuori completamente un tipo di pubblico inaspettato.I propri utenti impiegheranno browser piu datati o software speciali? Megliosaperlo con anticipo regolarsi di conseguenza.

• Evitare intreri caricamenti di pagina: tutta la comunicazione con il serverdopo l’iniziale caricamento di pagina deve essere gestita dal motore Ajax. Non sicomprometta l’esperienza utente caricando piccole quantita di dati in un puntoed eseguendo interi caricamenti di pagina in un altro.

• L’utente innanzi tutto: progettare l’applicazione Ajax pensando all’utenteprima di ogni altra cosa. Cercare di semplificare al massimo gli utilizzi piu comuni,senza farsi prendere troppo da questioni come l’inserimento di pubblicita o dieffetti piacevoli.

Il comune denominatore di tutti questi principi e l’usabilita. Lo scopo primario diAjax e migliorare l’esperienza web dei propri utenti; la tecnologia che lo permette esemplicemente un mezzo per tale fine. Attenendosi a tali principi qui elencati, si puoessere ragionevolmente sicuri che la propria applicazione Ajax risultera utile e usabile.

81

Page 82: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

4.6.3 MySQL

Figura 4.34: Logo MySQL

Il database MySQL R© e diventato il database open source piu conosciuto al mondograzie a prestazioni veloci, elevata affidabilita e facilita d’uso. E utilizzato in ognicontinente, anche in Antartide, da singoli sviluppatori Web e da molte delle aziendepiu grandi e in piu rapida espansione del mondo, tra cui leader di settore come Ya-hoo!, Google, Alcatel-Lucent, Nokia, YouTube e Zappos.com., per risparmiare tempo edenaro potenziando siti Web con volumi d’accesso elevatissimi, sistemi business-criticale pacchetti di soluzioni software.

MySQL non e soltanto il database open source piu famoso al mondo. E diventatoanche il database utilizzato per una nuova generazione di applicazioni basate sullo stackLAMP (Linux, Apache, MySQL, PHP / Perl / Python). MySQL puo essere eseguitosu piu di 20 piattaforme, tra cui Linux, Windows, Mac OS, Solaris, HP-UX, IBM AIX,offrendo quella flessibilita che mette l’utente al comando.

Sia che abbiate scarsa esperienza della tecnologia dei database o che siate esper-ti sviluppatori o DBA, MySQL propone un’offerta completa di software certificato,assistenza, formazione e consulenza che vi permettera di raggiungere i vostri obiettivi.

MySQL e un Relational database management system (RDBMS), composto da unclient con interfaccia a caratteri e un serve.

Dal 1996 supporta la maggior parte della sintassi SQL e si prevede in futuro il pienorispetto dello standard ANSI. Possiede delle interfacce per diversi linguaggi, compresoun driver ODBC, due driver Java, un driver per Mono e .NET ed una libreria perpython.

Il codice di MySQL venne sviluppato fin dal 1979 dalla ditta TcX ataconsult, poirinominata MySQL AB, ma e solo dal 1996 che viene distribuita una versione chesupporta SQL, prendendo spunto da un altro prodotto: mSQL.

La nostra scelta e ricaduta su questo database, oltre perche e open source, masopratutto per l’esperienza nel settore.

Il mondo legato a MySQL e molto vasto, infatti il web e pieno di forum dedicati aquesto database e quindi informarsi per l’utilizzo ed il funzionamento e molto facile.

4.6.4 Google maps

Google Maps (nome precedente Google Local) e un servizio accessibile dal relativo sitoweb e che consente la ricerca e la visualizzazione di mappe geografiche di buona partedella Terra. Oltre a questo e possibile ricercare servizi in particolari luoghi, tra cuiristoranti, monumenti, negozi, trovare un possibile percorso stradale tra due punti evisualizzare foto satellitari di molte zone con diversi gradi di dettaglio (per le zone che

82

Page 83: Tesi Pasquini Alex Matricola 076035

Tecnologie di implementazione

Figura 4.35: Logo Google maps

sono state coperte dal servizio si riescono a distinguere in molti casi le case, i giardini,le strade e cosı via). Le foto sono statiche (non in tempo reale), buona parte delle qualisono riferite alla fine degli anni novanta. Oltre a queste funzioni, Google Maps offreanche una ricerca di attivita commerciali sulle stesse mappe.

Un difetto e che non sono ortofoto, ossia sono schiacciate per essere adattate allaproiezione cartografica. Cio e evidente se le immagini vengono confrontate con, adesempio, quelle dell’Istituto Geografico Militare o del Portale Cartografico Nazionale.

Google mette a disposizione le proprie API per la visualizzazione della mappa e lapossibilita di inserire delle puntine con relativa didascalia in posizioni scelte da noi.

Le scelte riguardo l’utilizzo di Google maps sono dovute per il vasto predominio nelsettore, e sopratutto per il suo sicuro sviluppo.

Possiamo comunque dire che un valido nemico nel campo della geolocalizzazione esicuramente Yahoo! Maps.

83

Page 84: Tesi Pasquini Alex Matricola 076035
Page 85: Tesi Pasquini Alex Matricola 076035

5. Impiego statistico dei datirilevati

5.1 Introduzione

Le potenzialita offerte dal sistema Ambient Monitoring non si concludono con cio cheabbiamo descritto nei capitoli precedenti. Infatti il nostro sistema si puo espanderecon l’uso di sistemi statistici. Grazie a questi sistemi possiamo eliminare la partedella nostra applicazione relativa agli allarmi per farli gestire al sistema esterno. Laconseguenza di questo ausilio e la minor centralizzazione del sistema ed il minor pesodell’applicazione creata.

In questo capitolo, ci concentreremo sullo studio dei sistemi statistici, del loro funzion-amento e dei loro componenti. Infine verificheremo, tramite un test mirato, l’effettivaefficienza del sistema statistico.

5.2 Tecnologie di apprendimento dati

Con la terminologia Tecnologie di apprendimento dati ci riferiamo all’estrazioneo scoperta di nuove informazioni sottoforma di pattern (modelli) o regole a partireda grandi quantita di dati. Grazie alla scoperta di nuovi dati, riusciamo ad ottenereinformazioni grezze, che poi in un secondo processo di elaborazione, potranno essereutili per le nostre applicazioni. Grazie a questo processo, quindi, riusciamo ad avereuna base su cui sviluppare la nostra applicazione.

Per essere utile, il data mining1 deve essere eseguito in maniera efficiente su file ebasi di dati di dimensioni elevate.

Esistono due stili di apprendimento dati : supervisionato e non supervisionato.

L’apprendimento dei dati supervisionato e un approccio top down, applicabile quandosappiamo che cosa stiamo cercando, e assume spesso la forma di modelli previsionali(in cui e chiaro l’obiettivo da prevedere). L’altro stile, l’apprendimento dei dati nonsupervisionato, e un approccio bottom up, vale a dire in cui si lascia che i dati stessiindichino un risultato: una volta individuati i modelli dipende dall’utente stabilirnel’importanza.

Diciamo, innanzi tutto, che non si tratta di due approcci che si escludono a vicen-da, anzi in molti casi e necessario ricorrere ad ambedue. Anche volendo costruire unmodello previsionale vale sempre la pena cercare di individuare modelli e andamentiutilizzando tecniche non supervisionate. Se per esempio si volesse effettuare uno studio

1estrazione di dati

Page 86: Tesi Pasquini Alex Matricola 076035

Tecnologie di apprendimento dati

sul marketing, si possono individuare nuovi segmenti di clientela e trarne suggerimentiutili per migilorare i risultati dei modelli supervisionati.

Nei rapporti sulle tendenze di mercato, come il famoso Gartner Report2, il datamining e stato indicato come una delle tecnologie piu importanti per il prossimo futuro.

La scoperta di conoscenza nelle basi di dati, in genere abbreviata come KDD (knowl-edge discovery in database), comprende tipicamente ben piu del datamining. Il pro-cesso di scoperta di conoscienza e costituito da sei fasi3: selezione dei dati, pulizia deidati, arricchimento, trasformazione o codifica dei dati, data mining e presentazione evisualizzazione delle informazioni scoperte.

Una volta svolte le attivita di pre-elaborazione vengono applicate le tecniche di datamining per estrarre le varie regole e pattern. Il risultato del data mining puo scoprire:

• regole di associazione: ad esempio, ogni volta che un cliente acquista un’apparec-chiatura video o compera un altro gadget elettronico;

• pattern sequenziali: ad esempio si supponga che un cliente acquisti una macchinafotografica e che nel giro di tre mesi comperi prodotti fotografici, allora entrosei mesi verosimilmente acquistera un accessorio. Questo definisce un patternsequenziale di transazioni;

• alberi di classificazione: ad esempio, i clienti possono essere classificati in basealla frequenza delle visite, secondo i tipi di finanziamento a cui ricorrono, perquantita di prodotti acquistati o per la propensione ad alcuni tipi di prodotti;sulle varie classi e possibile calcolare statistiche rivelatrici.

Esistono, quindi, molte possibilita per scoprire nuova conoscenza sui pattern di ac-quisto mettendo in relazione fattori come l’eta, il reddito, il luogo di residenza, conquali e quanti prodotti vengono acquistati dai clienti. Queste informazioni possono poiessere utilizzate per localizzare nuove sedi di vendita in base alla presenza demografica,per eseguire promozioni, per abbinare i prodotti nella pubblicita oppure per progettarestrategie di vendite stagionali. Ovviamente il data mining deve essere preceduto da unasignificativa preparazione dei dati prima che possa fornire informazioni utili in gradodi influenzare direttamente le decisioni aziendali.

5.2.1 Obiettivi del data mining e della scoperta di conoscenza.

In generale gli obiettivi del data mining rientrano nelle seguenti classi.

• Predizione: il data mining permette di mostrare l’andamento futuro di certiattributi dei dati. Esempi di data mining predittivo comprendono l’analisi delletransazioni di acquisto per predire cio che i consumatori acquisteranno con cer-ti sconti, quali volumi di vendita realizzera un negozio in un dato periodo e sel’eliminazione di una linea di prodotti portera maggiori profitti. In queste appli-cazioni, la logica commerciale viene usata insieme al data mining. In un contestoscientifico, certi pattern di onde sismiche possono predire un terremoto con altaprobabilita.

2e un esempio di molteplici pubblicazioni di indagine sulle tecnologie su cui i dirigenti d’azienda sibasano per prendere decisioni circa le scelte tecnologiche.

3Questa descrizione si basa ampiamente su Adriaans e Zantinge (1955).

86

Page 87: Tesi Pasquini Alex Matricola 076035

Tecnologie di apprendimento dati

• Identificazione: i pattern di dati possono essere usati per identficare l’esistenzadi un articolo, un evento o un’attivita. Ad esempio, intrusi che cercano di violareun sistema informatico possono essere identificati attraverso i programmi eseguiti,i file aperti e il tempo di CPU per sessione.

• Regole di associazione: queste regole mettono in relazione la presenza di uninsieme di elementi con una serie di valori di un altro insieme di variabili. Esempi:(1) quando una donna acquista una borsetta e probabile che comperi anche lescarpe; (2) un’immagine a raggi X che contiene le caratteristiche a e b e probabileche mostri anche la caratteristica c.

• Gerarchie di classificazione: lo copo e elaborare un insieme di eventi o transazioniper creare una gerarchia di classi. Esempi: (1) una popolazione puo essere divisain cinque fasce di affidabilita di credito in base alla storia delle richieste di cred-ito precedenti; (2) e possibile sviluppare un modello dei fattori che determinanol’attrattivita della locazione di un negozio in una certa zona su scala 1 a 10; (3) ifondi comuni d’investimento possono essere classificati in base ai dati relativi alleprestazioni usando caratteristiche come le quotazioni, la rendita e la stabilita.

• Pattern sequenziali: viene creata una sequenza di azioni o di eventi. Esempio:se un paziente e stato sottoposto a un intervento chirurgico di inserimento di unbypass cardiaco a causa delle arterie ostruite e di un aneurisma e nel giro di unanno si trova un alto livello di urea nel sangue, e probabile che entro 18 mesi soffradi insufficienza renale. La scoperta di pattern sequenziali equivale alla scopertadi un’associazione tra eventi con determinate relazioni temporali.

• Pattern all’interno di serie temporali: si possono scoprire somiglianze trale posizioni di una serie temporale di dati, che e una sequenza di dati rilevataad intervalli regolari, come prezzi di vendita o di chiusura giornalieri delle azioni.Esempi: (1) le azioni di una societa di utility, Energia ABC, e di una societa fi-nanziaria, Titoli XYZ, hanno mostrato lo stesso pattern durante il 2002 in terminidi prezzo di chiusura delle azioni; (2) due prodotti presentano lo stesso patterndi vendite in estate, ma un diverso pattern in inverno; (3) un pattern del ven-to magnetico solare puo essere usato per predire i cambiamenti nelle condizioniatmosferiche della Terra.

• Raggruppamenti: una certa popolazione di eventi o di elementi puo esserepartizionato (segmentato) in insiemi di elementi “simili”. Esempi: (1) un’in-tera popolazione di dati riguardanti la cura di una malattia puo essere divisa insottogruppi basati sulla somiglianza degli effetti collaterali; (2) la popolazioneadulta degli Stati Uniti puo essere classificata in cinque gruppi, da “quello cheacquista con probabilita piu alta” a “quello che acquista con probabilita piu bas-sa” un nuovo prodotto; (3) gli accessi Web eseguiti da un insieme di utenti a unaserie di documenti, ad esempio in una biblioteca digitale, possono essere anal-izzati in relazione alle parole chiavi presenti nei documenti per rilevare cluster(raggruppamenti) o categorie di utenti.

Per la maggior parte delle applicazioni, la conoscenza desiderata e una combinazionedelle diverse tipologie.

87

Page 88: Tesi Pasquini Alex Matricola 076035

Classificazione

5.3 Classificazione

La classificazione e il processo che consiste nel trovare un modello che descrive delleclassi di dati, allo scopo di predirre il valore della classe su dati sconosciuti.

Un classificatore (detto anche modello) puo essere descritto come una funzione chemappa gli elementi di un insieme in certe classi o gruppi. Nel caso di classificazionesupervisionata, l’insieme dei dati da classificare contiene una suddivisione in classi,rispetto alal quale e possibie valutare la qualita del risultato prodotto.

Il classificatore divide il suo compito in due passi:

• Costruzione del modello

– a partire dal training set, si definisce un modello.

– la qualita del modello e validata mediante una porzione del training set nonutilizzata per la costruzione del modello (test set).

• Uso del modello

– mediante il modello si assegna l’etichetta di classe a nuovi dati non etichettati

In un problema di classificazione binaria l’insieme dei dati da classificare e suddivisoin due classi che possiamo indicare convenzionalmente come positivi (p) o negativi (n).Gli esiti dell’applicazione di un cassificatore binario rientrano in una delle seguentiquattro categorie.

1. Il classificatore produce il valore p1 partendo da un dato appartenente alla classep. Si dice che il classificatore ha prodotto un vero positivo (VP).

2. Il classificatore produce il valore p1 partendo da un dato appartenente alla classen. Si dice che il classificatore ha prodotto un falso positivo (FP).

3. Il classificatore produce il valore n1 partendo da un dato appartenente alla classen. Si dice che il classificatore ha prodotto un vero negativo (VN).

4. Il classificatore produce il valore n1 partendo da un dato appartenente alla classep. Si dice che il classificatore ha prodotto un falso negativo (FN).

In base a questo, possiamo ricavare due proprieta di un classificatore, la sensibilitae la specificita.

La sensibilita di un test si ottiene rapportando il numero di veri positivi al totaledelle istanze positive

sensibilita =V P

V P + FN

La specificita, invece, si riferisce alla capacita di individuare i veri negativi sulleistanze negative.

specificita =V N

V N + FP

In passato era molto difficile effettuare il training di una rete neurale o procedere allacostruzione di un albero decisionale, perche tali operazioni richiedevano una codifica

88

Page 89: Tesi Pasquini Alex Matricola 076035

Clustering

specifica per ogni caso. Fortunatamente gli strumenti per il data mining hanno risoltogran parte dei problemi legati alla costruzione dei modelli, oltre a offrire ambienti graficimolto meno ostici in cui lavorare. Quindi, in un certo senso, la vera e propria costruzionedei modelli e diventata la fase meno impegnativa del processo di data mining, perchetutto sostanzialmente si riduce a posizionare il puntatore e fare clic.

Se non si hanno problemi di tempo, spesso e possibile costruire diversi modelli con lostesso insieme di dati. In genere non si sa quali siano l’algoritmo e il set di parametrimigliori ed e solo provando e riprovando che si puo stabilire quale sia il migliore rispettoa quei dati.

I dettagli specifici della fase di training del modello dipendono naturalmente dal-l’algoritmo prescelto e dallo strumento utilizzato: alcuni strumenti possono generarediversi modelli e scegliere automaticamente il migliore; altri invece sono piu interattivi,per cui la scelta del modello ritenuto migliore e lasciata all’utente.

Il classificatore e cio che serve nella nostra applicazione per evitare l’implementazionedella classe degli allarmi. Infatti, una volta che si ha una grande quantita di dati adisposizione, possiamo usare questo strumento per decidere se un determinato recorddi dati puo generare un allarme.

5.4 Clustering

La precedente attivita di data mining di classificazione si occupa del partizionamentodei dati usando un campione di training pre-classificato. Spesso, ppero, risulta utilepartizionare i dati senza avere un campione di training. Questo e noto anche comeapprendimento non supervisionato (unsupervised learning). Ad esempio, per leaziende puo essere importante determinare i gruppi di clienti aventi pattern di acquistosimili oppure, in medicina puo essere importante individuare i gruppi di pazienti chemanifestano reazioni analoghe a farmaci prescritti. L’obiettivo del clustering e quel-lo di collocare record all’interno di cluster (raggruppamenti). I record in un clustersono simili fra loro e dissimili da quelli negli altri cluster. I cluster sono generalmentedisgiunti.

Un aspetto importante del clustering e la funzione di similarita. Tipicamente questafunzione basata sulla distanza viene usata quando i dati sono numerici. La distanzaEuclidea ne e un esempio. Si considerino due punti n-dimensionali (record) rj e rk,e come valore della i-esima dimensione per i due record, rispettivamente rji e rki. Ladistanza Euclidea tra i due punti rj e rk nello spazio n-dimensionale e calcolata come:

Tanto minore e la distanza tra i due punti, tanto maggiore e la loro similarita.

5.5 Tecniche e algoritmi di data mining

Poiche il data mining e spesso considerato argomento da tecnici, si ha spesso l’im-pressione che per utilizzarlo al meglio sia necessario studiare algoritmi sofisticati e letecniche per applicarli. Tuttavia l’aspetto tecnico e solo una piccola parte del processodi apprendimento e applicazione, senza dimenticare che e una parte importante. Seinfatti non si ha una conoscenza abbastanza approfondita dei principali algoritmi usatinel data mining, non si potra comprendere quando e utile una tecnica e quando inveceun’altra potrebbe essere piu adatta. E necessario inoltre scoprire come funziona un

89

Page 90: Tesi Pasquini Alex Matricola 076035

Tecniche e algoritmi di data mining

modello per comprendere il modo migliore per preparare l’insieme di dati necessari allasua costruzione e come utilizzare diversi parametri per migliorarne i risultati.

Fortunatamente, per fare buon uso degli algoritmi non e necessario essere degli espertidi apprendimento automatico o di statistica. Proprio come e possibile fare meravigliosefotografie senza sapere attraverso quali meccanismi l’esposizione alla luce puo indurre ilcambiamento cromatico delle sostanze chimiche fotosensibili nell’emulsione, e possibilefare buon uso degli strumenti di data mining senza conoscere tutto nei minimi dettagli.Ma per lo stesso assunto, proprio come e necessaria una certa conoscenza del processofotografico per scegliere correttamente le pellicole, l’apertura del diaframma e il tempodi posa, e necessaria anche una conoscenza, seppur minima, dei principali algoritmi didata mining, a tutti color oche si volessero cimentare in quest’arte.

5.5.1 K-means

Esistono approcci matematici per individuare cluster e sull’argomento sono stati scrittifior fiori di libri. Alcuni metodi, detti divisivi, partono dal presupposto che tutti iirecord facciano parte di un solo grande cluster. Questo gruppo viene poi spezzettatoin sottogruppi, a loro volta suddivisi ulteriormente, finche a ogni record corrispondeun cluster. A ogni fase successiva, viene rilevata una certa misura dell’entita dellasuddivisione, di modo che alla fine la scelta cada sul set di cluster migliori. Altri metodi,detti agglomerati, compiono il percorso esattamente inverso: ogni record occupa uncluster diverso e i diversi cluster sono aggregati in modo da ottenere uno unico cheraccolga tutti i record. Ci sono poi le mappe auto-organizzanti, un tipo particolare direti neurali che possono essere impiegate nella rilevazione del cluster.

L’algoritmo k-means, qui descritto, viene utilizzato in una grande varieta di stru-menti di data mining disponibili sul mercato ed e forse quello di piu facile compresione.Preferisce input prevalentemente numerici. Per darvi un esempio di clustering, prendi-amo l’analisi del comportamento degli acquisti nei supermercati in base ai dati raccolticon le carte fedelta. Si prende ciascun cliente e si crea un campo per il totale deiprodotti acquistati presso diversi reparti del supermercato in un determinato arco ditempo: latticini, carne, cereali, prodotti freschi e cosı via. Si tratta di dati numerici,quindi il clustering con k-means ha vita facile. In effetti, l’algoritmo identifichera queicluster o gruppi di clienti accomunati da comportamenti analoghi.

Innanzi tutto, scegliamo k dati che dovranno diventare i semi, in modo piu o menoarbitrario. Ogni seme rappresenta un cluster in embrione con un unico elemento. Nelnostro esempio, k e uguale a 3. Nella fase successiva, assegniamo ongi record al clustercon il centroide piu vicino.

90

Page 91: Tesi Pasquini Alex Matricola 076035

Tecniche e algoritmi di data mining

Figura 5.1: k-means: fase 1

Proseguendo con l’applicazione dell’algoritmo k-means bisogna fare attenzione aquanto succede al punto racchiuso da un quadrato. Sulla base dei semi iniziali, questopunto viene assegnato al cluster controllato dal seme 2, essendo a questo piu vicino chenon agli altri. Si trova infatti dal lato del seme 3 della perpendicolare che separa i semi1 e 3, dal lato del seme 2 della perpendicolare che separa i semi 2 e 3 e dal lato delseme 2 della perpendicolare che separa i semi 1 e 3.

Figura 5.2: k-means: fase 2

Ora, ogni punto e stato assegnato esattamente a uno dei tre cluster centrati intorno alseme originario. La fase successiva consiste nel calcolo dei centroidi per i nuovi cluster:si tratta semplicemente di fare la media delle posizioni di ciascun punto lungo ognidimensione. Si ricordi che il clustering k-means richioede valori numerici. E possibilepercio calcolare la posizione media considerando la media di ciascun campo. Se a uncluster sono assegnati 200 record e stiamo conducendo il processo di aggregazione diquesti record su quattro campi, allora avremo da un punto di vista geometrico 200punti in uno spazio quadrimensionale. La posizione di ciascun record e descritta daquattro campi, con la forma (x1, x2, x3, x4): il valore x1 per il nuovo centroide e unamedia di tutti i 200 x1, e cosi per x2, x3 e x4. Una volta individuati i nuovi centroidi,ogni punto viene nuovamente assegnato al cluster con il centroide piu prossimo.

91

Page 92: Tesi Pasquini Alex Matricola 076035

Tecniche e algoritmi di data mining

Figura 5.3: k-means: fase 3

Il processo di assegnazione dei punti al cluster e quindi il ricalcolo dei centroidiprosegue finche i confini dei cluster non variano piu. Fortunatamente, nella maggiorparte dei casi, bastano un paio di iterazioni per fissare i confini definitivi.

5.5.2 Alberi decisionali

Descrivendo il clustering, ci siamo soffermati sul fatto che i campi di un record pos-

Figura 5.4: Albero decisionale

sono essere visualizzati come coordinate di uno spazio multidimensionale. L’approcciogeometrico e utile anche per illustrare meglio il funzionamento degli alberi decisionali.Ogni ramo dell’albero decisionale rappresenta un test su una singola variabile che seg-menta lo spazio in una o piu parti. Per semplificare, prendiamo un esempio facile condue sole variabili di input, X e Y. Queste variabili hanno valori che vanno da zero acento. Ogni ramificazione deve essere necessariamente binaria, vale a dire che a ogninodo dell’albero il record sara assegnato a destra o a sinistra in base a un test su X oY.

Nella relativa figura e stato costruito un albero fino al livello massimo di espansione,che si ottiene quando ogni foglia contiene una sola specie di dinosauri (nodi “puri”).L’albero tuttavia, per quanto sia una descrizione accettabile di questo particolare in-

92

Page 93: Tesi Pasquini Alex Matricola 076035

Tecniche e algoritmi di data mining

sieme di stegosauri e triceratopi, difficilmente riuscirebbe in modo altrettanto egregioa classificare un altro gruppo di rettili preistorici.

Il motivo e che l’albero descrive con precisione i dati su cui e stato costruito e dif-ficilmente potra essere generalizzato per un altro campione ricavato dalla stessa popo-lazione. Il problema e noto come overfitting (ipermodellamento o sovradattamento).Tralasciando per ora il problema, ci accingiamo alla classificazione di un dinosaurosconosciuto che ha come due caratteristiche X = 40 e Y = 75.

Partendo dal nodo radice ci spostiamo sulla destra, perche il valore di Y e superiorea 50; poi, dato che il valore di X non e superiore a 80, classifichiamo l’ignoto dinosaurocome triceratopo. Allo stesso modo, osservando il grafico possiamo vedere che il punto(40, 75) si trova nella casella contenente solo triceratopi.

La costruzione di un albero decisionale segue un processo detto partizionamento ri-corsivo. Si treatta di un processo iterativo di divisione dei dati in partizioni destinatead essere a loro volta suddivise in altre sottopartizioni. All’inizio tutti i record del set diaddestramento (vale a dire i record preclassificati che sono impiegati per determinarela struttura dell’albero) si trovano in un unico gruppo. L’algoritmo quindi tenta didividere i dati, utilizzando ogni possibile suddivisione binaria per ogni campo. Quindi,se il campo eta puo assumere 72 valori, compreso tra 18 e 90, allora la prima segmen-tazione avviene tra chi e maggiore di 18 e chi e pari di 18. La divisione successiva efra tutti quelli che hanno 18 o 19 anni, e tutti coloro che hanno 20 anni o piu e cosıvia. L’algoritmo sceglie la segmentazione che crea due partizioni di dati piu pure del-l’originale. Questo processo di creazione di partizioni viene poi applicato a ogni nuovacasella, finche non si trovano piu segmenti utili. Quindi il nucleo dell’algoritmo e laregola che determina la segmentazione iniziale.

5.5.3 Regressione

La regressione e un’applicazione speciale della regola di classificazione. Se una regola diclassificazione viene considerata come una funzione sulle variabili che mappa tali vari-abili in una classe di destinazione, e chiamata regola di regressione. Un’applicazionegenerale della regressione si verifica quando, invece di mappare una tupla di dati di unarelazione in una classe specifica, si predice il valore di una variabile in base a quellatupla. Ad esempio si prenda in considerazione

ESAMI LAB(ID paziente, esame 1, esame 2, . . . , esame n)

contenente valori che sono i risultati di una serie di n esami di laboratorio eseguiti suun paziente. La variabile di destinazione che si desidera prevedere e P, la probabilitadi sopravvivenza del paziente. La regola di regressione ha quindi la forma seguente:

(esame 1 in intervallo1) and (esame 2 in intervallo2) and . . . (esame n inintervallon) −→ P = x

or x < P ≤ y

La scelta dipende dal fatto che sia possibile predire un valore unico per P. In generale,se la funzione ha la forma

P = f (esame 1, esame 2, . . . , esame n)

la funzione e detta funzione di regressione per la predizione di P. In generale, sela funzione ha la forma

y = f (x1, x2, . . . , xn)

e f e lineare nelle variabili di dominio xi, il processo di derivazione di f da un datoinsieme di tuple per < x1, x2, . . . , xn, y > e chiamato regressione lineare. La regres-

93

Page 94: Tesi Pasquini Alex Matricola 076035

Tecniche e algoritmi di data mining

sione lineare e una tecnica statistica comunememnte usata per adattare un insieme diosservazioni o di punti in n-dimensioni rispetto alla variabile di destinazione y.

L’analisi di regressione e uno strumento molto comune per l’analisi dei dati in moltidomini di ricerca. La scoperta della funzione di predizione della variabile di destinazioneequivale a un’operazione di data mining.

5.5.4 Reti neurali

Le reti neurali sono la tecnica piu nota di data mining, derivata dalla ricerca nelcampo dell’intelligenza artificiale che utilizza la regressione generalizzata e fornisce unmetodo iterativo per eseguirla. Essa cerca di simulare il funzionamento dei neuronipresenti negli organismi biologici. Si tratta di modelli computazionali che si ispiranodirettamente al funzionamento del cervello e che, almeno per il momento, si trova anco-ra allo stadio primitivo della ricerca (i primi studi sull’argomento iniziarono negli anni’40 ma fu solo negli anni ’80 che cominciarono a nascere le prime applicazioni). Lereti neurali forniscono un approccio basato su interpolazione (curve-fitting) per inferireuna funzione da un insieme di campioni. Tale tecnica costituisce un “approccio diapprendimento”; e governata da un campione che viene usato per l’inferenza iniziale el’apprendimento. Con questo metodo le risposte a nuovi input possono essere interpo-late dagli esempi noti. Tuttavia, questa interpolazione dipende dal modello della realta(rappresentazione interna del dominio del problema) adottata.

Le reti neurali, a grandi linee, possono essere classificate in due categorie: le retisupervisionate e quelle non supervisionate. I metodi adattivi che tentano di ridurrel’errori in output realizzano un apprendimento supervisionato, mentre quelli che svilup-pano rarppresentazioni interne senza campioni sono chiamati metodi di apprendimentonon supervisionato.

Una rete neurale e costituita, secondo la terminologia adottata, da due strati (layer)di neuroni, uno di input e uno di output. Ogni input x e y e un nodo della rete. Ingenere, i valori delle variabili di input entrano nel layer di input solo dopo essere statisottoposti a una trasformazione. Ogni unita di input e connessa all’unita di output, ipesi di input vengono elaborati secondo una funzione di combinazione (in genere unasommatoria come in questo caso) e sono sottoposti a una funzione di trasferimento, ilcui risultato e l’output della rete. Insieme, funzioni di combinazione e trasferimentocostituiscono la regola o funzione di attivazione. Il valore prodotto dalla regola diattivazione e una trasformazione del risultato atteso: in questo caso, la rete infatti haun output pari a z + 1, invece che a z. Proprio come alcune funzioni vengono applicatealle variabili di input per generare input adatti alle reti neurali, e necessario ricorreread altre funzioni dell’output della rete per tradurli nuovamente nei valori della variabiletarget.

Le reti neurali, nella maggior parte dei casi, non si limitano ai soli livelli di input edi output. Esistono talvolta piu strati di unita tra il layer di input e quello di output:questi sono gli strati nascosti (hidden layer) e le unita che li compongono sono le unitanascoste.

Il training delle reti neurali si basa sul calcolo dei pesi, in modo che la retestimi con la migliore approssimazione possibile la funzione sottostante, o, in terminidi data mining, faccia del proprio meglio nel prevedere la variabile target. Si trat-ta di un problema di ottimizzazione, ma in sintesi, i software per la costruzione dimodelli di reti neurali usano sostanzialmente una tecnica nota come retropropagazione(backpropagation).

94

Page 95: Tesi Pasquini Alex Matricola 076035

Software KNIME

Essa si articola in tre fasi:

1. La rete riceve un dato in ingresso di training e con i pesi a disposizione calcolal’output (o gli output) per quel dato.

2. La retropropagazione calcola quindi l’errore considerando la differenza tra il risul-tato calcolato e il risultato atteso.

3. L’errore viene impiegato per aggiornare i pesi secondo un meccanismo di propagazioneall’indietro dell’errore.

Utilizzare l’errore per modificare i pesi e la parte critica di ogni algoritmo di propagazione.Nella retropropagazione classica, a ciascuna unita viene attribuita una responsabilitaspecifica dell’errore. Per esempio, nello strato di output con una sola unita, quell’unitae responsabile dell’intero errore. Sara questa unita poi ad attribuire una responsabilitadi errore a ciascun input proveniente dallo strato nascosto, e cosı via, se esiste piu di unlivello nascosto. Il meccanismo specifico non e importante. Basti dire qui che si trattadi un’operazione matematica complessa che richiede derivate parziali della funzione ditrasferimento.

Dunque, dato l’errore, in che modo l’unita aggiorna i pesi? Inizia misurando lavariazione del proprio output a ogni input, vale a dire che calcola se le modifiche delpeso su ogni input aumenterebbero o diminuirebbero l’errore. L’unita poi modifica ilpeso per ridurre, senza eliminare, l’errore. L’aggiustamento dell’errore per ogni esempiodel set di addestramento consente di trovare gradualmente l’insieme di pesi ottimali peril calcolo di quella funzione. Ricordate, lo scopo e di generalizzare e identificare i patterndi input, non di memorizzare il set di addestramento. I pesi, dopo che e stato vistoun numero sufficiente di esempi per il training, non variano piu in modo significativoe l’errore non si riproduce piu. A questo punto il training e finito: la rete ha appresol’input.

Le reti neurali si autoadattano, cioe imparano dalle informazioni su uno specificoproblema. Esse eseguono bene i processi di classificazione e risultano quindi utili neldata mining. Ciononostante, non sono prive di problemi; anche se imparano, non for-niscono una buona rappresentazione di cio che hanno imparato. I loro output sonoaltamente quantitativi e non facili da capire. Come ulteriore limite, le rappresentazioniinterne da esse sviluppate non sono univoche. Inoltre, hanno in genere problemi a rapp-resentare dati su serie temporali. Comunque le reti neurali sono diffuse e frequentementeusate in molti prodotti commerciali.

5.6 Software KNIME

KNIME e probabilmente il piu entusiasmante tool open source per il data mining informa di “scatola chiusa”. La sua interfaccia ed il suo funzionamento a flussi di lavororicordano infatti molto da vicino la logica che caratterizza alcune note piattaformecommerciali specializzate in data mining e sviluppate da societa quali SPSS, StatSoft eSAS. I suoi sviluppatori dell’Universita di Costanza hanno da poco reso disponibile peril download la versione 2.0, che fa fare al tool un bel balzo in avanti, soprattutto grazieall’implementazione di un supporto completo per il linguaggio PMML (Predictive Mod-el Markup Language), grazie al quale adesso sara possibile eseguire in tutta completezzail deployment dei modelli predittivi. Oltre ad avere introdotto questa (fondamentale)funzionalita, sono state migliorate le tecniche d’interfacciamento ai Database esterni,

95

Page 96: Tesi Pasquini Alex Matricola 076035

Software KNIME

cosı come la gestione dei flussi di lavoro (ovvero sia della trasmissione delle informazionida nodo a nodo). A questo proposito sono inoltre disponibili nuovi nodi, molti deiquali riguardano il trattamento e la pulitura dei dati, nonche procedure preparatoriepiu complesse come il sottocampionamento o le operazioni di “splitting”.

KNIME e una piattaforma modulare per la creazione di pipeline di data analysis perl’integrazione, l’elaborazione, l’analisi e l’esplorazione dei dati. Una delle caratteristicheprincipali e la capacita di eseguire selettivamente tutte o alcune fasi dell’analisi, inoltree possibile visualizzare interattivamente dati e modelli.

5.6.1 Descrizione generale

I componenti base di KNIME sono:

• il progetto, che rappresenta un esperimento condotto su un insieme di dati osser-vati relativi ad un determinato fenomeno;

• il workflow, che rappresenta il procedimento da eseguire sui dati per effettuarel’esperimento;

• il nodo, che rappresenta una singola operazione effettuata sui dati.

Il progetto e caratterizzato da uno o piu workflow, il quale consiste di una pipelinedi nodi connessi da linee per il trasporto di dati o modelli

Figura 5.5: Il progetto

Il nodo e caratterizzato da:

• porte di input, attraverso le quali puo ricevere dati provenienti dalla porta dioutput di nodo predecessore;

• porte di output, attraverso le quali puo fornire i risultati dell’elaborazione al nodosuccessore;

• parametri di configurazione, attraverso i quali si puo orientare l’esecuzione diuna particolare funzionalita (es: nel partizionamento di un insieme di dati si puoscegliere di farlo secondo un partizionamento relativo oppure assoluto).

Le porte di input/output sono di due tipologie:

96

Page 97: Tesi Pasquini Alex Matricola 076035

Software KNIME

• per i dati, contenenti osservazioni dei fenomeni di cui si vuole effettuare l’esperi-mento;

• per i modelli, contenenti solo metadati di un particolare insieme di dati model-lizzato.

Figura 5.6: Il nodo

5.6.2 Architettura interna

KNIME e scritto in Java e la GUI e implementata come plug-in Eclipse. E’ statoprogettato e realizzato sulla base di tre requisiti:

• creare un ambiente visuale per interfacciarsi con l’utente in modo semplice einterattivo;

• progettare un software che favorisca l’esecuzione su un sistema distribuito;

• creare un ambiente che permetta l’espansione delle funzionalita nel modo piusemplice possibile.

Per l’accesso ai MDS viene utilizzata una potente strategia di caching, che permettedi accedere alla tabella dati direttamente sul disco rigido nel momento in cui diventatroppo grande per tenere tutte le righe in memoria.

5.6.3 Input/Output

Le operazioni di I/O si occupano della lettura e scrittura dei dataset scelti per l’elabo-razione.

5.6.3.1 I nodi di lettura

I nodi di lettura, detti anche nodi di Read, si occupano della lettura dei dataset neidiversi formati trattati e sono:

1. il nodo “File Reader” per la lettura di un file ASCII;

2. il nodo “ARFF Reader” per la lettura di un file in formato Attribute-RelationFile Format (ARFF);

3. il nodo “Table Reader” per la lettura delle tabelle nel formato Table definito daKNIME (Par. 2.1);

97

Page 98: Tesi Pasquini Alex Matricola 076035

Software KNIME

4. il nodo “PMML Reader” per la lettura di un modello in formato Predictive ModelMarkup Language (PMML);

5. il nodo “Model Reader” per la lettura di un modello in un formato interno aKNIME.

Figura 5.7: I nodi di Input

Il nodo “Model Reader”, come il “Table Reader” per i dati, rappresenta un modelloin un formato interno che puo essere scritto solo attraverso il nodo di scrittura “ModelWrite”

Il PMML utilizza l’XML per rappresentare modelli di data mining, la struttura deimodelli e descritta da un XML Schema. Uno o piu modelli di data mining possonoessere contenuti in un PMML. KNIME tratta il formato PMML nella versione 3.1.

5.6.3.2 I nodi di scrittura

I nodi di scrittura, detti anche nodi di Write, sono tutti i nodi per la scrittura deirisultati nei diversi formati. I nodi di scrittura sono:

1. il nodo “CSV Writer” per la scrittura di un file in formato CSV;

2. il nodo “ARFF Writer” per la scrittura di un file in formato ARFF;

3. il nodo “Table Writer” per la scrittura delle tabelle;

4. il nodo “PMML Writer” per la scrittura di un modello in formato PMML;

5. il nodo “Model Write” per la scrittura di un modello in un formato interno.

Figura 5.8: I nodi di Output

98

Page 99: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

5.7 Prove sperimentali sull’applicazione Ambient Moni-toring

Prove sperimentali sull’applicazione Ambient Monitoring]Prove sperimentali sull’appli-cazioneAmbient Monitoring

Dopo aver visto l’architettura del programma, e le sue funzionalita, cerchiamo ora diimplementarlo nel nostro progetto.

Cio che si vuole sviluppare e un sistema che, dato un insieme di dati ambientali, riescaa predirre se vi e l’attivazione di un allarme. Ovviamente prima di far cio abbiamobisogno di un “training set”, ovvero una serie di dati dove viene inserito in un campol’attivazione o meno dell’allarme. Tramite queso set il sistema crea dei diversi modelliin grado di predirre con diversa precisione se i prossimi dati che gli verranno proposti,generano un allarme.

Per fare questo test abbiamo a nostra disposizione 976 dati ambientali, raccolti al-l’interno di diverse stanze. Passiamo ora alla scelta dei vari classificatori che knimeci mette a disposizione. Abbiamo scelto tutti classificatori che si basano su tecnichediverse:

1. PNN

2. Decision Tree

3. SVM

4. SOTA

5. Naive Bayes

6. Fuzzy Rule

Nei vari sistemi che andremo a testare, diamo in input un file csv contenente 976dati, dei quali una percentuale andra ai vari learner che cercheranno di addestrare irelativi predictor. I risultati verranno visualizzati dai vari Scorer messi a disposizioneda KNIME.

5.7.1 PNN

Figura 5.9: Sistema basato sulla rete neurale PNN

99

Page 100: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

Come spiegato precedentemente le reti neurali si basano sul concetto dalle reti neuralibiologiche, che hanno un insieme di neuroni che sono collegati tra loro tramite il sistemanervoso. Le reti neurali sono composte da stati di input, stati di output e livelli inter-medi nei quali vi sono altri stati. Gli stati di input comunicano con gli stati di outputtramite gli stati intermedi. Ogni collegamento ha un determinato peso, e tramite deglialgoritmi appositi si calcola l’output in funzione dei pesi.

Di seguito vengono mostrati i risultati del predictor in funzione della percentuale deidati passati in input al learning.

Figura 5.10: Risultato del predictor PNN

5.7.2 Decision Tree

Figura 5.11: Sistema basato sull’albero decisionale

Gli alberi decisionali sono un modello noto e semplice di classificatori, basato su unastruttura dati ad albero. Nell’albero decisionale i nodi interni corrispondono a test su

100

Page 101: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

un attributo, mentre le foglie sono le categorie di oggetti classificati.

Di seguito vengono mostrati i risultati del predictor in funzione della percentuale deidati passati in input al learning.

Figura 5.12: Risultato del predictor dell’albero decisionale

5.7.3 SVM

Figura 5.13: Sistema basato sulle macchine a vettori di supporto

Le macchine a vettori di supporto (SVM, dall’inglese Support Vector Machines), omacchine kernel, sono un insieme di metodi di apprendimento supervisionato per laregressione e la classificazione di pattern, sviluppati negli anni ’90 da Vladimir Vapnik.Dato un insieme di input X ed un insieme di output Y abbiamo una funzione g : X −→ Yche ad ogni vettori di x in input associa un sottoinsieme di output. La macchina a

101

Page 102: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

vettori di supporto crea una stima g1 il quale svolge in modo piu o meno preciso lafunzione g.

Di seguito vengono mostrati i risultati del predictor in funzione della percentuale deidati passati in input al learning.

Figura 5.14: Risultato del predictor della macchina a vettori di supporto

5.7.4 SOTA

Figura 5.15: Sistema basato sulle SOTA

L’acronimo SOTA indica un algoritmo auto organizzato ad albero (Self-Organizing TreeAlgorithm). Esso si basa sulle mappe auto organizzate di Kohonen e sull’algoritmodella crescita della struttura cellulare di Fritzke. Dall’algoritmo di Kohonen acquisiscela riduzione della complessita, riducendo lo spazio complesso dei dati in ingresso, in

102

Page 103: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

quello piu semplificato in uscita. Dall’algoritmo di Fritzke invece riprende la strutturaad albero.

Le sue caratteristiche sono:

• La topologia della rete e ad albero binario

• Solo la crescita della rete e permessa

Di seguito vengono mostrati i risultati del predictor in funzione della percentuale deidati passati in input al learning.

Figura 5.16: Risultato del predictor della SOTA

103

Page 104: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

5.7.5 Naive Bayes

Figura 5.17: Sistema basato sul teorema di Bayes

Un classificatore bayesiano e un classificatore basato sull’applicazione diretta del teore-ma di Bayes. Il classificatore bayesiano, praticamente non potrebbe esistere, dato chesi basa su probabilita conosciute prima di affrontare il problema. Tuttavia il classifi-catore bayesiano ideale e l’obbiettivo da approssimare, se abbiamo a disposizione dellestime affidabili delle probabilita. Un esempio di utilizzo del classificatore bayesiano lotroviamo sui filtri antispam.

Di seguito vengono mostrati i risultati del predictor in funzione della percentuale deidati passati in input al learning.

Figura 5.18: Risultato del predictor del sistema bayesiano

104

Page 105: Tesi Pasquini Alex Matricola 076035

Prove sperimentali sull’applicazione Ambient Monitoring

5.7.6 Fuzzy Rule

Figura 5.19: Sistema basato sulle regole fuzzy

Le regole fuzzy si basano sulla logica fuzzy che e un estensione della logica booleana.La logica booleana ha un dominio che ha due elementi 0 e 1, mentre la logica fuzzy haun dominio composto da infiniti elementi che vanno nell’intervallo chiuso 0, 1. Tramitel’apposito learner vengono fondate le regole fuzzy, che in base all’input da un valoreall’output. Passando dei valori di input al predittore, egli produrra output in funzionedi cio che ha appreso il learner.

Di seguito vengono mostrati i risultati del predictor in funzione della percentuale deidati passati in input al learning.

Figura 5.20: Risultato del predictor sviluppato con Fuzzy Rule

105

Page 106: Tesi Pasquini Alex Matricola 076035

Conclusioni

5.8 Conclusioni

In questo capitolo abbiamo trattato l’aspetto statistico con cui si puo allargare lepotenzialita della nostra applicazione.

Dopo un’introduzione in cui viene presentato come si puo implementare un sis-tema statistico, con la nostra applicazione Ambient Monitoring, abbiamo parlato delleprincipali tecnologie e algoritmi di data mining, facendo confronti con la realta esterna.

Di seguito abbiamo discusso del software KNIME, un software open-source che ci dala possibilita di implementare questi sistemi statistici e vedere il risultato che si ottiene.E un ottimo software e lascia all’utente molte possibilita di implementazione e di test.

Inoltre abbiamo confrontato i vari algoritmi con il nostro problema, cercando divedere nei risultati, se e veramente convente sostituire la parte del codice relativo agliallarmi, con l’implementazione di questo sistema statistico.

Dai risultati abbiamo notato che gli algoritmi migliori per il nostro problema sono:

• Fuzzy Rule

• Decision Tree

Vedendo i risultati possiamo notare che, gia passando un 20% di dati noti al learning,il sistema riesce a predirre l’output con un alta percentuale di correttezza.

Questa ricerca ha un risvolto positivo, e puo essere implementata nelle successiveversioni dell’applicazione.

106

Page 107: Tesi Pasquini Alex Matricola 076035

6. Conclusioni

Lo scopo di questa tesi e stato lo sviluppo di un sistema per il monitortaggio di ambientida salvaguardare.

Dopo una prima fase di analisi degli strumenti da utilizzare descritta nei vari capi-toli, si e deciso che l’utilizzo dell’hardware della casa costruttrice spagnola Libeliumera la giusta scelta da fare, per la grande esperienza nel settore, per la qualita deimateriali forniti e per l’assistenza che si riceve via web, grazie ai forum e alle variedocumentazioni.

Il software sviluppato, potra trovare spazio in vari settori, e di conseguenza, l’in-terfacciamento dell’utente finale al sistema deve essere il piu semplice possibile. Daquesta esigenza, abbiamo deciso di sviluppare il software come applicazione web, conun interfaccia semplice ed intuitiva, in modo che i tempi di apprendimento dell’utentefinale saranno brevi.

Nella fase di progettazione, abbiamo effettuato uno studio sulle varie funzionalita emetodologie di sviluppo seguendo i principi fondamentali di UML.

Grazie a questa fase di progettazione, il software sviluppato risponde alle esigen-ze di semplicita e manutenibilita, che saranno fondamentali per il futuro di questaapplicazione.

Il sistema e in grado di ricavare delle grandezze fisiche nell’ambiente in cui si trovanoi vari sensori, e trasmettere queste informazioni tramite le radio frequenze all’appli-cazione Ambient Monitoring, la quale registra i dati in un database e li mostra all’u-tente finale. Egli avra la possibilita di modificare il comportamento dell’applicazionein base alle esigenze riscontrate.

Ovviamente il sistema presenta delle caratteristiche negative legate alla comuni-cazione dell’hardware. Infatti i sensori devono essere posizionati in ambienti dove nonvi e rumore nella banda di frequenze dove i vari sensori comunicano, altrimenti avrem-mo una corruzione dei dati raccolti. Inoltre i sensori devono essere inseriti in ambientidove hanno una discreta copertura con il satellite, infatti essi raccolgono dati anchegrazie al modulo GPS, e senza copertura del satellite questi dati non possono essererilevati. Come ultima caratteristica negativa, dobbiamo presentare un’errata precisionedei dati rilevati dal satellite, qualora la qualita del segnale proveniente dalla sorgentenon e ottimale.

Tuttavia se l’ambiente in cui abbiamo l’esigenza di inserire il sistema, risponde pos-itivamente alle caratteristiche negative, l’applicazione svolge il suo lavoro in manieraottimale, anche grazie alla tecnologia AJAX che mostra sempre dati aggiornati.

Infine, per un ottimo sviluppo dell’applicazione che ora e in una versione prototipale,e bene ricordare che puo essere integrata con strumenti di analisi statistica dei dati,che come discusso nell’ultimo capitolo, offre un grande vantaggio al sistema.

Page 108: Tesi Pasquini Alex Matricola 076035
Page 109: Tesi Pasquini Alex Matricola 076035

Bibliografia

[1] Altro articolo z-wave. http://it.mustknowhow.com.

[2] Articoli su knime. http://www.stat-project.com/software statistico.asp?ID=18.

[3] Articoli su mysql. http://www.mysql.it.

[4] Articoli vari mokabyte. http://www2.mokabyte.it.

[5] Articoli vari wikipedia. http://it.wikipedia.org.

[6] Bluetooth. http://bluetooth.interfree.it.

[7] Che cos’e l’rfid? http://rfid.thebizloft.com.

[8] Documentazione grails. http://grails.org/doc/1.0.x.

[9] Documentazione grails site. http://www.grails.org/Documentation.

[10] Implementazione di google maps. http://www.ibm.com/developerworks/java/library/j-grails05208/index.html.

[11] La tecnologia rfid. http://www.rfid.fub.it.

[12] Wireless sensor network. http://netlab-mn.unipv.it.

[13] Z-wave, tecnologia wireless per controllare la casa. http://www.tomshw.it.

[14] B. Scarpa A. Azzalini. Analisi dei dati e data mining. Springer, 2004.

[15] Luca Casali. Framework open source per lo sviluppo di applicazioni web 2.0.Master’s thesis, Universita degli Studi di Camerino, 2009/2010.

[16] Gordon S. Linoff Michael J. A. Berry. Data Mining. APOGEO, 2002.

[17] Joe Fawcett Nicholas C. Zakas, Jeremy McPeak. Ajax guida per lo sviluppatore.Hoepli, 2007.

[18] Esposito Pamela. Dame-kappa: integrazione del framework knime nella suitedame. Master’s thesis, Universita degli studi di Napoli Federico II, 2009/2010.

[19] Giorgio Porcu. 6lowpan: Un livello adattivo per la convergenza di wireless sen-sor network e ipv6. teoria, analisi, sviluppo e confronto di soluzioni low-power.Master’s thesis, Universita degli studi di Pisa, 2006/2007.

[20] Shamkant B. Navathe Ramez A. Elmasri. Sistemi di base di dati. Complementi.Pearson Addison Wesley, 2005.

Page 110: Tesi Pasquini Alex Matricola 076035

Bibliografia

[21] Edmondo Peron Susi Dulli, Sara Furini. Data mining: Metodi e strategie. Springer,2009.

110