interfaccia web per la specifica di regole domotiche per...

79
POLITECNICO DI TORINO Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di laurea specialistica Visual rules builder: interfaccia web per la specifica di regole domotiche per utenti non esperti Relatori: prof. Fulvio Corno dott. Dario Bonino Candidato: Appino Marco Luglio 2011

Transcript of interfaccia web per la specifica di regole domotiche per...

POLITECNICO DI TORINO

Facoltà di IngegneriaCorso di Laurea in Ingegneria Informatica

Tesi di laurea specialistica

Visual rules builder:interfaccia web per la specifica di regole domotiche

per utenti non esperti

Relatori:prof. Fulvio Cornodott. Dario Bonino

Candidato: Appino Marco

Luglio 2011

Indice Indice...................................................................................................................................IIndice delle figure............................................................................................................IIIIndice delle tabelle.............................................................................................................V

1 Introduzione...................................................................................................................11.1 Contesto generale.....................................................................................................11.2 Oggetto e obiettivi della tesi....................................................................................11.3 Struttura della tesi....................................................................................................2

2 La domotica...................................................................................................................42.1 Che cos'è la domotica...............................................................................................42.2 Cenni storici.............................................................................................................42.3 Settori ai quali può applicarsi la domotica...............................................................82.3.1 Gestione dell'ambiente..........................................................................................82.3.2 Gestione degli apparecchi domestici.....................................................................92.3.3 Comunicazione e informazione.............................................................................92.3.4 Sicurezza.............................................................................................................102.4 Vantaggi di un impianto domotico.........................................................................122.5 Componenti tipici di un impianto domotico...........................................................132.6 Standard tecnologici...............................................................................................142.6.1 Konnex................................................................................................................152.6.2 My Home Bticino...............................................................................................152.6.3 Z-Wave................................................................................................................16

3 Requisiti di progettazione...........................................................................................173.1 Requisiti utente......................................................................................................173.2 Requisiti di sistema................................................................................................173.3 Requisiti architetturali............................................................................................18

4 Dog e DogOnt...............................................................................................................194.1 Dog........................................................................................................................194.2 DogOnt..................................................................................................................21

5 La regola domotica......................................................................................................245.1 Cos'è una regola domotica.....................................................................................245.2 Grammatica............................................................................................................25

I

5.3 Sintassi...................................................................................................................27

6 L'interfaccia.................................................................................................................296.1 Requisiti generali e soluzioni adottate....................................................................296.2 Homepage..............................................................................................................326.2.1 Come viene rappresentata l'abitazione................................................................356.2.2 Configurazione della casa...................................................................................376.3 Editor delle regole..................................................................................................40

7 Architettura di progetto..............................................................................................457.1 Architettura generale..............................................................................................457.1.1 Primo livello architetturale..................................................................................467.1.2 Secondo livello architetturale..............................................................................47

8 Implementazione.........................................................................................................508.1 Struttura dell'interfaccia web..................................................................................508.2 Linguaggio di programmazione.............................................................................508.3 Database MySQL...................................................................................................518.3.1 Tabella REGOLE................................................................................................528.3.2 Tabella TRADUZIONE......................................................................................538.3.3 Tabella STRUTTURA OPZIONE.......................................................................548.3.4 Operazioni sul database.......................................................................................55

9 Risultati sperimentali..................................................................................................589.1 Test funzionale.......................................................................................................58

10 Sviluppi futuri e conclusioni.....................................................................................6310.1 L'editor dell'abitazione.........................................................................................6310.2 Controllo diretto dei dispositivi............................................................................6410.3 Funzioni aggiuntive per la creazione delle regole................................................6410.4 Conclusioni..........................................................................................................65

A Superclasse oggetto accettato dalla regola................................................................66

B Creazione nuovo oggetto per la regola......................................................................69

Bibliografia.....................................................................................................................73

II

Indice delle figure

FIGURA 2.1: “The house of the future” di Richard B. Fuller.................................................5FIGURA 2.2: Vista interna (a), cucina e soggiorno (b,c), della “Casa dell’Avvenire” di Alison e Peter Smithson.........................................................................................................5FIGURA 2.3: La casa Ahwatukee...........................................................................................6FIGURA 2.4: Camera da letto (a) e sala da pranzo (b) della “Casa Telematica”....................6FIGURA 2.5: Bagno, "luogo di decompressione” delle “Casa Telematica”...........................6FIGURA 2.6: Struttura della casa di Bill Gates......................................................................7FIGURA 2.7: Vista della casa di Bill Gates............................................................................7FIGURA 2.8: Videocitofono multifunzione............................................................................8FIGURA 2.9: Esempio di sistema domotico per gestire possibili perdite di acqua.................9FIGURA 2.10: Impianto tradizionale (a) e impianto a bus (b)..............................................13FIGURA 2.11: Z-Wave multilevel switch.............................................................................16FIGURA 3.1: Struttura generale dell'architettura di sistema.................................................18FIGURA 4.1: Logo di Dog...................................................................................................19FIGURA 4.2: Architettura dei moduli di DOG.....................................................................20FIGURA 4.3: Schema concettuale di DogOnt......................................................................22FIGURA 5.1: Esempio di regola domotica...........................................................................24FIGURA 5.2: Grammatica alla base della creazione delle regole.........................................25FIGURA 5.3: Esempio di regola ottenuta con l'interfaccia...................................................26FIGURA 5.4: Schema della grammatica di una regola.........................................................26FIGURA 5.5: Esempio di regola (Se la luce del salotto viene accesa, qualunque giorno della settimana dalle 00:00 alle 7:00, allora spegnila dopo 10 minuti)..........................................27FIGURA 6.1: Rappresentazione di un dispositivo................................................................29FIGURA 6.2: Messaggio di errore nella compilazione della regola.....................................30FIGURA 6.3: Editor della regola con evidenziati i suggerimenti.........................................30FIGURA 6.4: Struttura regola con nessun dispositivo..........................................................31FIGURA 6.5: Struttura regola prima di una selezione di un nuovo dispositivo....................31FIGURA 6.6: Struttura regola durante il trascinamento di un nuovo dispositivo.................32FIGURA 6.7: Homepage dell'interfaccia..............................................................................32FIGURA 6.8: Barra degli strumenti della Homepage...........................................................33FIGURA 6.9: Area visualizzazione della pianta dell'abitazione nella Homepage.................33FIGURA 6.10: Barra degli strumenti regole nella pagina della Homepage..........................34FIGURA 6.11: Visualizzazione delle regole memorizzate....................................................34FIGURA 6.12: Immagini del contenitore con uno, due e tre dispositivi selezionati.............35FIGURA 6.13: Rappresentazione della casa.........................................................................36FIGURA 6.14: Esempio di stanza, “camera dei ragazzi”......................................................36

III

FIGURA 6.15: esempio di sensore, “sensore di fumo”.........................................................37FIGURA 6.16: sezione di un messaggio con la struttura della casa......................................38FIGURA 6.17: Sezione di un messaggio con la configurazione di un dispositivo................39FIGURA 6.18: Sezione di un messaggio con il posizionamento e le dimensioni di due stanze.................................................................................................................................... 40FIGURA 6.19: Sezione di un messaggio con la traduzione dei nomi delle stanze................40FIGURA 6.20: Pagina per la creazione di una regola domotica...........................................41FIGURA 6.21: Area elenco dispositivi nella pagina di creazione delle regole.....................42FIGURA 6.22: Oggetto “ora e giorni”..................................................................................42FIGURA 6.23: Oggetto “ora e giorni” in una condizione “se”.............................................42FIGURA 6.24: Oggetto “ora e giorni” in una condizione “quando”.....................................43FIGURA 6.25: Area dei piani nella pagina di creazione delle regole...................................43FIGURA 6.26: Struttura iniziale di una regola domotica......................................................44FIGURA 7.1: Architettura generale di sistema.....................................................................46FIGURA 7.2: Schema del primo livello dell'architettura dell'interfaccia..............................47FIGURA 7.3: Schema del secondo livello dell'architettura dell'interfaccia..........................48FIGURA 7.4: Schema architetturale del modello.................................................................48FIGURA 8.1: Condizione “allora” con sintassi tradotta.......................................................54FIGURA 8.2: Diagramma delle operazioni sul database durante la fase di cancellazione di una regola.............................................................................................................................55FIGURA 8.3: Diagramma delle operazioni sul database durante la fase di creazione di una nuova regola.........................................................................................................................56FIGURA 8.4: Diagramma delle operazioni sul database durante la fase di visualizzazione e modifica di una regola già esistente......................................................................................57FIGURA 9.1: Analizzatore di collegamenti..........................................................................58FIGURA 9.2: Tempo di per l'analisi dell'interfaccia web con Link Checker........................58FIGURA 9.3: Analizzatore HTML.......................................................................................59FIGURA 9.4: Risultati dell'analisi dell'interfacci web con Markup Validation.....................59FIGURA 10.1: Ipotetico editor dell'abitazione.....................................................................63FIGURA 10.2: Pianta di un'abitazione con oggetti decorativi..............................................64FIGURA 10.3: Oggetto “tutto del tipo”................................................................................65FIGURA A.1: Codice superclasse oggetto............................................................................68FIGURA B.1: Codice scheletro di un oggetto standard........................................................72

IV

Indice delle tabelle

TABELLA 8.1: Struttura della tabella REGOLE..................................................................52TABELLA 8.2: Esempio di tupla inserita nella tabella “regole”...........................................52TABELLA 8.3: Struttura della tabella TRADUZIONE........................................................53TABELLA 8.4: Esempio di tuple per la tabella TRADUZIONE..........................................53TABELLA 8.5: Struttura della tabella STRUTTURA OPZIONE.........................................54TABELLA 8.6: Esempio di tuple per la tabella STRUTTURA OPZIONE..........................54TABELLA 9.1: Risultati dell'analisi dell'interfacci web con Link Checker..........................58TABELLA 9.2: Visualizzazione interfacci con browser differenti........................................60TABELLA 9.3: Schema della dimensione e dei tempi di caricamento dell'interfaccia.........61TABELLA 9.4: Dimensione e tempi di caricamento dell'Homepage con altre pagine paragonabili (rispetto alla velocità di caricamento)..............................................................62

V

Capitolo 1Introduzione

1.1 Contesto generale

Negli ultimi decenni si è assistito ad un crescente proliferare, nella casa, di oggetti elettronici che, in maniera sempre più efficace e sofisticata, assistono l'utente nello svolgimento delle attività di tutti i giorni. Elettronica e informatica hanno fatto passi da gigante grazie a una richiesta di mercato sempre in crescita e alla ricerca di apparecchiature più innovative, in grado di svolgere attività sempre più specifiche e con una qualità migliore.È nata quindi una nuova disciplina, la domotica, intesa come integrazione di prodotti e servizi per il controllo e la gestione della casa. La funzione principale è quella di rendere intelligenti apparecchiature, impianti e sistemi o, più in generale, permettere la realizzazione di “case intelligenti” e automatizzate.Con “casa intelligente” si intende un ambiente domestico, tecnologicamente attrezzato e progettato opportunamente, che permetta ad un utente di poter accedere a funzionalità che vanno oltre quelle tradizionali. Elettrodomestici e sistemi sono in grado di svolgere azioni parzialmente autonome in relazione a parametri ambientali prestabiliti o programmati interamente dall'utente.L'automazione di un abitazione invece, tratta l'ambiente domestico da un livello superiore. L'edificio intelligente, attraverso l'utilizzo delle nuove tecnologie, permette la gestione coordinata, centralizzata e computerizzata di tutti gli impianti predisposti, allo scopo di migliorare comfort, sicurezza, risparmio energetico, controllo e principalmente per migliorare la qualità della vita all'interno dell'abitazione.

1.2 Oggetto e obiettivi della tesi

Lo scopo della tesi è quello di creare un interfaccia visuale web-based per la creazione di regole di automazione per un sistema domotico. Un utente generico è in grado di interagire con la propria abitazione attraverso una pagina web e poter comandare in modo efficace e semplice tutto quello che ha predisposto nella sua abitazione.

1

1 - Introduzione

L'intelligenza della casa per quanto riguarda le decisioni da intraprendere è spostata dal sistema centrale verso l'utente.Questa interfaccia, permetterà di generare gli automatismi dei vari dispositivi connessi all'impianto domotico, in particolare permetterà di:

• caricare e visualizzare la pianta semplificata dell'abitazione con tutti i dispositivi posizionati nelle relative stanze;

• definire regole di automazione e risparmio energetico mediante un'interfaccia di semplice utilizzo;

• attivare, disattivare e modificare le regole definite dall'utente.

Tutte le informazioni relative all'abitazione, ai dispositivi e alle regole sono contenute in un apposito gateway, Dog, che si occupa di interagire e controllare i dispositivi del sistema domotico. Dog verrà trattato nel dettaglio quarto capitolo.Le regole per gestire gli automatismi abitativi, trattate dall'interfaccia, dovranno sottostare ad una grammatica ed una sintassi ben definita, solo in questo modo Dog sarà in grado di riconoscerle e poterle eseguire.

1.3 Struttura della tesi

