Sei sulla pagina 1di 110

Universit` degli Studi di Camerino a 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
Matricola 076035

Ing. Alberto Polzonetti

Correlatore

Dott. Francesco De Angelis

A.A. 2009/2010

Un sentito e sincero ringraziamento va al Prof. Ing. Alberto Polzonetti, mio Relatore e al Dott. Francesco De Angelis, mio Correlatore, per la loro disponibilit` e competenza nellaiutarmi a svolgere questo lavoro. a Ringrazio i miei amici pi` veri tra cui Giovanni, Davide, Maikol, Marco, Giorgio, u Raaele, Alberto, Daniele, Vittorio, Alessandro, Antonio, Flavio e Igor. Mi hanno aiutato pi` di quanto possano sospettare... u Per ultimi, ma non da ultimi, ringrazio mio 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.

Indice
1 Introduzione 2 Tecnologia a Radiofrequenza Passiva 2.1 Tecnologia a Radiofrequenza passiva 2.1.1 Introduzione . . . . . . . . . 2.1.2 Classicazione dei dispositivi 2.1.3 Propriet` . . . . . . . . . . . a 2.1.4 Applicazioni . . . . . . . . . . 2.2 Tecnologia a Radiofrequenza Attiva . 2.2.1 Introduzione . . . . . . . . . 2.2.2 Protocolli . . . . . . . . . . . 2.2.3 Applicazioni . . . . . . . . . . e . . . . . . . . . Attiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 11 11 11 12 14 14 16 16 18 25 27 27 28 29 30 30 31 32 32 33 39 41 41 41 42 42 48 52 52 56

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

3 Implementazione di una WSN per il monitoraggio ambientale 3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Speciche Tecniche del kit utilizzato . . . . . . . . . . . . . . . . 3.2.1 Sensore di pressione . . . . . . . . . . . . . . . . . . . . . 3.2.2 Sensore di temperatura . . . . . . . . . . . . . . . . . . . 3.2.3 Monossido di carbonio . . . . . . . . . . . . . . . . . . . . 3.2.4 Anidride carbonica . . . . . . . . . . . . . . . . . . . . . . 3.3 Ambiente di sviluppo . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Implementazione delle WSN di monitoraggio . . . . . . . . . . . 3.4.1 Studio dei nodi della rete . . . . . . . . . . . . . . . . . . 3.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Il software Ambient Monitoring 4.1 Descrizione del sistema e nalit` a 4.2 Architettura del sistema . . . . . 4.3 Attori del sistema . . . . . . . . . 4.3.1 Modello UML . . . . . . . 4.3.2 Class Diagram . . . . . . 4.4 Interfacciamento con le WSN . . 4.4.1 Struttura del DataBase . 4.4.2 Acquisizione dati . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Indice 4.5 Interfaccia utente . . . . . . . . 4.5.1 Classi di dominio . . . . 4.5.2 Pagina di Introduzione . 4.5.3 Gestione degli errori . . 4.5.4 Gestione degli Allarmi . 4.5.5 Pagina dei Dati . . . . . 4.5.6 Gestione dei Mote . . . 4.5.7 Pagina delle preferenze . 4.5.8 Classi di controllo . . . Tecnologie di implementazione 4.6.1 Groovy on Grails . . . . 4.6.2 AJAX . . . . . . . . . . 4.6.3 MySQL . . . . . . . . . 4.6.4 Google maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 60 62 62 63 65 68 70 70 76 76 79 82 82 85 85 85 86 88 89 89 90 92 93 94 95 96 97 97 99 99 100 101 102 104 105 106 107

4.6

5 Impiego statistico dei dati rilevati 5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Tecnologie di apprendimento dati . . . . . . . . . . . . . . . . . . 5.2.1 Obiettivi del data mining e della scoperta di conoscenza. . 5.3 Classicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 Tecniche e algoritmi di data mining . . . . . . . . . . . . . . . . . 5.5.1 K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.2 Alberi decisionali . . . . . . . . . . . . . . . . . . . . . . . 5.5.3 Regressione . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.4 Reti neurali . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6 Software KNIME . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.1 Descrizione generale . . . . . . . . . . . . . . . . . . . . . 5.6.2 Architettura interna . . . . . . . . . . . . . . . . . . . . . 5.6.3 Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 Prove sperimentali sullapplicazione Ambient Monitoring . . . . . 5.7.1 PNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.2 Decision Tree . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.3 SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.4 SOTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.5 Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.6 Fuzzy Rule . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Conclusioni

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

1. Introduzione
Il lavoro svolto ha come obiettivo principale quello di progettare e sviluppare un sistema di monitoraggio ambientale, per garantire la sicurezza di aree di lavoro o la qualit` della a merce che vi si trova allinterno. La tesi si presenta come la raccolta di un lavoro di studio, analisi e progettazione del sistema ed il relativo sviluppo di un prototipo. In questo documento verranno discusse le scelte eettuate e i relativi problemi che sono sorti, indicando i vari modi di risoluzione. Grazie allo sviluppo di nuove tecnologie di comunicazioni senza li e grazie allesigenza di ridurre al minimo lo spazio allinterno di componenti elettronici, oggi possiamo parlare di reti di sensori, un insieme di dispositivi elettronici autonomi, che rilevano delle grandezze siche nellambiente per poi inviarle ad un calcolatore che si occuper` a di elaborarle e di presentarle. Gli odierni sensori che si possono trovare in commercio, sono spesso deniti attivi dove con attivo si intende un componente che, grazie ad una fonte esterna di energia, fornisce in uscita un segnale di potenza amplicato. Con i componenti attivi ` possibile e realizzare una Wireless Sensor Network in grado di aggregare i valori rilevati da pi` u dispositivi senza la necessit` di collegamenti cablati poich` i singoli nodi sfruttano a e tecnologie a radiofrequenza per la comunicazione. Fino a qualche anno fa, questi sistemi non erano diusi e ci` si pu` elencare in tre o o problematiche: 1. Leccessivo spazio occupato dai sensori 2. Poca robustezza dei componenti 3. Lingombranza dei cavi che collegavano i sensori ai calcolatori 4. Leccessivo costo dei componenti Dal primo punto possiamo capire come non era possibile piazzare sensori in tutti punti strategici dellambiente da monitorare, dato che una scheda con allinterno vari sensori era molto ingombrante e quindi non adatte allimplementazione desiderata. Con il secondo punto vogliamo sottolineare come i componenti erano poco robusti, svolgevano il compito per cui erano stati progettati, ma con il vericarsi di eventi naturali (pioggia, temporali) i sensori riscontravano problemi sia di comunicazione che di correttezza dei dati. Grazie al terzo punto, possiamo notare come limplementazione di questi sensori portavano ad un enorme uso di cavi, i quali ingombravano lambiente da monitorare. Con il quarto punto, dobbiamo sottolineare come i prezzi dei componenti erano alti, e quindi limplementazione di una rete di sensori, oltre ai problemi sopracitati, portava ad una spesa molto alta.

Tuttavia oggi, con lo sviluppo della tecnologia e dei sistemi di comunicazione, abbiamo protocolli che ci permettono di inviare dati senza lutilizzo dei cavi, si ` riuscito a e ridurre lo spazio che occupava una scheda di sensori e inoltre i prezzi dei componenti sono scesi enormemente. Tutto ci` porta ad un enorme utilizzo in campo industriale o di sensori, non solo per monitorare un ambiente, ma sopratutto per monitorare le macchine impiegate nella catena di produzione. Ovviamente le reti di sensori non trovano uso solamente in campo industriale, infatti essi sono utilizzati nei settori pi` svariati, u come per esempio nel campo meidoc-sanitario, dove lutilizo di una wireless sensor network ` rivolta a fornire uninterfaccia per persone aette da handicap, e nella ricerca, e dove ` possibile recuperare i dati che riguardano le abitudini degli animali. e Per la progettazione di questo sistema, ho studiato i vari modi di comunicazione wireless dei componenti utilizzati, concludendo che il protocollo ZigBee era lideale per la nostra applicazione. A riguardo ho utilizzato un kit di prototipazione per reti di sensori che lo implementa. Nella parte del sistema relativa al software ho eettuato la programmazione dei sensori sia per la rilevazione dei dati ambientali, sia per la comunicazione. Lo sviluppo dellapplicazione web di controllo ` avvenuta grazie al framework Groovy & Grails. e Lapplicazione ` stata progettata secondo le best practice dellingegneria del software e e sono stati sviluppati modelli UML che hanno aiutato enormemente la parte del lavoro relativa allimplementazione. Inoltre ho utilizzato tecnologie quali AJAX e Google Maps per rendere pi` dinamico lambiente di controllo, tenendo sempre aggiornati i u dati visualizzati. La tesi si svilupper` in altri cinque capitoli: a Capitolo 2: Introdurr` le tecnologie a radiofrequenza passiva e attiva. In questo a capitolo tratteremo la tecnologia RFID, con i relativi sistemi, le diverse tipologie dei TAG, i campi di frequenza in cui lavorano, le relative problematiche e dedicheremo gran parte di spazio ai protocolli utilizzati, con un confronto nale. Capitolo 3: Tratter` limplementazione di una Wireless Sensor Network per il a monitoraggio ambientale. In questo capitolo parleremo di come abbiamo sviluppato la rete di sensori, con quale topologia, elencando i pregi e i difetti. Parleremo inoltre dei componenti acquistati dalla Libelium e della loro programmazione. Capitolo 4: Dettaglia il software Ambient Monitoring. In questo capitolo parleremo della progettazione del software, del tragitto che dovranno eettuare i dati, la presentazione dei vari modelli UML, della scelta del database usato e di come verr` strutturato. Inoltre verr` discusso il metodo di inserimento dei dati a a nel database, grazie ad un applicativo java e parleremo dellimplementazione dellinterfaccia utente, sviluppata con il framework Grails seguendo il modello MVC. Inne verranno presentate le tecnologie utilizzate per rendere lapplicazione pi` u dinamica e renderla consona agli standard del Web 2.0. Capitolo 5: Mostra un possibile impiego statistico dei dati rilevati. In questo capitolo tratteremo una delle potenzialit` oerte dalla nostra applicazione, la posa sibilit` di interfacciarsi con dei strumenti statistici per trattare i dati. Parleremo a delle varie tecniche di apprendimento dei dati e dei vari algoritmi per lelaborazione statistica. Inne verr` proposto un software open source con il quale il a nostro sistema riesce ad interfacciarsi, rendendo meno elaborato il compito svolto dal software Ambient Monitoring. 8

Capitolo 6: Conclusioni. In questo ultimo capitolo si aronteranno le conclusioni del lavoro, indicando i punti deboli e i punti di forza del sistema sviluppato, si parler` di come sono stati arontati i problemi e come la fase di analisi e a progettazione ` stata poi utile nella fase di implementazione. e Per lo sviluppo della tesi si ` scelto di dividere il documento in tre parti principali. La e prima parte ` dedicata alla progettazione del sistema, con i vari studi sulle tecnologie e da implementare e i relativi risultati. Una seconda che contiene informazioni su come ` stato condotto il lavoro di implementazione. Inne la terza parte che tratta come e questo progetto, in fase prototipale, pu` essere ulteriormente evoluto. o Per dubbi o eventuali informazioni riguardante il progetto, potrete contattarmi allindirizzo di posta elettronica pasquini.alex@gmail.com.

2. Tecnologia a Radiofrequenza Passiva e Attiva


2.1
2.1.1

Tecnologia a Radiofrequenza passiva


Introduzione

RFID (o Radio Frequency IDentication o Identicazione a radio frequenza) ` una tece nologia per lidenticazione automatica di oggetti, animali o persone (AIDC Automatic Identing and Data Capture) basata sulla capacit` di memorizzare e accedere a distana za a tali dati usando dispositivi elettronici (chiamati TAG o transponder) che sono in grado di rispondere comunicando le informazioni in essi contenute quando interrogati. Un sistema di identicazione a radiofrequenza ` costituito da due componenti princie pali: un trasponder o tag, e un reader. Il tag ` letichetta che si appone alloggetto, e ` qui che sono contenute tutte le informazioni ad esso relative e che lo identicano e in modo univoco. I dati, memorizzati in un microchip, possono essere letti grazie a unantenna che riceve e trasmette i segnali radio da e verso il reader Rd. Il microchip e lantenna, insieme formano il tag Rd e sono tenuti insieme su un supporto sico, il reader ` il dispositivo, sso o portatile, deputato alla lettura del tag Rd, in grado e di convertire le onde radio del tag in un segnale digitale che pu` essere trasferito su o un computer, per comunicare fra loro il tag e il reader devono essere sintonizzati alla stessa frequenza.

Figura 2.1: Sistema RFID Esistono diversi tipi di tag Rd, alcuni dei quali normati da standard ISO: 125/134 kHz 13,56 MHz 868/915 MHz 2,45 GHz

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. I tag attivi sono alimentati da batterie, i tag semiattivi sono alimentati da batterie solo per mantenere attiva la parte circuitale interna mentre per lirradiazione utilizzano una parte dellenergia ricevuta dallonda radio che trasmette anche le informazioni, mentre i tag passivi non hanno nessuna fonte di alimentazione interna ma traggono lenergia dallonda radio inviata dal lettore che li interroga per attivarsi e ritrasmettere i dati.

2.1.2

Classicazione dei dispositivi

I dispositivi RFID vengono progettati per ottimizzare le prestazioni di uno specico processo e questa personalizzazione ` importante per le caratteristiche dei trasponder, e poich ogni processo prevede prestazioni speciche che domandano diverse distanze di e lettura, capacit` di memorizzare informazioni, ambienti aggressivi e cos` via. Per questa a ragione sono stati sviluppati diversi tipi di dispositivi che si dierenziano in funzione delle 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 complessit` del sistema che si dovr` realizzare. a a Nel caso in cui il tag debba contenere un codice sso con una funzione elementare, ` possibile utilizzare tecnologie che non richiedono chip in silicio (chipless). Queste e soluzioni sono indicate per applicazioni che richiedono gradissime quantit` di transpona der che hanno il solo scopo di creare unetichetta per unidenticazione univoca del singolo prodotto sico. Un esempio sono i sistemi di antitaccheggio.

2.1.2.2

Tag Passivi

Il principio grazie a cui il tag Rd ` in grado di ricevere e di trasmettere le informazioni e contenute nel chip ` linduzione magnetica. Quando entra nel campo di azione di un e reader (da pochi centimetri ad alcuni metri) il tag viene svegliato dal campo elettromagnetico generato dal reader e gli risponde riettendone il segnale. Il segnale di risposta viene quindi ricevuto dal reader che lo decodica. Questo tipo di tag, detto passivo, ` il pi` diuso sul mercato grazie soprattutto al prezzo che lo rende utilizzabile e u in molte applicazioni. Il limite prestazionale dei tag passivi ` la distanza di lettura e e limpossibilit` di integrare sensori ausiliari. Inoltre, il fatto che si attivino solamente a quando si trovano nel campo di azione di un reader, non li rende adatti ad applicazioni di localizzazione in tempo reale (Rtls2 ).
1 2

UHF ` lacronimo di Ultra High Frequency e Real-time locating systems

12

Tecnologia a Radiofrequenza passiva 2.1.2.3 Tag Attivi

I tag Rd possono integrare un sistema ricetrasmittente come i reader e questo ` il e caso dei tag attivi, che necessitano per` di una batteria di alimentazione per la geno erazione del segnale. Grazie allalimentazione integrata, i tag attivi possano attivarsi indipendentemente dalla presenza di un reader nelle vicinanze e raggiungere distanze di lettura anche molto superiori ai tag passivi. Per il fatto che sono sempre accesi, i tag attivi sono utilizzati quando c` la necessit` di realizzare dei sistemi di localizzazione e a in tempo reale (Rtls). Il loro funzionamento pu` essere continuo o a intervalli di tempo o nellottica del risparmio della batteria. La presenza della stessa permette ai tag attivi di montare ed alimentare anche dei sensori aggiuntivi, per esempio per la rilevazione della temperatura o della pressione. Tra gli svantaggi dei tag attivi sono da segnalare le dimensioni usualmente pi` ingombranti di quelle dei tag passivi, i costi di acquisto u maggiori rispetto ai tag passivi, i costi di manutenzione o sostituzione della batteria, le dicolt` di utilizzo in situazioni ambientali dicili come quelli caratterizzati da a temperature 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 Passive). Si tratta di tag passivi ma assistiti da batteria. Sostanzialmente, non usano lenergia fornita dalla batteria per trasmettere il segnale ma, come i tag passivi, riettono, modulato, il segnale generato dal reader. La batteria ha due utilizzi: alimentare sensori aggiuntivi se il tag ne ` provvisto, oppure aiutare il chip a svegliarsi tenendolo e in uno stato di stand by, inattivo ma acceso. Essendo la distanza di lettura dei tag passivi molto spesso limitata dalla dicolt` del chip a svegliarsi se non suciena temente stimolato dallenergia del campo del reader, laiuto della batteria nei tag Bap, permette a questi ultimi di orire 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 nel caso dei tag attivi, la necessit` di preservare la batteria pu` limitare lutilizzo dei tag a o Bap negli ambienti pi` dicili. u

2.1.2.5

Tag di sola lettura e di lettura/scrittura

I tag si possono dividere in base alla loro memoria che pu` essere di sola lettura, dove o si pu` scrivere una volta sola, o dove la scrittura pu` avvenire in pi` momenti. o o u Le memorie di sola lettura (ROM, Read Only Memory) sono normalmente congurate dal produttore del componente con un numero limitato di informazioni tra le quali non dovrebbe mancare il codice univoco didenticazione del tag secondo la normativa ISO 15963 (Unique Identier). I pregi di queste memorie sono sostanzialmente due: sono poco costose e hanno una vita molto lunga. Un tipo di memoria intermedio ` la WORM (Write Once Read Memory) che pere mette allutente di scrivere una volta sola nella memoria senza poterne permettere successivamente la cancellazione o la modica del contenuto. Una volta programmata la funzione di questa memoria ` uguale alla ROM. e Lo sviluppo della tecnologia in questo settore ha reso disponibili delle memorie che permettono di scrivere e leggere praticamente senza limitazioni. Queste memorie sono di due tipi: RAM e EEROM. 13

Tecnologia a Radiofrequenza passiva Le memorie RAM sono utilizzate da molto tempo in tutte le applicazioni elettroniche e permettono di ragigungere grandi densit` di dati memorizzati a costi molto competa itivi. Il loro unico limite ` che necessitano di una fonte di energia permanente per e mantenere i dati in memoria. Le EEROM hanno il vantaggio rispetto alle RAM di richiedere la presenza di una fonte di energia soltanto durante loperazione di lettura e scrittura in memoria. I costruttori dichiarano che le EEROM possono mantenere i dati in memoria senza alcuna alimentazione per almeno 10 anni.

2.1.3

Propriet` a

La tecnologia RFID si distingue dalle altre tecnologie di identicazione grazie alle seguenti 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 del chip (Read Only: si possono solo leggere le informazioni contenute, Write Once, Read Many: si possono scrivere nel chip le informazioni una sola volta, ma leggerle un numero illimitato di volte, Read and Write: si possono leggere e memorizzare informazioni per un numero limitato ma grande di volte) Lidenticazione e la verica avvengono in 1/10 di secondo La comunicazione pu` essere in chiaro o cifrata o Adabilit` della lettura a Capacit` di lavorare in ambienti contaminati, e sporchi a Capacit` di resistere, con opportune protezioni, allaggressione di agenti chimici a e ambientali, di poter operare immerso in un uido, dentro loggetto che si vuole identicare oppure allinterno di un altro contenitore (purch non completamente e metallici) Possibilit` di leggere, nello stesso contenitore, il codice di decine o centinaia di a etichette in un lasso temporale di pochi secondi, e di trasmetterlo al sistema informativo di gestione.

2.1.4

Applicazioni

Diversi sono i campi di applicazione della tecnologia RFID. In particolare i campi di adozione principali esistenti sono: Le soluzioni su tag 125/134 kHz trovano campi applicativi: tracciabilit` ania mali domestici e di allevamento(cani, mucche, ...), apertura serrature (settore alberghiero e controllo accessi) Le soluzioni su tag 13,56 MHz trovano applicazioni in: standard ISO 15693 per la tracciabilit` (alimentare, prodotti, etc), borsellini a elettronici non bancari (villaggi vacanze, discoteche, etc); 14

Tecnologia a Radiofrequenza passiva standard ISO 14443 (ad alta sicurezza) per carte bancarie, tessere documenti di identit` elettronici, titoli di viaggio elettronici a Le soluzioni con tag UHF ISO 18000 sono dedicate alla logistica sia interna che esterna dazienda Le soluzioni con tag 2,4 GHz e oltre per la mobilit` (telepass e similari) e gli a interporti 2.1.4.1 Logistica Magazzini

Identicare ogni contenitore e ogni scaale di magazzino con tag riduce gli errori nei prelievi e fornisce una identicazione certa dellitem. Non ` necessario aprire gli imbale laggi per vericare il contenuto cercando il codice a barre, cos` come non ` pi` necessario e u eettuare il conteggio manuale per la verica dellinventario sico. Con una serie di scansioni a distanza ` possibile identicare e vericare la presenza di specici oggetti in e magazzino. Infatti la tecnologia permette di leggere contemporaneamente pi` etichette u (tag) in generale no a 100 in contemporanea. La tecnologia permette di conoscere in tempo reale le giacenze di magazzino, riordinare i capi esauriti (in tempo reale). La tecnologia utilizzata ` un tag 868 MHz ISO 18000-6 e 2.1.4.2 Rilevazione dei parametri ambientali

Lultima frontiera tecnologica in ambito RFID riguarda lintroduzione di tag attivi equipaggiati con sensori in grado di rilevare i parametri climatici (temperatura, pressione, umidit`, ecc.) dellambiente in cui sono immersi. Le grandezze rilevate dai sensori a vengono memorizzate in una apposita memoria interna, e l` permangono no a quando un operatore, dotato di apposito lettore, non ne esegue lo scarico su un PC palmare. Queste caratteristiche si rivelano strategiche per il monitoraggio dei parametri operativi dei macchinari in particolari realt` industriali, dove ` necessario garantire regimi a e operativi controllati. I tag, grazie alle ridottissime dimensioni, possono essere collocati in punti scomodi, dove sarebbe dicile portare il cavo necessario ad alimentare un apparecchio di misura, ed orono, a costi decisamente contenuti, una soluzione adabile e di facile implementazione. Grazie allutilizzo di tali soluzioni si pu` monitorare lo o stato di conservazione di una sostanza, oppure segnalare eventuali allarmi quando il parametro temperatura non fosse nei range voluti, senza aprire le confezioni che proteggono 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

Tecnologia a Radiofrequenza Attiva

2.2
2.2.1

Tecnologia a Radiofrequenza Attiva


Introduzione

La dierenza tra transponder attivi e passivi non risiede solamente nellutilizzo della batteria, nella distanza che pu` coprire il segnale o nella percentuale degli errori. Infatti o con i tag attivi c` la possibilit` di creare reti di dispositivi nei quali possono essere e a montati sensori, infatti osservare lambiente in cui siamo immersi ` il primo passo per la e conoscenza, attraverso i sensi possiamo far arrivare al cervello numerose informazioni e percezioni che vengono elaborate al ne di produrre conoscenza che arricchisce il bagaglio della nostra esperienza. Maggiore ` il numero di sensazioni che raccogliamo e e pi` accurata sar` la nostra conoscenza della realt` a questo scopo le Wireless Sensor u a a Network - WSN - sono un insieme numeroso di dispositivi elettronici, detti nodi, dotati di sensori, di un microprocessore e uninterfaccia radio per la comunicazione. I nodi cooperano tra loro per monitorare determinate caratteristiche di un evento sico quali temperatura, umidit`, accelerazione, luce, presenza ecc. Linterazione fra i nodi ` un a e aspetto fondamentale, dato che linteresse dellutilizzatore nale non ` rivolto alline formazione che si ricava dal singolo nodo sensore, ma dal complesso di informazioni rilevate dai sensori disposti in una specica area. Anch questo ammasso di dati e possa trasformarsi in conoscenza empirica ` necessario un protocollo ben denito che da e un lato permetta di trasmettere le informazioni lungo la rete e dallaltro possa sfruttare appieno le peculiarit` della rete stessa. Attraverso la denizione un protocollo di coa municazione ` possibile far conuire linsieme dei dati raccolti attraverso un canale di e comunicazione senza lo verso un nodo speciale, detto stazione base o sink. Come si pu` vedere dalla gura sottostante, il nodo sink ` collegato a sua volta ad un pc o o e tramite 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 signicativo la qualit` delle infora mazioni: ad esempio possono garantire una elevata fedelt`, possono fornire informazioni a in tempo reale anche da ambienti ostili e possono ridurre i costi di trasmissione delle stesse informazioni. Lo scopo fondamentale di una rete di sensori ` di produrre su un e periodo esteso di tempo, una informazione globale signicativa ottenuta da una serie di ` dati locali provenienti dai singoli sensori. E importante notare che la rete deve essere realizzata in modo da garantirne lintegrit` per un periodo di tempo che sia il pi` lungo a u possibile, allo scopo di ottenere informazioni accurate anche in caso di attacco alla rete da parte di organi esterni o di cedimenti hardware. 16

Tecnologia a Radiofrequenza Attiva Una WSN ha delle speciche molto stringenti che ` possibile sintetizzare nei seguenti e punti: le applicazioni sviluppate sono data-centric: limportanza risiede nei dati contenuti nei nodi piuttosto che nel programma che eseguono; i nodi sensore vengono disposti con densit` spaziali molto elevate: no a decine a di unit` nello spazio di pochi metri; a i nodi sono soggetti a malfunzionamenti: per garantire una certa tolleranza ai guasti, e non compromettere il corretto funzionamento della rete, deve essere prevista una certa ridondanza nel numero di nodi; sia per guasti che per la mobilit` dei nodi stessi, la topologia della rete pu` a o variare nel tempo in modo molto frequente; i nodi sensore hanno forti limiti in termini di risorse siche: ogni nodo ha una potenza di calcolo nellordine di qualche decina di MHz e qualche kilobyte di memoria RAM per lesecuzione dei programmi; i nodi devono essere piccoli e poco costosi. Se da un lato queste caratteristiche possono rappresentare dei vincoli molto forti, dallaltro invece, ` necessario mettere in evidenza quelli che sono i beneci che queste reti e orono. Le reti di sensori senza lo permettono una facile dislocazione dei nodi: questi, infatti, possono essere disposti anche in aree pericolose o dicilmente raggiungibili senza una collocazione ben precisa. Le tradizionali reti wired, al contrario, prevedono costi per la messa in opera dellimpianto da parte di personale specializzato e la posa di macrosensori ` limitata a certe aree. La notevole quantit` di dati collezionabile da e a una rete di sensori senza lo permette di avere unaccuratezza elevata del fenomeno che si intende monitorare. Inne, le reti di sensori senza lo devono avere un costo per dispositivo molto contenuto. Se cos` non fosse, i vantaggi tecnologici elencati in precedenza sarebbero annullati dallo svantaggio economico nei confronti delle reti cablate. Attualmente, un nodo completo di sensore costa pochi dollari ed ` facile prevedere e che una rapida espansione di questa tecnologia possa innescare i vantaggi tipici delle economie di scala. Una progressiva riduzione dei costi e un incremento delle risorse siche dei nodi permetter` in futuro di soddisfare ancor di pi` i requisiti discussi sopra. a u Queste caratteristiche ben si adattano a numerosi scenari applicativi che possiamo racchiudere in quattro macrocategorie: Monitoring: la rete ` predisposta per tenere traccia di determinate grandezze e siche nel tempo in una particolare area geograca. Event detection: la rete ` predisposta per monitorare lambiente e riconoscere e il vericarsi di determinati eventi rilevabili dai nodi sensori o gruppi di essi. Object Classication: la rete ` predisposta per riconoscere determinati oggetti e in base alle grandezze misurate Object Tracking: la rete ` predisposta per riconoscere gli spostamenti di un e oggetto allinterno di una determinata area.

17

Tecnologia a Radiofrequenza Attiva

2.2.2

Protocolli

Lo standard 802.15.4, denito dallIEEE, denisce i soli Physical e Medium Access Control Layer per le reti di sensori; nessuna assunzione viene invece avanzata per i livelli protocollari superiori. Lassenza di uno standard de iure per i livelli 3-7 dello stack si ` tradotta nello sviluppo di molteplici protocolli per lo strato di rete e applicativo che e cercassero di sfruttare i vantaggi che le reti 802.15.4 orono e, possibilmente, acquisire una quota di mercato crescente.Ancora oggi non esiste uno standard prevalente, e lo scenario si caratterizza per la presenza di molteplici protocolli che si appoggiano allIEEE 802.15.4. ZigBee costituisce probabilmente il tentativo di standardizzazione pi` aru ticolato e completo, ma sul mercato sono presenti innumerevoli soluzioni proprietarie. Tra i protocolli pi` conosciuti abbiamo: u Bluetooth Z-Wave UWB3 Zigbee 2.2.2.1 Bluetooth

Figura 2.3: logo Bluetooth Bluetooth ` una specica industriale per reti personali senza li (WPAN: Wireless e Personal Area Network). Fornisce un metodo standard, economico e sicuro per scambiare informazioni tra dispositivi diversi attraverso una frequenza radio sicura a corto raggio. La specica Bluetooth ` stata sviluppata da Ericsson e in seguito formalizzata e dalla Bluetooth Special Interest Group (SIG). SIG, la cui costituzione ` stata formale mente annunciata il 20 maggio 1999, ` unassociazione formata da Sony Ericsson, IBM, e Intel, Toshiba, Nokia e altre societ` che si sono aggiunte come associate o come membri a aggiunti. Lo standard Bluetooth pu` essere utilizzato per la creazioni di reti ad hoc o per utenti su uree limitate o come punto daccesso verso unarea pi` grande. Viene u utilizzata 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 una relazione master-slave dove il master concorda la sincronizzazione con gli slave e lo slave si puo trovare in due modalit`, o attivo o in modalit` sleep, per il risparmio energetico. a a Una rete di dispositivi Bluetooth viene chiamata piconet, dove possiamo trovare al massimo un master con sette slave attivi. Le speciche Bluetooth prevedono 3 tipi di topologie: punto-punto, punto-multipunto e scatternet. Diverse piconet possono essere collegate tra loro in una topologia chiamata scatternet.

Ultra Wide Band

18

Tecnologia a Radiofrequenza Attiva

Figura 2.4: collegamenti tra piconet

2.2.2.2

Z-Wave

Figura 2.5: logo z-wave

Z-Wave ` un protocollo di comunicazione wireless progettato per lautomazione doe mestica, in particolare per applicazioni di controllo remoto in ambienti residenziali e commerciali. Questa tecnologia per comunicare usa onde radio a bassa potenza per gestire dispositivi come lilluminazione, controllo di accesso a casa, sistemi di intrattenimento e di elettrodomestici. A dierenza di Wi-Fi e di altri sistemi IEEE 802.11 wireless LAN che sono progettati principalmente per il usso di dati a banda larga, il sistema a radiofrequenza Z-Wave opera nella gamma di frequenze tra gli 868 e i 908 MHz, con il vantaggio di essere meno soggetto alle interferenze presenti nella banda dei 2.4 GHz. La distanza che pu` coprire questo protocollo va dai 10 ai 100 metri dove o possiamo inserire un massimo di 232 nodi. Z-Wave ` attualmente supportato da oltre e 200 produttori in tutto il mondo e compare in una vasta gamma di prodotti di consumo negli Stati Uniti e in Europa. Questo protocollo usa una tecnologia di rete a maglie in cui ogni nodo o dispositivo sulla rete ` in grado di inviare e ricevere i comandi di e controllo attraverso le pareti o pavimenti e sfrutta i nodi interni per evitare gli ostacoli che si possono vericare in casa.

19

Tecnologia a Radiofrequenza Attiva 2.2.2.3 Ultra Wide Band

Figura 2.6: logo uwb Ultra wide band ` un protocollo di trasmissione wireless dei dati, che permette di rage giungere una banda dellordine di gigabit/secondo attraverso emissioni alla frequenza di circa 4 GHz con una potenza elettrica in antenna di decimi di watt. Essa pu` essere o utilizzata con antenne omnidirezionali o comunque a largo angolo di copertura per distanze brevi, no 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 capacit` di portanza dei sistemi UWB rende la tecnologia potenzialmente concorrenziale con a le tradizionali reti a bre ottiche. Le architetture WiMax permettono la trasmissione dati su una rete senza li Wi-Fi (le recenti sperimentazioni arrivano a 400Mb/s). Il limite consiste in elementi sici, tra cui la necessit` di avere speciali antenne orientate a in direzione dellantenna sorgente al ne di migliorare la qualit` del segnale. Inoltre a UWB ` in grado di orire prestazioni di gran lunga superiori al Bluetooth (10-100x) e con consumi contenuti e IEEE 802.15.4a4 ha proposto lutilizzo di UWB come livello sico alternativo 2.2.2.4 Zigbee

Figura 2.7: logo ZigBee ZigBee prende il nome dal singolare modo di volare, zigzagando, delle api ed ` un e protocollo pensato per sviluppare sistemi wireless che richiedano basso data rate ed un ridottissimo consumo energetico. Ci` nondimeno, questi sistemi devono poter prevedere o reti con un gran numero di nodi, a bassissimo costo, a partire dal protocollo IEEE 802.15.4. Questo protocollo opera nelle frequenze radio assegnate per scopi industriali, scientici e medici (ISM); 868 MHz in Europa, 915 MHz negli Stati Uniti e 2,4 GHz nella maggior parte del resto del mondo. Questa tecnologia ha lo scopo di essere pi` semplice e pi` economica di altre WPAN come, ad esempio, Bluetooth. ZigBee, u u permette di ottenere buoni risultati per quanto riguarda il risparmio energetico grazie ad applicazioni che riducono al massimo il tempo di attivit` del dispositivo durante il quale a lassorbimento di energia ` maggiore, lasciandolo in uno stato dormiente, sleep mode, e
4

Standard per reti WPAN in via di sviluppo.

20

Tecnologia a Radiofrequenza Attiva per la maggior parte del tempo. Inoltre ZigBee assicura la scalabilit`, supportando a reti autocongurabili, ossia dove i nodi possano unirsi ad una rete in maniera del tutto trasparente alla rete stessa. Per quanto riguarda la sicurezza della trasmissione dei dati per mezzo del canale wireless, viene utilizzato il protocollo crittograco AES a 128 bit e, se lapplicazione lo richiede, sono previsti meccanismi di verica dellintegrit` e di a autenticazione. Il primo livello della pila protocollare descritto dallo standard ZigBee ` e il livello di rete. Esso si appoggia direttamente sul livello MAC dellIEEE 802.15.4. Il motivo principale di questa stretta sinergia tra i due standard ` da ricercare nello sforzo e da parte di ZigBee di costruire un protocollo di rete quanto pi` semplice ed eciente u possibile, al ne di ridurre la dimensione del pacchetto, il relativo tempo di trasmissione e aumentare di conseguenza la durata dellalimentazione dei dispositivi. La possibilit` a teorica di avere in una rete no a 65536 nodi e la possibilit` di connessioni peer to peer a presume lutilizzo di applicazioni avanzate in reti a topologia estremamente complessa in cui le connessioni siano ricongurabili in modo automatico al ne di ottimizzarne i collegamenti o sopperire ad eventuali guasti. Obiettivo di questo livello, oltre alla gestione della rete, ` ricevere pacchetti dal livello applicativo, immagazzinarlo e gestirne e linoltro 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, ` equivalente al coordinatore al livello MAC. Si tratta di e un dispositivo FFD a cui ` demandata la formazione della rete: ogni dispositivo che, e in fase di commissioning, si voglia associare alla rete eettua una richiesta alla quale lo ZC deve rispondere con un messaggio di conferma. Allo ZC ` demandata, inoltre, la e gestione degli aspetti di sicurezza. Lo ZigBee Router ` un dispositivo FFD del livello e MAC a tutti gli eetti ma con diverse competenze funzionali speciche: linstradamento dei pacchetti che per giungere a destinazione devono attraversare la rete seguendo un 21

Tecnologia a Radiofrequenza Attiva percorso multi-hop. Gli ZigBee End Device sono perlopi` dispositivi RFD del livello u MAC: hanno limitate risorse siche ed implementano solo una parte del protocollo. Non possono pertanto inoltrare i messaggi, n gestire lassociazione di nuovi nodi alla e rete. Al di sopra del livello di rete, ZigBee denisce in maniera molto precisa e articolata il livello applicativo che ` composto da tre parti: Application Sublayer (APS), Applie cation Framework e lo ZigBee Device Object (ZDO). LApplication Sublayer (APS) rappresenta un substrato del livello applicativo che funge da interfaccia con il livello sottostante. Da un punto di vista funzionale, possiamo suddividere lAPS in due entit`: lAPS Data Entity e lAPS Management Entity. La prima ` responsabile a e del trasporto di messaggi applicativi fra due o pi` dispositivi, mentre la seconda gestisce u linizializzazione di alcuni parametri al livello APS. LAPS Data Entity ` utilizzata sia e dagli oggetti dellApplication Framework che dai ZigBee Device Object; mentre linterfaccia APS Management Entity ` utilizzabile solo dallo ZDO. Lo ZDO pu` utilizzare e o opzionalmente lApplication Sublayer per la comunicazione con gli strati inferiori dello standard, mentre ` necessario per la comunicazione degli Application Object in quanto e ne denisce la struttura di comunicazione denendo i concetti di Application Prole e Cluster. ZigBee Alliance ha standardizzato le tipologie di reti utilizzabili con lo standard ZigBee: reti Star, Mesh e Hybrid (coimposizione di reti Star e Mesh). Le reti Star prevedono lesstenza di un centro che ha il ruolo di gestire tutte le comunicazioni da e verso le singole periferiche. Le caratteristiche principali di una rete tar sono le seguenti: Semplicit` della struttura e del protocollo di comunicazione. a Bassi costi di realizzazione perch i nodi sono semplici. e La vita della batteria ` determinata dallattivit` del coordinator che gestisce tutte e a le comunicazioni. Singolo punto di guasto: il coordinator determina ladabilit` totale. a

Figura 2.9: topologia di rete Star Mentre le reti Star hanno un centro che teradizionalmente le gestisce, le reti Mesh possono utilizzare ogni apparato connesso sia come terminale di comunicazione sia come ripetitore per estendere la portata sica e ladabilit` della rete stessa. a 22

Tecnologia a Radiofrequenza Attiva Le caratteristiche di una rete Mesh sono molto interessanti. Alta adabilit` determinata dallintroduzione dei router e dai percorsi alternativi. a Range operativo aumentato dalla presenza dei router. Nessun problema di vita della batteria perch` il coordinator ha unattivit` ridotta e a al puro coordinamento dei percorsi anzich` gestire tutte le comunicazioni. e Elevata complessit` didenizione e gestione dei percorsi tra un nodo e laltro. a

Figura 2.10: topologia di rete Mesh Inne c` la possibilit` di realizzare reti Hybryd che combinano le strutture Star e e a Mesh in una rete mista. Le caratteristiche principali di questa rete sono le seguenti: Alta adabilit` paragonabile alla rete Mesh. a Flessibilit` operativa. a Vita della batteria paragonabile alla rete Star. Elevata complessit` di progettazione della rete e denizione e gestione dei percorsi a tra un nodo e laltro.

Figura 2.11: topologia di rete Hybrid

23

Tecnologia a Radiofrequenza Attiva 2.2.2.5 Conclusioni

Bluetooth: Pu` essere una buona soluzione per i dispositivi che fungono da gateway o che o devono trasmettere dati ad alta velocit` a Lintermediazione di un master ` sempre necessaria per comunicare tra slave e Troppo pochi i nodi nella piconet Modalit` di scanning del canale energeticamente poco eciente a Wibree5 potrebbe essere una valida alternativa, ma ` forse gi` troppo in ritardo e a sul mercato Z-Wave: Meno diuso dei diretti concorrenti Adatto per reti semplici, meno indicato per reti complesse Meno soggetto ad interferenze Non ` standardizzato da IEEE e le speciche non sono ad oggi disponibili libere amente UWB: Molto promettente Al momento ancora poco diuso ZigBee: Per molti ` il protocollo delle WSN futuro e La suite di protocolli si appoggia sullo standard de facto IEEE 802.15.4 Basso costo Speciche disponibili Garanzia di interoperabilit` tra diversi costruttori a Ancora distante la teoria dalla pratica (ad esempio la velocit` di trasmissione ed a il meshing)
5

Standard per la creazione di WSN introdotto da Nokia

24

Tecnologia a Radiofrequenza Attiva

Figura 2.12: un confronto tra i vari protocolli

2.2.3

Applicazioni

Una rete di sensori pu` essere vista come un insieme di sensori di diverso tipo capaci o di rilevare grandezze come temperatura, umidit`, pressione, luce, ma anche capaci di a rilevare il movimento di veicoli, la composizione del terreno, livello di rumore e molte ` altre cose. E possibile classicare le applicazioni in cui si possono usare le reti di sensori in militari, ambientali, sanitarie, casalinghe e commerciali. 2.2.3.1 Applicazioni militari

La facilit` e rapidit` di distribuzione, lauto-organizzazione e la tolleranza ai guasti a a fanno di una rete di sensori una tecnica promettente per applicazioni militari. Poich e una rete di sensori ` basata su una disposizione densa di nodi monouso ed a basso e costo, la distruzione di alcuni nodi da parte del nemico non danneggia le operazioni militari come potrebbe accadere con la distruzione dei sensori tradizionali. Le possibili applicazioni vanno dal monitoraggio di forze alleate, equipaggiamenti e munizioni alla sorveglianza del campo di battaglia. Sempre nel campo militare, ` possibile usare una e rete di sensori per eettuare il riconoscimento di nemici, la stima dei danni di una battaglia 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 applicazioni che riguardano, ad esempio, il monitoraggio del movimento di uccelli, piccoli animali, ` insetti. E possibile anche eettuare il monitoraggio di una foresta e rilevare prontamente eventuali incendi ad esempio negli Stati Uniti ` stato messo a punto un sistema per e la previsione e rilevazione di inondazioni. Il sistema si chiama ALERT SYSTEM6 ed ` formato da molti sensori in grado di rilevare la quantit` di pioggia caduta, il livello e a dellacqua di un ume e condizioni climatiche come ad esempio temperatura, lumidit` a etc... Le reti di sensori possono essere utilizzate anche nellagricoltura di precisione. Tra gli obiettivi che ` possibile raggiungere c` quello di monitorare il livello dei pesticidi e e nellacqua, il livello di erosione del terreno e il grado di inquinamento dellaria. Il tutto
6

http://alert.dot.pima.gov

25

Tecnologia a Radiofrequenza Attiva eettuato in tempo reale. Altra applicazione ` quella del monitoraggio dellhabitat e di animali, e lo studio del loro comportamento. Sempre nel settore ambientale, le reti di sensori possono essere di interesse per studiare gli spostamenti ed il dinamismo allinterno dei ghiacciai. A tal proposito i sensori vengono distribuiti allinterno del ghiaccio a profondit` dierenti. I sensori sono capaci di rilevare temperatura e pressione a comunicando con una stazione base posizionata in cima al ghiacciaio che provveder` al a trasferimento di questi a chi di competenza. 2.2.3.3 Applicazioni domestiche

Un esempio di utilizzo di una rete di sensori in ambito domestico ` lautomazione della e casa che consiste nellinserire sensori nel forno, aspirapolvere, refrigeratore, videoregistratore etc... Questi nodi, inseriti negli elettrodomestici, possono interagire luno con laltro e anche con reti esterne tramite lutilizzo di internet o del satellite permettendo la gestione anche da distanze remote. Lambiente domestico viene ad assumere cos` le stesse caratteristiche di un piccolo centro fornito di una rete in grado di mettere in comunicazione tra loro tutti i vari strumenti di cui lambiente ` composto. e 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 e identicare minacce che avvengono in una determinata zona geograca. Tutte le informazioni rilevate sono inviate, tramite internet, agli utenti nali per essere analizzate e per prendere i giusti provvedimenti; Rilevamento della posizione e del movimento di veicoli (car tracking): tramite una rete di sensori ` possibile monitorare la posizione di unauto in movimento. e ` E inoltre possibile monitorare il traco su strade particolarmente transitate; Controllo dellambiente in ucio: di solito il sistema di gestione del riscaldamento o dellaria condizionata ` centralizzato e quindi la temperatura in ucio pu` essere e o diversa a seconda della zona (una parte pi` calda e una parte pi` fredda) proprio u u per il controllo della temperatura e del usso dellaria centralizzato (esiste un solo termometro e un solo bocchettone da dove esce laria). Con una rete di sensori nelle stanze ` possibile controllare la temperatura e la distribuzione dellaria calda e nelle varie zone.

26

3. Implementazione di una WSN per il monitoraggio ambientale


3.1 Introduzione

Lo scopo di una tipica applicazione di monitoraggio ` quello di rilevare i dati relativi e ad un particolare ambiente lavorativo per mantere la sicurezza allinterno di questa. Per la nostra applicazione considereremo i valori di temperatura, pressione, monossido di carbonio e anidride carbonica, dato che grazie a queste quattro grandezze riusciamo generalmente a monitorare abbastanza bene un ambiente lavorativo. Un esempio di applicazione pu` essere allinterno di una cella frigorifera, dove, avendo o posizionato i sensori in punti chiave nellambiente, avviamo il processo di raccolta dati, per poi analizzarli e vedere se ricadono in un certo range di valori relativi alla norma o se sollevano qualche allarme. Per eseguire il rilevamento di queste grandezze abbiamo bisogno di una Wireless Sensor Network, la quale avr` lo scopo di raccogliere i dati e registrarli in un database. a Nella nostra rete formata da n nodi, avremmo n-1 sensori che raccoglieranno le gandezze sopracitate in punti chiave nellambiente, per poi inviarle ad un nodo che funge da accentratore dei dati, il quale avr` il compito di memorizzare i dati in un a database. Dopo aver analizzato le varie possibili topologie per la rete di sensori, abbiamo deciso di implementare lo schema a stella per la sua semplicit` di progettazione e per il ruolo a centrale che risiede nel nodo raccoglitore di tutti i dati.

Figura 3.1: rete con topologia a stella