In questo capito, è sintetizzato il contesto di lavoro e sono riassunti gli obiettivi del progetto di tesi.Nei capitoli seguenti verranno ripresi con più dettaglio il contesto generale, gli obiettivi e i requisiti del progetto.Il quinto capitolo è dedicato alla regola domotica; verrà descritto il suo utilizzo, la sua sintassi e gli elementi che compongono la sua grammatica.Dal sesto all'ottavo capitolo verranno analizzate: le varie componenti dell'interfaccia, l'architettura e l'implementazione del progetto.Nel capitolo nove è presente l'analisi dei risultati sperimentali ottenuti con i test funzionali e utente.Infine vengono presentate le conclusioni del progetto e le sue possibili evoluzioni future.In dettaglio:

• nel SECONDO capitolo viene trattata la domotica, come è nata, i settori in cui viene applicata, i vantaggi e le apparecchiature utilizzate;

• nel TERZO capitolo sono presenti i requisiti dell'interfaccia per essere utilizzata al meglio, ovvero le capacita richieste all'utente, i requisiti del sistema e di architettura;

• nel QUARTO capitolo viene analizzato il gateway domotico Dog e l'ontologia DogOnt;

2

1 - Introduzione

• nel QUINTO capitolo viene trattata la regola domotica, definendo la grammatica e la sintassi a cui deve sottostar;

• nel SESTO capitolo c'è l'analisi dell'interfaccia ed in particolare le descrizioni delle varie componenti che compongo la pagina dell'Homepage e dell'editor delle regole;

• nel SETTIMO capitolo viene presentata l'architettura dell'interfaccia dal punto di livello software;

• nell'OTTAVO capitolo tratta il linguaggio di programmazione utilizzato e il database per la memorizzazione dei dati;

• nel NONO capitolo si analizzano i test funzionali dell'interfaccia;• nel DECIMO capitolo sono trattati i lavori futuri che potrebbero essere fatti per

l'interfaccia.

3

Capitolo 2La domotica

2.1 Che cos'è la domotica

La domotica è la disciplina che unisce nozioni di informatica, elettronica, robotica e automazione al fine di migliorare la qualità della vita nelle abitazioni dotandole di strutture tecnologiche.Il termine “domotica” deriva dal neologismo francese domotique, a sua volta contrazione della parola latina domus (casa, costruzione) e di automatique (automatica; secondo altri “informatique”, informatica).Questa nuova disciplina ha come oggetto di studio privilegiato l’home automation (automazione della casa), scienza che studia particolari sistemi per automatizzare l’abitazione e facilitare l’adempimento di molte azioni perlopiù all'interno delle mura domestiche.

2.2 Cenni storici

La parola “domotique” appare per la prima volta alla fine degli anni ’80 nel dizionario francese Larousse, ma i primi prototipi di casa automatica risalgono già agli anni ’30.Un primo esempio fu “The house of the future” (1927-1937) denominata Dymaxion, che significa “dinamismo ed efficienza” di R.B. Fuller: una casa rotante su di un perno centrale completamente prefabbricata con le più evolute tecnologie di allora, persino le porte pneumatiche.

4

2 - La domotica

FIGURA 2.1: “The house of the future” di Richard B. Fuller.

Nel 1956 gli architetti britannici Alison e Peter Smithson proposero la “Casa dell’Avvenire”, un prototipo di abitazione basata sull’energia atomica, proiettandosi in un futuro in cui la casa fosse indipendente. Era dotata di un pannello di controllo e dotata di tutti i più innovativi dispositivi di quel tempo.

(a) (b) (c)FIGURA 2.2: Vista interna (a), cucina e soggiorno (b,c), della “Casa

dell’Avvenire” di Alison e Peter Smithson

Nel 1972 Alex Pike progettò la Casa Autonoma Sperimentale: un’abitazione autosufficiente con energie riciclabili, dall’acqua all’energia solare ed eolica, al riciclo dei rifiuti domestici.Il primo progetto di casa intelligente, in cui si può realmente apprezzare una grande quantità di tecnologie in funzione di un nuovo modo di abitare, è la casa di Ahwatukee (Arizona, USA), realizzata alla fine degli anni ’70.

5

2 - La domotica

FIGURA 2.3: La casa Ahwatukee.Questo edificio frutto dell’innovazione tecnologica dei microchip, si presenta come effettivo precursore delle applicazioni odierne che utilizzano tecnologie similari più raffinate, standardizzate e miniaturizzate.Nel 1983 Ugo La Pietra presentò la Casa Telematica, integrata sistemi computerizzati di sicurezza e controllo dell'ambiente, nonché dei più moderni sistemi di telecomunicazioni quale videocitofono, videotext e teletext.

(a) (b)FIGURA 2.4: Camera da letto (a) e sala da pranzo (b) della “Casa Telematica”.

FIGURA 2.5: Bagno, "luogo di decompressione” delle “Casa Telematica”.

6

2 - La domotica

Attualmente un esempio di casa intelligente, forse la più avanzata dei giorni nostri, è rappresentata dall'abitazione di Bill Gates. Situata sulle rive del lago Washington, vicino a Seattle è stata pensata e progettata come “vetrina della domotica”. Il costo per la sua realizzazione è stato attorno ai cento milioni di dollari.

FIGURA 2.6: Struttura della casa di Bill Gates.

FIGURA 2.7: Vista della casa di Bill Gates.La casa è visitabile al pubblico e, pagando una consistente cifra, è possibile farne il tour completo. All'ingresso il visitatore può comunicare le sue preferenze in termini di temperatura e illuminazione. Gli viene fornita una speciale chiave elettronica per fare conoscere costantemente al sistema la propria posizione all'interno della struttura. In questo modo il sistema adatta l'ambiente in base ai suoi occupanti. Schermi sulle pareti propongono decorazioni o paesaggi a piacere dell'ospite e l'impianto audio diffondere la musica che si adatta meglio allo stile della persona. Se due o più persone si

7

2 - La domotica

riuniscono nella stessa stanza, il sistema propone una soluzione che si adatta al meglio al gruppo, andando a fondere stili e preferenze dei singoli.Nonostante si possa immaginare che la domotica sia una tecnologia pensata unicamente per persone facoltose, dotare un'abitazione di sistemi atti al miglioramento della qualità della vita è perlopiù alla portata di tutti.

2.3 Settori ai quali può applicarsi la domotica

La domotica può applicarsi a tutte le attività di una dimora attraverso il controllo di tutti i suoi impianti e creare operazioni anche complesse. Questo è possibile solamente nel caso in cui le sue parti siano connesse e controllate in modo intelligente.Le aree di automazione in un unità abitativa sono:

• Gestione dell'ambiente;• Gestione di apparecchiature;• Comunicazione e informazione;• Sicurezza.

2.3.1 Gestione dell'ambiente

La gestione dell'ambiente può essere suddivisa ulteriormente nelle sotto-aree specifiche del settore:

• climatizzazione e riscaldamento;• illuminazione;• distribuzione dell'energia elettrica;• gestione delle risorse idriche;• azionamento di sistemi d'apertura e d'ingresso;• gestione di scenari preprogrammati.

Il controllo dell'ambiente permette di regolare la temperatura, l'umidità e la ventilazione dell'ambiente interno di una casa in base alle esigenze dell'utente, garantendo il massimo comfort in ciascuna parte della casa.Nel campo dell'illuminazione, i classici interruttori vengono rimpiazzati da interruttori elettronici permettendo quindi di gestire in modo efficiente l'illuminazione dell'abitazione.Le risorse elettriche e idriche, che prima venivano distribuite nella casa senza avere nessun controllo, ora è possibile gestirle per ridurre sprechi. Per quanto riguarda l'elettricità è possibile avere nuove funzionalità. Il sistema può agire sul distacco di apparecchiature per evitare sovraccarichi di corrente e in caso di black-out gestire l'alimentazione di emergenza attraverso gruppi di continuità e attivare l'illuminazione di emergenza.

8

2 - La domotica

2.3.2 Gestione degli apparecchi domestici

La gestione degli apparecchi domestici è quel settore che comprende tutti gli elettrodomestici per così dire “intelligenti”. L'introduzione di componenti elettronici hanno consentito di migliorare prestazioni, funzionalità ed affidabilità rendendo possibile la telegestione e la telediagnostica di tali dispositivi, come:

• impianti idrosanitari, saune ed idromassaggio;• forni, frigoriferi, congelatori e lavastoviglie;• lavatrici e asciugatrici.

Esistono lavatrici che decidono da sé il tipo di programma e le temperature da raggiungere, segnalano anche vocalmente la mancanza di acqua e di detersivo ed interrompono il ciclo in caso di problemi.Anche i forni presentano nuove funzionalità ed automatismi. Per esempio, attraverso un comando a distanza è possibile accende o spegnere il forno in modo da arrivare a casa e trovare il piatto preinfornato cotto al punto giusto; il forno stesso deciderà la temperatura e la ventilazione in base al tipo di pietanza.I frigoriferi e i congelatori sembrano ancora più sofisticati. Infatti possono decidere loro stessi la temperatura interna in funzione dei cibi contenuti, della quantità dei prodotti, in base ai codici a barre delle confezioni e grazie a delle informazioni preimpostate dal proprietario; sono in grado di rilevare se un prodotto sta finendo e, a questo punto, inviare un ordine di acquisto al supermercato prescelto.Ciascuno degli elettrodomestici citati è dotato di autodiagnosi, così da poter rilevare eventuali guasti. Inoltre ha la possibilità di “chiamare” autonomamente l'assistenza per l'eventuale riparazione che, molte volte, può essere effettuata a distanza.

2.3.3 Comunicazione e informazione

Il settore della comunicazione e dello scambio di informazioni in un abitazione domotica e comprende:

• impianti di citofono e videocitofono;• impianti di segnalazione e chiamata;• impianti telefonici e interfonici.

Negli ultimi decenni sono stati introdotte numerose tecnologie nel campo della comunicazione permettendo di avere una qualità migliore nel servizio e di poter eseguire sempre nuove operazioni. Genericamente, questi sistemi servono per comunicare tra diversi ambienti dell'abitazione o tra l'interno e l'esterno dell'abitazione.

9

2 - La domotica

I sistemi telefonici si sono sempre più evoluti nel corso degli anni per quanto riguarda funzionalità e possibilità; così, per esempio, sono nati e diffusi telefoni senza fili, in grado di individuare il numero chiamante, capaci di memorizzare una rubrica, dotati di una segreteria telefonica, ecc. Gli impianti interfonici o di comunicazione interna servono invece per parlare con una persona sempre nella stessa abitazione ma in stanze diverse.Gli impianti di segnalazione e chiamata sono quei sistemi che servono non tanto per parlare, quanto piuttosto a “chiamare” una persona da un ambiente ad un altro o, anche, a inviare una semplice segnalazione visiva o acustica. Un esempio può essere quello della “chiamata cameriera” che può avvenire da una qualunque stanza verso il locale dove si trova la cameriera; tale chiamata può essere anche solamente visiva o acustica, per esempio attraverso un suono e con la visualizzazione su un opportuno schermo dell'identificativo della stanza dalla quale proviene la chiamata.

FIGURA 2.8: Videocitofono multifunzione

Gli impianti di citofonia e videocitofonia sono a metà tra quelli telefonici e quelli a segnalazione. Essi infatti consentono la comunicazione tra due o più persone che si trovano in locali diversi della stessa abitazione ma non così lontani da dover ricorrere al telefono.

2.3.4 Sicurezza

Il settore sicurezza comprende:

• protezione antifurto e antintrusione;• protezione antincendio, antiallagamento, gas, fumo e scariche elettriche;• telesoccorso e assistenza di persone in difficoltà;• videocontrollo dell'abitazione;• impianti di sicurezza su porte e finestre.

L'avvento dell'elettronica connessa all'elettrotecnica ha permesso di sviluppare sistemi di sorveglianza domestica che funzionano sia in fase preventiva (deterrente) che in fase successiva (riconoscimento).

10

2 - La domotica

I sistemi di sicurezza sono, generalmente, costituiti da un insieme di sensori per rilevare eventuali pericoli e di un unità centrale che riceve tali informazioni.

FIGURA 2.9: Esempio di sistema domotico per gestire possibili perdite di acqua.

Eventuali fughe di gas, allagamenti di locali, la presenza di fumo e anomalie nell'impianto elettrico si possono cosi essere rilevati prontamente, l'unità intelligente centralizzata potrà intraprende opportune azioni ed avvertirci attraverso dei meccanismi di allarme, messaggi vocali o messaggi via SMS/MMS e verrà richiesto eventualmente l'intervento di vigili del fuoco, della polizia, ecc.Per prevenire le intrusioni si può dotare l'abitazione di sensori di rilevamento, quali fotocellule, sensori di presenza a raggi infrarossi, microonde e magnetici. Nel caso un sensore venga azionato, in maniera del tutto automatica si può:

• far suonare una o più sirene;• far partire una serie di telefonate per segnalare l'intrusione;• visualizzare attraverso opportune telecamere la parte dell'abitazione interessata su

schermi dell'abitazione ed eventualmente se si è fuori casa, su pc o telefonini;• far partire la registrazione delle telecamere interessate;• accendere l'illuminazione interna ed esterna della casa.

11

2 - La domotica

Lo sviluppo delle tecnologie dell’informazione ha portato a soluzioni per l’assistenza di persone sole, anziane, disabili o ammalate, ad esempio sistemi di monitoraggio di parametri biomedici e di somministrazione controllata di farmaci.

2.4 Vantaggi di un impianto domotico