Speciche Tecniche del kit utilizzato Lo studio per lindividuazione dellhardware a noi pi` adatto, ha riscontrato che la u 1 con il modulo ZigBee ` la scelta pi` Waspmote Board della societ` spagnola Libelium a e u giusta da fare. Infatti, il protocollo ZigBee, anche se non ` lunico nel campo wireless, come abbiamo e parlato nel precedente capitolo, ` quello pi` evoluto ad oggi e inoltre gode dellappoggio e u sullo standard IEEE 802.15.4.

Figura 3.2: Waspmote Board della Libelium

3.2

Speciche 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
1

www.libelium.com

28

Speciche Tecniche del kit utilizzato Grazie a questo kit abbiamo la possibilit` di creare delle reti wireless di tipo star, a mesh o hybrid. Ogni modulo zigbee pu` cambiare tipo, per esempio, da router pu` o o diventare coordinator o da coordinator pu` diventare end device, grazie al Waspmote o Gateway. Abbiamo anche a disposizione il gps che una volta collegato con il satellite pu` comunicarci per ricavare dati quali ora, data e posizione. Il collegamento impiega o tempo (allincirca 1 minuto), ma una volta stabilito, lo scambio di dati ` veloce e e adabile se si ` allaperto. e

Figura 3.3: Modulo con antenna GPS Inoltre ` possibile acquistare i sensori con la relativa scheda. Dato le esigenze del e progetto, abbiamo acquistato i sensori di temperatura, pressione, monossido di carbonio e anidride carbonica.

Figura 3.4: Scheda dei sensori

3.2.1

Sensore di pressione

La pressione ` una grandezza sica, denita come il rapporto tra il modulo della forza e agente ortogonalmente su una supercie e la supercie stessa. La pressione pu` essere o classicata in due modi: pressione assoluta o reale ` la pressione misurata assumendo come riferimento il e vuoto; pressione relativa ` la pressione misurata assumendo come riferimento unaltra e pressione (tipicamente quella atmosferica). Lunit` di misura SI2 della pressione ` il pascal (Pa), che equivale a 1 newton su a e metro quadrato.
2

Sistema Internazionale

29

Speciche Tecniche del kit utilizzato Il sensore di pressione ha un range che va dalle 15 alle 115kPa, con tolleranza del 1.5%V. Esso opera tra i -40 ai +125 C Il sensore di pressione ` un sensore che converte la pressione atmosferica in un analogo e valore di voltaggio nel range tra i 0.2V e i 4.7V. Poich si tratta di una gamma che e supera il valore massimo ammesso dalla Waspmote, un partitore di tensione3 ` stato e aggiunto a ciascuno dei suoi ingressi per adattarla, fornendo una gamma denitiva tra 0.12V e 2.82V.

3.2.2

Sensore di temperatura

La temperatura ` la propriet` che regola il trasferimento di energia termica o calore, e a da un sistema ad un altro. Quando due sistemi si trovano in equilibrio termico e non avviene nessun trasferimento di calore, si dice che sono alla stessa temperatura. Quando esiste una dierenza di temperatura, il calore tender` a muoversi dal sistema a che diremo a temperatura pi` alta verso il sistema che diremo a temperatura pi` bassa, u u no al raggiungimento dellequilibrio termico. Lunit` base della temperatura nel Sistema Internazionale ` il kelvin, ma nelle applia e cazioni di tutti i giorni ` spesso conveniente usare la scala Celsius (scala centigrada), e nella quale assume il valore di 0 C corrisponde al punto di fusione del ghiaccio e il valore di 100 C corrisponde al punto di ebollizione dellacqua 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 di 2 C per il range che va da 0 C a 70 C, mentre per il range che va da -40 C a +125 C la tolleranza ` di 4 C. e Il sensore di pressione ` un sensore analogico che converte la temperatura in un e valore proporzionale di tensione. Il range di voltaggio delloutput ` compreso tra i e C) e 1.75V (125 C) 100mV (-40 Essendo un sensore analogico deve essere posto sul connettore 5 della scheda dei sensori.

3.2.3

Monossido di carbonio

Il monossido di carbonio ` un gas inodore ed incolore, viene generato durante la come bustione incompleta degli idrocarburi quando la quantit` di ossigeno a disposizione ` a e insuciente. Il CO ` linquinante gassoso pi` abbondante in atmosfera, lunico per il e u quale lunit` di misura con la quale si esprimono le concentrazioni ` il milligrammo al a e metro cubo (mg/m3).
Un partitore di tensione ` una tipologia di circuito costituito da due o pi` componenti passive e u collegate in serie ai capi delle quali, se viene applicata una tensione, essa si ripartir` sulle stesse a componenti in base al loro valore.
3

30

Speciche 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 opera ad una temperatura che va dai -10 ai 50 C. Il TGS2442 ` un sensore resistivo sensibile ai e cambiamenti nella concentrazione di monossido di carbonio (CO) e, molto leggermente, allidrogeno (H2). Esso deve essere inserito nel connettore 3 o 4. La lettura di questo sensore richiede un ciclo di un secondo durante il quale vengono generati due impulsi di alimentazione.

3.2.4

Anidride carbonica

Lanidride carbonica, ` un gas incolore e inodore e pi` pesante dellaria, per cui lo e u troviamo pi` facilmente vicino a terra che non in aria. Questo ` il motivo per cui u e preoccupa il suo accumulo nelle citt`. E un gas velenoso solo alle alte concentrazioni, a ` oltre il 30%, e il suo uso pi` conosciuto, oltre a metterlo nelle bevande per farle gassate, u ` come materiale refrigerante, il famoso ghiaccio secco, che si ottiene rareddando il e gas 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 opera ad una temperatura che va dai -10 ai 50 C. Il sensore TGS4161 fornisce una tensione proporzionale alla concentrazione di CO2 nellatmosfera. Si presenta con un valore compreso tra 220 e 490mV per una concentrazione di 350 ppm (circa la normale concentrazione di CO2 nellaria). Esso deve essere inserito nel connettore 1A. Il tempo di risposta di questo sensore ` di un minuto e mezzo. e

Parti Per Milione

31

Ambiente di sviluppo

3.3

Ambiente di sviluppo

Figura 3.8: waspmote-ide v0.1 Una volta acquistato il materiale per eettuare il monitoraggio ambientale, bisogna istruire le schede in modo che possano svolgere il loro compito. Per fare ci` la libelio 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++. Oltre a questo ambiente di sviluppo la libelium ci ore la possibilit` di consultare guide e a tutorial (in lingua inglese) riguardante tutti i materiali da loro prodotti. Viene oerta anche la possibilit` di interagire con la casa spagnola grazie al forum, nel quale si pu` a o discutere di problemi tecnici e dove le risposte avvengono con frequenza giornaliera. Lambiente di sviluppo ` ricco di esempi riguardanti i componenti hardware della e libelium. Tramite le porte seriali COM possiamo interagire con le schede che vogliamo programmare. Grazie alla funzione di import abbiamo la possibilit` di caricare il nostro a script sulla basetta e testarla.

3.4

Implementazione delle WSN di monitoraggio

Una volta che abbiamo ottenuto le nostre schede non ci resta altro che programmarle con il materiale fornito dalla nostra casa costruttrice. Prima di tutto dobbiamo decidere nei dettagli cosa dovr` fare la nostra applicazione per poi studiare come svolger` il suo a a compito. La nostra applicazione dovr` andare nelle schede fornite di sensori e per prima cosa a dovr` collegarsi ad una rete. In un secondo momento dovr` collegarsi con il satellite, a a in modo che sar` chiara la data e lora in cui verranno svolte le misurazioni riguardanti a i dati ambientali. Una volta collegata al satellite tramite il modulo gps, la nostra applicazione dovr` inviare i dati raccolti ad un altro nodo, il quale si preoccuper` di a a trascriverli sul database. Ora siamo in grado di capire che ci serviranno due tipologie di nodi nella rete: un Coordinator: il quale avr` il compito di avviare la rete, nel quale si cola legheranno gli altri nodi, di ricevere i messaggi dai nodi presenti nella rete e di trascrivere i dati in un database. 32

Implementazione delle WSN di monitoraggio

Figura 3.9: Lambiente di sviluppo con relativo esempio una serie di Router/End Device: i quali avranno il compito descritto precedentemente, cio` di inserirsi nella rete generata dal coordinator, collegarsi al satellite, e raccogliere i dati ambientali ed inviarli al nodo coordinator.

3.4.1
3.4.1.1

Studio dei nodi della rete


Ricevitore

Prima di iniziare la descrizione del codice del ricevitore, premetto che la parte relativa allimagazzinamento ` delegata ad unapplicazione java che tratteremo nei prossimi e capitoli. Il nodo ricevitore deve essere impostato come coordinatore. Ci` si f` grazie allapo a plicazione X-CTU messa a disposizione dalla digi. Questo programma prende in input una porta seriale COM, nella quale deve essere collegato il gateway, fornito nel kit waspmote dalla libelium, nel quale viene applicato il modulo zigbee da trasformare come coordinatore. Una volta che il modulo viene modicato come coordinatore, passiamo alla programmazione della scheda sulla quale verr` inserito. a

33

Implementazione delle WSN di monitoraggio

Figura 3.10: logo digi

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

packetXBee* paq_sent; void setup() { beginSerial(38400,1); xbeeZB.init(ZIGBEE,FREQ2_4G,NORMAL); xbeeZB.ON(); xbeeZB.setNodeIdentifier("WASP-01#"); XBee.begin(); printString("WASP-01# setup completato ", 1); printString("\n\r",1); Utils.setLED(LED0, LED_ON); } void loop() { while( true ) { if( XBee.available() ) { xbeeZB.treatData(); if( !xbeeZB.error_RX ) { while(xbeeZB.pos>0) { printString(xbeeZB.packet_finished[xbeeZB.pos-1]->data,1); free(xbeeZB.packet_finished[xbeeZB.pos-1]); xbeeZB.packet_finished[xbeeZB.pos-1]=NULL; xbeeZB.pos--; } } else { printString("WASP-01# ", 1); printString(" zigbee error",1); printString("\n\r",1); Utils.setLED(LED1, LED_ON); } } } delay(1000); }

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. La parte relativa allinizializzazione dei componenti e lavvio della rete PAN ` delegato e al metodo void setup() il quale inizialmente apre la porta seriale con bit rate 38400, 34

Implementazione delle WSN di monitoraggio con cui comunica con la nostra scheda con una determinata frequenza. Di seguito viene inizializza la variabile xbeeZB con frequenza a 2,4GHz, che sarebbe la frequenza con cui il modulo ZigBee comunica con lo UART5 . Una volta inizializzata la variabile xbeeZB, viene aprto lo UART e cambia lo stato del modulo ZigBee a ON in modo che si pu` avviare la comunicazioni tra questi due componenti. Viene inoltre dato un nome o identicativo al nodo WASP-01 , in modo che se si eettua la ricerca nella rete, il risultato sar` univoco. Fatto ci` stampa un messaggio e accende un led verde che sta a a o signicare che il metodo setup ` conclusa. Una volta conclusa la fase di inizializzazione e dei componenti e avviato la rete, mettiamo il ricevitore nello stato di ricevere i messaggi tramite il metodo loop. Esso dichiara un ciclo innito e verica se la variabile XBee ` e disponibile, nel caso aermativo il ricevitore rimane in uno stato di attesa. Una volta che il messaggio arriva al ricevitore, esso muta lo stato in attivo e legge il pacchetto tramite il metodo xbeeZB.treatData();. In un ambiente ideale i messaggi si scambiano allinterno delletere senza alcun problema, ma nel mondo reale vi sono delle problematiche quali rumori di segnale e interferenze che possono provocare dei problemi di trasmissione. Nel caso il pacchetto nella trasmissione arriva integro a destinazione, viene stampato il contenuto dellultimo pacchetto, viene svuotato il buer e aggiornato il contatore, nel caso il pacchetto non arriva integro (quindi abbiamo lerrore di trasmissione), viene stampato un messaggio di errore. Se abbiamo spesso errori di trasmissione, la causa potrebbe essere la distanza tra il ricevitore e il trasmettitore o lambiente in cui vengono inseriti che genera molto rumore. 3.4.1.2 Trasmettitore

I nodi trasmettitori sono quei nodi che vanno inseriti nei punti chiave nellambiente che rilevano i dati ambientali e li inviano al ricevitore. Essi devono essere impostati come router o end-device ed il procedimento ` uguale a quello descritto in precedenza e riguardo al ricevitore. Una volta che il modulo viene modicato come router/enddevice, passiamo alla programmazione della scheda sulla quale verr` montato. a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

packetXBee* paq_sent; char payload[400]; uint8_t destination[8];

void setup() { beginSerial(38400,1); xbeeZB.init(ZIGBEE,FREQ2_4G,NORMAL); xbeeZB.ON(); XBee.begin(); USB.begin(); // starts using the serial port USB.print("wasp-03> setup started\n\r"); GPS.setMode(GPS_ON); GPS.ON(); SensorGas.setBoardMode(SENS_ON); // accensione board dei gas USB.print("wasp-03> sensor board on\n\r");
5 Lo UART o Universal Asynchronous Receiver-Transmitter (ricevitore-trasmettitore asincrono universale) ` un dispositivo hardware di uso generale o dedicato. e

35

Implementazione delle WSN di monitoraggio

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

SensorGas.setSensorMode(SENS_ON, SENS_PRESSURE); //sensor pressione ON USB.print("wasp-03> sensor pressure on\n\r"); SensorGas.configureSensor(SENS_CO2, 16); //sensor C02 gain USB.print("wasp_01# sensor CO2 gain setup\n\r"); SensorGas.setSensorMode(SENS_ON, SENS_CO2); //sensor C02 on USB.print("wasp_01# sensor CO2 on\n\r"); SensorGas.configureSensor(SENS_SOCKET3B, 101, 10); //sensor CO USB.print("wasp-03> sensor CO configuration\n\r"); xbeeZB.scanNetwork("WASP-01"); int i = 0; while(i<4) { destination[i]=xbeeZB.scannedBrothers[0].SH[i]; i++; } while(i<8) { destination[i]=xbeeZB.scannedBrothers[0].SL[i-4]; i++; } while( !GPS.check() ) { USB.println("Not Connected"); delay(5000); } USB.println("Connected"); USB.print("wasp-03> setup done!\n\r"); delay(1000); }

char time[400]; char date[400]; void loop() { while(true){ GPS.getPosition(); GPS.getTime(); GPS.getDate(); 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]); 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]); oat altitudine = atof(GPS.altitude); oat latitudine = atof(GPS.latitude); oat longitudine = atof(GPS.longitude); int altituded = ftoi(altitudine); int latituded = ftoi(latitudine); int longituded = ftoi(longitudine); oat tmpResult = SensorGas.readValue(SENS_TEMPERATURE); oat temperature = ((tmpResult - 0.500) / 0.010); oat tmpPressure = SensorGas.readValue(SENS_PRESSURE); oat pressure = (tmpPressure + (0.095*3.3)) / (3.3*0.009); oat pressure2 = ((tmpPressure * 1000) + 285) / 27; oat carbonMonoxide = SensorGas.readValue(SENS_SOCKET3B);

36

Implementazione delle WSN di monitoraggio

93 94 95 96 97 98 99 100 101 102 103 104 105 106

oat carbonMonoxideResistance = ((50000/carbonMonoxide) - 10000); oat carbonMonoxideFraction = carbonMonoxideResistance / 2490; oat ppmCarbonMonoxide = ( 7900 - (7000*carbonMonoxideFraction) ) / 9; int powerLevel = PWR.getBatteryLevel(); int temperatured = ftoi(temperature); int pressured = ftoi(pressure); int carbonMonoxided = ftoi(carbonMonoxide); 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); printString("\n\r",1); printString("local-", 1); printString(payload, 1); printString("\n\r",1); paq_sent=(packetXBee*) calloc(1,sizeof(packetXBee)); paq_sent->mode=UNICAST; paq_sent->MY_known=0; paq_sent->packetID=0x52; paq_sent->opt=0; xbeeZB.hops=0; xbeeZB.setOriginParams(paq_sent, "5678", MY_TYPE); xbeeZB.setDestinationParams(paq_sent, destination, payload, MAC_TYPE,DATA_ABSOLUTE); xbeeZB.sendXBee(paq_sent); if( !xbeeZB.error_TX ) { printString("local-wasp-03# packet sent ", 1); printString("\n\r",1); } else { printString("local-wasp-03# zigbee error", 1); printString("\n\r",1); Utils.setLED(LED1, LED_ON); } free(paq_sent); paq_sent=NULL; delay(2000); } } // Funzione che trasforma decimali in interi int ftoi(oat decimal) { return ((decimal - ((int)decimal))*1000); }

107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 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 che sarebbe il pacchetto di dati che verr` inviato al ricevitore, una serie di caratteri nel quale a verranno inseriti i dati in formato stringa e un intero di 8 cifre che servir` a prendere il a mac. Il metodo successivo che viene eseguito ` void setup(), che ha il compito di avviare e i componenti. Infatti esso apre la porta seriale con bit rate 38400, la frequenza con il 37

Implementazione delle WSN di monitoraggio quale comunica con la scheda. Inoltre inizializza la variabile xbeeZB con frequenza a 2,4GHz, cio` la frequenza con cui comunica con lo UART. Una volta inizializzata la e variabile xbeeZB, viene aprto lo UART e cambia lo stato del modulo ZigBee a ON in modo che si pu` avviare la comunicazioni tra questi due componenti. o Per avviare la comunicazione tra scheda e terminale abbiamo scelto di aprire la porta usb. Grazie allapertura della porta avviene la stampa di un messaggio di avvio del setup. Inoltre, per apprendere i dati relativi alla data, allora e alla posizione della scheda dobbiamo avviare il modulo GPS Infatti di seguito il programma avvia il modulo GPS con la scheda dei sensori ed i relativi sensori (temperatura, pressione, anidride carbonica e monossido di carbonio). Per una minore dipendenza del codice dallhardware, invece di inserire manualmente il MAC del ricevitore, eettuiamo una ricerca sulla rete del nodo denominato WASP01 e poi ricaviamo tramite degli appositi metodi lindirizzo 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 rintracciato il ricevitore, si avvia un ciclo while nel quale viene memorizzato nellarray di interi dichiarato allinizio, lindirizzo mac del nodo interessante. Memorizzato il mac il setup cerca di agganciare il satellite mandando messaggi di errore o di avvenuta connessione ogni 5 secondi. Una volta connesso viene stampato il messaggio di ne metodo. Terminato il metodo setup dobbiamo ora raccogliere tutti i dati relativi allambiente per poi inviarli al ricevitore grazie al modulo ZigBee. Prima di iniziare il metodo loop vengono dichiarate due variabili di carattere time e date che serviranno appunto per la memorizzazione dellora e della data relative alle misure. Nel codice abbiamo un ciclo innito, nel quale ricaviamo grazie al GPS la posizione della nostra scheda (altitudine, latitudine e longitudine), lora e la data della misurazione. Questi ultimi due dati, tramite il metodo sprintf vengono inseriti nelle variabili precedentemente dichiarate. Per utilizzare gli operatori aritmetici eettuiamo la conversione dei dati ricavati dal gps, da stringa a oat grazie al metodo atof. Per inviare i dati al ricevitore noi utilizziamo una singola stringa. Limmissione di un valore decimale tramite il metodo sprintf non ` supportato. Quindi per aggirare e questo limite il numero decimale viene trasformato in due valori interi; un intero che rappresenta la parte intera del numero decimale e un intero che rappresenta no ai valori millesimali della parte decimale. Procedendo in questo modo possiamo inserire nella stringa il valore decimale inserendo prima lintero che rappresenta la parte intera del valore decimale, seguito da un punto che st` a signicare il simbolo che separa la a parte intera dalla parte decimale e di seguito la parte intera che rappresenta il restante valore del numero decimale. Grazie al metodo ftoi che abbiamo implementato alla ne del codice e che spiegheremo in seguito, riusciamo a prendere i numeri decimali delle grandezze precedentemente rilevate. Una volta che abbiamo tutti i dati che ci interessano, li registriamo dentro la variabile ` payload. E da notare che non abbiamo preso volutamente la misurazione dellanidride carbonica, perch` come descritto prima nella parte relativa ai sensori, la misurazione e impiega un tempo di 1 minuto e mezzo ed ` un limite abbastanza ingombrante in fase e di sviluppo.

38

Conclusioni Una volta registrati i dati dentro alla variabile, viene stampata a video per mostrarne il contenuto. Di seguito avviene limmissione dei dati dentro al pacchetto e, una volta che vengono impostati i parametri di trasmissione, avviene linvio al ricevitore grazie allindirizzo mac catturato nel metodo precedente. Come descritto precedentemente nel ricevitore, anche nel trasmettitore abbiamo la possibilit` che la trasmissione dei dati non avviene correttamente. a Se non ci sono errori viene stampato un messaggio di avvenuta trasmissione, altrimenti se viene sollevato un errore viene stampato un messaggio di problema di trasmissione. Il sistema ha a disposizione un buer, nel quale vengono inseriti i messaggi impacchettati per poi essere spediti. Nel caso la coda si riempia o non venga mai svuotata avremmo sempre errori di trasmissione. Per questo motivo nella restante parte del codice ci occupiamo dello svuotamento del buer. Concluso il metodo loop, abbiamo limplementazione del metodo ftoi il quale prende come parametro un numero decimale e non fa altro che sottrarre la parte intera e moltiplicare la parte decimale per 1000, dato che ci interessano solamente le tre cifre dopo la virgola. Limplementazione di questo metodo ` stata forzata dal limite del e metodo sprintf descritto precedentemente.

3.5

Conclusioni

I devices, presenti nella rete, dopo un primo momento (allincirca 2 minuti) di inizializzazione della rete e di avvio dei componenti, comunicano abbastanza bene, con una percentuale di errore al di sotto del 5%6 . Ovviamente le condizioni ambientali devono essere favorevoli alla trasmissione di dati, altrimenti la percentuale di errore si alza signicativamente. Tuttavia nella realizzazione delle applicazioni, ci siamo imbattuti in varie problematiche. La prima, come abbiamo accennato precedentemente, riguarda il sensore di anidride carbonica, il quale impiega circa un minuto e mezzo per la rilevazione della grandezza. Per questo abbiamo scelto di non usufruire del servizio oertoci da questo sensore in cambio della possibilit` di eettuare piu misurazioni a parit` di tempo. a a Una seconda problematica labbiamo riscontrata a livello di codice. Infatti, nelle prime versioni delle applicazioni facevamo inviare la stringa con i dati dal trasmettitore al ricevitore, e nel ricevitore eettuavamo il compito di inserire il carattere di return alla ne della stringa, e facevamo stampare un messaggio di avvenuta ricezione. Ci` o portava a degli errori di sincronizzazione, dato che le stringhe si mescolavano e ci` o portava ad esempio allinserimento dei dati in modo errato nel database. Un limite che ` abbastanza grande allavvio del programma, che dopo la fase di e inizializzazione sparisce, ` il tempo di connessione del modulo GPS al satellite. e Infatti la connessione con il satellite impiega allincirca un minuto, e ci` spiega perch o e i sensori impiegano molto tempo per iniziare la comunicazione. Tuttavia, come precedentemente detto, questo limite pu` essere sopportato dato che avviene solamente o allavvio del programma e una volta iniziata la trasmissione non si presenta pi`. u
6 La percentuale ` stata ricavata in un ambiente aperto con distanza tra una scheda e laltra di e massimo 20 metri, senza ostacoli nel mezzo

39

Conclusioni Daltro canto possiamo dire che, se nel trasmettitore abbiamo bisogno di tutto questo tempo per la connessione con il satellite, nel ricevitore abbiamo bisogno di tempo per la creazione della rete. Ovviamente il tempo di attesa ` molto pi` breve rispetto alla e u problematica del GPS, ma ` anche vero che bisogna mensionarla. e Prima di avviare le schede bisogna accertarsi che il ricevitore deve essere attivo, dato che ` lui ad avviare la rete. Se il ricevitore ` spento ed il trasmettitore ` attivo, riceve e e eremo tutti messaggi di errata trasmissione, dato che per prima cosa, non siamo nella rete con il ricevitore, e seconda cosa il trasmettitore non sa a chi inviare le misurazioni eettuate. Inoltre la nostra applicazione riesce ad eettuare una misurazione con un tempo di tre secondi, e ci`, per questo genere di applicazioni, ` un margine molto breve. o e Dopo aver elencato i limiti e le potenzialit` delle nostre applicazioni possiamo cona cludere dicendo che per questo genere di lavoro, le schede e i programmi utilizzati vanno pi` che bene. u

40

4. Il software Ambient Monitoring


4.1 Descrizione del sistema e nalit` a

Si vuole realizzare un sistema software per il monitoraggio ambientale che sia in grado di visualizzare e analizzare i dati ricevuti dalla WSN costruita precedentemente. Il monitoraggio ambientale ` organizzato da utenti che svolgono visite sul database e riguardanti i dati rilevati, le schede utilizzate e gli allarmi implementati. Inoltre lutente ha lesigenza di visualizzare la posizione geograca dei punti in cui sono poste le schede, di inserire, modicare o cancellare gli allarmi e di disporre dei dati presenti nel database in vari formati, per poterli usare, ad esempio, in sistemi statistici. Il sistema deve tendere a massimizzare le informazioni accessibili allutente nale, dunque qualsiasi informazione possa essere rilevata dalle misurazioni sono da considerarsi utili. In particolare devono essere accessibili informazioni accurate riguradanti temperatura, precisione, monossido di carbonio, la data e lora della rilevazione. Dato che lapplicazione ` sviluppata per un utilizzo a livello interno, abbiamo tralase ciato per il momento la parte relativa allautenticazione e di seguito possiamo descrivere le esigenze principali: Lutente nale accede al sistema per controllare i dati relativi allambiente di lavoro al ne di poter vedere se c` stata lattivazione di qualche allarme e il conseguente e cambiamento di stato della merce presente. Inoltre ha la necessit` di visualizzare dati a sempre aggiornati, ed il sistema quindi, deve implementare qualche tipo di logica per risolvere questa problematica.

4.2

Architettura del sistema

Queste note descrivono le scelte architetturali per il progetto Ambient Monitoring. Dato che questo progetto ha un eettivo utilizzo nel mondo reale sono usate tecnologia del mondo Web. In particolare si ` utilizzata unarchitettura di tipo three-tier e dividendo linterfaccia graca, dalla logica di business residente sull server, e dalla strutturazione dei dati implementata e gestita successivamente tramite un DBMS. Si ` deciso di sviluppare la parte Web del progetto con il framework open source e Grails con linguaggio Groovy, mentre la parte relativa allimmissione dei dati nel DBMS ` stata sviluppata completamente in Java. e Il framework open source svilupper` la Graphical User Interface (GUI). La compoa nente contenente la logica di business invece dovr` essere capace di interagire con un a DBMS, la scelta fatta ` quella di MySQL, ed in particolare questo potr` essere fatto e a

Attori del sistema

Figura 4.1: Architettura del Sistema Ambient Monitoring utilizzando la libreria JDBC. Inoltre il sistema deve essere in grado di eettuare query in linguaggio SQL al DBMS.

4.3

Attori del sistema

A livello aziendale, questa applicazione a livello prototipale ` stata sviluppata con lo e scopo di monitorare lambiente di lavoro. Per questo motivo il sistema avr` un solo a attore, lamministratore di sistema. Infatti lattore avr` tutti i privilegi implementati dal sistema sviluppato. a C` inoltre una precisazione da fare, infatti, anche se c` un solo attore, abbiamo la e e possibilit` di collegare al sistema sviluppato, un altro sistema, che chiameremo Sistema a Statistico. Infatti il sistema pu` essere esteso con un sistema statistico, il quale va a o sostituire parzialmente la parte della logica legata agli allarmi. Questa parte verr` trattata in seguito in un capitolo separato. a

4.3.1

Modello UML

In UML, gli Use Case Diagram (UCD o diagrammi dei casi duso) sono diagrammi dedicati alla descrizione delle funzioni o servizi oerti da un sistema, cos` come sono percepiti e utilizzati dagli attori che interagiscono col sistema stesso. Sono impiegati soprattutto nel contesto della Use Case View (vista dei casi duso) di un modello, e in 42

Attori del sistema

Figura 4.2: Modello three-tier tal caso si possono considerare come uno strumento di rappresentazione dei requisiti funzionali di un sistema. 4.3.1.1 Elementi del modello

System Il sistema nel suo complesso ` rappresentato come un rettangolo vuoto. Questo e simbolo viene messo in relazione con gli altri nel senso che i model element che rappresentano caratteristiche del sistema verranno posizionati allinterno del rettangolo, mentre quelli che rappresentano entit` esterne (appartenenti al dominio a o al contesto del sistema) sono posizionati allesterno. In molti diagrammi UML il simbolo per il sistema viene omesso in quanto la distinzione fra concetti relativi al sistema e concetti relativi al suo contesto si pu` in genere considerare implicita. o Actor Gli attori sono rappresentati gracamente nel diagramma da unicona che rappresenta un uomo stilizzato (stickman). Formalmente, un attore ` una classe con e stereotipo actor . Praticamente, un attore rappresenta un ruolo coperto da un certo insieme di entit` interagenti col sistema (inclusi utenti umani, altri sistea mi software, dispositivi hardware e cos` via). Un ruolo corrisponde a una certa famiglia di interazioni correlate che lattore intraprende col sistema. Use Case Un caso duso ` rappresentato gracamente come unellisse contenente il nome del e caso duso. Formalmente, lo Use Case ` un classier dotato di comportamento; lo e si potrebbe intendere come una classe di comportamenti correlati. Praticamente, uno use case rappresenta una funzione o servizio oerto dal sistema a uno o pi` u attori. La funzione deve essere completa e signicativa dal punto di vista degli attori che vi partecipano. 43

Attori del sistema 4.3.1.2 Schema degli Use Case

Dopo uno studio iniziale dellapplicazione, delle potenziali esigenze che gli utenti nali potrebbero avere e le possibili soluzioni di sviluppo del sistema siamo riusciti a stilare un modello UML1 . Per le motivazioni precedentemente sottolineate, il sistema avr` un unico attore, a lamministratore di sistema, il quale avr` a disposizione molti casi duso nel sisa tema implementato, in particolare ne avr` uno il quale potr` estendere un caso duso a a appartenente ad un altro sistema, chiamato Sistema Statistico. Di seguito verr` presentato il modello e la descrizione dei casi duso. a

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 chiave di ogni punto, in modo da rendere chiaro ci` che lapplicazione dovr` svolgere. o a ID: 001 NOME: Visulizza dati BREVE DESCRIZIONE: Lutente vuole visualizzare i dati raccolti nella fase di monitoraggio ATTORI PRINCIPALI: Amministratore PRE CONDIZIONI: Nessuna SEQUENZA PRINCIPALE: 1. Lutente 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 lelenco dei dati POST CONDIZIONI: SEQUENZE ALTERNATIVE:
1

Il sistema deve mostrare i dati sempre aggiornati Nessuna

Unied Modeling Language, linguaggio di modellazione unicato.

44

Attori del sistema ID: NOME: BREVE DESCRIZIONE: ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE: 002 Visulizza mote Lutente vuole visualizzare i dati relativi ai waspmote Amministratore Nessuna 1. Lutente sceglie di visualizzare i dati dei waspmote 2. Il sistema invia la richiesta al DBMS 3. Il DBMS restituisce i dati al sistema 4. Il sistema visualizza lelenco dei dati dei waspmote POST CONDIZIONI: SEQUENZE ALTERNATIVE: Nessuna Nessuna

ID: NOME: BREVE DESCRIZIONE: ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE:

003 Visulizza allarmi Lutente vuole visualizzare i dati relativi agli allarmi Amministratore Nessuna 1. Lutente sceglie di visualizzare i dati degli allarmi 2. Il sistema invia la richiesta al DBMS 3. Il DBMS restituisce i dati al sistema 4. Il sistema visualizza lelenco dei dati degli allarmi

POST CONDIZIONI: SEQUENZE ALTERNATIVE:

Nessuna Nessuna

45

Attori del sistema ID: NOME: BREVE DESCRIZIONE: ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE: 004 Aggiungi allarme Lutente vuole inserire un allarme Amministratore Nessuna 1. Lutente sceglie di inserire un allarme 2. Il sistema richiede i dati linseirmento degli allarmi 3. Lutente inserisce i dati 4. Il sistema conferma linserimento POST CONDIZIONI: SEQUENZE ALTERNATIVE: Il sistema inserisce un nuovo allarme Nessuna per

ID: NOME: BREVE DESCRIZIONE: ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE:

005 Modica allarme Lutente vuole modicare un allarme Amministratore Deve esistere almeno un allarme 1. Lutente sceglie di modicare un allarme 2. Il sistema visualizza i campi che possono essere modicati 3. Lutente inserisce i dati da modicare 4. Il sistema conferma la modica

POST CONDIZIONI: SEQUENZE ALTERNATIVE:

Lallarme viene modicato 4. Il sistema avvisa lutente che ci sono dei dati inconsistenti 5. Si torna al punto 2

46

Attori del sistema ID: NOME: BREVE DESCRIZIONE: ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE: 006 Cancella allarme Lutente vuole cancellare un allarme Amministratore Deve esistere almeno un allarme 1. Lutente sceglie di eliminare un allarme 2. Il sistema invia la query al DBMS 3. Il DBMS elimina il record relativo allallarme 4. Il sistema notica lavvenuta cancellazione POST CONDIZIONI: SEQUENZE ALTERNATIVE: Lallarme non persiste nella lista degli allarmi Nessuna

ID: NOME: BREVE DESCRIZIONE:

ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE:

007 Mappa dei mote Lutente vuole visualizzare la posizione geograca dei mote allinterno di una mappa Amministratore Nessuna 1. Lutente sceglie di visualizzare la mappa 2. Il sistema visualizza la mappa con dei segnaposti alle coordinate dei mote

POST CONDIZIONI: SEQUENZE ALTERNATIVE:

Nessuna Nessuna

47

Attori del sistema ID: NOME: BREVE DESCRIZIONE: ATTORI PRINCIPALI: PRE CONDIZIONI: SEQUENZA PRINCIPALE: 008 Esportazione dei dati Lutente vuole scaricare dei dati dal database in vari formati Amministratore Nessuna 1. Lutente sceglie di scaricare i dati 2. Il sistema mostra i formati disponibili 3. Lutente sceglie il formato desiderato POST CONDIZIONI: SEQUENZE ALTERNATIVE: Il sistema deve inviare il le allutente Nessuna

4.3.2

Class Diagram

I diagrammi delle classi (class diagram) sono uno dei tipi di diagrammi che possono comparire in un modello UML. In termini generali, consentono di descrivere tipi di entit`, con le loro caratteristiche, e le eventuali relazioni fra questi tipi. a Uno degli assunti fondamentali del paradigma a oggetti ` che il concetto di classe, e e concetti correlati come lereditariet` o il polimorsmo, si prestino a rappresentare in a modo diretto e intuitivo la realt`, in qualsiasi ambito (per usare le parole di Grady a Booch, un oggetto ` qualsiasi cosa a cui si possa pensare). I diagrammi delle classi e UML sono basati su versioni astratte di tali concetti, e possono essere utilizzati per descrivere sostanzialmente qualsiasi contesto a qualsiasi livello di astrazione (enfatizzandone, per`, solo alcuni aspetti). Di conseguenza, UML prevede un loro impiego o a livello di analisi e in particolare analisi del dominio (ovvero la descrizione del contesto 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 loro relazioni).

4.3.2.1

Concetti principali

Il class diagram che andremo a sviluppare, dovr` renderci chiaro come andremo ad ima plementare il codice. Per questo la cosa pi` chiara da fare ` specicare il class diagram u e seguendo il paradigma orientato ad oggetti. Tramite lastrazione dei nostri componenti riusciamo a capire qual` il lavoro che quel modulo dovr` svolgere, rendendoci e a limplementazione meno faticosa. Seguendo questo paradigma, la prima cosa da fare ` astrarre le nostre classi principali e e le loro propriet`. a 48

Attori del sistema Detto ci` le nostre classi principali saranno: o SensorData SensorMote SensorAlarms Nella prima classe le propriet` che andremmo a dichiarare saranno le grandezze che a rileveremo dallesterno, quindi avremmo: Anidride carbonica Monossido di carbonio Pressione Temperatura Data e ora Una volta che abbiamo i dati, dobbiamo specicare con quale mezzo li abbiamo presi. Di conseguenza viene naturale sviluppare la classe SensorMote, e la cosa pi` logica ` u e legare insieme le due classi. La classe SensorMote avr` come propriet`: a a IdMote Livello di potenza Altitudine Latitiudine Longitudine Altre Informazioni Da notare che Altre informazioni ` stato inserito solamente perch` il progetto ` e e e ancora nella fase prototipale, e quindi rimane comodo agli sviluppatori eettuare dei test. Tuttavia le altre informazioni sono tutte necessarie. Passiamo ora a specicare lassociazione che dovr` esserci tra la classe SensorMote e SensorData. Prima di tutto a dobbiamo riconoscere che le due classi sono legate da qualcosa, perch` se abbiamo i e dati labbiamo presi sicuramente da qualche Mote, ed i Mote daltra parte, possono avere dei dati correlati. Dalla parte dei dati abbiamo un legame forte, di composizione. Infatti non possono esistere dei dati senza un Mote, perch` per forza di cose da qualche e scheda dovranno essere arrivati. Tuttavia un dato non pu` avere pi` di un Mote che lo o u ha rilevato. La classe SensorMote non ha lo stesso legame forte che hanno i dati. Infatti i Mote possono esistere al di la del fatto che hanno rilevato qualche dato. Quindi hanno un limite inferiore di zero dati, mentre il limite superiore pu` essere tranquillamente il o numero dei dati esistenti, infatti questo ` il caso in cui tutti i dati sono rilevati dallo e stesso Mote. 49

Attori del sistema Una volta sviluppate le classi dei Dati e dei Mote, ci apprestiamo a sviluppare la classe degli allarmi. Infatti le grandezze raccolte nellambiente di lavoro, possono sollevare lattivazione di qualche allarme. La classe SensorAlarms quindi avr` nelle propriet` un range per ogni valore raccolto, a a dunque sar` composta in questo modo: a Monossido di carbonio massimo Monossido di carbonio minimo Pressione massima Pressione minima Temperatura massima Temperatura minima Se un Dato avr` il valore di qualche grandezza che non ricade dentro questi range, a avremmo una sollevazione dellallarme violato. Lassociazione tra la classe SensorData e SensorAlarms sar` unassociazione debole. Infatti lesistenza di un allarme non ` a e funzione dellesistenza dei dati e viceversa. La classe SensorAlarms potr` avere un a minimo di zero dati associati (quando lallarme non viene richiamato da nessun dato) a un massimo di n, dove n equivale al numero di dati esistenti (quando ogni dato raccolto solleva lallarme in questione). Dallaltra parte, ogni dato pu` avere da un o minimo di zero allarmi (quando quel dato non solleva nessun allarme) ad un massimo di m, dove m equivale al numero di allarmi esistenti (quando un dato solleva tutti gli allarmi implementati). Una volta sviluppate le classi principali il nostro lavoro sarebbe nito. Ma bisogna ricordare 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 dellutente nale, il quale invia i comandi tramite lo strato View del framework. Di conseguenza avremo tre classi controller: SensorDataController SensorMoteController SensorAlarmsController Il controller dei dati, come gli altri, dovr` dare la possibilit` allutente di interagire a a con il sistema. Pe questo la classe SensorDataController dovr` avere come propriet`: a a Create: questa propiret` ci permetter` di creare dei dati. a a List: con questa propriet` possiamo elencare tutti i dati che abbiamo nel nostro a database. List4bis: grazie a questo abbiamo la possibilit` di elencare tutti i dati in un a formato json. Show: ci d` la possibilit` di vedere nel dettaglio un dato. a a 50

Attori del sistema Questa classe ovviamente avr` un associazione diretta con la classe di dominio. Infata ti, abbiamo unassociazione tra la classe SensorData e la classe SensorDataController, con la classe di dominio che avr` un solo controller ed il controller che avr` n dati, dove a a n rappresenta il numero di dati raccolti. La classe SensorMoteController rappresenta la classe che dovr` rispondere alle richia este emesse dal relativo view, e dovr` quindi avere queste propriet`: a a Create: questa propiret` ci permetter` di creare dei mote. a a List: con questa propriet` possiamo elencare tutti i mote che abbiamo nel nostro a database. Show: ci d` la possibilit` di vedere nel dettaglio un mote. a a Il controller ` collegata alla classe di dominio con un associazione debole, dovre il e controller avr` n istanze di mote, dove n sta a rappresentare il numero di mote, e la a classe di dominio avr` un solo controller. a La classe SensorAlarms, oltre a presentare le relative propriet` per la risposta di a input derivanti dal view, ha anche un metodo Controllo. Questo metodo prende come paramentro unistanza di SensorData e restituisce un numero, il quale indica un codice di allarme. Quindi ha il compito di vericare se un dato solleva qualche allarme, e se lo solleva identica lallarme violato. Le propriet` sviluppate sono: a Create: questa propiret` ci permetter` di creare un allarme. a a Delete: questa propiret` ci permetter` di cancellare un allarme precedentemente a a creato. Edit: questa propiret` ci permetter` di modicare un allarme precedentemente a a creato. List: con questa propriet` possiamo elencare tutti gli allarmi che abbiamo nel a nostro database. Save: con questa propriet` possiamo registrare unallarme creato nel database. a Show: ci d` la possibilit` di vedere nel dettaglio un allarme. a a Questa classe ha un associazione con la relativa classe di dominio, dove la classe di dominio ha un solo controller, mentre il controller ha n istanze di allarmi, dove n rappresenta il numero totale degli allarmi. Oltre a queste classi elencate, abbiamo un quarto controller SensorPreferenceController. Esso ha il compito di dare la possibilit` agli utenti di visualizzare le liste a di dati, mote e allarmi in quattro vari formati: Testuale Comma-Separated Values JSON XML 51

Interfacciamento con le WSN Per fare questo, la classe ha unassociazione per ogni classe di dominio (SensorData, SensorMote, SensorAlarms), per prendere i dati relativi ad ogni entit`. Ovviamente il a controller delle preferenze deve avere di tutte le entit` le n-esime istanze, mentre ogni a classe di dominio avr` un solo controller di preferenza. a 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, ` stato progettato per prendere e i dati dallambiente, grazie alla rete di sensori che comunicano tra di loro grazie al protocollo ZigBee, per poi inserirli nel database. Tuttavia, per fare ci`, abbiamo di o mezzo vari passaggi. Infatti, come deve essere strutturato il Database per rispondere alle query in modo veloce ed eciente? E poi, una volta presi i dati con i sensori, come facciamo ad inserirli nel Database? In questa sezione spiegher` come abbiamo scelto la o struttura del Database e la modalit` di inserimento. a

4.4.1

Struttura del DataBase

La struttura del DataBase ` molto importante, infatti ` necessario che ogni record e e possa essere identicato univocamente e che possa essere collegato ad altri record di altre tabelle. La nostra applicazione ha bisogno di riconoscere tra Entit` fondamentali, che sono: a 1. I mote da cui riceviamo i dati; 2. I dati che riceviamo; 3. Gli allarmi che abbiamo inserito. 52

Interfacciamento con le WSN Ognuna di queste entit` avr` dei campi al loro interno, in modo che ogni record sar` a a a univoco. Dato la nostra esigenza, abbiamo scelto di isnerire nel DataBase tre tabelle (pi` una u tabella creata in modo automatico dal framework per lapplicazione 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, conterr` i record inseriti nella pagina dellapplicazione web. La tabella presenta dei a campi che sono: id: rappresenta un numero intero, che ogni volta che viene inserito un nuovo allarme aumenta di uno. Serve per rendere il record unico, infatti non avremo mai due record con il campo id uguale. carbon monoxidemax: questo ` un campo rivolto a numeri decimali. Lame ministratore inserir` il massimo valore di monossido di carbonio tollerato, se aba biamo un dato con monossido di carbonio superiore, verr` segnalata lattivazione a dellallarme. carbon monoxidemin: questo ` un campo rivolto a numeri decimali. Lame ministratore inserir` il minimo valore di monossido di carbonio tollerato, se aba biamo un dato con monossido di carbonio inferiore, verr` segnalata lattivazione a dellallarme. pressuremax: questo ` un campo rivolto a numeri decimali. Lamministratore e inserir` il massimo valore di pressione tollerato, se abbiamo un dato con pressione a superiore, verr` segnalata lattivazione dellallarme. a pressuremin: questo ` un campo rivolto a numeri decimali. Lamministratore e inserir` il minimo valore di pressione tollerato, se abbiamo un dato con pressione a inferiore, verr` segnalata lattivazione dellallarme. a temperaturemax: questo ` un campo rivolto a numeri decimali. Lamministrae tore inserir` il massimo valore di temperatura tollerato, se abbiamo un dato con a temperatura superiore, verr` segnalata lattivazione dellallarme. a temperaturemin: questo ` un campo rivolto a numeri decimali. Lamministrae tore inserir` il minimo valore di temperatura tollerato, se abbiamo un dato con a temperatura inferiore, verr` segnalata lattivazione dellallarme. a Questa tabella ` direttamente collegata alla tabella relativa ai dati, in quanto ` e e possibile eettuare un test per ogni grandezza rilevata e vedere se cade nel range di tollerabilit` impostata per ogni allarme. a 53

Interfacciamento con le WSN

Figura 4.5: Tabella degli allarmi 4.4.1.2 Sensor Data

La seconda tabella si occupa dellimmagazzinamento dei dati ricevuti dallesterno. Per questo per ogni dato rilevato abbiamo bisogno di un campo. Nello specico i campi presentati dalla rtabella in questione sono: id: rappresenta un numero intero, che ogni volta che viene inserito un nuovo dato aumenta di uno. Serve per rendere il record unico, infatti non avremo mai due record con il campo id uguale. e carbon dioxide: questo ` un campo rivolto a numeri decimali. Infatti qui viene registrato il valore dellanidride carbonica. Abbiamo deciso di inserirlo perch` e nelle successive versioni dellapplicazione verr` sicuramente rilevata lanidride cara bonica, anche se con tempi abbastanza larghi. Tuttavia, in questa fase prototipale del progetto, abbiamo scelto di inserire una stringa per ogni record (NOCO2). carbon monoxide: questo ` un campo rivolto a numeri decimali. Infatti qui e viene registrato il valore del monossido di carbonio rilevato nel monitoraggio ambientale. mote id: questo ` un campo di numeri interi. Qui viene rappresentato il nue mero identicativo della scheda, equipaggiata di sensori, che ha rilevato le varie grandezze. pressure: questo ` un campo rivolto a numeri decimali. Qui viene registrato il e valore della presisone rilevata nel monitoraggio ambientale. temperature: questo ` un campo rivolto a numeri decimali. Infatti qui viene e registrato il valore della temperatura rilevata nel monitoraggio ambientale. time stamp: questo ` un campo rivolto ad una stringa. e registrata la data e lora della rilevazione ambientale. Infatti qui viene

alarm id: creato automaticamente dal framework Groovy on Grails. Questa tabella ` direttamente collegata alla tabella relativa agli allarmi, in quanto e ` possibile eettuare un test per ogni grandezza rilevata e vedere se cade nel range e di tollerabilit` impostata per ogni allarme, e direttamente collegata ai mote in quanto a riusciamo ad estrapolare lid della scheda che ha eettuato la rilevazione ambientale. 4.4.1.3 Sensor Mote

La terza tabella si occupa dellimmagazzinamento dei dati relativi al waspmote che eettua la rilevazione. Andiamo a vedere nello specico quali dati relativi al mote sono utili per lapplicazione che andiamo a sviluppare: 54

Interfacciamento con le WSN

Figura 4.6: Tabella delle grandezze rilevate id: rappresenta un numero intero, che ogni volta che abbiamo un nuovo mote aumenta di uno. Serve per rendere il record unico, infatti non avremo mai due record con il campo id uguale. id mote: questo ` un campo rivolto alle stringhe. Qui verr` inserita la stringa e a mnemonica che identicher` il waspmote. a other info: questo ` un campo rivolto alle stringhe. Questo campo ` stato e e sviluppato per eettuare prove, e magari, in futuro, inserire qualche informazione relativa ai mote, che pu` essere essenziale nellambito in cui sar` implementata o a lapplicazione. power level: questo ` un campo rivolto a numeri decimali. In questo campo e verr` inserito il valore espresso in percentuale della carica della batteria. a altitude: questo ` un campo rivolto a numeri decimali. Qui viene registrato il e valore dellaltitudine rilevata dal modulo GPS del waspmote. latitude: questo ` un campo rivolto a numeri decimali. Qui viene registrato il e valore della latitudine rilevata dal modulo GPS del waspmote. longitude: questo ` un campo rivolto a numeri decimali. Qui viene registrato il e valore della longitudine rilevata dal modulo GPS del waspmote.

Figura 4.7: Tabella dei waspmote utilizzati Questa tabella ` direttamente collegata alla tabella relativa ai dati, specicando e qual` il waspmote che ha eettuato la misura. e 55

Interfacciamento con le WSN 4.4.1.4 Conclusioni

Lo studio relativo alla progettazione e allo sviluppo della struttura del database porta a tutto ci` che abbiamo detto in questi paragra. Grazie a queste entit` che abbiamo o a astratto e alle loro relazioni, garantiamo un alta ecienza ed adabilit` sul trattaa mento e la persistenza dei dati immagazzinati. Inoltre abbiamo implementato delle routine, per la cancellazione dei dati e per linserimento dei dati, per migliorare lefcienza e la scalabilit` del sistema, in modo che il lavoro non ` incentrato solamente a e su un singolo componente. Approfondiremo largomento di seguito nella parte relativa allapplicazione Java. Tutto ci` ` implementato sulla piattaforma Open Source MySQL precedentemente oe discussa.

4.4.2

Acquisizione dati

Grazie alla rete di sensori riusciamo a recepire i dati relativi al nostro ambiente lavorativo e grazie al database riusciamo a far riferire ad ogni serie di dati, il waspmote che lha rilevato e gli allarmi che potrebbe sollevare. Tuttavia il sistema ` ancora incompleto. Infatti lanello mancante risiede sul cole legamento tra la rete di sensori e il database. Non abbiamo ancora parlato di come il waspmote 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 ` fondamentale, infatti ci assicura che e le operazioni fatte sul database vengono fatte in modo adabile grazie al Driver oerto da MySQL2 . Ovviamente ` stato scelto il linguaggio Java perch` fortemente utilizzato e e nella realt` accademica e quindi non abbiamo bisogno di ulteriore tempo di studio del a linguaggio. Dopo aver fatto una piccola introduzione addentriamoci nei particolari. Il nostro sistema quindi subir` un ulteriore cambiamento, infatti tra la rete a stella dei a sensori ed il database, vi si collocher` il programma sviluppato in java che si occuper` a a di gestire linput passato dal coordinatore della rete, per poi inserirlo nel database con i giusti controlli e le giuste query. In particolare la nostra applicazione Java si inserir` nella porta COM del coordinator, a ricavando le informazioni ambientali, per poi inviarle al server tramite lhost e la porta. Dato che la nostra applicazione user` la porta COM abbiamo deciso di sviluppare a nella parte prototipale del progetto, solamente la parte relativa alle porte seriali, limitandoci a dare un errore qualora dovessimo ricavare le informazioni da una porta parallela. Il programma in Java presenta un estenzione .jar, tipica delle applicazioni sviluppate in questo linguaggio, e per avviarla abbiamo bisogno di una shell. Una volta che siamo arrivati nel giusto path, possiamo avviare il programma da riga di comando grazie a questa stringa:
1

java -jar SensorMonitoring.jar -c COM5

Listing 4.1: Stringa per avviare il programma Java


2

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

56

Interfacciamento con le WSN

Figura 4.8: Architettura del Sistema Ambient Monitoring con applicazione Java Ovviamente dobbiamo modicare la porta inserendo quella con cui comunica il nodo coordinatore (qui ho utilizzato la COM5 per esempio).3 Una volta visto come avviare il programma ed aver accennato come funziona il sistema, andiamo a vedere pi` da vicino come ` fatto questo programma. u e Innanzitutto, per lanciare lapplicazione ` necessario specicare il ag -c con il rele ativo valore, altrimenti il programma non sapr` dove prendere i messaggi di input e a restituir` un errore. Il ag della porta seriale non ` lunico, infatti abbiamo la possibilit` a e a di inserirne altri tre: -h: ` il ag relativo allhost del database. Abbiamo la possibilit` di inserire e a lhost su cui risiede il database, altrimenti, se non specicato, ci collegheremo per default su localhost. -p: ` il ag relativo alla porta del database. Abbiamo la possibilit` di inserire e a la porta con per comunicare con il database, altrimenti, se non specicato, ci collegheremo alla porta di default 3306. -d: ` il ag relativo alla cancellazione dei dati allinterno del database. La cane cellazione non ha un valore di default, ma una volta inserito il ag -d dobbiamo inserire uno dei due valori: ALL: se vogliamo cancellare tutti i dati di tutte e tre le tabelle presenti nel database; DW: se vogliamo cancellare solamente i dati relativi ai rilevamenti ambientali e ai waspmote, lasciando intatti i dati relativi agli allarmi.
3

Se non abbiamo impostato la variabile dambiente di java riceveremo un errore

57

Interfaccia utente Il programma inizialmente si collega al database e verica se c` la presenza di qualche e ag che implica linterazione con la sistema di conservazione dei dati. Come abbiamo visto nei capitoli precedenti, il coordinatore stampa un messaggio con un determinato formato, infatti i dati sono divisi dal simbolo del cancelletto(#). Questa ` stata una scelta progettuale che ci ritorna utile ora, infatti il programma Java e adesso pu` dichiarare un pattern che indica la formattazione della stringa di input che o si aspetta.
1

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

Listing 4.2: Costruzione di un pattern Una volta dichiarato il pattern dobbiamo solo connetterci alla porta COM specicata nella stringa di avvio dellapplicazione. Il sistema dichiara un buer, nel quale verranno inseriti i messaggi che provengono dalla porta COM. Lapplicazione scorre il buer e quando arriva allultima posizione (che rappresenta lultima stringa del messaggio completo) lo segnala, e invia la stringa completa ad un controllore che confronta il pattern e il messaggio. Se lesito del controllo ` positivo, viene chiamato un metodo il quale apporta delle e modiche sul messaggio (eliminando i return) e tramite lo StringTokenizer divide il messaggio in pi` stringhe in funzione del carattere cancelletto (#). A questo punto u abbiamo tutti i dati registrati in variabili. Non ci resta che inserirli nel database. Per fare questo usiamo un CallableStatement il quale richiama la routine nel database (insertimentodati ) per poi passargli come parametri, le stringhe in cui abbiamo registrato i dati del messaggio proveniente dalla porta COM. La funzione insertimentodati sviluppata in linguaggio SQL, non fa altro che inserire nelle giuste tabelle i valori e aggiornare i dati che bisogna aggiornare come ad esempio il power level. Questi passaggi vengono ripetuti per ogni messaggio che viene inserito nel buer. Tuttavia se il confronto con il pattern risulta negativo, per esempio un messaggio che pu` avere subito delle modiche durante il tragitto, viene semplicemente scartato. o

4.5

Interfaccia utente

Ricapitolando il nostro sistema per ora riesce a prendere i dati dallambiente esterno tramite la WSN, li controlla e li elabora tramite lapplicazione Java SensorCapture, e grazie alle routine i dati vengono nalmente inseriti nel database MySQL. Adesso lunica cosa che manca ` il modo in cui lutente interagisce con il sistema. e Per eettuare linterfaccia utente ci siamo rivolti al framework Grails, principalmente per tre motivi: 1. Web Application Vs Desktop Application 2. Utilizzo di Groovy 3. Open Source La scelta di una web application ` venuta fuori in base alla volont` di non centralizzare e a il sistema, infatti facendo unapplicazione web non abbiamo bisogno di installare in tutte le macchine su cui vogliamo interfacciarci con il sistema, lapplicazione sviluppata. 58

Interfaccia utente Quindi ci ` sembrata la scelta ottima sviluppare il sistema tramite una web application e anzich` una desktop application. e Lutilizzo di Groovy ci spinge ad usare il framework Grails rispetto agli altri framework basati sul modello MVC, dato che utilizza un linguaggio molto produttivo (in poco tempo riusciamo a la percentuale di produzione ` alta) e simile a Java, rendendo e il tempo di apprendimento di Groovy abbastanza breve rispetto agli altri. Inoltre il framework in questione ` open source e quindi la scelta eettuata racchiude e tre principi che la rende migliore per lo sviluppo di questa applicazione rispetto agli altri. Nella fase prototipale del progetto ` suciente implementare i servizi e le funzioni e ricavate dalluse case diagram, seguendo il class diagram. Quindi la nostra web application dovr` sostanzialmente avere una pagina principale che permette di raggiungere a i servizi implementati nelle pagine degli allarmi, dati, waspmote e preferenze. Nella pagina relativa agli allarmi, dovremmo dare modo allutente di interagire con gli allarmi per esempio creandoli, modicandoli o cancellandoli. Nella pagina dei dati, dovremmo sostanzialmente dare allutente la possibilit` di a visualizzare i dati rilevati nellambiente lavorativo. Nella pagina dei waspmote, il sistema deve visualizzare i dati relativi ai waspmote utilizzati per eettuare 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 sono le 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, ci` o che ogni oggetto di quel tipo deve avere. Ogni classe ` sviluppata in linguaggio groovy, e infatti ogni le ha lestenzione .groovy. La directory View contiene le pagine che lutente nale andr` a visualizzare. Queste a pagine sono scritte in HTML con lausilio di comandi groovy, vengono denominate Groovy Server Page ed hanno un estenzione .gps. Le pagine gps, seguendo perfettamente 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 classe specicata, infatti riceve i comandi dellutente attraverso il View e li attua eseguendo il codice. Per sviluppare lapplicazione abbiamo installato lambiente di sviluppo chiamata SpringSource Tool Suite4 basato su eclipse. Dopo aver spiegato a grandi linee ci` che lapplicazione web dovr` sviluppare, dobbio a amo creare il collegamento tra lapplicazione ed il database, in modo da fornirgli i dati da elaborare per poi far visualizzare allutente nale.
4

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

59

Interfaccia utente

Figura 4.9: Esempio di gerarchia delle directory Questa operazione ` semplicissima nel framework Grails. Infatti ` necessario ime e postare nella directory grails-app\conf\DataSource.groovy il driver utilizzato per la connessione al database, lhost, la porta, lusername e la password.
1 2 3 4 5 6 7

dataSource { pooled = true driverClassName = "com.mysql.jdbc.Driver" username = "user" // nome dellutente password = "password" // password dellutente url = "jdbc:mysql://localhost:3306/sensordata?autoreconnect=true" }

Listing 4.3: Dati per la connessione al database Una volta inseriti i dati, la connessinoe al database ` risolta, ora possiamo prendere e i dati che vogliamo.