I vantaggi sono molteplici e probabilmente neanche tutti perfettamente noti, nel senso che le possibilità offerte dalla domotica sono così numerose che ognuno di noi, facendo uso della propria fantasia e delle proprie esperienze, può “inventarsi” qualcosa di nuovo con questa tecnologia.Di seguito verranno citati alcuni dei vantaggi di più immediata comprensione:

• Maggiore sicurezza: grazie all'automazione di un impianto domotico è possibile aumentare la sicurezza domestica, sia per quanto riguarda la sicurezza contro le intrusioni che per il controllo di eventi pericolosi. È possibile attuare misure di sicurezza sugli accessi della casa per accorgersi in modo tempestivo della presenza di eventuali intrusi. Così come è possibile aumentare il livello di sicurezza contro eventi pericolosi legati alle abitazioni: incendi, fughe di gas, problemi elettrici, allagamenti, ecc. Inoltre il sistema diventa più sicuro per l'abitante della casa, in quanto non si agisce più su su dispositivi alimentati a 220 V o più, ma con componenti a bassa tensione.

• Maggiore comfort: dotando un abitazione di un impianto domotico è possibile controllare e gestire quei parametri che incidono sulla qualità della vita all'interno delle mura domestiche, rendendo quindi la vita delle persone più gradevole ed accogliente.

• Maggiore risparmio energetico: il controllo totale dell'energia presente in un abitazione in tutte le forme in cui si può trovare (riscaldamento, illuminazione, climatizzazione, gestione delle risorse idriche, ecc.) consente di risparmiare sui consumi e quindi sui costi effettivi della casa.

• Maggiore semplicità di gestione: in una casa moderna esistono molteplici impianti e nella maggior parte dei casi sono separati tra loro e sono del tutto isolati, lavorano con diversi standard, hanno diversi tipi di comandi, diverse centraline, con una complicazione che si traduce in maggiori costi, maggior disservizio e quindi minor comfort. La domotica consente di integrali tutti, così da poterli gestire in maniera univoca e semplice attraverso un'unica centrale di supervisione, garantendo quindi un minor numero di apparecchiature, la semplificazione degli impianti e di conseguenza maggiore flessibilità e massimo comfort.

• Maggiore versatilità: l'impianto domotico consente grande versatilità. Consente di configurare e gestire i suoi componenti principalmente via software rispetto che via hardware.

12

2 - La domotica

2.5 Componenti tipici di un impianto domotico

La domotica consente di controllare e gestire in maniera automatica una serie di impianti di un'abitazione. Per fare questo, generalmente, utilizza componenti intelligenti collegati tra loro mediante un cavo che oltre a portare l'alimentazione permette di trasportare anche informazioni tra un componente e l'altro.

(a) (b)FIGURA 2.10: Impianto tradizionale (a) e impianto a bus (b).

Per eseguire determinate operazioni in modo automatico è necessario che vi siano:

• un componente che rilevi un evento;• un componente che trasmetta questa informazione ad un altro componente;• un componente che esegua un operazione alla ricezione dell'informazione.

In sintesi è necessario dunque:

• un sensore;• un mezzo trasmissivo;• un attuatore.

Questi componenti connessi al sistema sono dotati di intelligenza, costituita da un microprocessore programmato grazie al quale il componente riconosce l'informazione, l'elabora e realizza la funzione richiesta.Gli attuatori, a differenza dei sensori, sono connessi oltre che alla linea di segnale anche a quella di corrente (220 V) essendo preposti al comando di componenti più complessi che necessitano di un alimentazione superiore.Un esempio di questi componenti può essere:

• un sensore di luce che permette di rilevare il cambiamento di luminosità esterna

13

2 - La domotica

di un abitazione all'imbrunire;• un cavetto bus in grado di trasmette questa informazione verso un altro

componente;• un attuatore che permette quindi di accendere una lampada.

2.6 Standard tecnologici

Un sistema domotico e in generale l'Home Automation è basato su un sistema BUS di campo. Tutti i componenti dell'impianto sono collegati tra loro con un solo cavo che va a sostituire tutti i cavetti destinati al cablaggio di una volta. La caratteristica sostanziale è quella di tenere distinte, ma non necessariamente separate, le linee di potenze da quelle di segnale. Le prime sono necessarie per portare l'alimentazione ai dispositivi, mentre le seconde sono dedicate al trasporto dei segnali di comando o dei sensori o degli attuatori. Questa soluzione comporta una notevole semplificazione nella realizzazione dell'impianto stesso, se un ambiente cambia la sua destinazione d'uso, oppure l'utente vuole cambiare un comando, è sufficiente eseguire delle modifiche via software, senza dovere effettuare nessun cablaggio dell'impianto. Il BUS impiegato normalmente, è costituito da una coppia di conduttori che lavorano a bassissima tensione di sicurezza (20-30 V). Il tipo di protocollo scelto per lo scambio delle informazioni dipende da ogni casa produttrice dei dispositivi.La necessità di offrire al mercato uno standard unificato che permetta di utilizzare nello stesso impianto anche diversi prodotti e fornitori, ha portato i costruttori ad associarsi per ottenere al più presto un'unificazione generale. A livello Europeo le principali case costruttrici si ritrovano tutte in tre principali associazioni ed ultimamente hanno deciso di riunirsi in un'unica associazione.Le tre associazioni sono:

• BCI (Batibus): Batibus Club International, primo protocollo Europeo, nato in Francia alla fine degli anni '80. Basato sulla trasmissione su doppino con velocità di trasmissione di 4800 bps.

• EIBA (Eib): European Installation Bus Association, nato a Bruxelles nel maggio del 1990. La trasmissione poteva appoggiarsi su doppino, linee di potenza, ethernet, infrarossi e radiofrequenza e poteva raggiungere velocità massime di trasmissione di 10Mbs.

• EHSA (Ehs): European Home System Automation, fondata alla metà degli anni '80, risultava un sistema basato su rete elettrica ad onde convogliate, ma comunque con la possibilità di interfacciarsi con tutti gli altri sistemi. La novità era la possibilità di avere la funzionalità Plug & Play.

Nel 1997 le tre associazioni definirono un protocollo a livello Europeo, lo standard Konnex (abbreviato KNX). Lo scopo era quello di indurre un numero sempre maggiore di imprese a progettare apparecchiature, investendo nel mercato dei sistemi Home Automation.

14

2 - La domotica

Altre società che hanno investito molto nella domotica sono Bticino e Zensys.Bticino, è un azienda italiana che opera nel settore delle apparecchiature elettriche in bassa tensione destinate agli spazi abitativi, di lavoro e di produzione. La produzione copre soluzioni per la distribuzione dell'energia, per la comunicazione (citofonia, videocitofonia, dati) e per il controllo di luce, audio, clima e sicurezza.Zensys, un azienda che si occupa di tecnologia wireless, ha messo sul mercato un sistema di controllo per la casa basato sul chip Z-Wave che utilizza un metodo di comunicazione tramite radio frequenza wireless. Questa soluzione, secondo la Zensys, permetterà la creazione di soluzioni realistiche, economiche, facili da installare e affidabili.

2.6.1 Konnex

Konnex è il prodotto nato dal lavoro di tre associazioni che, originariamente, provenivano da ambienti tecnologici e protocolli diversi che si sono collocati su diversi livelli applicativi/installativi complementari integrandosi a vicenda.Mentre l'EIBA si è mossa con l'intento di semplificare ed automatizzare gli impianti elettrici e i dispositivi connessi in ambito edificio, l'HESA puntava sulle applicazioni propriamente domestiche. BCI, partendo dalla connessione di apparecchiature di illuminazione e riscaldamento, ha ampliato i propri servizi verso la sicurezza e il telecontrollo di appartamenti o insieme di appartamenti.In contemporanea sono state individuate classi di impianti di automazione in funzione del tipo di insediamento.

• Grandi impianti di automazione: rivolte a settore industriale.• Impianti medi di automazione: destinati al terziario e alle abitazioni.• Piccoli impianti di automazione: rivolte a semplici sistemi domestici e

applicazioni “fai da te”.

In sintesi, gli edifici residenziali, terziari e quaternari potranno essere realizzati attraverso bus montanti e controllo centralizzati basato su Eib, impianti d'appartamento anche su più piani basato su Batibus, mentre Ehs automatizza e telecontrollale le applicazioni elettrodomestiche.

2.6.2 My Home Bticino

My Home è la domotica secondo BTicino e rappresenta un nuovo modo di progettare l'impianto elettrico. My Home è un sistema di automazione domestica in grado di offrire soluzioni avanzate sempre più richieste nelle abitazioni e nel terziario. L’offerta copre tutte le funzioni e applicazioni domotiche relative a comfort, sicurezza, risparmio, comunicazione e controllo.

15

2 - La domotica

Caratteristica comune di tutti i dispositivi appartenenti al sistema è l’utilizzo della medesima tecnologia impiantistica, basata sul bus digitale, che permette di creare una sinergia tra i vari componenti del sistema secondo le scelte e le esigenze dell’utente.Affinché ciascun dispositivo in un sistema a BUS svolga correttamente la funzione preposta, esso deve essere dotato di un circuito di interfaccia e di una propria intelligenza, costituita da un microprocessore programmato, per mezzo del quale il dispositivo è in grado di riconoscere l’informazione a lui destinata ed elaborarla per realizzare la funzione desiderata.La modularità installativa e l'integrazione funzionale dei diversi dispositivi offrono la libertà di scegliere quali applicazioni adottare fin da subito e quali integrare nel futuro, senza importanti interventi strutturali e con un'ottima gestione dei costi.

2.6.3 Z-Wave

FIGURA 2.11: Z-Wave multilevel switch.

Z-Wave è un protocollo per la comunicazione wireless, sviluppato dalla Zensys e finalizzato al controllo remoto di dispositivi in ambito residenziale.Un sistema Z-Wave è composta da antenne radio che funzionano a basso consumo. Questa tecnologia è particolarmente adatta a quei dispositivi che si trovano in casa e che non sempre sono connesse alla linea di corrente. La frequenza di trasmissione a differenza di altri sistemi wireless è più contenuta, questo per ridurre i consumi e per limitare la possibilità di interferenze con altri sistemi che operano alla stessa frequenza. ILo standard Z-Wave è proprietario, a differenza di altre soluzioni open source, è disponibile unicamente a quei soggetti che sottoscrivono un contratto di utilizzo non divulgazione con la Zensys.

16

Capitolo 3Requisiti di progettazione

3.1 Requisiti utente

L'interfaccia web per la gestione dei dispositivi domotici è rivolta all'utente medio, le cui conoscenze in ambito informatico possono essere anche di basso livello. Non è quindi richiesta alcuna competenza tecnica specifica riguardante i dispositivi, né alcuna conoscenza di linguaggi informatici. La sola conoscenza richiesta è circa i componenti della casa, in termini di normale utilizzo e di comportamento.L'interfaccia deve essere quindi il più comprensibile possibile, intuitiva e facile da imparare ad usare. Un utente che accede per la prima volta deve comprendere ciò che vede e riuscire ad utilizzare gli strumenti che gli sono offerti.In generale l'interfaccia deve quindi essere:

• chiara;• semplice da utilizzare;• intuitiva.

Il progetto è stato condizionato ed implementato tendo conto delle esigenze utente sopra elencate. Le soluzioni adottate saranno trattate nel capitolo 6 dedicato alle caratteristiche dell'interfaccia.

3.2 Requisiti di sistema

A livello di sistema, all'utente è richiesto solamente l'utilizzo di un browser su piattaforma Linux, Windows o Mac. In base alla configurazione di rete utilizzata, se il computer che si sta utilizzando è all'interno della rete locale non è richiesta una connessione internet.Il corretto funzionamento è garantito utilizzando i principali browser commerciali, tra cui Chrome, I.E dalla versione 8, Firefox e Opera.L'architettura che verrà trattata fa comprendere che a livello client, cioè l'utente finale,

17

3 - Requisiti di progettazione

non sono richieste installazioni di software appositi. Tutta l'elaborazione dati e la memorizzazione viene fatta sul lato server.

3.3 Requisiti architetturali

L'architettura generale è composta dal sistema domotico gestito da Dog, realizzato dal groppo elite del Politecnico di Torino e trattato in maniera generale nel capitolo successivo; e da un server web logicamente indipendente che si interpone tra Dog e l'utente.

FIGURA 3.1: Struttura generale dell'architettura di sistema.

A livello hardware la topologia del sistema comprende:

• il sistema domotico;• un gateway centralizzato (Dog);• un server web;• un computer utente.

Il sistema domotico comprende tutti i dispositivi installati nell'abitazione. Tali dispositivi possono comunicare con mezzi differenti (ad esempio cavo ethernet, onde radio, ecc..) ed avere protocolli di comunicazione diversi. Dog permette di riconoscerli, identificali ed è in grado attraverso specifici comandi di governarli.L'interfaccia web, che viene fornita dal server web sul computer dell'utente, riceve la configurazione della casa, la configurazione dei dispositivi e le regole attive da Dog. I dati ricevuti vengono elaborati e riprodotti con il browser dell'utente attraverso un'interfaccia grafica in grado di visualizzare le regole domotiche attive nel sistema e di crearne di nuove.Il server web è dotato di un database MySQL che si occupa di mantenere in memoria tutte le regole dell'utente, quelle attive nel sistema e quelle disattivate. Inoltre contiene ulteriori informazioni utili alla loro visualizzazione: la struttura della sintassi delle opzioni associate al dispositivo e la traduzione delle opzioni.

18

Capitolo 4Dog e DogOnt

4.1 Dog

Dog sta per Domotic OSGi Gateway, cioè, una piattaforma software che permette di integrare e gestire dispositivi domotici in modo indipendente dal tipo di fornitore.

FIGURA 4.1: Logo di Dog.

Come lascia intuire l'acronimo, la tecnologia su cui è basato il sistema è il framework Java OSGi.Il framework OSGi si propone di implementare un modello a componenti completo e dinamico che manca all'ambiente Java. In realtà il linguaggio Java prevede alcuni meccanismi che consentono di realizzare un modello a componenti, ma si tratta comunque di soluzioni di basso livello che comportano conseguente rischio di introdurre errori nel codice e producono soluzioni ad-hoc. OSGi risolve molti dei problemi legati allo scarso supporto di Java nella modularità e nel dinamismo attraverso alcuni concetti fondamentali:

• definizione del concetto di modulo (bundle);• gestione automatica delle dipendenze;• gestione del ciclo di vita del codice (configurazione e distribuzione dinamica).• In sintesi è possibile vedere la tecnologia OSGi come:• un sistema modulare per la piattaforma Java;• un sistema dinamico, che consente l'installazione, l'avvio, lo stop e la rimozione

19

4 - Dog e DogOnt

dei moduli a runtime, senza quindi necessitare di riavvii;• orientato ai servizi, i quali possono essere dinamicamente registrati ed utilizzati

nella macchina virtuale Java.

Tale framework permette di integrare, in modo dinamico e semplice, più bundle in un unico progetto. La suddivisione in bundle, anche detti moduli, permette di mantenere in esecuzione il gateway, anche qualora una parte “non vitale” smetta di funzionare.

FIGURA 4.2: Architettura dei moduli di DOG

Dog è composto da 12 bundle divisi in quattro livelli principali: Device Manager, Device Control, API e Library.Device Manager raggruppa tutti i bundles necessari a conformarsi con il Device Access Specification definito nel servizio OSGi. Questa specifica definisce la logica e le entità (ad esempio i bundle) che devono essere progettate ed implementate da Dog al supporto del rilevamento dei dispositivi esistenti e per assistere la connessione dei nuovi dispositivi. Il livello Device Control raggruppata i bundles dedicati al monitoraggio ed al controllo dei dispositivi, mentre il livello API include i bundles che offrono interfacce di programmazione per applicazioni esterne e per plugins OSGi-based.Ogni bundle possiede funzionalità e caratteristiche differenti:

• DogDeviceManager, permette di registrare i servizi dei Device e associare i dispositivi a un appropriato Driver;

20

4 - Dog e DogOnt

• DogDevice, rappresenta le classi dei device definiti da DogOnt;• DogDeviceCategory, nasce dalla funzionalità del device definite in DogOnt e

definisce come un servizio Driver e un servizio Device possano cooperare per abilitare le operazioni dei device;

• Driver, compete per il collegamento di un servizio Device, traduce messaggi in ingresso e in uscita secondo il protocollo di rete specifico;

• DogStateMonitor, fornisce informazioni sullo stato corrente dei dispositivi connessi a Dog;

• DogExecutor, permette agli altri bundle Dog di eseguire i comandi sui DogDevice e controlla la correttezza della semantica e della sintassi dei comandi ricevuti;

• DogScheduler, offre un servizio centralizzato per la schedulazione dei comandi eseguiti e di monitoraggio dei device. Utilizza i servizi messi a disposizione dal DogExecutor e dal DogStateMonitor;

• DogRuleEngine, fornisce l'ambiente di esecuzione per le regole definite dall'utente;

• DogApi, offre un'interfaccia per accedere al sistema permettendo quindi, attraverso una serie di servizi, di conoscere i device connessi al sistema ed il loro stato, di eseguire dei comandi e di registrarsi come listener per ricevere determinati eventi;

• DogXmlEndPoint, permette ad un utente di comunicare con Dog trattando i servizi del bundle API sotto forma di endpoint XML-RPC.

4.2 DogOnt

DogOnt è un linguaggio di modellazione per gli ambienti di sviluppo integrato (IDE), sulla base di tecnologie del web semantico, specificamente progettato per rappresentare un ambiente domotico intelligente, è focalizzato principalmente sui dispositivi, gli elettrodomestici, gli stati e le funzionalità. DogOnt è organizzato in 5 concetti gerarchici principali (vedi figura 4.3), rispettivamente in:

• Building Environment, sostiene la descrizione della struttura architetturale dell'IDE, ad esempio, l'edificio, l'appartamento, la camera, ecc;

• Building Thing, crea un modello dei dispositivi e degli elettrodomestici domotici, le parti architetturali e i mobili all'interno dell'IDE;

• State, crea un modello delle configurazioni operative che possono assumere i dispositivi e gli elettrodomestici;

• Functionality, rappresenta il dispositivo e i suoi attributi per quanto riguarda eventi di input (comandi) e di output (notifiche);

• Network Component, possiede le specifiche tecnologiche per interfacciare il gateway domotico ai rispettivi dispositivi.

21

4 - Dog e DogOnt

FIGURA 4.3: Schema concettuale di DogOnt.

DogOnt permette di modellizzare i dispositivi domotici e gli elettrodomestici intelligenti in modo astratto, identificandoli in termini di funzionalità e di stato. Supporta tre tipi di classi di funzionalità: Control Functionality, che rappresenta la capacità di un dispositivo di accettare comandi, cioè, di essere controllato; Query Functionality, modellizza la capacità di un dispositivo di rispondere alle richieste sul suo stato; Notification Functionality, che rappresenta la capacità dei dispositiv e degli elettrodomestici intelligenti a generare eventi, cioè, le notifiche sui cambiamenti di stato.DogOnt è in grado di affrontare i problemi di interoperabilità che consente di descrivere:

• dove un dispositivo di domotica si trova;• l'insieme delle funzionalità di un dispositivo di domotica;• le specifiche tecniche necessarie per l'interfaccia del dispositivo;• le possibili configurazioni che il dispositivo può assumere;• regole domotiche per la gestione dei device;• come è composta l'abitazione;• l'insieme degli elementi architettonici e il mobilio all'interno della casa.

Queste informazioni possono poi essere sfruttate dai sistemi intelligenti a fronte di richieste funzionali in ambienti domotici. L'ontologia DogOnt, espressa in OWL, permette di formalizzare tutti gli aspetti di un IDE, per poi generare le corrispettive istanze che rappresentano i dispositivi o gli elementi architettonici dell'abitazione reale modellata.

22

4 - Dog e DogOnt

DogOnt è attualmente adottato per fornire funzionalità di modellazione di abitazioni e capacità di ragionamento per il gateway Dog.

23

Capitolo 5La regola domotica

5.1 Cos'è una regola domotica

Una regola domotica è un automatismo che coinvolge una serie di componenti connessi tra di loro in un ambiente domestico. Lo scopo di una regola è quello di fare eseguire un azione prestabilita. La regola dovrà avere un'opportuna semantica e sottostare ad una grammatica specifica.

FIGURA 5.1: Esempio di regola domotica.

L'interfaccia per la creazione delle regole si occuperà di assistere e facilitare un utente a impostare ed attivare nella sua abitazione delle regole in modo intuitivo, veloce e semplice senza dover conoscere il linguaggio con cui essa è scritta.La figura 5.1 mostra un ipotetica regola, creata attraverso l'interfaccia, esprimibile in un linguaggio simile a quello naturale del tipo: “Se la lampada del salotto si accende dalle 00:00 alle 7:00, durante tutta la settimana, allora spegnila dopo dieci minuti”.

24

5 - La regola domotica

5.2 Grammatica

Una regola per essere corretta, deve avere una grammatica ben definita.Tale grammatica è composta da quattro parole chiave: SE, ALLORA, QUANDO e OPPURE SE seguite da una o più condizioni. Le prime due parole chiave sono obbligatorie, mentre le altre sono opzionali. Un esempio di regola potrebbe essere: “SE la finestra della cucina è aperta, QUANDO il riscaldamento è accesso, ALLORA spegni il riscaldamento della cucina

FIGURA 5.2: Grammatica alla base della creazione delle regole.

La parola chiave SE esprime l'evento che farà scattare la regola. L'evento è indicato, in figura, come un “E-BLOCK” (event-block). QUANDO definisce una o più condizioni che limitano l'evento. La serie di vincoli è indicata come “C-BLOCKS” (constraint-blocks); se sono presenti più vincoli, devono essere soddisfatti simultaneamente. OPPURE SE ha lo stesso significato del SE e viene usato per le sue ripetizioni. Infine, ALLORA indica un insieme di azioni da eseguire al verificarsi delle condizioni specificate nella prima parte della regola. Le azioni sono indicato come "A-BLOCK" (action-blocks).Per mantenere la coerenza della regola, ogni dispositivo coinvolto nella creazione di un regola ha un comportamento differente a seconda del blocco in cui è inserito.Ogni tipologia di condizione potrà gestire specifici oggetti:

• E-BLOCK, interpreta gli eventi generati da dispositivi controllabili, orologio e sensori;

• C-BLOCK, supporta dispositivi controllabili, orologio e sensori;• A-BLOCK, supporta unicamente i dispositivi controllabili.

25

5 - La regola domotica

FIGURA 5.3: Esempio di regola ottenuta con l'interfaccia.

Dalla figura 5.3, si possono osservare i tre tipi di condizioni (E-BLOCK, C-BLOCK e A-BLOCK) precedute dalle rispettive parole chiave (SE, QUANDO, ALLORA).

FIGURA 5.4: Schema della grammatica di una regola.

Una regola è quindi composta da un insieme di condizioni che devono verificarsi e da una insieme di azioni che vengono eseguite. L'insieme di condizioni comprende una o più clausole, le quali sono composte da un evento (E-BLOCK) e da un insieme di vincoli (C-BLOCK). I vincoli possono anche non essere presenti nelle clausole.

26

A-BLOCK

C-BLOCK

E-BLOCK

5 - La regola domotica

L'insieme delle azioni comprende tutti i comandi (A-BLOCK) che vengono eseguiti quando almeno una clausola è verificata.

5.3 Sintassi

Una regola per essere riconosciuta da Dog, oltre a sottostare alla grammatica ben definita, deve essere scritta con una precisa sintassi. Il linguaggio utilizzato è l'XML. Per semplicità viene riportato di seguito un esempio di regola.

<dogrules:rule name="spegnimento_luci_salotto"> <dogrules:if> <dogrules:event> <dogrules:notification name="stateChanged" class="StateChangeNotification" fromDevice="SimpleLamp_lamp7_livingroom"> <dogrules:param name="notificationParamName" value="on"/> </dogrules:notification> </dogrules:event> <dogrules:when> <dogrules:timeInterval> <dogrules:interval startTime="00:00:00" endTime="07:00:00"/> <dogrules:weekdays> <dogrules:day>1</dogrules:day> <dogrules:day>2</dogrules:day> <dogrules:day>3</dogrules:day> <dogrules:day>4</dogrules:day> <dogrules:day>5</dogrules:day> <dogrules:day>6</dogrules:day> <dogrules:day>7</dogrules:day> </dogrules:weekdays> </dogrules:timeInterval> </dogrules:when> </dogrules:if> <dogrules:then> <dogrules:action> <dogrules:command name="off" class="OnOffFunctionality" toDevice="SimpleLamp_lamp7_livingroom"> </dogrules:command> <dogrules:instant after="PT0H5M"/> </dogrules:action> </dogrules:then></dogrules:rule>

FIGURA 5.5: Esempio di regola (Se la luce del salotto viene accesa, qualunque giorno della settimana dalle 00:00 alle 7:00, allora spegnila dopo 10 minuti)

27

5 - La regola domotica

Come si può osservare dall'esempio, all'interno del tag “event” è codificato l'evento “la luce del salotto è stata accesa” e corrisponde all'E-BLOCK della grammatica. Nel tag “when” è codificato il vincolo temporale “un qualunque giorno della settimana dalle 00:00 alle 7:00” e corrisponde ad un C-BlOCK. Infine nel tag “then” è presente il comando “spegni la luce del salotto dopo cinque minuti” che equivale all'A-BLOCK della grammatica

28

Capitolo 6L'interfaccia

6.1 Requisiti generali e soluzioni adottate

L'interfaccia è stata ideata tenendo conto delle esigenze dell'utente, riportate nel capitolo 3. In generale, l'interfaccia deve:

• essere utilizzabile da persone con basse conoscenze informatiche;• essere autoesplicativa ed espressiva;• produrre risultati sempre validi.

L'interfaccia è stata progettata in modo da essere il più semplice possibile da utilizzare. I dispositivi della casa sono rappresentati in modo astratto ed uniforme, indipendentemente dalla tecnologia, permettendo quindi ad un utente di selezionare e poter utilizzare facilmente ogni oggetto connesso al sistema domotico.

FIGURA 6.1: Rappresentazione di un dispositivo.

Ciascun dispositivo ha un nome associato per identificarlo e un icona per rappresentare la tipologia.Per semplificare la costruzione della regola e la selezione dei dispositivi è stato utilizzato lo strumento del trascinamento. Ad esempio, per selezionare un dispositivo presente all’interno della pianta della casa e quindi utilizzarlo per la costruzione di una regola, è sufficiente trascinarlo dalla pianta verso il contenitore apposito. Al rilascio esso verrà aggiunto alla lista dei dispositivi utilizzabili per creare una nuova regola.La costruzione della regola è stata realizzata in modo da essere autoesplicativa ed il più possibile espressiva, cioè può essere direttamente e facilmente ricondotta a un linguaggio simile a quello naturale.