4.5.1

Classi di dominio

Dopo una panoramica di come sviluppare lapplicazione, passiamo allimplementazione vera e propria iniziando dalle classi di dominio. Nella nostra web application abbiamo tre classi di dominio: 1. SensorAlarms 2. SensorData 60

Interfaccia utente 3. SensorMote La prima si presenta dichiarando subito una relazione uno a molti riferito ai dati, infatti un allarme pu` avere tutti i dati rilevati che lo sollevano oppure nellaltro caso, o nessun dato lo richiama. Di seguito abbiamo gli altri campi visti in precedenza nel class diagram
1 2 3 4 5 6 7 8 9 10 11 12 13

class SensorAlarms { static hasMany = [data:SensorData] oat oat oat oat oat oat temperaturemin temperaturemax pressuremin pressuremax carbonMonoxidemin carbonMonoxidemax

Listing 4.4: classe di dominio SensorAlarms Nella classe di dominio SensorData abbiamo oltre la relazione specicata prima, con la classe degli allarmi, ha gli altri campi deniti prima nel class diagram.
1 2 3 4 5 6 7 8 9 10 11 12

class SensorData { String timeStamp oat temperature oat carbonMonoxide String carbonDioxide oat pressure SensorMote mote static belongTo = [sensoralarms : SensorAlarms] }

Listing 4.5: classe di dominio SensorData Nellultima classe di dominio, SensorMote, abbiamo oltre la relazione da uno a molti riferita ai dati, le grandezze descritte nel class diagram e inoltre abbiamo un metodo per la stampa del proprio nome mnemonico.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

class SensorMote { static hasMany = [data:SensorData] String idMote oat powerLevel String otherInfo oat altitude oat latitude oat longitude String toString(){ return idMote } }

Listing 4.6: classe di dominio SensorMote Quello che abbiamo visto nelle classi di dominio ` abbastanza semplice, e viene e utilizzato per denire come un oggetto di quel tipo deve essere caratterizzato. 61

Interfaccia utente Passiamo ora a descrivere il contenuto della directory View. Dentro la directory abbiamo le pagine che visualizzeremo nel web. Come precedentemente detto, i le contenuti sono Groovy Server Page ed hanno estenzione .groovy. Allinterno di questa cartella abbiamo tante sottocartelle quanti sono gli argomenti trattati. Per esempio nella nostra applicazione abbiamo quattro cartelle pi` una per la u pagina iniziale e sono: 1. sensorAlarms 2. sensorData 3. sensorMote 4. sensorPreferences

4.5.2

Pagina di Introduzione

In questo progetto, dobbiamo dare allutente la possibili` di accedere a molte funzioni, a ognuna delle quali riguarda un campo specico. Per questo abbiamo deciso di sviluppare il nostro sistema con una pagina di introduzione, nella quale viene spiegato lo scopo dellapplicazione web.

Figura 4.10: Pagina di introduzione visualizzata sul browser Nella cartella view, dove sono contenute le altre directory, abbiamo inserito la pagina index.gps. Questa pagina rappresenta la pagina iniziale della nostra applicazione web e inne ci sono i collegamenti per le altre pagine relative agli altri componenti (allarmi, dati, waspmote, preferenze). Il codice ` sviluppato in questo modo: abbiamo una parte iniziale che riguarda lo stile, e lheader e la barra dei menu. Di seguito, allinterno di un paragrafo viene specicato lo scopo dellapplicazione web, per la rilevazione dei dati in un ipotetico ambiente di lavoro, per segnalare condizioni non idonee e salvaguardare la sicurezza. Di seguito sono elencati i collegamenti verso le altre pagine dellapplicazione web, che saranno poi inserite nelle varie directory allinterno di View.

4.5.3

Gestione degli errori

Tuttavia nella cartella view abbiamo anche unaltra pagina: error.gps. 62

Interfaccia utente

Figura 4.11: Pagina di errore visualizzata sul browser

Qui viene specicato ci` che bisogna visualizzare quando siamo in presenza di un o errore, in modo che lo sviluppatore possa capire da cosa ` generato e dove ha sbagliato. e Inizialmente viene dichiarato uno stile, e di seguito, la pagina si basa su un elenco di messaggi che vengono generati dallerrore.

4.5.4
4.5.4.1

Gestione degli Allarmi


list.gps

Nella prima cartella abbiamo quattro le .gps, ognuno per ogni azione disponibile per lutente nale.

Figura 4.12: Pagina list.gps visualizzata sul browser Il le list.gps ` il le che serve per visualizzare la lista di allarmi che sono attualmente e in funzione. Per fare questo il le dichiara un header e i men` in alto nella pagina, u dopodich` si appresta a creare una tabella con valori ordinabili, dove avremmo come e intestazione i campi precedentemente registrati nelle classi di dominio. Una volta creata la tabella si crea il collegamento con la lista degli allarmi presenti nel database e si riempie la tabella dichiarata. 63

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 le show.gps. Questo le serve qualora lutente nale vuole visualizzare un singolo allarme nello specico. Dopo aver dichiarato il solito header, con la solita barra dei menu, visualizziamo il titolo di default della pagina (Show SensorAlarms), e inoltre grazie a groovy riusciamo a riferirci allallarme selezionato prelevando tutti i campi deniti nella classe di dominio, per poi inserirli in una tabella. Inoltre vengono dichiarati due pulsanti, per modicare lallarme 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 le create.gsp che ha la funzione di rappresentare la pagina per la creazione degli allarmi. Dovr` quindi fornire un metodo per linserimento. a Il metodo scelto nella nostra applicazione web avviene tramite dei text box dove ` e possibile inserire il valore desiderato. Scendendo nei particolari possiamo notare che oltre al solito header e al titolo della pagina, la dichiarazione di una tabella dove sulla parte sinistra abbiamo una label dove ` specicato il nome della grandezza, mentre e sulla destra ci sar` la textbox dove verr` inserito il valore. a a 64

Interfaccia utente Ogni valore da inserire si riferir` alle grandezze specicate nella classe di dominio a degli allarmi. Inne avremmo un pulsante per la creazione, il quale richiamer` il metodo Create a specicato nel relativo controller. 4.5.4.4 edit.gps

Figura 4.15: Pagina create.gps degli allarmi visualizzata sul browser Inne, nella directory views riferita agli allarmi abbiamo il le edit.gps. Questo le deve permettere al cliente la modica su un allarme specico. Nella nostra applicazione questo accade selezionando prima lallarme nella lista degli allarmi, e poi selezionando il bottone Edit. Una volta arrivati nella nostra pagina abbiamo un header, la classica barra dei menu e il corpo della pagina. Il corpo della pagina si basa (come nel le create.gps) in una tabella di valori, dove a destra abbiamo delle label dove sono inseriti i nomi delle grandezze, mentre nel lato sinistro abbiamo le textbox riempite dai valori impostati prima della modica. Una volta modicati i campi possiamo registrare il cambiamento tramite il bottone Update che troviamo alla ne. In questa pagina abbiamo inoltre un bottone Delete che ci d` la possibilit` di a a cancellare lallarme.

4.5.5

Pagina dei Dati

Nella sezione view dei dati, abbiamo bisogno di dare allutente lopportunit` di visuala 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

Interfaccia utente Di seguito esponiamo ci` che conterr` ogni pagina. o a 4.5.5.1 list.gps

Figura 4.16: Pagina list.gps dei dati visualizzata sul browser Nel le list.gps, notiamo subito nel main che vengono dichiarati degli script in javascript., che serviranno poi per i graci e la linea verticale che li scorrer`. Andando a nel body di questa pagina notiamo come sempre la barra dei men` e la dichiarazione di u una selezoine a tendina dove abbiamo la possibilit` di scegliere di quale mote vogliamo a vedere i graci. Fatto ci` ogni graco viene richiamato sotto il nome della relativa grandezza. o Dopo aver implementato i graci in funzione della selezione del waspmote, ci preoccupiamo ora a far visualizzare i dati in modo sempre aggiornato. Per fare questo abbiamo utilizzato la tecnologia ajax, che riesce ad aggiornare dopo un tempo stabilito solamente una parte di pagina, senza dover eettuare il caricamento completo, aumentando le prestazioni dellapplicazione. Grazie ad Ajax riusciamo a creare la tabella dove andiamo ad inserire i dati allinterno del database e grazie alla funzione fnReloadAjax(); riusciamo a tenerla aggiornata. Dopo varie prove e sapendo che non abbiamo lesigenza che i dati vengano aggiornati in modo molto veloce, abbiamo deciso come tempo di aggiornamento dieci secondi, in modo da non appesantire troppo lapplicazione web e da non aggiornare la pagina troppe poche volte. 4.5.5.2 show.gps

Scorrendo la lista di le ci imbattiamo nella pagina show.gps. Nella nostra applicazione per visualizzare i campi completi di un dato, ` necessario e selezionare il record che ci interessa. Inoltrandoci nel codice notiamo che, come nella pagina show.gps relativa agli allarmi, ` presente una tabella, dove a sinistra non abbie amo pi` le label relative agli allarmi, ma adesso le label si riferiscono a ci` che abbiamo u o dichiarato nella classe di dominio di SensorData, e a destra i valori relativi al dato preso in cosiderazione. Alla ne di questa tabella, come in quella relativa agli allarmi, troviamo i due pulsanti dedicati alla cancellazione e alla modica del dato. 66

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 anche una pagina create, che ` in grado di creare un dato. Questo ` stato fatto per eettuare e e delle prove, vedere qual` lallarme che si vuole selezionare in presenza del sollevamento e di pi` allarmi ecc... u Vedendo il codice, riusciamo a capire che la pagina ` strutturata come la pagina e create.gps relativa agli allarmi. Infatti troviamo una tabella dove sulla parte sinistra abbiamo il nome di ogni campo, mentre a destra troviamo il valore di default per ogni campo, il quale pu` (e dovrebbe) essere modicato. o Alla ne presenta un pulsante per avviare il processo di creazione. 4.5.5.4 edit.gps

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

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 questa pagina riuscivamo mano a mano a sistemarli senza agire dal database. Tuttavia, ora che i problemi sopracitati sono stati risolti, e dopo una lunga fase di testing, possiamo aermare che questa pagina non serve pi`. u Vedendo solamente la parte graca si pu` intuire che ` stata creata seguendo la o e pagina edit.gps degli allarmi, avente una tabella con due colonne, dove nella prima abbiamo lintestazione di ogni campo, mentre nel secondo i valori raccolti. Una volta modicati i valori si pu` registrare il lavoro tramite il pulsante Update o o cancellare direttamente il record con il pulsante Delete.

4.5.6

Gestione dei Mote

Nella sezione dedicata alla view dei waspmote, dobbiamo dare allutente un modo per interagire con le informazioni raccolte sui sensori. La nostra idea ` stata quella di sviluppare una prima pagina dove si possono scorrere e le informazioni raccolte in una tabella sempre aggiornata, e delle sottopagine per delle funzioni avanzate. La nostra directory avr` quindi: a list.gps map edit.gps 4.5.6.1 list.gps