29

6 - L'interfaccia

La regola che viene prodotta e salvata deve essere sempre valida, perlomeno dal punto di vista della sintassi. Viene controllato che:

• la regola contenga almeno una condizione “se” e una “allora” completata;• se compare una condizione “quando”, la condizione “se” precedente contenga un

dispositivo;• il nome della regola sia stato inserito;• in nome della regola non sia già stato assegnato ad un'altra regola;• se un opzione richiede un parametro, questo deve essere inserito.

Quando si effettua un salvataggio l'interfaccia verifica la correttezza della regola e se ci sono degli errori avverte l'utente con dei messaggi visivi.

FIGURA 6.2: Messaggio di errore nella compilazione della regola

Nella figura 6.2 viene proposto un messaggio di errore nella quale l'utente può comprendere che alla regola domotica non è stato assegnato un nome e che non è completa nelle sue parti.Per aiutare la costruzione della regola sono stati stati aggiunti suggerimenti, sempre presenti nell'interfaccia o a comparsa, che suggeriscono come eseguire determinate azioni.

FIGURA 6.3: Editor della regola con evidenziati i suggerimenti.

30

suggerimenti

6 - L'interfaccia

La procedura di editing di una nuova regola possiede determinate caratteristiche che dovrebbero facilitare la costruzione della regola da parte di un utente:

• le condizioni con la scritta “trascina qui un dispositivo” sono sempre visibili e devono essere “riempite” obbligatoriamente con un dispositivo;

• quando un dispositivo viene selezionato, la corrispondente regola si espande, visualizzando tutte le posizioni libere;

• quando si trascina un dispositivo su una condizione libera (con scritta “trascina qui un dispositivo”), tale condizione si evidenzia solamente se il dispositivo è coerente con il tipo di condizione, cioè possiede una configurazione per tale posizione;

• quando si rimuove un dispositivo da una condizione la struttura si auto-adatta alla nuova configurazione;

• le opzioni di un dispositivo che vengono visualizzate nella condizione, sono integrate in una proposizione di facile interpretazione e tradotte a seconda del tipo di condizione in cui il dispositivo è stato trascinato.

FIGURA 6.4: Struttura regola con nessun dispositivo.

FIGURA 6.5: Struttura regola prima di una selezione di un nuovo dispositivo.

31

6 - L'interfaccia

FIGURA 6.6: Struttura regola durante il trascinamento di un nuovo dispositivo.

6.2 Homepage

FIGURA 6.7: Homepage dell'interfaccia.

32

Barra degli strumenti standard

Area visualizzazione della pianta

Barra degli strumenti regole

6 - L'interfaccia

L'Homepage è la pagina iniziale dell'interfaccia. Il compito di tale pagina è quello di visualizzare l'elenco delle regole salvate dall'interfaccia e selezionare i dispositivi per crearne di nuove.La schermata è suddivisa in tre parti:

• la barra degli strumenti standard;• l'area di visualizzazione della pianta dell'abitazione;• la barra degli strumenti regole.

FIGURA 6.8: Barra degli strumenti della Homepage.

La barra degli strumenti standard possiede i pulsanti per accedere alle opzioni generiche dell'interfaccia.

• Il pulsante “configurazione” è predisposto per visualizzare e impostare le opzioni sull'utilizzo dell'interfaccia.

• Il pulsante “esci” per uscire dall'interfaccia (nel caso che quest'ultima sia contenuta in un progetto più generico).

• Il pulsante “editor” permette invece di accedere all'editor dell'abitazione per modificare il piano selezionato, se disponibile.

FIGURA 6.9: Area visualizzazione della pianta dell'abitazione nella Homepage.

33

Barra di selezione del piano

Area di visualizzazione della pianta della casa

6 - L'interfaccia

La parte centrale della pagina è suddivisa a sua volta in due parti:

• la barra di selezione;• l'area di visualizzazione della pianta.

La barra di selezione visualizza i nomi dei piani che costituiscono l'abitazione, nel caso in cui la casa si trovi su più piani; altrimenti, visualizza il nome del singolo appartamento o piano. Nell'area di visualizzazione della piantina della casa viene invece rappresentato, in modo semplificato, la mappa di un piano. Cliccando sul nome del piano, esso verrà selezionato e nell'area sottostante verrà visualizzata la sua pianta

FIGURA 6.10: Barra degli strumenti regole nella pagina della Homepage.

Nella parte bassa della pagina ci sono tre contenitori che si occupano rispettivamente di:

• visualizzare tutte le regole memorizzate;• accogliere i dispositivi selezionati e di passare alla pagina per la creazione di una

regola;• suggerire regole in base ai dispositivi installati.

Il primo contenitore con la dicitura “Regole esistenti” permette, al click del mouse, di visualizzare tutte le regole memorizzate dall'interfaccia sino a quel momento.

FIGURA 6.11: Visualizzazione delle regole memorizzate.

Per ogni regola memorizzata viene indicato lo stato. Se è spuntata l'opzione “Attiva”, significa che la regola è presente in Dog e quindi è in funzione, viceversa se l'opzione non è spuntata vuol dire che in Dog la regola non è presente e quindi è solamente memorizzata nel database dell'interfaccia. Cliccando sulla “X” viene chiesto all'utente

34

6 - L'interfaccia

se vuole eliminare la regola, mentre se clicca sul nome della regola o sul “blocco note” può visualizzare la regola in questione nel dettaglio ed eventualmente modificarla.Il contenitore “Crea nuova regola” gestisce diversi eventi:

• permette di ricevere i dispositivi che gli vengono trascinati sopra con il mouse;• se si posiziona il mouse sopra il contenitore senza avere oggetti trascinati,

compare un riquadro contenente i dispositivi sino a quel momento selezionati;• cliccando con il mouse si accede alla pagina di creazione di una nuova regola;• cliccando sull'icona del cestino posizionato a fianco si svuota il contenitore.

Se un dispositivo viene trascinato nel contenitore, inizialmente vuoto, l'immagine del contenitore cambia. Questo per indicare che è stato selezionato ed a fianco della scritta “Crea nuova regola” compare il cestino per il suo eventuale “svuotamento”.

(a) (b) (c)FIGURA 6.12: Immagini del contenitore con uno, due e tre dispositivi

selezionati.

Il contenitore “Suggerisci regole” non è attualmente funzionante poiché non c'è attualmente in Dog un strumento che crea delle regole in base ai dispositivi installati. Questa nuova funzione è prevista come evoluzione successiva.

6.2.1 Come viene rappresentata l'abitazione

L'abitazione viene rappresentata dall'interfaccia in base a dei file di configurazione ricevuti da Dog. Quando si accede la prima volta alla Homepage, l'interfaccia elabora i file di configurazione e rappresenta la casa popolata con i dispositivi ricevuti da DOG.

35

6 - L'interfaccia

FIGURA 6.13: Rappresentazione della casa.

La rappresentazione della casa viene fatta in modo proporzionale alle dimensioni della pagina dell'utente. Viene calcolato il fattore di scalamento della pianta in base all'altezza e alla larghezza dell'area di visualizzazione della Homepage. La rappresentazione risulta quindi ottimizzata, migliorando la leggibilità e la comprensione dell'utilizzatore.Un abitazione generica è strutturata su una serie di piani, ciascuno dei quali è composto da un numero variabile di stanze. L'immagine 6.13 rappresenta un'abitazione ipotetica strutturata su tre piani: primo piano, piano ammezzato e secondo piano.I piani sono realizzati attraverso la rappresentazione schematizzata delle stanze che ne fanno parte.

FIGURA 6.14: Esempio di stanza, “camera dei ragazzi”.

36

6 - L'interfaccia

Una stanza è rappresentata con un rettangolo che ne semplifica la forma. Al suo interno si può osservare il nome della stanza, i dispositivi controllabili ed i sensori che contiene. La posizione degli oggetti nella stanza può essere variata in modo da rappresentare nel modo più fedele e realistico possibile l'abitazione. Il colore di sfondo della stanza è impostato in base alla sua tipologia, ad esempio salotto e camera da letto sono rappresentati con colori differenti

FIGURA 6.15: esempio di sensore, “sensore di fumo”

I dispositivi controllabili ed i sensori sono rappresentati con un'immagine e con un nome. L'immagine cambia in base alla tipologia del componente, invece il nome consiste in una breve descrizione univoca. Il nome, posizionato sotto all'immagine, viene tagliato per evitare che un singolo oggetto occupi troppo spazio nella stanza. Per visualizzare il nome completo è sufficiente posizionare il mouse sul dispositivo. La dimensione dell'immagine e del carattere vengono scelti in base alla dimensione della pagina visualizzata sul browser.

6.2.2 Configurazione della casa

Per avere un rappresentazione visiva dell'abitazione, il gateway domotico Dog ha memorizzato al suo interno tutte le informazioni necessarie all'interfaccia web.L’interfaccia riceve da Dog:

• la descrizione di come è strutturato l'edificio;• la collocazione dei dispositivi nelle varie stanze;• le coordinate e le dimensioni delle stanze;• le coordinate dei dispositivi nelle stanze a cui appartengono;• i nomi associati alle parti della casa (piani, stanze, ecc..);• i nomi associati ai dispositivi.

Le informazioni sono contenute in messaggi codificati nel linguaggio XML. L'interfaccia riceve questi messaggi e ne analizza il contenuto.

37

6 - L'interfaccia

<dhc:building name="SimpleDetachedHome"><dhc:storey class="Storey" levelFromGround="0" name="FirstFloor"> <dhc:room class="LivingRoom" name="living"> <dhc:ceiling class="Ceiling" name="Ceiling_living" /> <dhc:floor class="Floor" name="Floor_living" /> <dhc:wall class="Wall" name="Wall_living_north"> <dhc:hasWallOpening class="Entrance" name="mainDoor" /> </dhc:wall> <dhc:wall class="Wall" name="Wall_living_east"> <dhc:hasWallOpening class="Window" name="Window_w1_living" /> </dhc:wall> <dhc:wall class="Wall" name="Wall_kitchen_living"> <dhc:hasWallOpening class="WallOpening" name="Opening_kitchen_living" /> </dhc:wall> <dhc:wall class="Wall" name="Wall_living_west"> <dhc:hasWallOpening class="WallOpening" name="Opening_living_corridor1" /> </dhc:wall> </dhc:room> <dhc:room class="Kitchen" name="kitchen"> <dhc:ceiling class="Ceiling" name="Ceiling_kitchen" /> <dhc:floor class="Floor" name="Floor_kitchen" /> <dhc:wall class="Wall" name="Wall_kitchen_east"> <dhc:hasWallOpening class="Window" name="Window_w2_kitchen" /> </dhc:wall> <dhc:wall class="Wall" name="Wall_kitchen_north" /> <dhc:wall ref="Wall_kitchen_living" /> <dhc:wall class="Wall" name="Wall_kitchen_west" /> </dhc:room></dhc:storey></dhc:building>

FIGURA 6.16: sezione di un messaggio con la struttura della casa.

Nell'esempio, riportato in figura 6.1, viene proposta la struttura di un abitazione su un solo piano con due stanze. L'interfaccia memorizza tali dati, tralasciando le informazioni riguardati i muri e i soffitti che non sono utilizzati al fine di rappresentare l'edificio.In un'altra sezione del medesimo messaggio, si ricevono le informazione sui dispositivi contenuti nell'edificio (vedi codice sottostante).

38

6 - L'interfaccia

<dhc:controllables> <dhc:device domoticSystem="KONNEX" name="MainsPowerOutlet_p12_kitchen" class="MainsPowerOutlet"> <dhc:description>A MainsPowerOutlet instance named MainsPowerOutlet_p12_kitchen</dhc:description> <dhc:isIn>kitchen</dhc:isIn> <dhc:controlFunctionality class="OnOffFunctionality"> <dhc:commands> <dhc:command name="on" class="OnCommand" /> <dhc:command name="off" class="OffCommand" /> </dhc:commands> </dhc:controlFunctionality> <dhc:notificationFunctionality class="StateChangeNotificationFunctionality"> <dhc:notifications> <dhc:notification name="stateChanged" class="StateChangeNotification"> <dhc:param type="State" name="notificationParamName" /> </dhc:notification> </dhc:notifications> </dhc:notificationFunctionality> <dhc:state class="OnOffState"> <dhc:statevalues> <dhc:statevalue name="on" class="OnStateValue" /> <dhc:statevalue name="off" class="OffStateValue" /> </dhc:statevalues> </dhc:state> </dhc:device></dhc:controllables>

FIGURA 6.17: Sezione di un messaggio con la configurazione di un dispositivo.

Tutti i dispositivi dell'abitazione vengono elencati, fornendo informazioni di configurazione e sulle caratteristiche dell'oggetto. Si riesce ad avere quindi una descrizione generica del dispositivo e a conoscere il nome della stanza che lo contiene.Per posizionare le varie stanze, per conoscere le loro dimensioni e per collocare correttamente i vari dispositivi, Dog invia un messaggio con le coordinate spaziali e le dimensioni.

39

6 - L'interfaccia

<hxy:roomlist> <hxy:room uri="kitchen"> <hxy:x>0.0</hxy:x> <hxy:y>0.0</hxy:y> <hxy:width>200.0</hxy:width> <hxy:height>100.0</hxy:height> </hxy:room> <hxy:room uri="living"> <hxy:x>0.0</hxy:x> <hxy:y>100.0</hxy:y> <hxy:width>200.0</hxy:width> <hxy:height>100.0</hxy:height> </hxy:room></hxy:roomlist>

FIGURA 6.18: Sezione di un messaggio con il posizionamento e le dimensioni di due stanze.

L'unità di misura che viene utilizzata per posizionare e dimensionare le stanze non è influente (nell'esempio sono pixel), poiché l'interfaccia fa uno scalamento della pianta in base alla dimensione della pagina del browser utilizzata dall'utente.

<dhm:storeylist> <dhm:storey uri="FirstFloor"> <dhm:name>primo piano</dhm:name> </dhm:storey> <dhm:storey uri="SecondFloor"> <dhm:name>secondo piano</dhm:name> </dhm:storey> <dhm:storey uri="MezzanineFloor"> <dhm:name>piano ammezzato</dhm:name> </dhm:storey> </dhm:storeylist>

FIGURA 6.19: Sezione di un messaggio con la traduzione dei nomi delle stanze.

I nomi delle stanze, dei piani e dei dispositivi visualizzati nella pianta dell'edificio possono essere modificati. Dog invia un messaggio destinato proprio al cambio di nome. Se l'interfaccia non lo riceve o se qualche componente da visualizzare non è presente in tale messaggio, viene visualizzato l'identificativo originario.

6.3 Editor delle regole

L'editor delle regole permette di visualizzare, modificare e creare una regola domotica.

40

6 - L'interfaccia

La schermata è composta da:

• la barra delle opzioni;• l'area elenco dispositivi;• l'area creazione della regola;• l'area dei piani.

FIGURA 6.20: Pagina per la creazione di una regola domotica.

Nella barra degli strumenti sono presenti tre pulsanti:

• pulsante “nuova regola” abbandona la regola in corso e resetta la regola. L'utente viene avvertito con un messaggio che si sta abbandonando la regola in corso e in caso di errore può annullare l'azione. La regola proposta avrà come titolo “Inserire nome della regola” e sarà composta da una condizione “se” e una condizione “allora”, entrambe vuote.

• il pulsante “esci” permette di uscire dalla pagina e tornare all'Homepage. Se la regola non è stata salvata e l’utente conferma l’uscita, la regola viene persa.

• Il pulsante “salva” permette all'utente di salvare la regola in corso. All'utente verrà chiesto inoltre se rendere attiva la regola.

41

Area dei piani

Barra delle opzioni

Area creazione regole

Area elenco dispositivi

6 - L'interfaccia

FIGURA 6.21: Area elenco dispositivi nella pagina di creazione delle regole.

Nell'area elenco dispositivi sono presenti:

• gli oggetti standard per la creazione di una regola;• i dispositivi selezionati dall'utente.

Tutti i dispositivi selezionati dall'utente sono elencati in quest'area, inoltre è presente l'oggetto “ora e giorni”.

FIGURA 6.22: Oggetto “ora e giorni”.

L'oggetto “ora e giorni” permette di aggiungere delle opzioni temporali alla regola. Può essere posizionato in tutte le condizioni libere, tranne che nelle condizioni “allora”, poiché ai dispositivi che vengono posizionati in quella condizione c'è la possibilità di impostare per ciascuno dei parametri temporali.

FIGURA 6.23: Oggetto “ora e giorni” in una condizione “se”.

Se l'oggetto “ora e giorni” viene posizionato in una condizione “se” o in una condizione “oppure se”, l'utente può selezionare i giorni della settimana e l'ora esatta in cui la regola viene attivata.

42

6 - L'interfaccia

FIGURA 6.24: Oggetto “ora e giorni” in una condizione “quando”.

Mentre, se viene posizionato in una condizione “quando”, l'utente può selezionare i giorni della settimana e un intervallo di tempo che vincoli l'evento previsto nella condizione “se”. L'intervallo di tempo è esprimibile nella forma “dalle-alle”, ad esempio dalle 8:00 alle 19:00, oppure “dalle-per”, ad esempio dalle 12:00 per 2 ore.

FIGURA 6.25: Area dei piani nella pagina di creazione delle regole

L'area dei piani, rappresenta l'abitazione senza i dispositivi in esso contenuti. Quando un utente si accorge di aver dimenticato uno o più dispositivi può cliccare sul piano della casa. La regola a cui si stava lavorando, viene memorizzata e si ritorna all'Homepage. L'utente può quindi aggiungere i dispositivi a cui è interessato. Il contenitore centrale dell’Homepage avrà la dicitura “Continua regola”, permettendo quindi di ritornare alla costruzione della regola a cui si stava lavorando. Quando si torna all'editor delle regole, verrà rappresentata la regola esattamente come l'ha lasciata e nell'area elenco dispositivi saranno presenti tutti i dispositivi, compresi quelli aggiunti nell'azione precedente. Quando viene premuto il pulsante “salva”, se la regola visualizzata si riferiva ad una salvata precedentemente (non più temporanea), verrà sovrascritta.

43

6 - L'interfaccia

FIGURA 6.26: Struttura iniziale di una regola domotica.

Il corpo centrale della pagina dell'editor delle regole è occupato dalla struttura della regola. Inizialmente una regola vuota è composta dal titolo della regola e da una condizione “se” ed una “allora”, entrambe vuote. Per inserire un dispositivo nella regola, tra quelli precedentemente scelti, è sufficiente selezionare con il mouse tale dispositivo e trascinarlo nella condizione desiderata. Al rilascio, al posto della scritta “trascina qui un dispositivo”, viene visualizzata l'icona del dispositivo con tutte le opzioni specifiche di quel dispositivo.

44

Capitolo 7Architettura di progetto

7.1 Architettura generale

Il progetto è stato implementato seguendo l'architettura MCV (modello-vista-controllore). Il pattern è molto diffuso ed utilizzato nello sviluppo di interfacce grafiche di sistemi software object-oriented. E' basato sulla separazione dei compiti fra i componenti software che svolgono ruoli differenti:

• il modello fornisce i metodi per accedere ai dati utili all'applicazione• la vista visualizza i dati contenuti nel modello e si occupa dell'interazione con

utenti.• il controllore riceve i comandi dell'utente (in genere attraverso la vista) e li

gestisce modificando lo stato degli altri due componenti.• Utilizzare questo schema permette di sviluppare in modo indipendente le varie

componenti di un applicativo, effettuare in modo semplice test e collaudi, e permette una migliore e più semplice manutenzione delle sue parti.

• Il controllo di flusso è generalmente il seguente:• L'utente interagisce con l'interfaccia (per esempio, premendo un pulsante del

mouse).• Il controllore gestisce l'evento di ingresso dall'interfaccia utente ed a seconda

della chiamata può implementare una nuova vista oppure richiamare un metodo del modello.

• Il controllore riceve i dati dal modello e li inoltra alla vista che li elabora e permette di generare un interfaccia utente appropriata.

• L'interfaccia utente attende ulteriori interazioni utente, che consente di riavviare il ciclo di controllo di flusso.

45

7 - Architettura di progetto

FIGURA 7.1: Architettura generale di sistema.

Come si può vedere dall'immagine, è usato usato un doppio livello architetturale basato sul pattern MVC, implementato con linguaggi differenti. Al primo livello è stato utilizzato il linguaggio php, invece nel secondo con Javascript.

7.1.1 Primo livello architetturale

Il primo livello implementato con il linguaggio php, è composto da:

• una pagina per indirizzamento;• tre controllori;• tre viste.

46

7 - Architettura di progetto

FIGURA 7.2: Schema del primo livello dell'architettura dell'interfaccia.

La pagina di indirizzamento ha il compito di ricevere le richieste utente per l'accesso alle altre pagine e istanziare il relativo controllore. Una richiesta ad una pagina specifica, ha bisogno di due parametri obbligatori: nome del controllore e azione da eseguire. Tali parametri permettono di chiamare un metodo specifico del controllore.I controllori implementano la loro vista, e attraverso due metodi definiti, permettono di aggiungere e restituire le variabili di sessione.Le viste si occupano di creare le varie pagine dell'interfaccia e implementano il secondo livello architetturale.Questo primo livello architetturale permette gestire le azioni utente quando si effettua un cambiamento di pagina e di mantenere le variabili di sessione necessarie al secondo livello architetturale. Come si può osservare dalla figura 7.2, non sono presenti modelli, ovvero la gestione dei dati non è trattata a questo livello ma nel secondo.

7.1.2 Secondo livello architetturale

Per il secondo livello è stato utilizzato il linguaggio Javascript. Per ciascuna schermata (Homepage, editor regola, editor abitazione) è implementata un'architettura MCV composta da:

• un controllore;• un modello;• una vista.

47

7 - Architettura di progetto

FIGURA 7.3: Schema del secondo livello dell'architettura dell'interfaccia.

Nel momento in cui viene caricata una schermata, viene implementata l'architettura MCV, andando ad istanziare il modello, il controllore e la vista. Il controllore riceve le variabili di sessione, è in grado di recuperare i dati attraverso il modello, e modificare la pagina web attraverso la vista.Un utente che naviga nella pagina web, esegue delle routine definite nella vista. Se i comandi richiedono operazioni sul database, il controllore li inoltra al modello.

FIGURA 7.4: Schema architetturale del modello.

Il modello si occupa di gestire i dati dell'interfaccia. Le richieste di memorizzazione e di caricamento, che richiedono accesso al database, vengono effettuate da una sezione a parte chiamata Elaboratore dei dati.L'Elaboratore dei dati utilizza la libreria ParserXML. Questa libreria è stata implementata per fornire delle primitive in grado di analizzare i messaggi nel formato XML e recuperare i dati in esso contenuti.

48

7 - Architettura di progetto

Il modello invia le richieste verso l'Elaboratore dei dati, specificando il tipo di richiesta e passando dei parametri specifici. L'elaboratore gestisce la richiesta; se è una richiesta verso il database, manda un comando a MySQL nel formato SQL; se invece è una richiesta verso Dog utilizza messaggi in formato XML. Le risposte vengono elaborate e strutturate in formato json e rimandate al modello.I messaggi provenienti da Dog vengono richiesti dal modello nel momento in cui questo viene istanziato. Tali messaggi contengono la configurazione completa del sistema domotico e contengono:

• la struttura dell'abitazione in tutte le sue parti;• i nomi associati alle stanze dell'abitazione e ai dispositivi;• le dimensioni e le coordinate spaziali delle stanze e dei dispositivi all'interno

delle stanze;• la configurazione specifica dei dispositivi installati nel sistema domotico;• tutte le regole attive su Dog.

La struttura completa dell'abitazione e la configurazione dei dispositivi sono dati indispensabili per il corretto funzionamento dell'interfaccia.

49

Capitolo 8Implementazione

8.1 Struttura dell'interfaccia web

L'interfaccia è stata progettata per essere visualizzata sui monitor dei nostri computer, e in futuro su dispositivi differenti come palmari, smart phone, pannelli touch screen, etc. L'interazione da parte dell'utente può avvenire attraverso diverse modalità di input, per esempio utilizzando il dito con monitor touch screen, il mouse, o speciali penne.L'interfaccia è composta da tre schermate:

• una Homepage;• una pagina per la costruzione delle regole;• una pagina per l'editor dell'abitazione.

Le prime due schermate sono accessibili ed utilizzabili da parte dell'utente, l'editor della casa invece è stata utilizzata in fase di implementazione per produrre i file di configurazione dell'abitazione. Le prime due pagine di cui si è parlato nei capitoli precedenti vanno a costituire il “cuore” del progetto, mentre l'editor verrà trattato nel capitolo 9 tra i possibili lavori futuri.L'interfaccia utilizza una base dati presente sul web server, allo scopo di memorizzare le regole e i dati per la rappresentazione delle opzioni dei dispositivi.

8.2 Linguaggio di programmazione

L'interfaccia è stata implementata con una tecnologia web-based utilizzando il linguaggio PHP e il Javascript, questo per creare pagine web dinamiche. Una pagina creata in HTML è infatti statica, in quanto una volta interpretata dal browser di un utente, la disposizione degli elementi rimane immutata, cosi come il loro contenuto.L'adozione del linguaggio php permette invece la costruzione di pagine dinamiche, che vengono create lato server, ed inviate successivamente al browser dell'utente che ne fa richiesta. Un altro pregio è il vasto numero di api in suo possesso e la possibilità di interfacciarsi con numerosi database tra cui MySQL.

50

8 - Implementazione

Fondamentale per l'implementazione è l'utilizzo del framework jQuery. jQuery è una libreria di funzioni, codificata in Javascript, che ha il compito di fornire strumenti di per la programmazione lato client e per la gestione degli eventi di una pagina HTML. Tramite tale libreria, è possibile effettuare svariate operazioni con poche righe di codice, come per esempio conoscere l'altezza di un elemento, o farlo scomparire con effetto dissolvenza. La gestione degli eventi viene standardizzata e gestita automaticamente; la stessa cosa riguarda l'utilizzo di Ajax, in quanto sono presenti alcune funzioni molto utili e veloci che si occupano di effettuare le connessioni e l'invio dei dati.Utilizzare Ajax ha permesso di gestire in modo semplice ed efficace le chiamate asincrone dall'interfaccia. Una chiamata Ajax è costituita da una serie di parametri, i principali sono elencati di seguito.