Il nostro le list.gps deve permettere allutente nale di visualizzare tutti i dati relativi alle schede wasp. Questi dati sono dichiarati nella classe di dominio Sensormote. Inoltrandoci nel codice possiamo vedere che questa classe prende spunto dalla classe list.gps relativa ai dati, infatti anche qui abbiamo una porzione di codice in Ajax, la quale crea una tabella dove vengono inseriti i dati del database. In questo punto, a dierenza del le list.gps dei dati, la tabella ha un tempo di aggiornamento di 1 secondo, questo perch` i record relativi ai waspmote sono signicae 68

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 di refresh 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 allutente la possibilit` di visualizzare il collocamento a geograco delle varie schede di sensori. Per sviluppare questo, ci siamo serviti delle mappe di Google. Se studiamo il codice notiamo oltre al solito header, la barra dei menu e le opzioni di stile, la dichiarazione di una funzione Javascript. Questa funzione imposta il centro della mappa da visualizzare con lo zoom di default, e di seguito, per ogni waspmote, ricava le coordinate, per inserire dei marcatori nei luoghi indicati. Inne questo script viene richiamato nella divisione sotto la barra dei men`. u Grazie a questo lutente potr` visualizzare dove ` posizionato il sensore. a e 4.5.6.3 edit.gps

In questa pagina dobbiamo dare la possibilit` allutente di modicare i dati relativi al a mote. Questa pagina non ore una grande utilit` allutente nale, ma ` stata comoda a e 69

Interfaccia utente

Figura 4.22: Pagina edit.gps dei waspmote visualizzata sul browser realizzarla per lo sviluppo, dato che allinizio cerano molti problemi di connessione e quindi i dati risultavano sporchi e non veritieri. Grazie a questa pagina siamo riusciti a modicare i dati senza agire sul database e in maniera abbastanza veloce. Passando al codice, questa pagina implementa una tabella che ha nella sua colonna sinistra tutte le intestazioni dei campi, mentre sulla destra notiamo i relativi valori che possono essere modicati. Inoltre possiamo notare alla ne la dichiarazione di due pulsanti i quali hanno la funzione di aggiornare i dati nel database e nella lista, mentre laltro 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 allutente la possibilit` di scaricare infora mazioni in vari formati riguardanti sia gli allarmi, sia i dati che i waspmote. Abbiamo deciso di eettuare tutto questo in una sola pagina con una graca semplice ed intuitiva. Ovviamente la parte logica ` delegata al controller. e Data la premessa sopracitata abbiamo deciso che Preferences avr` solamente un le a .gps, la list. 4.5.7.1 list.gps

La funzione di questa pagina ` quella di dare allutente laccesso ai dati presenti nel e database in vari formati. Ci` viene fatto perch` magari lamministratore del sistema avr` bisogno di interfaco e a ciarsi con altri software per la gestione dellambiente lavorativo. Nel codice possiamo notare come la pagina si sviluppa in una tabella composta da 5 colonne, dove nella prima abbiamo inserito la lintestazione dei dati che si vogliono scaricare, mentre nelle altre colonne abbiamo solamente dei form che inoltrano la richiesta al controller il quale gestisce la parte logica.

4.5.8

Classi di controllo

Le classi di controllo contengono la logica dellapplicazione web. Infatti tramite le view vengono inoltrate le richieste che andranno al controller. 70

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 lestenzione .groovy. 4.5.8.1 SensorAlarmsController

Nel controllo degli allarmi viene denita la parte logica degli allarmi. Per ogni azione che si svolge nella pagina della web application esiste una logica specicata nel controller. Per esempio, nel creare un nuovo allarme, si specica una nuova istanza di SensorAlarms, gli si assegnano i parametri scelti e si ritorna un allarme completo. Come vediamo allinizio del listato notiamo che index ` la pagina di default, e nel e controllo degli allarmi questa viene reindirizzata alla variabile list, la quale raccoglie tutti i dati contenuti nel database. Tramite il collegamento che c` tra il view e il e controller, questi dati vengono inseriti nella tabella. Abbiamo inoltre la variabile save che dato un istanza di allarmi (tramite create), la salva nel database insieme ai parametri. Per vedere nello specico un allarme, abbiamo a disposizione la pagina show, che nel controller recupera lid dellallarme selezionato e lo mostra. Nel caso viene inserito il link in modo manuale e non esiste un allarme con lid specicato, viene ritornato un messaggio di errore. Il controller della pagina edit si basa sul passaggio dellid, nel caso non esiste un allarme con quellid allora verr` tornato indietro un messaggio di errore, nel caso esa istesse, viene ritornato lallarme desiderato, e quindi grazie alla relazione che c` tra e controller e view possiamo vedere nella tabella realizzata, i valori corretti. Inoltre abbiamo anche la possibilit` di cancellare un allarme. Questo ` possibile nella a e schermata di visualizzazione specica di un singolo allarme. Infatti in basso possiamo 71

Interfaccia utente vedere che c` un pulsante per cancellare lallarme (Delete). Questo pulsante cattura e lid dellallarme (se lazione viene svolta tramite un link inserito manualmente fa il controllo sullid passato) e prova a cancellarlo dal database restituendo un messaggio di riuscita o di fallimento. Inne il controller presenta un metodo, che per ogni dato verica se avviene il sollevamento di qualche allarme. 4.5.8.2 SensorDataController

In questo le viene scritta la logica della pagina dei dati. Se riusciamo a vedere i dati nella tabella, se possiamo creare, modicare, cancellare dati, ` grazie alla logica che viene implementata in questa classe. e Vedendola nello specico, la classe indirizza subito la pagina principale sulla pagina list.gps, il quale mostra tutti i dati nel database in una tabella realizzata da list.gps. Gli altri metodi specicati sono: Create Delete Edit Index List5 Save Show Upload Il metodo Create specica lazione della creazione di un nuovo record, crea una nuova istanza di SensorData, passa i parametri specicati in create.gps e ritorna listanza con i nuovi parametri impostati. Lazione Show serve per visualizzare un record di dati gi` esistente, passando come a parametro lid. La parte logica dellazione ricava lid e grazie a questo riempie i vari parametri visualizzati su show.gps. Ovviamente se lid viene inserito in modo manuale viene eettuato un controllo sullesistenza, e nel caso non dovesse esistere viene visualizzato un messaggio di errore e si viene reindirizzati alla pagina list.gps. Le uniche azioni abilitate una volta che viene eettuato il comando Show, sono Delete ed Edit Edit ` un azione simile a Show, solamente che i comandi che sono abilitati una volta e entrati in questa azione sono Delete e Update. Nella pagina edit.gps avremmo tutte textbox con i valori delle grandezze, in modo che si possono modicare, al contrario della pagina show.gps in cui abbiamo solamente delle label, questo perch` lazione show e non deve modicare nulla, ma ha il solo scopo di visualizzare il contenuto. Delete pu` essere svolta dopo che viene svolta lazione di Show o di Edit (non ` cos` o e solo se lazione viene svolta manualmente dalla barra degli indirizzi). Siamo quindi in possesso del dato da cancellare, quindi lazione svolta dal controller ` solamente quella e di cancellarla dal database restituendo un messaggio di conferma. 72

Interfaccia utente Update viene richiamato dopo una modica di un record di dati. Ha la funzione di aggiornare il contenuto di quel record. Una volta eettuata la modica, viene visualizzato il messaggio di conferma o di errore, e si ritorna alla pagina list.gps. Save ` simile ad Update ma viene svolta solamente per la creazione di un nuovo e record di dati. Come lazione precedente, anche Save restituisce degli errori nel caso vengono inseriti valori non consistenti. Nel caso non ci siano errori si viene reindirizzati nella pagina list.gps, dopo aver avuto un messaggio di conferma. List5 serve per creare un le di tipo json che poi viene passato sia alla tabella (serve da input per riempirla di valori), sia ai graci. Una volta richiamato in modo manuale visualizza 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 per farle visualizzare nei view. Lazione di default del controller ` Index il quale reindirizza il controllo allazione e List. List visualizza i dati relativi alle schede di sensori ordinate per id. La relazione che 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 Lazione Create costruisce un nuovo mote, ed ha il compito di passare a create.gps lintestazione dei campi e i relativi valori di default. Per fare questo viene creata una nuova istanza di SensorMote, vengono passati i parametri alla pagina del modello view e ritorna listanza creata con i parametri di default impostati. Show ha la funzione di ricavare i dati relativi ad uno specico mote. Il controller ricava lid e tramite questo riempie i vari parametri visualizzati su show.gps. Ovviamente se lid viene inserito in modo manuale viene eettuato un controllo sullesistenza, e nel caso non dovesse esistere viene visualizzato un messaggio di errore e si viene reindirizzati alla pagina list.gps. Le uniche azioni abilitate una volta che viene eettuato il comando Show, sono Delete ed Edit. 73

Interfaccia utente Edit ha la funzione di modicare un mote gi` esistente. E un azione simile a Show, a solamente che i comandi che sono abilitati una volta entrati in questa azione sono Delete e Update. Il controller passa al relativo view le intestazioni e i valori del mote specico, quindi nella pagina edit.gps avremmo tutte textbox con i valori delle grandezze, in modo che si possono modicare, al contrario della pagina show.gps in cui abbiamo solamente delle label, questo perch` lazione show non deve modicare nulla, ma ha il e solo scopo di visualizzare il contenuto. Delete ha la funzione di cancellare un mote dal database e di conseguenza dalla lista che viene visualizzata. Come nel controller dei dati pu` essere svolta dopo che viene o svolta lazione di Show o di Edit (non ` cos` solo se lazione viene svolta manualmente e dalla barra degli indirizzi). Come precedentemente detto, ricava lid del mote e lo cancella, noticando lavvenuto tramite un messaggio. Update ha la funzione di aggiornare un mote precedentemente modicato. Dato che deve svolegere questa funzione, viene richiamato dopo un Edit. Una volta eettuata la modica, viene visualizzato il messaggio di conferma o di errore, e si ritorna alla pagina list.gps. Save ha la funzione di registrare allinterno del database un mote che ` stato appena e creato. A livello di codice ` simile ad Update ma viene svolta solamente dopo lazione e di Create. Restituisce degli errori nel caso vengono inseriti valori non consistenti nellazione di creazione. Nel caso non ci siano errori si viene reindirizzati nella pagina list.gps, dopo aver avuto un messaggio di conferma. ListData serve per creare un le di tipo json riguardanti i Mote, che poi viene passato sia alla tabella di list.gsp(serve da input per riempirla di valori). Una volta richiamato in 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 ` quello di raccogliere dati dal database e incapsularli in e le di vari formati, che verranno poi passati al view. Questo serve per dare allutente nale la possibilit` di passare i dati in altre piattaforme. a Questo controller si articola in varie azioni: List4bis List4biscsv List4bisjson List4bisxml ListAlarms ListAlarmscsv ListAlarmsjson 74

Interfaccia utente ListAlarmsxml ListData ListDatacsv ListMotejson ListMotexml ProvaPmml List4bis, ListAlarms e ListData hanno il compito di raccogliere i dati e salvare il contenuto in un le di tipo testuale. Questi le raccolgono rispettivamente i record di Dati, Allarmi e Mote. Abbiamo scelto di rappresentare il le testuale come se fosse in Json, data la sua intuitivit`. a

Figura 4.26: Rendering dei dati in formato testuale sul browser List4biscsv, ListAlarmscsv e ListDatacsv hanno il compito di raccogliere i dati e salvare il contenuto in un le di tipo CSV5 . Questi le raccolgono rispettivamente i record di Dati, Allarmi e Mote e li incapsula in le .csv. I le di questo tipo possono essere 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 dati e salvare il contenuto in un le di tipo Json. Questi le raccolgono rispettivamente i record di Dati, Allarmi e Mote e li incapsula in le .json. Il browser da la possibilit` a di scaricare il le. List4bisxml, ListAlarmsxml e ListMotexml hanno il compito di raccogliere i dati e salvare il contenuto in un le di tipo XML6 . Questi le raccolgono rispettivamente i record di Dati, Allarmi e Mote e li incapsula in le .xml. Il le ha una struttura ad albero e il browser da la possibilit` di visualizzarlo. a
5 6

Comma-Separated Values eXtensible Markup Language

75

Tecnologie di implementazione

Figura 4.28: Download del le json

Figura 4.29: Download del le json

4.6

Tecnologie di implementazione

Per limplementazione di questa applicazione, ci siamo dovuti appoggiare a diverse tecnologie, alcune delle quali devono ancora svilupparsi. Le varie scelte si sono basate sopratutto su programmi open source di eccellenza, che orono servizi abbastanza buoni, che per le nostre esigenze sono pi` che ottime, senza nessuna spesa. u Di seguito tratteremo tutte le tecnologie utilizzate, elencandone i pregi e i difetti insieme alle motivazioni duso.

4.6.1

Groovy on Grails

Grails, o Groovy on Grails ` un framework open source per applicazioni Web progettae to per consentire unelevata produttivit` sulla piattaforma Java, rilasciato sotto licenza a Apache. Il termine piattaforma ` pi` esteso di linguaggio e in eetti Grails si appoggia e u a Groovy, un linguaggio dinamico, come linguaggio di programmazione principale. Groovy ` un linguaggio basato su Java adatto alla programmazione agile. Ha molte e caratteristiche in comune con Python, Ruby, Perl poich, come questi, ` un linguaggio di e e scripting orientato agli oggetti. Groovy ` pensato per aumentare la produttivit`, ovvero e a la velocit` con cui si sviluppano applicazioni: riduce il codice necessario e semplica a laccesso alle basi di dati. Integra tutti gli oggetti e le librerie Java e la compilazione 76

Tecnologie di implementazione

Figura 4.30: Logo Grails

Figura 4.31: Logo Groovy produce le in formato bytecode che si possono utilizzare in ogni situazione in cui si pu` usare Java. o Groovy pu` essere inoltre utilizzato come linguaggio di scripting da console e quasi o tutti i costrutti Java sono validi anche in Groovy. La sua potenza e semplicit` hanno a permesso lo sviluppo di Grails, considerato da molti sviluppatori un ottimo framework per lo sviluppo rapido di applicazioni web al pari di Rails. In comune con Java c` e la struttura base della grammatica (sia pure con qualche rilevante dierenza), ma soprattutto il fatto che il bytecode prodotto sia assolutamente simile a quello delle classi Java, caratteristica che permette di chiamare classi Java da Groovy e viceversa. Tra le altre caratteristiche di Groovy: Consente la modica a runtime di classi e metodi, ad esempio denendo un nuovo metodo di classe; mancano i punti e virgola ;, infatti in Groovy sono opzionali. Le istruzioni sono separate dal carattere di nuova linea; gestisce le liste e le espressioni regolari come costrutti built-in nel linguaggio; supporta i DSL (Domain-Specic Language) e altre sintassi compatte in modo che il codice sia facile da leggere e mantenere; supporta vari linguaggi di markup come XML ed HTML allinterno del codice di programmazione. Questa caratteristica permette di denire e manipolare molti tipi di dati eterogenei con una sintassi ed una metodologia di programmazione uniformi; loperatore == in Java: ha signicati diversi, per i tipi primitivi indica uguaglianza (di valori) mentre per gli oggetti indica identit` (stesso oggetto); a in Groovy: ` sempre luguaglianza di valori (equals() in Java), anche e perch non esistono in Groovy i tipi primitivi. Per indicare lidentit` di due e a oggetti si utilizza il metodo is(); 77

Tecnologie di implementazione la stringa in non pu` essere usata come nome di variabile in quanto ` una parola o e chiave; Cicli e contatori In Java: {for (int i=0; i < len; i++) {...} In Groovy: len.times {...} listruzione return alla ne dei metodi ` opzionale; e la parola chiave this pu` essere usata anche in contesti statici e indica la classe o in oggetto; metodi e classi hanno visibilit` pubblica di default; a Groovy non supporta la denizione di classi annidate; Groovy ` un linguaggio a tipizzazione dinamica, quindi non mostra errori in fase e di compilazione nel caso si utilizzino membri non dichiarati o passati ai metodi argomenti di tipo errato. Groovy ` un linguaggio di programmazione adatto a diversi tipi di utilizzo (general e purpose) che pu` essere utilizzato in molteplici contesti in quanto: o pu` essere impiegato in alcuni componenti di progetti scritti in Java poich medio e ante le chiusure e la sua sintassi compatta permette di esprimere comportamenti dicilmente esprimibili in Java; ` adatto per rappresentare e gestire strutture dati gerarchiche in quanto le sue e strutture dati, liste e mappe e le sue api, ad esempio i costruttori (builders) che implementano il design pattern builders, rendono semplice la manipolazione di le XML o strutture gerarchiche di altro tipo; non necessita di ambienti di esecuzioni particolari in quanto la sola precondizione di utilizzo ` la presenza della virtual machine Java, il che lo rende facilmente e impiegabile in molti scenari pratici e su sistemi operativi dierenti; 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 speciche di 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 Grails ` fatta tramite le GSP (Groovy Server Pages) che tipicamente restituiscono codice e HTML da far interpretare ai vari browser, inoltre questo componente include anche un layout essibile, template caratteristici e semplici librerie di tag. I controller (classi che fungono da arbitri) gestiscono tutte le richieste pervenute dai vari client e a seconda dellazione associata comunicheranno con gli altri due componenti. Inoltre i controller di Grails sono request-scoped, il che signica che viene creata una nuova istanza per ogni nuova richiesta. Grazie ai vantaggi di Groovy, Grails ` in grado di abbreviare il ciclo di sviluppo di e unapplicazione. Grazie al fatto che ` open source, che ` eciente ed adabile e dato che usa Groovy e e come linguaggio di programmazione che ` molto simile a Java e ci` non comporta un e o ulteriore tempo di apprendimento del linguaggio, la nostra scelta si ` concentrata su e questo framework. 78

Tecnologie di implementazione

4.6.2

AJAX

Figura 4.32: Logo Ajax Dal 2001 al 2005 il World Wide Web ` passato attraverso una crescita spaventosa in e termini di tecnologie e metodologie utilizzate per portare questo strumento statico alla vita. Le brochure e i cataloghi online hanno smesso di dominare Internet nel momento in cui le applicazioni web sono divenute una parte signicativa delle destinazioni online. Le applicazioni web si dierenziavano dai loro antenati siti web nellorire ai propri utenti un servizio immediato non solo di tipo informativo. Che lo scopo fosse la gestione di procedure commerciali o linteresse personale, gli sviluppatori erano costretti a creare nuovi paradigmi di interazione, visto che gli utenti iniziavano ad aspettarsi funzionalit` a pi` avanzate. u A condurre questo movimento ` stato Google. Dopo che il gigante dei motori di e ricerca usc` allo scoperto, iniziarono ad apparire nuovi esperimenti condotti dai suoi ingegneri da una sezione del sito chiamata Google Labs 7 . Molti dei progetti dei Google Labs, come Google Suggest e Google Maps, consistevano in ununica pagina web che pur non venendo mai scaricata veniva tuttavia costantemente aggiornata. Tali innovazioni, che cominciarono a portare le aordance delle interfacce dei software desktop entro i conni di un browser, furono elogiate in tutto il Web e considerate come lavvento di una nuova era dell sviluppo web. E lo furono davvero. Nel febbraio 2005 Jesse James Garrett di Adaptive Path LLC pubblic` online un o articolo intitolato Ajax: A new Approach to Web Applications8 , in questo scritto Garrett spiegava come, a suo avviso, le applicazioni web stessero colmando lo scarto fra il Web e le applicazioni desktop tradizionali. Malgrado la presenza di svariate FAQ9 a supplemento dellarticolo di Garret, rimane ancora una certa confusione su ci` che concerne la vera essenza di Ajax. In parole o semplici, Ajax non ` altro che un approccio allinterazione web. Tale approccio riguarda e la trasmissione di solo una piccola quantit` di informazioni da e verso il server, in a modo da orire allutente lesperienza pi` reattiva possibile. Invece dal modello di u applicazione web tradizionale, in cui il browser stesso si occupa di avviare richieste al server web e di processare le richieste provenienti da questultimo, il modello Ajax prevede un livello intermedio, che Garrett chiama motore Ajax (Ajax engine) atto a gestire tale comunicazione. Un motore Ajax ` in realt` un semplice oggetto o funzione e a JavaScript che viene chiamato ogni qual volta ` necessario richiedere informazioni al e server. A dierenza del modello tradizionale, che fornisce un collegamento a unaltra risorsa (per esempio unaltra pagina web), ogni collegamento esegue una chiamata al motore Ajax, che programma ad eseguire la richiesta. Essa viene eseguita in modo asincrono, ovvero lesecuzione del codice non attende una risposta prima di continuare.
7 8

labs.google.com Ajax. Un nuovo Approccio alle Applicazioni Web http://www.adaptivepath.com/ideas/essays/archives/000385.php 9 Frequently Asked Questions

79

Tecnologie di implementazione Il server, che solitamente servirebbe HTML, immagini, CSS o JavaScript, viene congurato per inviare dati che il motore Ajax pu` utilizzare. Questi dati possono essere o testo puro, XML, o qualsiasi altro pretalo. Quando il motore Ajax riceve la risposta dal server, passa allazione, spesso esaminando i dati e apportando svariati cambiamenti allinterfaccia utente basandosi sulle informazioni ricevute. Dato che questo processo comporta il trasferimento di una minore quantit` di informazioni rispetto al tradizionale modello di applicazione web, lina terfaccia utente viene aggiornata pi` velocemente, e lutente ` in grado di svolgere il u e proprio lavoro con maggiore ecienza.