• url: indirizzo verso cui fare la richiesta;• data: elenco dei parametri da allegare alla richiesta• type: tipologia di richiesta (metodo POST o GET);• cache: stabilisce se memorizzare la risposta sul client;• dataType: formato dei dati ricevuti, nel nostro caso saranno messaggi json. Json

è un formato di dati, adatto in ambito client-server, che permette di strutturare nella medesima variabile dati con formati differenti;

• timeout: tempo di attesa di una risposta, superata la soglia viene richiamata la funzione di errore;

• error: funzione richiamata in caso di errore della chiamata;• success: funzione richiamata in caso di successo della chiamata.

8.3 Database MySQL

Un file apposito contiene le configurazioni per effettuare la connessione al database:• $db: nome del database;• $db_host: indirizzo dell'host;• $db_user: nome per l'accesso al database;• $db_pass: password per l'accesso al database.

Nel database è presente:

• una tabella “REGOLE”;• una tabella “STRUTTURA OPZIONI”;• una tabella “TRADUZIONE”.

51

8 - Implementazione

8.3.1 Tabella REGOLE

TABELLA 8.1: Struttura della tabella REGOLE.

Tutte le regole create e salvate vengono memorizzate nella tabella “regole”. Come si può vedere dalla tabella 8.1, gli attributi sono:

• id: chiave primaria della tabella, con valore auto assegnato in maniera incrementale;

• nome: nome della regola che l'utente ha scelto;• stato: stabilisce se una regola è attiva, non attiva o temporanea. Le regole attive

sono quelle che poi verranno inviate a Dog e che governeranno i dispositivi dell'abitazione. Quelle non attive sono nel database e potranno essere successivamente attivate. Le regole temporanee vengono create in fase di costruzione della regola e cancellate se si annulla l'elaborazione di quest'ultima.

TABELLA 8.2: Esempio di tupla inserita nella tabella “regole”.

All'apertura della pagina viene aggiunto nel database, una nuova tupla nella tabella regole con i seguenti attributi:

• nome: “Inserire_nome_regola”, nome standard attribuito ad una regola temporanea.

• stato: “TEMP”, una regola che non è stata ancora salvata dall'utente è temporanea. Tutte le regole temporanee vengono cancellate quando si effettua un salvataggio.

• xml: “NULL”, la regola essendo temporanea non è stata ancora codificata nel linguaggio XML, pertanto il campo è vuoto.

• listaDevice: contiene l'elenco dei dispositivi che l'utente ha selezionato al fine di creare una regola.

52

8 - Implementazione

8.3.2 Tabella TRADUZIONE

TABELLA 8.3: Struttura della tabella TRADUZIONE.

Per facilitare la comprensione delle opzioni riguardanti un dispositivo, si usa una tabella di traduzione. Nella fase di caricamento della configurazione del dispositivo, viene interrogata la suddetta tabella e se ci sono corrispondenze tra la tipologia del dispositivo e i nome delle opzioni, queste ultime verranno poi visualizzate nella costruzione della regola. Se invece non viene trovata una corrispondenza viene proposta l'opzione che si trova nel file di configurazione del dispositivo.

TABELLA 8.4: Esempio di tuple per la tabella TRADUZIONE.

Ad esempio le luci, chiamate dal sistema “SimpleLamp” hanno nel file di configurazione un opzione denominata “on” che si può trovare in tutti i tipi di condizione. L'opzione “on” verrà tradotta e visualizzata con il nome “accende”, “acceso” e “accendi” rispettivamente per le condizione “se”, “quando” e “allora”.Gli attributi della tabella “traduzione” sono:

• tipo: chiave della tabella, è la tipologia del dispositivo.• opzione: chiave della tabella che insieme a tipo formano la chiave composta.

Contiene le opzioni associate al dispositivo;• se: traduzione dell'opzione quando il dispositivo viene collocato in una

condizione “se”;• quando: traduzione dell'opzione nel momento in cui il dispositivo è nella

condizione “quando”;• allora: traduzione dell'opzione quando il dispositivo si trova nella condizione

“allora”.

53

8 - Implementazione

8.3.3 Tabella STRUTTURA OPZIONE

TABELLA 8.5: Struttura della tabella STRUTTURA OPZIONE.

Per rendere più comprensibili le opzioni associate ad un dispositivo e quindi facilitare l'utente durante la fase di costruzione della regola, viene interrogata la tabella “struttura opzione”. In questa tabella è presente la sintassi che verrà visualizzata all'interno di una condizione.

TABELLA 8.6: Esempio di tuple per la tabella STRUTTURA OPZIONE.

La “SimpleLamp” ha la classe OnOffFunctionality. Tale classe raggruppa le opzioni “on” e “off” che compariranno nella condizione “allora”. La sintassi proposta che si può osservare dalla figura 8.1 sottostante sarà nella forma “opzioni” e “nome_dispositivo”.

FIGURA 8.1: Condizione “allora” con sintassi tradotta.

Gli attributi presenti sono:

• tipo: chiave della tabella, è la tipologia del dispositivo;• classe: chiave della tabella che insieme a “tipo” formano la chiave composta.

Contiene il nome della classe associata ad un opzione, ad esempio l'opzione “on” e l'opzione “off”, hanno la medesima classe;

• sintassi: contiene la sintassi di una prestabilita classe di opzioni che vengono riprodotte per una determinata tipologia di dispositivi;

• sintassi_secondaria: quando un dispositivo ha una classe “StateChangeNotificationFunctionality”, nelle condizioni “se” vengono riprodotte tutte le opzioni disponibili nella condizione “quando” e sono strutturate con la sintassi secondaria.

54

8 - Implementazione

8.3.4 Operazioni sul database

Durante l'utilizzo dell'interfaccia l'utente esegue delle operazioni sul database anche a sua insaputa. Le azioni che coinvolgono il database sono:

• cancellazione di una regola;• creazione nuova regola;• modifica di una regola;• visualizzazione regola esistente;• salvataggio regola;• aggiunta di un nuovo dispositivo per la regola in fase di editing.

Nell'Homepage l'utente può visualizzare tutte le regole e decidere quale eliminare. Dopo aver ricevuto dei messaggi per la conferma, nel database verrà eseguita l'operazione delete per cancellare la regola selezionata.

FIGURA 8.2: Diagramma delle operazioni sul database durante la fase di cancellazione di una regola.

Durante la fase di creazione di una nuova regola, verranno inviati comandi al database:

• all'inizio della fase di creazione di una regola;• quando un utente salva la regola;• quando un utente vuole aggiungere un ulteriore dispositivo e torna

all'Homepage.

La fase di creazione di una nuova regola, inizia quando un utente preme sul contenitore “Crea nuova regola” dell'Homepage, oppure quando preme il pulsante “nuova regola” dell'editor delle regole. Quando ciò avviene, si esegue una insert nel database per aggiungere la nuova regola temporanea.Se l'utente si accorge di non avere a disposizione uno o più dispositivi necessari per la

55

8 - Implementazione

creazione di una regola, cliccando nell’area dei piani ritorna nell’Homepage e può quindi aggiungere i dispositivi voluti. Ritornando poi nell'editor vedrà la regola come l'aveva lasciata. Sino a quando la regola non viene salvata, tornare nell'Homepage comporta la sovrascrittura della regola temporanea.

FIGURA 8.3: Diagramma delle operazioni sul database durante la fase di creazione di una nuova regola.

La prima volta che l'utente effettua un salvataggio, premendo il pulsante “salva”, verrà sovrascritta la regola temporanea attraverso un update e cambiato lo stato da “temporaneo” a “permanente”. Sino a che si rimane nell'editor della stessa regola, ogni azione di salvataggio comporta la sovrascrittura della regola visualizzata. Tornando nell'Homepage per aggiungere ulteriori dispositivi, verrà creata una nuova regola uguale a quella su cui si stava lavorando, con stato “temporaneo” e referenziata a quella originale. I dispositivi aggiunti saranno a disposizione dell’utente per la nuova regola. L’aggiunta

56

8 - Implementazione

di ulteriori dispositivi comporterà la sovrascrittura della regola temporanea. Quando verrà effettuato il salvataggio, la regola originale verrà sovrascitta e si perderà traccia di quella temporanea.

FIGURA 8.4: Diagramma delle operazioni sul database durante la fase di visualizzazione e modifica di una regola già esistente.

La visualizzazione di una regola è possibile solamente per quelle non temporanee. La fase di visualizzazione inizia con l'operazione di select dal database per recuperare la regola selezionata. È possibile procedere con l'aggiunta di ulteriori dispositivi cliccando sull'area dei piani e ritornando all'Homepage. A questo punto viene ripreso il meccanismo spiegato precedentemente nella fase di creazione di una regola (vedi figura 8.3 e 8.4).

57

Capitolo 9Risultati sperimentali

9.1 Test funzionale

Allo scopo di rendere il codice compatibile con gli standard nell'ambito W3C, è stato analizzato da:

• un analizzatore di collegamenti;• un analizzatore HTML.

FIGURA 9.1: Analizzatore di collegamenti.

Link Checker, analizza un documento HTML o direttamente un sito Web per verificare la correttezza dei link e delle anchor. I link sono collegamenti che consentono di passare da una pagina a un'altra, mentre le ancore permettono di muoversi all'interno di una stessa pagina. Link Checker, verifica che i collegamenti siano unici e che siano dereferenziati (puntano realmente ad una pagina); anche in modo ricorsivo su un intero sito.

FIGURA 9.2: Tempo di per l'analisi dell'interfaccia web con Link Checker.

L'analisi dell'intero sito è stato fatta in 21.62 secondi e come viene riportato dalla figura 9.3, tutti i collegamenti risultano essere validi.

OGGETTI RISULTATILinks Valid linksAnchors (20 found) Valid anchors

TABELLA 9.1: Risultati dell'analisi dell'interfacci web con Link Checker.

58

9 - Risultati sperimentali

FIGURA 9.3: Analizzatore HTML.

Markup Validation è un strumento offerto dal consorzio W3C che consente di convalidare un documenti web.La maggior parte dei documenti Web sono scritti usando linguaggi di markup, ad esempio HTML o XHTML. Questi linguaggi sono definiti da specifiche tecniche, che di solito includono una grammatica formale leggibile. L'atto di controllo di un documento o di un intero sito web verso questi vincoli si chiama convalida. Questo è quello che compie Markup Validation.

FIGURA 9.4: Risultati dell'analisi dell'interfacci web con Markup Validation.

Come viene testimoniato dalla figura 9.4, l'interfaccia web è stata validata dall'analizzatore di markup del consorzio W3C. È stato riconosciuto il tipo del documento (HTML 4.01 Transitional) e una codifica utf-8.HTML 4.01 Transitional è una versione dell'HTML nella quale gli elementi deprecati sono ammessi.UTF-8 è una codifica dei caratteri Unicode in sequenze di lunghezza variabile di byte, da 1 a 4 byte per ciascun carattere. Per esempio un solo byte è necessario per rappresentare i 128 caratteri dell'alfabeto ASCII.L'interfaccia è stata testata manualmente per verificare il suo corretto funzionamento, utilizzando i principali browser in commercio:

• Google Chrome 9.0 e successive;• Mozilla FireFox 30.3 e successive;• Internet Expoler 7.0 e successive;• Opera 9.80 e successive.

È stato verificato il corretto caricamento dell'interfaccia utilizzando i principali browser offerti dai principali sistemi operativi in commercio (Linux, Microsoft,

59

9 - Risultati sperimentali

MAC); vedi tabella 9.2.

Linux Microsoft MACFirefox 3.0.3

Firefox 3.6

Firefox 4.0

Firefox 3.6.16

Firefox 4.0.1

Chrome 12.0

Chrome 10 Chrome 9.0

Safari 5.0.5

Konqueror 4.6

MSIE 7

Iceape 1.1.13

MSIE 8

Opera 9.80

Opera 9.80

Opera 11.10

Opera 11.10

Kazwhakase 0.5.2

Safari 4.0

SeaMonkey 1.1.12

SeaMonkey 1.1.14

TABELLA 9.2: Visualizzazione interfacci con browser differenti.

60

9 - Risultati sperimentali

L'interfaccia è stata pubblicata su un server del Politecnico, allo scopo di testare il suo comportamento nella rete internet.Un test che può essere fatto è verificare il tempo di caricamento di una pagina dell'interfaccia e confrontarlo con dei campioni paragonabili. Nello schema 9.5 sotto riportato, è stato misurato il tempo di caricamento dell'Homepage. La pagina ha una dimensione di 6.62KB e in media ci sono voluti 0.5 secondi per caricarla.

# Domain name Size (KB)

Load Time (sec)

Average Speed per KB (sec)

1 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.61 0.09

2 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.49 0.07

3 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.61 0.09

4 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.49 0.07

5 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.50 0.08

6 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.72 0.11

7 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.52 0.08

8 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.49 0.07

9 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.61 0.09

10 elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.49 0.07

MEDIA 6.62 0.50 0.08

TABELLA 9.3: Schema della dimensione e dei tempi di caricamento dell'interfaccia.

Questi valori sono stati confrontati con altre pagine web, inerenti con il politecnico. Si può osservare come la dimensione della pagina dell'interfaccia è relativamente “piccola” rispetto alle altre. Avendo delle velocità di caricamento paragonabili tra loro, il vantaggio di caricare una pagina di dimensione ridotta va a favore del tempo di caricamento.

61

9 - Risultati sperimentali

Domain name Size (KB)