Figura 4.33: Dierenze fra il modello web tradizionale e quello di Ajaxl Essendo un nuovo modello di applicazione web, Ajax ` ancora nella sua prima ine fanzia. Tuttavia molti sviluppatori web hanno considerato questo nuovo sviluppo come una sda. La sda ` distinguere ci` che rende ottima unapplicazione web Ajax da ci` e o o che rende la rende pessima o mediocre. Michael Mahemo10 , sviluppatore di software ed esperto di usabilit`, ha identicato svariati principi chiave di ottime applicazioni a Ajax: Traco minimo: le applicazioni Ajax dovrebbero ricevere e inviare la minor quantit` di informazioni possibile da e verso il server. Insomma, Ajax pu` minia o mizzare il traco fra client e server. Assicurarsi che la propria applicazione Ajax non invii e riceva informazioni inutili ne favorisce la robustezza.
10

www.mahemo.com

80

Tecnologie di implementazione Niente sorprese: le applicazioni Ajax solitamente introducono modelli di interazione utente diversi rispetto alle applicazioni web tradizionali. A dierenza dello standard web di fare clic e attendere, alcune applicazioni Ajax si servono di altri paradigmi di interfaccia, quali drag and drop o il doppio clic. A prescindere da quale modello di interazione utente si scelga, si mantenga una generale coerenza, in modo che lutente sappia sempre come agire. Convenzioni prestabilite: non si perda tempo a inventare nuovi modelli di interazione utente che risulteranno estranei agli utenti nali. Meglio prendere a prestito il pi` possibile da applicazioni web e desktop tradizionali, cos` da avere u una curva dapprendimento minima. Nessuna distrazione: evitare elementi di pagine inutili e che distraggono, come animazioni continue, e sezioni di pagina lampeggianti. Espedienti di questo tipo distolgono lutente da ci` che stanno cercando di realizzare. o Accessibilit`: tenere presente chi saranno i propri utenti primari e secondari a e come interaggiranno con lapplicazione Ajax. Evitare di progettare unapplicazione che possa tagliare fuori completamente un tipo di pubblico inaspettato. I propri utenti impiegheranno browser pi` datati o software speciali? Meglio u saperlo con anticipo regolarsi di conseguenza. Evitare intreri caricamenti di pagina: tutta la comunicazione con il server dopo liniziale caricamento di pagina deve essere gestita dal motore Ajax. Non si comprometta lesperienza utente caricando piccole quantit` di dati in un punto a ed eseguendo interi caricamenti di pagina in un altro. Lutente innanzi tutto: progettare lapplicazione Ajax pensando allutente prima di ogni altra cosa. Cercare di semplicare al massimo gli utilizzi pi` comuni, u senza farsi prendere troppo da questioni come linserimento di pubblicit` o di a eetti piacevoli. Il comune denominatore di tutti questi principi ` lusabilit`. Lo scopo primario di e a Ajax ` migliorare lesperienza web dei propri utenti; la tecnologia che lo permette ` e e semplicemente un mezzo per tale ne. Attenendosi a tali principi qui elencati, si pu` o essere ragionevolmente sicuri che la propria applicazione Ajax risulter` utile e usabile. a

81

Tecnologie di implementazione

4.6.3

MySQL

Figura 4.34: Logo MySQL Il database MySQL R ` diventato il database open source pi` conosciuto al mondo e u ` grazie a prestazioni veloci, elevata adabilit` e facilit` duso. E utilizzato in ogni a a continente, anche in Antartide, da singoli sviluppatori Web e da molte delle aziende pi` grandi e in pi` rapida espansione del mondo, tra cui leader di settore come Yau u hoo!, Google, Alcatel-Lucent, Nokia, YouTube e Zappos.com., per risparmiare tempo e denaro potenziando siti Web con volumi daccesso elevatissimi, sistemi business-critical e pacchetti di soluzioni software. ` MySQL non ` soltanto il database open source pi` famoso al mondo. E diventato e u anche il database utilizzato per una nuova generazione di applicazioni basate sullo stack LAMP (Linux, Apache, MySQL, PHP / Perl / Python). MySQL pu` essere eseguito o su pi` di 20 piattaforme, tra cui Linux, Windows, Mac OS, Solaris, HP-UX, IBM AIX, u orendo quella essibilit` che mette lutente al comando. a Sia che abbiate scarsa esperienza della tecnologia dei database o che siate esperti sviluppatori o DBA, MySQL propone unoerta completa di software certicato, assistenza, formazione e consulenza che vi permetter` di raggiungere i vostri obiettivi. a MySQL ` un Relational database management system (RDBMS), composto da un e client con interfaccia a caratteri e un serve. Dal 1996 supporta la maggior parte della sintassi SQL e si prevede in futuro il pieno rispetto dello standard ANSI. Possiede delle interfacce per diversi linguaggi, compreso un driver ODBC, due driver Java, un driver per Mono e .NET ed una libreria per python. Il codice di MySQL venne sviluppato n dal 1979 dalla ditta TcX ataconsult, poi rinominata MySQL AB, ma ` solo dal 1996 che viene distribuita una versione che e supporta SQL, prendendo spunto da un altro prodotto: mSQL. La nostra scelta ` ricaduta su questo database, oltre perch ` open source, ma e e e sopratutto per lesperienza nel settore. Il mondo legato a MySQL ` molto vasto, infatti il web ` pieno di forum dedicati a e e questo database e quindi informarsi per lutilizzo ed il funzionamento ` molto facile. e

4.6.4

Google maps