Load Time (sec)

Average Speed per KB (sec)

elite.polito.it/files/people/derussis/InterfacciaWeb/ 6.62 0.50 0.08

www.didattica.polito.it 19.77 1.53 0.08

www.polito.it 47.14 0.86 0.02

www.biblio.polito.it/ 33.66 1.37 0.04

elite.polito.it 23.34 1.16 0.05

www.custorino.it/HomePage.aspx 28.6 1.61 0.06

TABELLA 9.4: Dimensione e tempi di caricamento dell'Homepage con altre pagine paragonabili (rispetto alla velocità di caricamento).

62

Capitolo 10Sviluppi futuri e conclusioni

10.1 L'editor dell'abitazione

Una possibile implementazione del progetto è la creazione di una schermata in grado di creare la pianta dell'abitazione.

FIGURA 10.1: Ipotetico editor dell'abitazione.

Un utente sarà in grado di creare da se, in modo semplice, la piantina della propria casa e posizionare al suo interno i dispositivi domotici. Potrà: inviare ai dispositivi dei comandi di test per riconoscerli, visualizzare le loro caratteristiche ed editarle.Un opzione aggiuntiva potrà essere l'inserimento di oggetti nelle stanze per rendere più comprensiva l'abitazione. Tali oggetti saranno puramente decorativi e non utilizzabili

63

10 - Sviluppi futuri e conclusioni

al fine di produrre regole domotiche.

FIGURA 10.2: Pianta di un'abitazione con oggetti decorativi.

10.2 Controllo diretto dei dispositivi

Attualmente grazie all'interfaccia è possibile creare unicamente automatismi per la casa. Creare quindi delle regole che governano l'abitazione in funzione a dei determinati eventi.Una funzione molto utile per l'utente, sarebbe il controllo diretto dei dispositivi. Avere cioè a disposizione i comandi per governare tutti i dispositivi installati nell'ambiente domestico attraverso la stessa l'interfaccia. Ad esempio, agire sull'interruttore della luce della cantina per spegnerla oppure attivare il sistema di allarme.Un'altra funzione utile è il controllo dello stato di un dispositivo, ovvero conoscere se è acceso o spento oppure controllare i suoi paramenti funzionali. L'utente attraverso l'interfaccia potrebbe interrogare i vari dispositivi per controllare ad esempio la temperatura di una determinata stanza oppure verificare se ci sono finestre aperte nella casa.

10.3 Funzioni aggiuntive per la creazione delle regole

Quando si accede all'editor della regola, nell'area elenco dispositivi vengo proposti oggetti standard per la creazione della regola ed i dispositivi selezionati dall'utente. Attualmente l'unico oggetto standard è “ora e giorni”, il quale permette di aggiungere delle opzioni temporali alla regola.

64

10 - Sviluppi futuri e conclusioni

FIGURA 10.3: Oggetto “tutto del tipo”.

Un nuovo strumento che è stato studiato è l'oggetto chiamato “tutto del tipo”. Può essere trascinato su un dispositivo della regola e tra le opzioni proprie del dispositivo compare la scelta tra casa e stanza. Il compito di tale oggetto è appunto quello di raggruppare tutti i dispositivi, del medesimo tipo di quello in questione, che sono posizionati nella stessa stanza oppure in tutta la casa. Ad esempio, se un utente volesse creare una regola che spegnesse tutte le luci di casa dopo mezzanotte, sarebbe sufficiente selezionare una sola luce dalla pianta della casa e passare direttamente all'editor della regola. Posizionando l'oggetto “tutto del tipo” sulla luce, dopo che questa è stata messa nella regola, l'utente potrà scegliere l'opzione “tutte della casa” e quindi velocizzare notevolmente la costruzione della regola.

10.4 Conclusioni

Lo sviluppo di un applicativo destinato alla domotico, può far comprendere quanto l'informatica possa essere presente nella vita quotidiana di ognuno di noi e quanto possa spaziare tra campi, a prima vista, anche molto differenti (robotica, edilizia, automazione, elettronica,ecc).Per questa ragione è stato analizzato il contesto in cui si è collocato questo progetto, andando ad analizzare la domotica e i principali standard tecnologici che hanno interessato il sistema preso in esame.L'interfaccia sviluppata è uno strumento che permette di produrre delle regole di automazione per un'abitazione; dà quindi la possibilità ad una persona di gestire tutti i dispositivi e gli elettrodomestici domotici presenti nella propria casa. Il risultato è una interfaccia semplice ed intuitiva utilizzabile anche da un utente inesperto.

65

Appendice ASuperclasse oggetto utilizzabile dalla regola

I dispositivi controllabili, i sensori e gli oggetti standard utilizzabili per creare una regola, possiedono i metodi e gli attributi della superclasse “OggettoRegola”.

jQuery.extend({ /* superClasse di un generico Oggetto trascinabile in una regola * @param data configurazione dell'"Oggetto" */ OggettoRegola: function(data){ this.id=""; //identificativo dell'oggetto creato this.nome=""; //nome dell'oggetto creato this.tipo=""; //tipologia dell'oggetto creato this.collocazione=null; //stanza dove si trova l'oggetto creato this.urlImmagine=""; //url dell'immagine dell'oggetto

this.opzioni_se=""; //opzioni in un blocco se this.opzioni_quando=""; //opzioni in un blocco quando this.opzioni_allora=""; //opzioni in un blocco allora

this.valori=""; //valori dell'oggetto this.$dom= null; //oggetto della pagina che rappresenta l'oggetto creato

this.stati=""; //configurazione degli stati del device this.notifiche=""; //configurazione delle notifiche del device this.funzionalita=""; //configurazione delle funzionalità del device

/** metodi getter**/ this.getId = function(){ return this.id; } this.getNome = function(){ return this.nome; } this.getTipo = function(){ return this.tipo; } this.getStati = function(){ return this.stati; } this.getNotifiche = function(){ return this.notifiche;

66

A - Superclasse oggetto utilizzabile dalla regola

} this.getFunzionalita = function(){ return this.funzionalita; } this.getCollocazione = function(){ return this.collocazione; } this.getOpzioniSe = function(){ return this.opzioni_se; } this.getOpzioniQuando = function(){ return this.opzioni_quando; } this.getOpzioniAllora = function(){ return this.opzioni_allora; } this.getValori = function(){ return this.valori; } this.getDOM = function(){ return this.$dom; }

/* restituisce xml legato all'oggetto in base alla condizione * che riceve come parametro * @param blocco condizione che contiente l'oggetto * @return testo xml della condizione */ this.getXML = function(blocco){ var testo=""; //xml della condizione return testo; }

/** metodi setter**/ this.setId = function(valore){ this.id=valore; } this.setNome = function(valore){ this.nome=valore; } this.setTipo = function(valore){ this.tipo=valore; } this.setCollocazione = function(valore){

67

A - Superclasse oggetto utilizzabile dalla regola

this.collocazione=valore; } this.setValori = function(valore){ this.valori=valore; } /* imposta i valori del blocco con i valori che possiede l'oggetto * @param tipoBlocco tipo di condizione (se,quando,allora) * @param domOption oggetto con le opzioni da impostare */ this.setValoriBlocco = function(tipoBlocco,domOption){ } }});

FIGURA A.1: Codice superclasse oggetto.

68

Appendice BCreazione nuovo oggetto per la regola

Per facilitare la costruzione di un nuovo oggetto utile per la creazione di una nuova regola, viene fornito lo scheletro di base di un oggetto standard.

jQuery.extend({ /* classe per creare un nuovo oggetto * @param data configurazione del nuovo oggetto */ //cambiare “Oggetto” con il nome voluto Oggetto: function(data){ //estensione della superclasse OggettoRegola $.extend(true, this, new $.OggettoRegola());

var thisObject = this; //oggetto appena creato

/* restituisce xml legato all'oggetto in base alla condizione * che riceve come parametro * @param blocco condizione che contiente l'oggetto * @return testo xml della condizione */ this.getXML = function(blocco){ var testo=""; switch(blocco.data("tipo")) { case 'se': //compongo il testo xml in base al contenuto del dom testo+= ''; break; case 'quando': //compongo il testo xml in base al contenuto del dom testo+= ''; break; case 'allora': //compongo il testo xml in base al contenuto del dom testo+= ''; break; } return testo; }

69

B - Creazione nuovo oggetto per la regola

/** metodi setter **/ /* imposta i valori del blocco con i valori che possiede l'oggetto * @param tipoBlocco tipo di condizione (se,quando,allora) * @param domOption oggetto con le opzioni da impostare */ this.setValoriBlocco = function(tipoBlocco,domOption){ var data=this.valori; //se sono impostati dei valori allora inizializzo il dom if(data!=""){ switch(tipoBlocco) { case "se": //imposto i valori navigando nel dom break; case "quando": //imposto i valori navigando nel dom break; case "allora": //imposto i valori navigando nel dom break; } } }

/** costruttore **/ if(data){ //imposto gli attributi fissi o ricevuti da "data" this.id = ""; this.nome = ""; this.tipo = "";

this.urlImmagine='risorse/immagini/device/'+this.tipo; this.$dom=$('<div id="'+this.id+'" class="devOut_drag" align="center">'+ '<img src="'+this.urlImmagine+'.png" class="immDevice" alt="" width="'+dimensione_immagine_device+'" height="'+dimensione_immagine_device+'"/>'+ '<br><font class="nomeDevice fontRegola">'+this.nome+'</font>'+ '</div>');

//l'oggetto puo essere draggato in una condizione se, quando, allora //commentare la riga se l'oggetto non si puo trovare in un determinato blocco this.$dom.addClass("se"); this.$dom.addClass("quando"); this.$dom.addClass("allora");

70

B - Creazione nuovo oggetto per la regola

//aggiungo l'oggetto alla lista dei device addDevice(this);

//determino il dom delle opzioni associate all'oggettto creato /* SE */ this.opzioni_se= ''; /* QUANDO */ this.opzioni_quando= ''; /* ALLORA */ this.opzioni_allora= '';

if(this.$dom!=null){ //proprieta di trascinamento dell'oggetto this.$dom.draggable({ helper:"clone", start: function( event, ui ) { var obj=this; //oggetto che si sta trascinando

//allego al device draggato $(this).data("data",thisObject);

//aumento lo z-index per passare sopra il layout $(".ui-layout-west").css("z-index",z_index_layout_drag);

//faccio comparire le condizioni invisibili $("div.invisibile").each(function(){ if(($(this).hasClass("se") && $(obj).hasClass("se")) || ($(this).hasClass("quando") && $(obj).hasClass("quando")) || ($(this).hasClass("allora") && $(obj).hasClass("allora"))){ $(this).removeClass("invisibile"); $(this).addClass("visibile"); } });

//azzero i valori, rendendo il device come nuovo thisObject.setValori(""); }, stop: function( event, ui ) { //ripristino z-index $(".ui-layout-west").css("z-index",z_index_layout_default); //rendo invisibili le condizioni vuote $("div.visibile").each(function(){ $(this).removeClass("visibile"); $(this).addClass("invisibile");

71

B - Creazione nuovo oggetto per la regola

}); }, drag: function(event, ui) { /* auto-scroll della regola */ var bottom=document.body.clientHeight; //posizione sotto var top=0; //posizione sopra

//ricalcolo le posizioni top+=margine_scroll; bottom-=margine_scroll;

//incremento lo scroll se mi trovo oltre la posizione bassa if(event.pageY>=bottom){ $("#regola-scroll").scrollTop($("#regola-scroll").scrollTop() +velocita_scroll); } //decremento lo scroll se mi trovo oltre la posizione alta if(event.pageY<=top){ $("#regola-scroll").scrollTop($("#regola-scroll").scrollTop() -velocita_scroll); } } }); } } }});

FIGURA B.1: Codice scheletro di un oggetto standard.

72

Bibliografia

[1] ”Introduzione alla domotica”, Domenico Trisciuti, 2009;[2] ”Progettare la domotica”, Massimo Capola, 2007;[3] ”The DOG Gateway: Enabling Ontology-based Intelligent Domotic

Environments”, Dario Bonino, Emiliano Castellina, Fulvio Corno, 2008;[4] ”DogOnt - Ontology Modeling for Intelligent Domotic Environments”, Dario

Bonino e Fulvio Corno, 2008;[5] ”A User-Friendly Interface for Rules Composition in Intelligent Environments”,

Dario Bonino, Fulvio Corno e Luigi De Russis, 2010;[6] ”Bringing Semantics to the Home: The Dog2.0 gateway”, Dario Bonino, Emiliano

Castellina e Fulvio Corno, 2010;[7] ”MyHome BTICINO Guida tecnica”, Bticino s.p.a, 2008;[8] www.bticino.it;[9] Wikipedia. http://it.wikipedia.org/wiki/Php;[10] Wikipedia. http://it.wikipedia.org/wiki/JavaScript;[11] Wikipedia. http://it.wikipedia.org/wiki/JQuery;[12] Wikipedia. http://it.wikipedia.org/wiki/AJAX;[13] Wikipedia. http://it.wikipedia.org/wiki/OSGi;[14] Wikipedia. http://it.wikipedia.org/wiki/Model-View-Controller;[15] Wikipedia. http://en.wikipedia.org/wiki/Model–view–controller;[16] http://browsershots.org/;[17] http://www.webxall.net/velocita.caricamento.pagina.html;[18] http://validator.w3.org;[19] http://validator.w3.org/checklink;

73