Google Maps (nome precedente Google Local) ` un servizio accessibile dal relativo sito e web e che consente la ricerca e la visualizzazione di mappe geograche di buona parte della Terra. Oltre a questo ` possibile ricercare servizi in particolari luoghi, tra cui e ristoranti, monumenti, negozi, trovare un possibile percorso stradale tra due punti e visualizzare foto satellitari di molte zone con diversi gradi di dettaglio (per le zone che 82

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 quali sono riferite alla ne degli anni novanta. Oltre a queste funzioni, Google Maps ore anche una ricerca di attivit` commerciali sulle stesse mappe. a Un difetto ` che non sono ortofoto, ossia sono schiacciate per essere adattate alla e proiezione cartograca. Ci` ` evidente se le immagini vengono confrontate con, ad o e esempio, quelle dellIstituto Geograco Militare o del Portale Cartograco Nazionale. Google mette a disposizione le proprie API per la visualizzazione della mappa e la possibilit` di inserire delle puntine con relativa didascalia in posizioni scelte da noi. a Le scelte riguardo lutilizzo di Google maps sono dovute per il vasto predominio nel settore, e sopratutto per il suo sicuro sviluppo. Possiamo comunque dire che un valido nemico nel campo della geolocalizzazione ` e sicuramente Yahoo! Maps.

83

5. Impiego statistico dei dati rilevati


5.1 Introduzione

Le potenzialit` oerte dal sistema Ambient Monitoring non si concludono con ci` che a o abbiamo descritto nei capitoli precedenti. Infatti il nostro sistema si pu` espandere o con luso di sistemi statistici. Grazie a questi sistemi possiamo eliminare la parte della nostra applicazione relativa agli allarmi per farli gestire al sistema esterno. La conseguenza di questo ausilio ` la minor centralizzazione del sistema ed il minor peso e dellapplicazione creata. In questo capitolo, ci concentreremo sullo studio dei sistemi statistici, del loro funzionamento e dei loro componenti. Inne vericheremo, tramite un test mirato, leettiva ecienza del sistema statistico.

5.2

Tecnologie di apprendimento dati

Con la terminologia Tecnologie di apprendimento dati ci riferiamo allestrazione o scoperta di nuove informazioni sottoforma di pattern (modelli) o regole a partire da grandi quantit` di dati. Grazie alla scoperta di nuovi dati, riusciamo ad ottenere a informazioni grezze, che poi in un secondo processo di elaborazione, potranno essere utili per le nostre applicazioni. Grazie a questo processo, quindi, riusciamo ad avere una base su cui sviluppare la nostra applicazione. Per essere utile, il data mining1 deve essere eseguito in maniera eciente su le e basi di dati di dimensioni elevate. Esistono due stili di apprendimento dati : supervisionato e non supervisionato. Lapprendimento dei dati supervisionato ` un approccio top down, applicabile quando e sappiamo che cosa stiamo cercando, e assume spesso la forma di modelli previsionali (in cui ` chiaro lobiettivo da prevedere). Laltro stile, lapprendimento dei dati non e supervisionato, ` un approccio bottom up, vale a dire in cui si lascia che i dati stessi e indichino un risultato: una volta individuati i modelli dipende dallutente stabilirne limportanza. Diciamo, innanzi tutto, che non si tratta di due approcci che si escludono a vicenda, anzi in molti casi ` necessario ricorrere ad ambedue. Anche volendo costruire un e modello previsionale vale sempre la pena cercare di individuare modelli e andamenti utilizzando tecniche non supervisionate. Se per esempio si volesse eettuare uno studio
1

estrazione di dati

Tecnologie di apprendimento dati sul marketing, si possono individuare nuovi segmenti di clientela e trarne suggerimenti utili per migilorare i risultati dei modelli supervisionati. Nei rapporti sulle tendenze di mercato, come il famoso Gartner Report2 , il data mining ` stato indicato come una delle tecnologie pi` importanti per il prossimo futuro. e u La scoperta di conoscenza nelle basi di dati, in genere abbreviata come KDD (knowledge discovery in database), comprende tipicamente ben pi` del datamining. Il prou 3 : selezione dei dati, pulizia dei cesso di scoperta di conoscienza ` costituito da sei fasi e dati, arricchimento, trasformazione o codica dei dati, data mining e presentazione e visualizzazione delle informazioni scoperte. Una volta svolte le attivit` di pre-elaborazione vengono applicate le tecniche di data a mining per estrarre le varie regole e pattern. Il risultato del data mining pu` scoprire: o regole di associazione: ad esempio, ogni volta che un cliente acquista unapparecchiatura video o compera un altro gadget elettronico; pattern sequenziali: ad esempio si supponga che un cliente acquisti una macchina fotograca e che nel giro di tre mesi comperi prodotti fotograci, allora entro sei mesi verosimilmente acquister` un accessorio. Questo denisce un pattern a sequenziale di transazioni; alberi di classicazione: ad esempio, i clienti possono essere classicati in base alla frequenza delle visite, secondo i tipi di nanziamento a cui ricorrono, per quantit` di prodotti acquistati o per la propensione ad alcuni tipi di prodotti; a sulle varie classi ` possibile calcolare statistiche rivelatrici. e Esistono, quindi, molte possibilit` per scoprire nuova conoscenza sui pattern di aca quisto mettendo in relazione fattori come let`, il reddito, il luogo di residenza, con a quali e quanti prodotti vengono acquistati dai clienti. Queste informazioni possono poi essere utilizzate per localizzare nuove sedi di vendita in base alla presenza demograca, per eseguire promozioni, per abbinare i prodotti nella pubblicit` oppure per progettare a strategie di vendite stagionali. Ovviamente il data mining deve essere preceduto da una signicativa preparazione dei dati prima che possa fornire informazioni utili in grado di inuenzare 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 landamento futuro di certi attributi dei dati. Esempi di data mining predittivo comprendono lanalisi delle transazioni di acquisto per predire ci` che i consumatori acquisteranno con cero ti sconti, quali volumi di vendita realizzer` un negozio in un dato periodo e se a leliminazione di una linea di prodotti porter` maggiori protti. In queste applia cazioni, la logica commerciale viene usata insieme al data mining. In un contesto scientico, certi pattern di onde sismiche possono predire un terremoto con alta probabilit`. a
` un esempio di molteplici pubblicazioni di indagine sulle tecnologie su cui i dirigenti dazienda si e basano per prendere decisioni circa le scelte tecnologiche. 3 Questa descrizione si basa ampiamente su Adriaans e Zantinge (1955).
2

86

Tecnologie di apprendimento dati Identicazione: i pattern di dati possono essere usati per identcare lesistenza di un articolo, un evento o unattivit`. Ad esempio, intrusi che cercano di violare a un sistema informatico possono essere identicati attraverso i programmi eseguiti, i le aperti e il tempo di CPU per sessione. Regole di associazione: queste regole mettono in relazione la presenza di un insieme di elementi con una serie di valori di un altro insieme di variabili. Esempi: (1) quando una donna acquista una borsetta ` probabile che comperi anche le e scarpe; (2) unimmagine a raggi X che contiene le caratteristiche a e b ` probabile e che mostri anche la caratteristica c. Gerarchie di classicazione: lo copo ` elaborare un insieme di eventi o transazioni e per creare una gerarchia di classi. Esempi: (1) una popolazione pu` essere divisa o in cinque fasce di adabilit` di credito in base alla storia delle richieste di creda ito precedenti; (2) ` possibile sviluppare un modello dei fattori che determinano e lattrattivit` della locazione di un negozio in una certa zona su scala 1 a 10; (3) i a fondi comuni dinvestimento possono essere classicati in base ai dati relativi alle prestazioni usando caratteristiche come le quotazioni, la rendita e la stabilit`. a Pattern sequenziali: viene creata una sequenza di azioni o di eventi. Esempio: se un paziente ` stato sottoposto a un intervento chirurgico di inserimento di un e bypass cardiaco a causa delle arterie ostruite e di un aneurisma e nel giro di un anno si trova un alto livello di urea nel sangue, ` probabile che entro 18 mesi sora e di insucienza renale. La scoperta di pattern sequenziali equivale alla scoperta di unassociazione tra eventi con determinate relazioni temporali. Pattern allinterno di serie temporali: si possono scoprire somiglianze tra le posizioni di una serie temporale di dati, che ` una sequenza di dati rilevata e ad intervalli regolari, come prezzi di vendita o di chiusura giornalieri delle azioni. Esempi: (1) le azioni di una societ` di utility, Energia ABC, e di una societ` a a nanziaria, Titoli XYZ, hanno mostrato lo stesso pattern durante il 2002 in termini di prezzo di chiusura delle azioni; (2) due prodotti presentano lo stesso pattern di vendite in estate, ma un diverso pattern in inverno; (3) un pattern del vento magnetico solare pu` essere usato per predire i cambiamenti nelle condizioni o atmosferiche della Terra. Raggruppamenti: una certa popolazione di eventi o di elementi pu` essere o partizionato (segmentato) in insiemi di elementi simili. Esempi: (1) unintera popolazione di dati riguardanti la cura di una malattia pu` essere divisa in o sottogruppi basati sulla somiglianza degli eetti collaterali; (2) la popolazione adulta degli Stati Uniti pu` essere classicata in cinque gruppi, da quello che o acquista con probabilit` pi` alta a quello che acquista con probabilit` pi` basa u a u sa un nuovo prodotto; (3) gli accessi Web eseguiti da un insieme di utenti a una serie di documenti, ad esempio in una biblioteca digitale, possono essere analizzati 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 ` una combinazione e delle diverse tipologie. 87

Classicazione

5.3

Classicazione

La classicazione ` il processo che consiste nel trovare un modello che descrive delle e classi di dati, allo scopo di predirre il valore della classe su dati sconosciuti. Un classicatore (detto anche modello) pu` essere descritto come una funzione che o mappa gli elementi di un insieme in certe classi o gruppi. Nel caso di classicazione supervisionata, linsieme dei dati da classicare contiene una suddivisione in classi, rispetto alal quale ` possibie valutare la qualit` del risultato prodotto. e a Il classicatore divide il suo compito in due passi: Costruzione del modello a partire dal training set, si denisce un modello. la qualit` del modello ` validata mediante una porzione del training set non a e utilizzata per la costruzione del modello (test set). Uso del modello mediante il modello si assegna letichetta di classe a nuovi dati non etichettati In un problema di classicazione binaria linsieme dei dati da classicare ` suddiviso e in due classi che possiamo indicare convenzionalmente come positivi (p) o negativi (n). Gli esiti dellapplicazione di un cassicatore binario rientrano in una delle seguenti quattro categorie. 1. Il classicatore produce il valore p1 partendo da un dato appartenente alla classe p. Si dice che il classicatore ha prodotto un vero positivo (VP). 2. Il classicatore produce il valore p1 partendo da un dato appartenente alla classe n. Si dice che il classicatore ha prodotto un falso positivo (FP). 3. Il classicatore produce il valore n1 partendo da un dato appartenente alla classe n. Si dice che il classicatore ha prodotto un vero negativo (VN). 4. Il classicatore produce il valore n1 partendo da un dato appartenente alla classe p. Si dice che il classicatore ha prodotto un falso negativo (FN). In base a questo, possiamo ricavare due propriet` di un classicatore, la sensibilit` a a e la specicit`. a La sensibilit` di un test si ottiene rapportando il numero di veri positivi al totale a delle istanze positive sensibilit` = a VP V P + FN

La specicit`, invece, si riferisce alla capacit` di individuare i veri negativi sulle a a istanze negative. specicit` = a VN V N + FP

In passato era molto dicile eettuare il training di una rete neurale o procedere alla costruzione di un albero decisionale, perch tali operazioni richiedevano una codica e 88

Clustering specica per ogni caso. Fortunatamente gli strumenti per il data mining hanno risolto gran parte dei problemi legati alla costruzione dei modelli, oltre a orire ambienti graci molto meno ostici in cui lavorare. Quindi, in un certo senso, la vera e propria costruzione dei modelli ` diventata la fase meno impegnativa del processo di data mining, perch` e e tutto sostanzialmente si riduce a posizionare il puntatore e fare clic. Se non si hanno problemi di tempo, spesso ` possibile costruire diversi modelli con lo e stesso insieme di dati. In genere non si sa quali siano lalgoritmo e il set di parametri migliori ed ` solo provando e riprovando che si pu` stabilire quale sia il migliore rispetto e o a quei dati. I dettagli specici della fase di training del modello dipendono naturalmente dallalgoritmo prescelto e dallo strumento utilizzato: alcuni strumenti possono generare diversi modelli e scegliere automaticamente il migliore; altri invece sono pi` interattivi, u per cui la scelta del modello ritenuto migliore ` lasciata allutente. e Il classicatore ` ci` che serve nella nostra applicazione per evitare limplementazione e o della classe degli allarmi. Infatti, una volta che si ha una grande quantit` di dati a a disposizione, possiamo usare questo strumento per decidere se un determinato record di dati pu` generare un allarme. o

5.4

Clustering

La precedente attivit` di data mining di classicazione si occupa del partizionamento a dei dati usando un campione di training pre-classicato. Spesso, pper`, risulta utile o partizionare i dati senza avere un campione di training. Questo ` noto anche come e apprendimento non supervisionato (unsupervised learning). Ad esempio, per le aziende pu` essere importante determinare i gruppi di clienti aventi pattern di acquisto o simili oppure, in medicina pu` essere importante individuare i gruppi di pazienti che o manifestano reazioni analoghe a farmaci prescritti. Lobiettivo del clustering ` quele lo di collocare record allinterno di cluster (raggruppamenti). I record in un cluster sono simili fra loro e dissimili da quelli negli altri cluster. I cluster sono generalmente disgiunti. Un aspetto importante del clustering ` la funzione di similarit`. Tipicamente questa e a funzione basata sulla distanza viene usata quando i dati sono numerici. La distanza Euclidea ne ` un esempio. Si considerino due punti n-dimensionali (record) rj e rk , e e come valore della i-esima dimensione per i due record, rispettivamente rji e rki . La distanza Euclidea tra i due punti rj e rk nello spazio n-dimensionale ` calcolata come: e Tanto minore ` la distanza tra i due punti, tanto maggiore ` la loro similarit`. e e a

5.5

Tecniche e algoritmi di data mining

Poich il data mining ` spesso considerato argomento da tecnici, si ha spesso lime e pressione che per utilizzarlo al meglio sia necessario studiare algoritmi sosticati e le tecniche per applicarli. Tuttavia laspetto tecnico ` solo una piccola parte del processo e di apprendimento e applicazione, senza dimenticare che ` una parte importante. Se e infatti non si ha una conoscenza abbastanza approfondita dei principali algoritmi usati nel data mining, non si potr` comprendere quando ` utile una tecnica e quando invece a e unaltra potrebbe essere pi` adatta. E necessario inoltre scoprire come funziona un u 89

Tecniche e algoritmi di data mining modello per comprendere il modo migliore per preparare linsieme di dati necessari alla sua costruzione e come utilizzare diversi parametri per migliorarne i risultati. Fortunatamente, per fare buon uso degli algoritmi non ` necessario essere degli esperti e di apprendimento automatico o di statistica. Proprio come ` possibile fare meravigliose e fotograe senza sapere attraverso quali meccanismi lesposizione alla luce pu` indurre il o cambiamento cromatico delle sostanze chimiche fotosensibili nellemulsione, ` possibile e fare buon uso degli strumenti di data mining senza conoscere tutto nei minimi dettagli. Ma per lo stesso assunto, proprio come ` necessaria una certa conoscenza del processo e fotograco per scegliere correttamente le pellicole, lapertura del diaframma e il tempo di posa, ` necessaria anche una conoscenza, seppur minima, dei principali algoritmi di e data mining, a tutti color oche si volessero cimentare in questarte.

5.5.1

K-means

Esistono approcci matematici per individuare cluster e sullargomento sono stati scritti or ori di libri. Alcuni metodi, detti divisivi, partono dal presupposto che tutti i irecord facciano parte di un solo grande cluster. Questo gruppo viene poi spezzettato in sottogruppi, a loro volta suddivisi ulteriormente, nch a ogni record corrisponde e un cluster. A ogni fase successiva, viene rilevata una certa misura dellentit` della a suddivisione, di modo che alla ne la scelta cada sul set di cluster migliori. Altri metodi, detti agglomerati, compiono il percorso esattamente inverso: ogni record occupa un cluster diverso e i diversi cluster sono aggregati in modo da ottenere uno unico che raccolga tutti i record. Ci sono poi le mappe auto-organizzanti, un tipo particolare di reti neurali che possono essere impiegate nella rilevazione del cluster. Lalgoritmo k-means, qui descritto, viene utilizzato in una grande variet` di strua menti di data mining disponibili sul mercato ed ` forse quello di pi` facile compresione. e u Preferisce input prevalentemente numerici. Per darvi un esempio di clustering, prendiamo lanalisi del comportamento degli acquisti nei supermercati in base ai dati raccolti con le carte fedelt`. Si prende ciascun cliente e si crea un campo per il totale dei a prodotti acquistati presso diversi reparti del supermercato in un determinato arco di tempo: latticini, carne, cereali, prodotti freschi e cos` via. Si tratta di dati numerici, quindi il clustering con k-means ha vita facile. In eetti, lalgoritmo identicher` quei a cluster o gruppi di clienti accomunati da comportamenti analoghi. Innanzi tutto, scegliamo k dati che dovranno diventare i semi, in modo pi` o meno u arbitrario. Ogni seme rappresenta un cluster in embrione con un unico elemento. Nel nostro esempio, k ` uguale a 3. Nella fase successiva, assegniamo ongi record al cluster e con il centroide pi` vicino. u 90

Tecniche e algoritmi di data mining

Figura 5.1: k-means: fase 1 Proseguendo con lapplicazione dellalgoritmo k-means bisogna fare attenzione a quanto succede al punto racchiuso da un quadrato. Sulla base dei semi iniziali, questo punto viene assegnato al cluster controllato dal seme 2, essendo a questo pi` vicino che u non agli altri. Si trova infatti dal lato del seme 3 della perpendicolare che separa i semi 1 e 3, dal lato del seme 2 della perpendicolare che separa i semi 2 e 3 e dal lato del seme 2 della perpendicolare che separa i semi 1 e 3.

Figura 5.2: k-means: fase 2 Ora, ogni punto ` stato assegnato esattamente a uno dei tre cluster centrati intorno al e seme 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 ogni dimensione. Si ricordi che il clustering k-means richioede valori numerici. E possibile perci` calcolare la posizione media considerando la media di ciascun campo. Se a un o cluster sono assegnati 200 record e stiamo conducendo il processo di aggregazione di questi record su quattro campi, allora avremo da un punto di vista geometrico 200 punti in uno spazio quadrimensionale. La posizione di ciascun record ` descritta da e quattro campi, con la forma (x1 , x2 , x3 , x4 ): il valore x1 per il nuovo centroide ` una e media 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 pi` prossimo. u 91

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 centroidi prosegue nch i conni dei cluster non variano pi`. Fortunatamente, nella maggior e u parte dei casi, bastano un paio di iterazioni per ssare i conni denitivi.

5.5.2

Alberi decisionali

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

Figura 5.4: Albero decisionale sono essere visualizzati come coordinate di uno spazio multidimensionale. Lapproccio geometrico ` utile anche per illustrare meglio il funzionamento degli alberi decisionali. e Ogni ramo dellalbero decisionale rappresenta un test su una singola variabile che segmenta lo spazio in una o pi` parti. Per semplicare, prendiamo un esempio facile con u due sole variabili di input, X e Y. Queste variabili hanno valori che vanno da zero a cento. Ogni ramicazione deve essere necessariamente binaria, vale a dire che a ogni nodo dellalbero il record sar` assegnato a destra o a sinistra in base a un test su X o a Y. Nella relativa gura ` stato costruito un albero no al livello massimo di espansione, e che si ottiene quando ogni foglia contiene una sola specie di dinosauri (nodi puri). Lalbero tuttavia, per quanto sia una descrizione accettabile di questo particolare in92

Tecniche e algoritmi di data mining sieme di stegosauri e triceratopi, dicilmente riuscirebbe in modo altrettanto egregio a classicare un altro gruppo di rettili preistorici. Il motivo ` che lalbero descrive con precisione i dati su cui ` stato costruito e dife e cilmente potr` essere generalizzato per un altro campione ricavato dalla stessa popoa lazione. Il problema ` noto come overtting (ipermodellamento o sovradattamento). e Tralasciando per ora il problema, ci accingiamo alla classicazione di un dinosauro sconosciuto che ha come due caratteristiche X = 40 e Y = 75. Partendo dal nodo radice ci spostiamo sulla destra, perch` il valore di Y ` superiore e e a 50; poi, dato che il valore di X non ` superiore a 80, classichiamo lignoto dinosauro e come triceratopo. Allo stesso modo, osservando il graco 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 ricorsivo. Si treatta di un processo iterativo di divisione dei dati in partizioni destinate ad essere a loro volta suddivise in altre sottopartizioni. Allinizio tutti i record del set di addestramento (vale a dire i record preclassicati che sono impiegati per determinare la struttura dellalbero) si trovano in un unico gruppo. Lalgoritmo quindi tenta di dividere i dati, utilizzando ogni possibile suddivisione binaria per ogni campo. Quindi, se il campo et` pu` assumere 72 valori, compreso tra 18 e 90, allora la prima segmena o tazione avviene tra chi ` maggiore di 18 e chi ` pari di 18. La divisione successiva ` e e e fra tutti quelli che hanno 18 o 19 anni, e tutti coloro che hanno 20 anni o pi` e cos` u via. Lalgoritmo sceglie la segmentazione che crea due partizioni di dati pi` pure delu loriginale. Questo processo di creazione di partizioni viene poi applicato a ogni nuova casella, nch non si trovano pi` segmenti utili. Quindi il nucleo dellalgoritmo ` la e u e regola che determina la segmentazione iniziale.

5.5.3

Regressione

La regressione ` unapplicazione speciale della regola di classicazione. Se una regola di e classicazione viene considerata come una funzione sulle variabili che mappa tali variabili in una classe di destinazione, ` chiamata regola di regressione. Unapplicazione e generale della regressione si verica quando, invece di mappare una tupla di dati di una relazione in una classe specica, si predice il valore di una variabile in base a quella tupla. 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 su un paziente. La variabile di destinazione che si desidera prevedere ` P, la probabilit` e a di sopravvivenza del paziente. La regola di regressione ha quindi la forma seguente: (esame 1 in intervallo1 ) and (esame 2 in intervallo2 ) and . . . (esame n in intervallon ) 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 ` detta funzione di regressione per la predizione di P. In generale, se e la funzione ha la forma y = f (x1 , x2 , . . . , xn ) e f ` lineare nelle variabili di dominio xi , il processo di derivazione di f da un dato e insieme di tuple per < x1 , x2 , . . . , xn , y > ` chiamato regressione lineare. La regrese 93

Tecniche e algoritmi di data mining sione lineare ` una tecnica statistica comunememnte usata per adattare un insieme di e osservazioni o di punti in n-dimensioni rispetto alla variabile di destinazione y. Lanalisi di regressione ` uno strumento molto comune per lanalisi dei dati in molti e domini di ricerca. La scoperta della funzione di predizione della variabile di destinazione equivale a unoperazione di data mining.

5.5.4

Reti neurali

Le reti neurali sono la tecnica pi` nota di data mining, derivata dalla ricerca nel u campo dellintelligenza articiale che utilizza la regressione generalizzata e fornisce un metodo iterativo per eseguirla. Essa cerca di simulare il funzionamento dei neuroni presenti negli organismi biologici. Si tratta di modelli computazionali che si ispirano direttamente al funzionamento del cervello e che, almeno per il momento, si trova ancora allo stadio primitivo della ricerca (i primi studi sullargomento iniziarono negli anni 40 ma fu solo negli anni 80 che cominciarono a nascere le prime applicazioni). Le reti neurali forniscono un approccio basato su interpolazione (curve-tting) per inferire una funzione da un insieme di campioni. Tale tecnica costituisce un approccio di apprendimento; ` governata da un campione che viene usato per linferenza iniziale e e lapprendimento. Con questo metodo le risposte a nuovi input possono essere interpolate dagli esempi noti. Tuttavia, questa interpolazione dipende dal modello della realt` a (rappresentazione interna del dominio del problema) adottata. Le reti neurali, a grandi linee, possono essere classicate in due categorie: le reti supervisionate e quelle non supervisionate. I metodi adattivi che tentano di ridurre lerrori in output realizzano un apprendimento supervisionato, mentre quelli che sviluppano rarppresentazioni interne senza campioni sono chiamati metodi di apprendimento non supervisionato. Una rete neurale ` costituita, secondo la terminologia adottata, da due strati (layer ) e di neuroni, uno di input e uno di output. Ogni input x e y ` un nodo della rete. In e genere, i valori delle variabili di input entrano nel layer di input solo dopo essere stati sottoposti a una trasformazione. Ogni unit` di input ` connessa allunit` di output, i a e a pesi di input vengono elaborati secondo una funzione di combinazione (in genere una sommatoria come in questo caso) e sono sottoposti a una funzione di trasferimento, il cui risultato ` loutput della rete. Insieme, funzioni di combinazione e trasferimento e costituiscono la regola o funzione di attivazione. Il valore prodotto dalla regola di attivazione ` una trasformazione del risultato atteso: in questo caso, la rete infatti ha e un output pari a z + 1, invece che a z. Proprio come alcune funzioni vengono applicate alle variabili di input per generare input adatti alle reti neurali, ` necessario ricorrere e ad altre funzioni delloutput della rete per tradurli nuovamente nei valori della variabile target. Le reti neurali, nella maggior parte dei casi, non si limitano ai soli livelli di input e di output. Esistono talvolta pi` strati di unit` tra il layer di input e quello di output: u a questi sono gli strati nascosti (hidden layer ) e le unit` che li compongono sono le unit` a a nascoste. Il training delle reti neurali si basa sul calcolo dei pesi, in modo che la rete stimi con la migliore approssimazione possibile la funzione sottostante, o, in termini di data mining, faccia del proprio meglio nel prevedere la variabile target. Si tratta di un problema di ottimizzazione, ma in sintesi, i software per la costruzione di modelli di reti neurali usano sostanzialmente una tecnica nota come retropropagazione (backpropagation). 94

Software KNIME Essa si articola in tre fasi: 1. La rete riceve un dato in ingresso di training e con i pesi a disposizione calcola loutput (o gli output) per quel dato. 2. La retropropagazione calcola quindi lerrore considerando la dierenza tra il risultato calcolato e il risultato atteso. 3. Lerrore viene impiegato per aggiornare i pesi secondo un meccanismo di propagazione allindietro dellerrore. Utilizzare lerrore per modicare i pesi ` la parte critica di ogni algoritmo di propagazione. e Nella retropropagazione classica, a ciascuna unit` viene attribuita una responsabilit` a a specica dellerrore. Per esempio, nello strato di output con una sola unit`, quellunit` a a ` responsabile dellintero errore. Sar` questa unit` poi ad attribuire una responsabilit` e a a a di errore a ciascun input proveniente dallo strato nascosto, e cos` via, se esiste pi` di un u livello nascosto. Il meccanismo specico non ` importante. Basti dire qui che si tratta e di unoperazione matematica complessa che richiede derivate parziali della funzione di trasferimento. Dunque, dato lerrore, in che modo lunit` aggiorna i pesi? Inizia misurando la a variazione del proprio output a ogni input, vale a dire che calcola se le modiche del peso su ogni input aumenterebbero o diminuirebbero lerrore. Lunit` poi modica il a peso per ridurre, senza eliminare, lerrore. Laggiustamento dellerrore per ogni esempio del set di addestramento consente di trovare gradualmente linsieme di pesi ottimali per il calcolo di quella funzione. Ricordate, lo scopo ` di generalizzare e identicare i pattern e di input, non di memorizzare il set di addestramento. I pesi, dopo che ` stato visto e un numero suciente di esempi per il training, non variano pi` in modo signicativo u e lerrore non si riproduce pi`. A questo punto il training ` nito: la rete ha appreso u e linput. Le reti neurali si autoadattano, cio` imparano dalle informazioni su uno specico e problema. Esse eseguono bene i processi di classicazione e risultano quindi utili nel data mining. Ciononostante, non sono prive di problemi; anche se imparano, non forniscono una buona rappresentazione di ci` che hanno imparato. I loro output sono o altamente quantitativi e non facili da capire. Come ulteriore limite, le rappresentazioni interne da esse sviluppate non sono univoche. Inoltre, hanno in genere problemi a rappresentare dati su serie temporali. Comunque le reti neurali sono diuse e frequentemente usate in molti prodotti commerciali.

5.6

Software KNIME

KNIME ` probabilmente il pi` entusiasmante tool open source per il data mining in e u forma di scatola chiusa. La sua interfaccia ed il suo funzionamento a ussi di lavoro ricordano infatti molto da vicino la logica che caratterizza alcune note piattaforme commerciali specializzate in data mining e sviluppate da societ` quali SPSS, StatSoft e a SAS. I suoi sviluppatori dellUniversit` di Costanza hanno da poco reso disponibile per a il download la versione 2.0, che fa fare al tool un bel balzo in avanti, soprattutto grazie allimplementazione di un supporto completo per il linguaggio PMML (Predictive Model Markup Language), grazie al quale adesso sar` possibile eseguire in tutta completezza a il deployment dei modelli predittivi. Oltre ad avere introdotto questa (fondamentale) funzionalit`, sono state migliorate le tecniche dinterfacciamento ai Database esterni, a 95

Software KNIME cos` come la gestione dei ussi di lavoro (ovvero sia della trasmissione delle informazioni da nodo a nodo). A questo proposito sono inoltre disponibili nuovi nodi, molti dei quali riguardano il trattamento e la pulitura dei dati, nonch procedure preparatorie e pi` complesse come il sottocampionamento o le operazioni di splitting. u KNIME ` una piattaforma modulare per la creazione di pipeline di data analysis per e lintegrazione, lelaborazione, lanalisi e lesplorazione dei dati. Una delle caratteristiche principali ` la capacit` di eseguire selettivamente tutte o alcune fasi dellanalisi, inoltre e a ` possibile visualizzare interattivamente dati e modelli. e

5.6.1

Descrizione generale

I componenti base di KNIME sono: il progetto, che rappresenta un esperimento condotto su un insieme di dati osservati relativi ad un determinato fenomeno; il workow, che rappresenta il procedimento da eseguire sui dati per eettuare lesperimento; il nodo, che rappresenta una singola operazione eettuata sui dati. Il progetto ` caratterizzato da uno o pi` workow, il quale consiste di una pipeline e u di nodi connessi da linee per il trasporto di dati o modelli

Figura 5.5: Il progetto Il nodo ` caratterizzato da: e porte di input, attraverso le quali pu` ricevere dati provenienti dalla porta di o output di nodo predecessore; porte di output, attraverso le quali pu` fornire i risultati dellelaborazione al nodo o successore; parametri di congurazione, attraverso i quali si pu` orientare lesecuzione di o una particolare funzionalit` (es: nel partizionamento di un insieme di dati si pu` a o scegliere di farlo secondo un partizionamento relativo oppure assoluto). Le porte di input/output sono di due tipologie: 96

Software KNIME per i dati, contenenti osservazioni dei fenomeni di cui si vuole eettuare lesperimento; per i modelli, contenenti solo metadati di un particolare insieme di dati modellizzato.

Figura 5.6: Il nodo

5.6.2

Architettura interna

KNIME ` scritto in Java e la GUI ` implementata come plug-in Eclipse. E stato e e progettato e realizzato sulla base di tre requisiti: creare un ambiente visuale per interfacciarsi con lutente in modo semplice e interattivo; progettare un software che favorisca lesecuzione su un sistema distribuito; creare un ambiente che permetta lespansione delle funzionalit` nel modo pi` a u semplice possibile. Per laccesso ai MDS viene utilizzata una potente strategia di caching, che permette di accedere alla tabella dati direttamente sul disco rigido nel momento in cui diventa troppo 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 lelaborazione. 5.6.3.1 I nodi di lettura

I nodi di lettura, detti anche nodi di Read, si occupano della lettura dei dataset nei diversi formati trattati e sono: 1. il nodo File Reader per la lettura di un le ASCII; 2. il nodo ARFF Reader per la lettura di un le in formato Attribute-Relation File Format (ARFF); 3. il nodo Table Reader per la lettura delle tabelle nel formato Table denito da KNIME (Par. 2.1); 97

Software KNIME 4. il nodo PMML Reader per la lettura di un modello in formato Predictive Model Markup Language (PMML); 5. il nodo Model Reader per la lettura di un modello in un formato interno a KNIME.

Figura 5.7: I nodi di Input Il nodo Model Reader, come il Table Reader per i dati, rappresenta un modello in un formato interno che pu` essere scritto solo attraverso il nodo di scrittura Model o Write Il PMML utilizza lXML per rappresentare modelli di data mining, la struttura dei modelli ` descritta da un XML Schema. Uno o pi` modelli di data mining possono e u essere 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 dei risultati nei diversi formati. I nodi di scrittura sono: 1. il nodo CSV Writer per la scrittura di un le in formato CSV; 2. il nodo ARFF Writer per la scrittura di un le 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

Prove sperimentali sullapplicazione Ambient Monitoring

5.7

Prove sperimentali sullapplicazione Ambient Monitoring

Prove sperimentali sullapplicazione Ambient Monitoring]Prove sperimentali sullapplicazione Ambient Monitoring Dopo aver visto larchitettura del programma, e le sue funzionalit`, cerchiamo ora di a implementarlo nel nostro progetto. Ci` che si vuole sviluppare ` un sistema che, dato un insieme di dati ambientali, riesca o e a predirre se vi ` lattivazione di un allarme. Ovviamente prima di far ci` abbiamo e o bisogno di un training set, ovvero una serie di dati dove viene inserito in un campo lattivazione o meno dellallarme. Tramite queso set il sistema crea dei diversi modelli in 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 allinterno di diverse stanze. Passiamo ora alla scelta dei vari classicatori che knime ci mette a disposizione. Abbiamo scelto tutti classicatori che si basano su tecniche diverse: 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 le csv contenente 976 dati, dei quali una percentuale andr` ai vari learner che cercheranno di addestrare i a relativi predictor. I risultati verranno visualizzati dai vari Scorer messi a disposizione da KNIME.

5.7.1

PNN

Figura 5.9: Sistema basato sulla rete neurale PNN 99

Prove sperimentali sullapplicazione Ambient Monitoring Come spiegato precedentemente le reti neurali si basano sul concetto dalle reti neurali biologiche, che hanno un insieme di neuroni che sono collegati tra loro tramite il sistema nervoso. Le reti neurali sono composte da stati di input, stati di output e livelli intermedi nei quali vi sono altri stati. Gli stati di input comunicano con gli stati di output tramite gli stati intermedi. Ogni collegamento ha un determinato peso, e tramite degli algoritmi appositi si calcola loutput in funzione dei pesi. Di seguito vengono mostrati i risultati del predictor in funzione della percentuale dei dati passati in input al learning.

Figura 5.10: Risultato del predictor PNN

5.7.2

Decision Tree

Figura 5.11: Sistema basato sullalbero decisionale Gli alberi decisionali sono un modello noto e semplice di classicatori, basato su una struttura dati ad albero. Nellalbero decisionale i nodi interni corrispondono a test su 100

Prove sperimentali sullapplicazione Ambient Monitoring un attributo, mentre le foglie sono le categorie di oggetti classicati. Di seguito vengono mostrati i risultati del predictor in funzione della percentuale dei dati passati in input al learning.

Figura 5.12: Risultato del predictor dellalbero decisionale

5.7.3

SVM

Figura 5.13: Sistema basato sulle macchine a vettori di supporto Le macchine a vettori di supporto (SVM, dallinglese Support Vector Machines), o macchine kernel, sono un insieme di metodi di apprendimento supervisionato per la regressione e la classicazione 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 Y che ad ogni vettori di x in input associa un sottoinsieme di output. La macchina a 101

Prove sperimentali sullapplicazione Ambient Monitoring vettori di supporto crea una stima g 1 il quale svolge in modo pi` o meno preciso la u funzione g. Di seguito vengono mostrati i risultati del predictor in funzione della percentuale dei dati 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 Lacronimo SOTA indica un algoritmo auto organizzato ad albero (Self-Organizing Tree Algorithm). Esso si basa sulle mappe auto organizzate di Kohonen e sullalgoritmo della crescita della struttura cellulare di Fritzke. Dallalgoritmo di Kohonen acquisisce la riduzione della complessit`, riducendo lo spazio complesso dei dati in ingresso, in a 102

Prove sperimentali sullapplicazione Ambient Monitoring quello pi` semplicato in uscita. Dallalgoritmo di Fritzke invece riprende la struttura u ad albero. Le sue caratteristiche sono:

La topologia della rete ` ad albero binario e

Solo la crescita della rete ` permessa e

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

Figura 5.16: Risultato del predictor della SOTA 103

Prove sperimentali sullapplicazione Ambient Monitoring

5.7.5

Naive Bayes

Figura 5.17: Sistema basato sul teorema di Bayes Un classicatore bayesiano ` un classicatore basato sullapplicazione diretta del teoree ma di Bayes. Il classicatore bayesiano, praticamente non potrebbe esistere, dato che si basa su probabilit` conosciute prima di arontare il problema. Tuttavia il classia catore bayesiano ideale ` lobbiettivo da approssimare, se abbiamo a disposizione delle e stime adabili delle probabilit`. Un esempio di utilizzo del classicatore bayesiano lo a troviamo sui ltri antispam. Di seguito vengono mostrati i risultati del predictor in funzione della percentuale dei dati passati in input al learning.

Figura 5.18: Risultato del predictor del sistema bayesiano 104

Prove sperimentali sullapplicazione Ambient Monitoring

5.7.6

Fuzzy Rule

Figura 5.19: Sistema basato sulle regole fuzzy

Le regole fuzzy si basano sulla logica fuzzy che ` un estensione della logica booleana. e La logica booleana ha un dominio che ha due elementi 0 e 1, mentre la logica fuzzy ha un dominio composto da inniti elementi che vanno nellintervallo chiuso 0, 1. Tramite lapposito learner vengono fondate le regole fuzzy, che in base allinput da un valore alloutput. Passando dei valori di input al predittore, egli produrra output in funzione di ci` che ha appreso il learner. o Di seguito vengono mostrati i risultati del predictor in funzione della percentuale dei dati passati in input al learning.

Figura 5.20: Risultato del predictor sviluppato con Fuzzy Rule 105

Conclusioni

5.8

Conclusioni

In questo capitolo abbiamo trattato laspetto statistico con cui si pu` allargare le o potenzialit` della nostra applicazione. a Dopo unintroduzione in cui viene presentato come si pu` implementare un siso tema statistico, con la nostra applicazione Ambient Monitoring, abbiamo parlato delle principali tecnologie e algoritmi di data mining, facendo confronti con la realt` esterna. a Di seguito abbiamo discusso del software KNIME, un software open-source che ci d` a la possibilit` di implementare questi sistemi statistici e vedere il risultato che si ottiene. a E un ottimo software e lascia allutente molte possibilit` di implementazione e di test. a Inoltre abbiamo confrontato i vari algoritmi con il nostro problema, cercando di vedere nei risultati, se ` veramente convente sostituire la parte del codice relativo agli e allarmi, con limplementazione 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, gi` passando un 20% di dati noti al learning, a il sistema riesce a predirre loutput con un alta percentuale di correttezza. Questa ricerca ha un risvolto positivo, e pu` essere implementata nelle successive o versioni dellapplicazione.

106

6. Conclusioni
Lo scopo di questa tesi ` stato lo sviluppo di un sistema per il monitortaggio di ambienti e da salvaguardare. Dopo una prima fase di analisi degli strumenti da utilizzare descritta nei vari capitoli, si ` deciso che lutilizzo dellhardware della casa costruttrice spagnola Libelium e era la giusta scelta da fare, per la grande esperienza nel settore, per la qualit` dei a materiali forniti e per lassistenza che si riceve via web, grazie ai forum e alle varie documentazioni. Il software sviluppato, potr` trovare spazio in vari settori, e di conseguenza, lina terfacciamento dellutente nale al sistema deve essere il pi` semplice possibile. Da u questa esigenza, abbiamo deciso di sviluppare il software come applicazione web, con un interfaccia semplice ed intuitiva, in modo che i tempi di apprendimento dellutente nale saranno brevi. Nella fase di progettazione, abbiamo eettuato uno studio sulle varie funzionalit` e a metodologie di sviluppo seguendo i principi fondamentali di UML. Grazie a questa fase di progettazione, il software sviluppato risponde alle esigenze di semplicit` e manutenibilit`, che saranno fondamentali per il futuro di questa a a applicazione. Il sistema ` in grado di ricavare delle grandezze siche nellambiente in cui si trovano e i vari sensori, e trasmettere queste informazioni tramite le radio frequenze allapplicazione Ambient Monitoring, la quale registra i dati in un database e li mostra allutente nale. Egli avr` la possibilit` di modicare il comportamento dellapplicazione a a in base alle esigenze riscontrate. Ovviamente il sistema presenta delle caratteristiche negative legate alla comunicazione dellhardware. Infatti i sensori devono essere posizionati in ambienti dove non vi ` rumore nella banda di frequenze dove i vari sensori comunicano, altrimenti avreme mo una corruzione dei dati raccolti. Inoltre i sensori devono essere inseriti in ambienti dove hanno una discreta copertura con il satellite, infatti essi raccolgono dati anche grazie al modulo GPS, e senza copertura del satellite questi dati non possono essere rilevati. Come ultima caratteristica negativa, dobbiamo presentare unerrata precisione dei dati rilevati dal satellite, qualora la qualit` del segnale proveniente dalla sorgente a non ` ottimale. e Tuttavia se lambiente in cui abbiamo lesigenza di inserire il sistema, risponde positivamente alle caratteristiche negative, lapplicazione svolge il suo lavoro in maniera ottimale, anche grazie alla tecnologia AJAX che mostra sempre dati aggiornati. Inne, per un ottimo sviluppo dellapplicazione che ora ` in una versione prototipale, e ` bene ricordare che pu` essere integrata con strumenti di analisi statistica dei dati, e o che come discusso nellultimo capitolo, ore un grande vantaggio al sistema.

Bibliograa
[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` lrd? http://rd.thebizloft.com. e [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/jgrails05208/index.html. [11] La tecnologia rd. http://www.rd.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. Masters thesis, Universit` degli Studi di Camerino, 2009/2010. a [16] Gordon S. Lino 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 suite dame. Masters thesis, Universit` degli studi di Napoli Federico II, 2009/2010. a [19] Giorgio Porcu. 6lowpan: Un livello adattivo per la convergenza di wireless sensor network e ipv6. teoria, analisi, sviluppo e confronto di soluzioni low-power. Masters thesis, Universit` degli studi di Pisa, 2006/2007. a [20] Shamkant B. Navathe Ramez A. Elmasri. Sistemi di base di dati. Complementi. Pearson Addison Wesley, 2005.

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

110

Potrebbero piacerti anche