POLITECNICO DI MILANO
Facoltà di Ingegneria dell’Informazione
Dipartimento di Elettronica e Informazione
UN SISTEMA MULTIAGENTE PER APPLICAZIONI DOMOTICHE
IN CONTESTI REALI
Relatore: Ing. Francesco AMIGONI
Correlatore: Ing. Nicola GATTI
Tesi di Laurea di:
Giovanni GRAUSO Matr. n.632500
[email protected]
Anno Accademico 2003-2004
SOMMARIO
L’ambiente domestico e le relazioni tra l’uomo e le funzionalità offerte dai dispositivi di
una casa costituiscono un ambito molto dinamico, variabile, non totalmente strutturabile e
quindi non programmabile in modo statico. In un’abitazione l’uomo si trova spesso a dover
raggiungere obiettivi complessi il cui conseguimento necessita della cooperazione tra diversi
attori e di una pianificazione complessa e dinamica.
Questa considerazione ha dato lo spunto iniziale per questa tesi, il cui scopo è quello di
validare in un contesto reale le capacità di una piattaforma multiagente (denominata AGENZIA
AMBIENTALE) implementata in un precedente progetto di tesi e testata, finora, solo in ambito
simulato. L’AGENZIA AMBIENTALE è in grado di soddisfare esigenze d’alto livello sfruttando
una cooperazione e una pianificazione dinamica tra diversi agenti. Per verificare in pratica
queste caratteristiche dell’AGENZIA AMBIENTALE è stato scelto di realizzare un’applicazione
reale in un ambito fortemente dinamico e non strutturabile a priori come quello domestico.
Per utilizzare l’AGENZIA AMBIENTALE in un ambito reale e non solo simulato sono state
apportate delle modifiche significative al progetto iniziale. In particolare si è fornita una
soluzione per poter far fronte a possibili malfunzionamenti dei dispositivi e per poter gestire
un’eventuale variabilità delle condizioni nelle quali si trova a operare l’agenzia. Inoltre, per
interfacciare l’AGENZIA AMBIENTALE con differenti tecnologie reali è stata realizzata
un’interfaccia per l’interoperabilità, specializzabile secondo la tecnologia scelta. Per la
realizzazione pratica dell’applicazione domotica è stata fornita un’implementazione per la
tecnologia LONTALK per connettere diversi dispositivi di un’abitazione.
RINGRAZIAMENTI
Desidero ringraziare l’Ing. Francesco Amigoni per aver creduto nelle mie capacità, per
avermi guidato per l’intero progetto di tesi in modo efficace, efficiente e stimolante e per
avermi saputo spiegare concetti importanti con estrema semplicità e precisione.
Ringrazio l’Ing. Nicola Gatti per l’estrema disponibilità, per tutto il materiale bibliografico
che mi ha messo a disposizione e per le piacevoli e costruttive discussioni.
Ringrazio l’azienda TECHSELESTA che mi ha ospitato per un lungo periodo. In particolare
ringrazio l’Ing. Davide Strepparava per l’enorme pazienza e i preziosi consigli, ringrazio
l’Ing. Roberto Loi per avermi sempre fornito tutto il materiale e le informazioni di cui ho
avuto bisogno.
Un grazie al finanziatore dell’intero progetto LAUREA: la mia famiglia, che mi ha permesso e
mi ha incitato in questo lungo, impegnativo e piacevole percorso universitario. In particolare
ringrazio mia madre e mio padre per aver sempre creduto in me e ringrazio mio fratello per il
notevole contributo apportato in tutti questi anni. Ringrazio mio nonno Silvestro e mia nonna
Rosa per aver espresso nei miei confronti sempre parole d’orgoglio e incoraggiamento.
Desidero ringraziare tutti gli amici che in questi anni mi hanno rivolto le domande più
assurde per avermi permesso di approfondire la conoscenza nel campo della “tecnologia”.
Ringrazio anche tutti gli amici architetti (e designer) o aspiranti tali per le preziose
informazioni e i piacevoli dialoghi.
Ringrazio chi mi ha sopportato in tutti i periodi d’esame e nel periodo della tesi.
Un saluto e un grazie a Davide Avigni col quale ho collaborato in questi mesi sempre con
grande armonia e spirito di squadra.
Un ringraziamento sentito e un saluto speciale al Prof. Marco Somalvico.
INDICE
Titolo
1
Sommario
3
Ringraziamenti
5
Indice
7
1. Introduzione
11
2. Stato dell’arte
16
2.1. Ubiquitous computing
17
2.1.1 Introduzione storica
18
2.1.2. Caratteristiche e peculiarità dell’ubiquitous computing
20
2.1.3. Architetture per l’ubiquitous computing
23
2.1.3.1. Interfaccia
24
2.1.3.2. Applicativo
26
2.1.3.3. Middleware
33
2.1.3.4. Comunicazione
41
2.1.3.5. Dispositivi
43
2.2. Domotica e ubiquitous computing
48
2.2.1. Introduzione alla domotica
48
2.2.2. Domotica, ambiti applicativi
49
2.2.3. Domotica: una specializzazione dell’ubiquitous computing, caratteristiche e peculiarità
49
2.3. Standard e tecnologie ad impatto sull’automazione domestica esistenti sul mercato
51
2.3.1. Standard e tecnologie d’interconnessione
51
2.3.2. Protocolli, standard, bus di campo e architetture consolidate sul mercato della domotica
53
2.3.3. I gateway: una soluzione per un unico standard con molti standard
56
2.3.4. Un’altra tecnologia ad impatto sulla domotica: JINI
58
3. Impostazione del problema di ricerca: dalla simulazione alla pratica in ambito domotico
3.1. Inquadramento e introduzione all’architettura preesistente
60
61
3.1.1. Architettura generale della AGENZIA AMBIENTALE
62
3.1.2. Semiagente cooperativo
63
3.1.3. Semiagente operativo
66
3.1.4. Linee guida per la progettazione di un proxy
67
3.1.5. Maggiordomo dell’AGENZIA AMBIENTALE
67
3.1.6. Comportamento dell’AGENZIA AMBIENTALE orientato ai goal
69
3.1.7. Elementi del piano
71
3.1.8. Passaggio di conoscenza fra agenti
79
3.2. Problematiche specifiche per un’applicazione domotica in contesto reale
80
3.2.1. Il contesto per un sistema domotico
81
3.2.2. Ergonomia dell’interazione uomo - ambiente domestico, alcuni aspetti percettivi
83
3.2.3. Necessità di gestire più dispositivi per ogni agente in ambito domotico
85
3.2.4. Problematiche legate alla gestione di più dispositivi per ogni agente
85
3.2.5. Una tecnologia adeguata per la messa in opera del semiagente operativo
88
3.3. Interfaccia proxy - dispositivi
89
3.3.1. Interfaccia proxy - dispositivi: servizi offerti e trasparenza della tecnologia utilizzata
89
3.3.2. Identificazione di servizi efficaci per la comunicazione proxy - dispositivi
91
4. Progetto logico della soluzione del problema
92
4.1. Reingegnerizzazione dell’agente, reattività e stabilità del sistema
92
4.1.1. Un processo per il monitoraggio del semiagente operativo
93
4.1.2. Reattività laterale (verso l’agenzia) comune a tutti gli agenti
94
4.1.3. Reattività superiore (verso l’interfaccia utente) comune a tutti gli agenti
99
4.1.4. Gestione di più dispositivi per ogni agente
101
4.1.5. Reattività specializzata laterale
102
4.1.6. Reattività specializzata superiore
103
4.1.7. Struttura logica complessiva
103
4.2. Progettazione logica dell’interfaccia device controller - dispositivi
106
4.2.1. LON, una tecnologia adeguata per comunicare con i dispositivi
106
4.2.2. Astrazione dalla tecnologia scelta per la comunicazione con i dispositivi
107
4.2.3. Servizi offerti dall’interfaccia di comunicazione device controller - dispositivi
107
4.2.4. Gestione degli eventi
109
4.2.5. Implementazione del BusControllerInterface per il bus LON
109
4.3. Dettagli implementativi attenti ad alcuni aspetti ergonomici in ambito domotico
114
5. Realizzazioni sperimentali e valutazioni
116
5.1. L’applicazione domotica realizzata
117
5.1.1. Servizi e funzioni
117
5.1.2. Interazione superiore: interfaccia uomo - applicazione domotica
119
5.2. Agenti realizzati
122
5.2.1. Una visione d’insieme degli agenti e dei dispositivi
123
5.2.2. Agente LightAg
127
8
5.2.3. Agente HPresenceDetector
130
5.2.4. Agente WindowAg
133
5.2.5. Agente GoalGenerator
136
5.2.6. Agente Heating
139
5.3. Espansioni e goal realizzati
139
5.3.1. Espansioni per ESOn
139
5.3.1.1. Espansioni per HeatingES
142
5.3.1.2. Espansioni per LightES
143
5.3.2. Espansioni per turnOnLight e turnOffLight
5.4. Prove sperimentali e valutazioni
5.4.1. Operatività e reattività degli agenti
145
147
147
5.4.1.1. LightAg
147
5.4.1.2. WindowAg
148
5.4.1.3. HPresenceDetector
149
5.4.1.4. GoalGenerator
150
5.4.2. Pianificazione ed esecuzione
150
5.4.3. Valutazione funzionale dell’applicazione domotica
152
5.4.4. Valutazione di alcuni tempi di risposta
154
6. Conclusioni e sviluppi futuri
155
A. Standard e tecnologie per la domotica
158
A.1. Mercato europeo
158
A.2. Mercato americano
162
A.3. Mercato giapponese (HBS)
167
A.4. Mercato internazionale
167
Bibliografia
173
9
1
INTRODUZIONE
Le discipline nelle quali si colloca questo lavoro di tesi sono l’intelligenza artificiale e la
domotica; particolare attenzione è data allo studio dei sistemi multiagente e ai principi
proposti dall’ubiquitous computing.
Il termine ubiquitous computing è stato coniato da Mark Weiser nel 1988 [1, 8, 27], il quale
immaginava piccoli elaboratori “sparsi ovunque” nell’ambiente: inseriti nei muri, nei tavoli e
in altri oggetti d’uso quotidiano, cooperanti fra loro ed “invisibili” all’uomo. Oggi non è
ancora possibile realizzare un tale scenario con costi limitati; è però possibile sfruttare
dispositivi sempre più performanti. Nell’ultimo decennio si è assistito ad un’evoluzione della
capacità di elaborazione dei tradizionali personal computer e alla nascita di numerosi
dispositivi elettronici di uso comune, come computer portatili, telefoni cellulari e dispositivi
palmari. Si assiste dunque a una decentralizzazione del rapporto tra l’uomo e la tecnologia
che sembra andare verso la direzione immaginata da Weiser.
Il termine domotica deriva dall’importazione di un neologismo francese: domotique,
originato dalla contrazione di domus e di informatique [49]. La domotica è una disciplina che
si occupa dell’integrazione dei dispositivi elettronici, degli elettrodomestici e dei sistemi di
comunicazione e di controllo che si trovano nelle abitazioni. Le nostre case sono ricche di
dispositivi dotati di unità di elaborazione sempre più evolute; la tendenza negli ultimi anni è
di dotare tali dispositivi anche della capacità di comunicare tra di loro e con il mondo
esterno, grazie anche a efficaci sistemi di comunicazione, cablati e non, disponibili a basso
costo. L’evoluzione della capacità di elaborazione e comunicazione dei dispositivi presenti in
una casa ha permesso la progettazione e la realizzazione di sistemi integrati di automazione
domestica sempre più complessi e utili alla vita dell’uomo nella propria abitazione. Grazie
all’evoluzione tecnologica degli ultimi anni, si assiste ad un tentativo di importare nei sistemi
tradizionali domotici alcuni metodi provenienti dall’intelligenza artificiale e dall’ubiquitous
computing. In una abitazione l’uomo si trova spesso a dover raggiungere obiettivi complessi
il cui raggiungimento necessita di tecniche dell’intelligenza artificiale, come la pianificazione
e il ragionamento inferenziale.
La domotica, integrata con l’intelligenza artificiale e influenzata dai principi
dell’ubiquitous computing, può essere vista come una disciplina che si occupa di realizzare il
mondo immaginato da Weiser all’interno di un’abitazione.
In un precedente progetto di tesi era stato realizzato un sistema multiagente, denominato
AGENZIA AMBIENTALE [3], in grado di soddisfare esigenze d’alto livello sfruttando tecniche
d’intelligenza artificiale come la pianificazione dinamica basata su una conoscenza
distribuita tra diversi agenti. L’AGENZIA AMBIENTALE permette a una serie di dispositivi
eterogenei, incapsulati negli agenti, di coesistere cooperativamente all’interno dello stesso
ambiente e di sfruttare le proprie potenzialità per risolvere esigenze d’alto livello. Per poter
far interagire fra loro agenti eterogenei e non noti a priori, ogni agente è stato pensato come
costituito da due semiagenti: il semiagente cooperativo e il semiagente operativo. Il primo,
comune a tutti gli agenti, permette di realizzare un’interazione uniforme fra gli agenti, il
secondo, permette di realizzare le funzioni specifiche di ogni agente.
L’AGENZIA AMBIENTALE era stata validata solo in simulazione e non era mai stata
utilizzata per realizzare applicazioni reali.
L’obiettivo della mia tesi consiste nell’utilizzare l’AGENZIA AMBIENTALE per realizzare
un’applicazione domotica reale che ne validi l’effettiva capacità di soddisfare esigenze d’alto
livello mediante la cooperazione e la pianificazione basata su una conoscenza distribuita.
Le difficoltà principali incontrate sono dipese dalla non adeguatezza di alcuni moduli
dell’AGENZIA AMBIENTALE per ambienti reali non simulati. Per far fronte a tale difficoltà ho
riprogettato alcune parti dell’AGENZIA AMBIENTALE al fine di renderla adeguata per la
realizzazione di un’applicazione domotica reale.
Prima di procedere all’implementazione dell’applicazione domotica ho analizzato i
meccanismi funzionali degli agenti proposti nell’AGENZIA AMBIENTALE. In particolare mi
sono occupato di verificare l’adeguatezza della logica di comunicazione implementata tra il
semiagente cooperativo e il semiagente operativo. Dall’analisi è emerso che non erano stati
presi in considerazione eventuali problemi di comunicazione tra i due semiagenti. Nel caso di
un sistema domotico reale, far fronte ad eventuali disservizi o malfunzionamenti dei
dispositivi in modo adeguato è un requisito imprescindibile.
12
Per poter rendere l’agente reattivo ai malfunzionamenti ho inserito nel semiagente
cooperativo un processo per il monitoraggio del semiagente operativo specializzabile da ogni
agente secondo le esigenze specifiche.
L’abitazione è popolata da numerosi dispositivi il cui controllo non comporta computazioni
complesse e grossi scambi d’informazione. Sviluppare un agente per ogni dispositivo fisico
di un sistema domotico, come nella visione proposta in [3], comporterebbe un decremento
delle prestazioni dell’intera AGENZIA AMBIENTALE. Ogni agente infatti è da considerarsi un
processo residente in memoria ed eseguito su un elaboratore. La soluzione adottata affinché
un agente possa essere associato a più di un dispositivo è stata quella di considerare il
semiagente operativo costituito fisicamente da anche più dispositivi. Per gestire
l’eterogeneità e i diversi comportamenti di ognuno dei dispositivi ho realizzato un modulo
(device controller) deputato a gestire tutti i dispositivi che compongono il semiagente
operativo. Il device controller, specializzando in modo opportuno il processo introdotto nel
semiagente cooperativo per monitorare il semiagente operativo, è in grado di gestire le
reazioni ai malfunzionamenti in modo specifico per ogni singolo dispositivo appartenente al
semiagente operativo.
Per poter realizzare l’applicazione domotica è stata identificata una tecnologia adeguata per
interfacciarsi con i dispositivi (LONTALK [55]). Per scegliere tale tecnologia ne sono state
analizzate molte fra quelle esistenti sul mercato della domotica ed è stata scelta quella che
potenzialmente è in grado di adattarsi al meglio a tutte le peculiarità dell’AGENZIA
AMBIENTALE.
I dispositivi utilizzati per la realizzazione dell’applicazione domotica comunicano
sfruttando i protocolli messi a disposizione da LONTALK; per permettere la comunicazione
tra i device controller e i dispositivi presenti sulla rete LONTALK, ho implementato
un’interfaccia di comunicazione, tra JAVA (tecnologia sulla quale è implementata l’AGENZIA
AMBIENTALE, tutti i semiagenti cooperativi e tutti i device controller) e LONTALK, in grado di
mettere a disposizione tutti i servizi necessari per poter comunicare con dei dispositivi.
Dopo aver adeguato l’AGENZIA AMBIENTALE a esigenze pratiche e aver progettato
un’interfaccia per permettere la comunicazione con dei dispositivi reali, ho realizzato
l’applicazione domotica dimostrativa. Gli agenti implementati per realizzare tale
applicazione sono: LightAg, deputato al controllo e monitoraggio di un punto luce;
WindowAg, deputato al controllo e monitoraggio di una finestra; HPresenceDetector,
deputato alla rilevazione di presenza umana; GoalGenerator, deputato ad acquisire esigenze
13
d’alto livello che l’uomo intende soddisfare. Inoltre è stato utilizzato un agente (Heating)
realizzato nel progetto di tesi [3] deputato al controllo e monitoraggio di un riscaldamento
(simulato). Con gli agenti appena citati è stato possibile realizzare le seguenti funzionalità
esibite dall’applicazione domotica: monitorare e controllare un punto luce; monitorare e
controllare una finestra; monitorare e controllare il riscaldamento simulato; rilevare presenza
umana. Inoltre, fornendo la conoscenza necessaria e sfruttando la capacità di pianificare in
modo dinamico dell’AGENZIA AMBIENTALE, l’applicazione che ho realizzato è in grado di far
cooperare tutti i dispositivi (e gli agenti) realmente disponibili al fine di poter risparmiare
energia.
I risultati raggiunti permettono di affermare che tutte le modifiche da me apportate
all’AGENZIA AMBIENTALE permettono di realizzare un adeguato comportamento nel caso di
malfunzionamenti o di cambiamento delle condizioni operative. Inoltre, l’interfaccia
realizzata per la comunicazione fra il device controller e i dispositivi si è rivelata efficace
anche se non molto efficiente. Infine, l’applicazione domotica realizzata ha validato le
seguenti peculiarità dell’AGENZIA AMBIENTALE: la capacità di far coesistere e cooperare
nello stesso ambiente diversi agenti e dispositivi eterogenei; la capacità di pianificare
dinamicamente delle soluzioni, dipendenti dai servizi presenti in un dato istante nell’agenzia,
per soddisfare delle esigenze d’alto livello. Dalle prove pratiche effettuate sull’applicazione
domotica realizzata è stata riscontrata che, se in fase di pianificazione di una soluzione
avvengono dei cambiamenti delle condizioni operative, l’AGENZIA AMBIENTALE diventa
instabile e non più in grado di funzionare correttamente.
La realizzazione pratica dell’applicazione domotica, con tecnologie e dispositivi reali, è
stata possibile grazie ai mezzi messi a disposizione dall’azienda svizzera TECHSELESTA [77]
nell’ambito di uno stage. Il positivo rapporto di collaborazione con alcuni progettisti della
TECHSELESTA è stato determinante. Mi è stato fornito un supporto significativo per
l’installazione e l’utilizzo della tecnologia LONTALK e l’interconnessione di tutti i dispositivi
utilizzati per la sperimentazione dell’applicazione domotica.
Descrivo ora la struttura della tesi.
Il Capitolo 2 riguarda lo stato dell’arte e tratta di ubiquitous computing, di domotica e della
relazione che intercorre tra le due discipline.
Per ciò che riguarda l’ubiquitous computing sono evidenziati i requisiti non funzionali che
lo caratterizzano come: l’ubiquità, la pervasività, l’interfaccia trasparente e la reattività e
14
pro-attività per l’adattamento al conteso. Sono elencati i campi applicativi che maggiormente
potranno trarre vantaggio dall’ubiquitous computing come: augmented reality [5], wearable
computing [70] e smart room [47], questo ultimo è il campo che più si avvicina alla
domotica. Inoltre è presentata una breve storia del mondo informatico per poter meglio
inquadrare il ruolo che potrà avere in futuro l’ubiquitous computing.
Per la domotica è presentata una breve introduzione, sono elencati gli ambiti applicativi di
tale disciplina ed è evidenziata la stretta relazione tra i requisiti espressi per l’ubiquitous
computing e quelli relativi alla domotica. Inoltre è illustrata una panoramica delle tecnologie
esistenti sul mercato della domotica ed è proposta una trattazione comparativa tra le
caratteristiche principali di tali tecnologie.
Il Capitolo 3 si occupa di impostare il problema di ricerca. In particolare viene fornita una
presentazione della preesistente AGENZIA AMBIENTALE. Successivamente sono illustrate delle
problematiche specifiche per la realizzazione pratica di un applicazione domotica. Infine
sono analizzate le problematiche relative alla progettazione di un’interfaccia di
comunicazione tra le parti degli agenti realizzate in JAVA e quelle realizzate con eventuali
altre tecnologie che sia adeguata per l’AGENZIA AMBIENTALE.
Il Capitolo 4 si occupa di presentare il progetto logico per una soluzione del problema
posto nel Capitolo 3. In particolare sono descritte tutte le modifiche apportate all’AGENZIA
AMBIENTALE al fine di poterla utilizzare per la realizzazione di un’applicazione domotica
reale. Successivamente sono presentate le soluzioni logiche adottate per permettere
un’efficace comunicazione tra il device controller, implementato in Java, e i dispositivi
connessi con tecnologia LONTALK. Relativamente a questa interfaccia sono evidenziate le
scelte progettuali di carattere generale relative all’interoperabilità tra tecnologie differenti e
le scelte progettuali specifiche per l’impiego di LONTALK con l’AGENZIA AMBIENTALE.
Nel Capitolo 5 è descritta la struttura e il funzionamento dell’applicazione domotica
realizzata. Sono descritte le prove sperimentali effettuate e sono evidenziate delle valutazioni
relative all’AGENZIA AMBIENTALE e all’applicazione domotica.
Il Capitolo 6 è costituito dalle conclusioni. Sono valutati i risultati complessivi ottenuti con
l’intero progetto e sono proposti possibili sviluppi futuri.
Nell’Appendice A sono riportati alcuni dettagli tecnologici delle tecnologie presenti sul
mercato della domotica e prese in considerazione nello stato dell’arte.
15
2
STATO DELL’ARTE
L’obiettivo della tesi consiste nella realizzazione pratica di un applicazione d’ubiquitous
computing con tecniche d’intelligenza artificiale in ambito domotico. In questo capitolo
verranno poste le basi teoriche e concettuali che hanno permesso il conseguimento di tale
obiettivo. Verranno esposte le principali caratteristiche dell’ubiquitous computing e verrà
proposto un parallelo con la disciplina della domotica. Saranno elencati gli ambiti applicativi
della domotica e verrà fatta una panoramica delle tecnologie esistenti per tale disciplina.
Infine proporrò una trattazione comparativa tra le caratteristiche principali delle tecnologie
esistenti e realmente utilizzate per la realizzazione di sistemi domotici.
2.1 Ubiquitous computing
Mark Weiser (1952-1999) nel 1988 [1, 8, 27, 28], mentre faceva ricerche in qualità di
direttore del centro di ricerca Xerox Parc a Palo Alto in California, ebbe la visione che nel
XXI secolo la rivoluzione tecnologica sarebbe entrata nel quotidiano, nel piccolo e
nell’invisibile. Fu lui che coniò il termine ubiquitous computing. Il suo motto era: “Attiviamo
il mondo”, nel senso di renderlo attivo ed intelligente. Il computer troppo spesso è il punto
focale della nostra attenzione, secondo Mark Weiser, e questo vale anche per il personal
computing includendo i palmari o altri tipi di terminali. La sfida è dunque quella di eliminare
i computer creando un nuovo rapporto fra persone e computer, progettando dei computer
migliori che se ne possano stare in disparte, in modo che le persone possano seguire il loro
quotidiano, una visione totalmente uomo centrica. Per Weiser la tecnologia, che avrebbe
dovuto stare sullo sfondo in modo invisibile, era in sostanza un puro mezzo per raggiungere
uno scopo, ossia permettere di concentrarsi sui fatti. Weiser spiega come la tecnologia possa
sparire nello sfondo (rimanere in background) scrivendo [8]: “un’officina conteneva un solo
motore elettrico che attraverso cinghie ed alberi azionava decine se non centinaia di
macchine diverse. Motori elettrici economici ed efficienti hanno reso possibile dapprima di
mettere un motore per macchina, successivamente molti piccoli motori in ogni macchina.
Una moderna automobile contiene, spesso senza nemmeno che ce ne accorgiamo, oltre 20
motori elettrici ed altrettanti solenoidi. Oggi quando facciamo partire il motore principale di
un auto, partono, senza neanche che ce ne accorgiamo, anche il motorino per il tergicristalli,
quello per l’apertura e la chiusura delle porte ed altri. Facendo una dovuta attenzione è
possibile sapere quando i diversi motori di un automobile si attivano ma non vi è la necessità
di attivarli in modo esplicito”.
Weiser continua poi con una breve analisi della situazione attuale (1991) scrivendo: “già
ora microprocessori in interruttori, termostati, impianti stereo, forni contribuiscono ad
attivare il mondo. Queste macchine e molte altre saranno interconnesse costituendo una rete
ubiqua "[1]. Con il termine ubiquitous voleva intendere dunque che l’elaborazione non
sarebbe più stata concentrata all’interno di un elaboratore, ma si sarebbe spostata “ovunque”,
in modo pervasivo nell’ambiente. Pervasive computing è infatti un altro dei termini ricorrenti
in letteratura per descrivere ciò che Weiser aveva immaginato [1, 2, 3, 4, 15].
Sebbene il termine ubiquitous computing è frequentemente utilizzato in letteratura,
domande come: cos’è l’ubiquitous computing o come possono essere descritti i sistemi di
ubiquitous computing, trovano difficile risposta. Molti lavori riportano il termine Ubiquitous
Computing ma nessuno, di quelli da me analizzati, si occupa di dare una trattazione teorica o
una tassonomia ben precisa in merito. L’ubiquitous computing non sembra essere
riconducibile a nessun campo di ricerca scientifico particolare, ma sembra rappresentare per
ora solo una sfida o un sogno di diversi ambiti scientifici e non. Parlare in modo preciso,
tecnico e scientifico di ubiquitous computing è molto complicato e aleatorio.
Anche se ubiquitous computing non ha una precisa connotazione nel campo scientifico
tecnologico, in sociologia esiste una precisa idea condivisa sull’ubiquitous computing:
l’uomo interagirà con una quantità di dispositivi sempre maggiore, ubicati ovunque e tutti
interconnessi [15, 29], cambiando il rapporto uomo – macchina, le abitudini individuali e
collettive profondamente [29].
Vista la non esistenza di una teoria precisa e consolidata in letteratura scientifica
tecnologica in merito all’ubiquitous computing, nel seguito della trattazione ho scelto di non
tentare di dare una definizione scientifica unica di cosa sia l’ubiquitous computing. Cercherò
invece di fissare alcuni concetti ricorrenti in letteratura che ci possano far ricondurre
un’applicazione ad una di ubiquitous computing più o meno di altre, senza la pretesa di
fornire quindi una categorizzazione certa e ben delineata. Nello specifico inizierò con
17
un’analisi delle evoluzione storica della tecnologia e del rapporto tra l’uomo e gli elaboratori
negli ultimi decenni contestualizzando l’ubiquitous computing in un’evoluzione storica della
tecnologia (Sezione 2.1.1). Seguirà un’elencazione delle peculiarità e requisiti ricorrenti in
letteratura relativi all’ubiquitous computing (Sezione 2.1.2). Concluderò questa sezione
descrivendo i componenti di un’architettura di ubiquitous computing e come questi possono
essere organizzati (Sezione 2.1.3).
2.1.1 Introduzione storica
Anche se una definizione certa e precisa relativa all’ubiquitous computing non sembra
essere possibile, resta la certezza che l’evolversi del rapporto tra l’uomo e gli elaboratori e il
progresso della tecnologia (su tutti i livelli) stia permettendo la diffusione di un sempre più
crescente numero di elaboratori, sempre più piccoli e sempre più specifici, tutti interconnessi
fra loro [3, 29], così come nella visione di Weiser quando coniò il termine ubiquitous
computing. Inizialmente i mainframe (grossi elaboratori che gestiscono sistemi centralizzati
[65]) rappresentavano l’era di tante persone-un elaboratore; il personal computer l’era di una
persona-un elaboratore. Internet e i sistemi d’interconnessione moderni in genere ci stanno
traghettando verso un’era la cui caratteristica sarà quella dell’elaborazione massicciamente
distribuita, quella dell’ubiquitous computing: l’era di una persona- tanti elaboratori [6, 66].
Mainframe
Molte persone condividono lo stesso elaboratore
Personal computer
Un elaboratore per ogni persona
Internet e reti telematiche
Una persona alcuni elaboratori
Ubiquitous computing
Una persona tanti elaboratori
Tabella 2.1 Evoluzione storia dell’utilizzo degli elaboratori
L’impatto sociale che potrà avere l’ubiquitous computing può essere paragonato a quello
avuto da altre due tecnologie che pervadono il nostro ambiente e sono ubicate ovunque nel
nostro vivere comune. La prima è la scrittura che può essere trovata ovunque, dalle etichette
sui vestiti ai grandi manifesti. La seconda è l’elettricità che scorre invisibile attraverso i muri
d’ogni casa o ufficio e nelle automobili. La scrittura e l’elettricità sono divenute così
18
integrate nella vita di tutti i giorni che spesso ci si dimentica dell’impatto che hanno avuto e
che hanno sulla vita quotidiana di tutti.
Le Fig. 2.1 e la Fig. 2.2 mostrano rispettivamente il numero di dispositivi elettronici
venduti e gli investimenti nella ricerca (in miliardi di dollari) negli ultimi decenni e le
previsioni per il futuro prossimo (negli USA) [3, 6].
Figura 2.1 Numero dei dispositivi elettronici venduti negli USA negli ultimi anni
Figura 2.2 Investimenti nella ricerca (in miliardi di dollari) negli USA negli ultimi
settanta anni
19
2.1.2 Caratteristiche e peculiarità dell’ubiquitous computing
Con l’affermarsi dell’ubiquitous computing, la potenza elaborativa si sposta dal
tradizionale desktop all’ambiente circostante. Questo introduce nuove difficoltà su tutti i
macro livelli di un sistema tecnologico, dall’hardware fino al software. Tali difficoltà
derivano soprattutto dal fatto che un’applicazione di ubiquitous computing, differentemente
da un’applicazione tradizionale, è soggetta ad un utilizzo più intensivo, meno prevedibile,
non sempre fisicamente localizzabile e difficilmente programmabile.
Mark Weiser nelle sue prime trattazioni sull’argomento suggerì anche alcuni criteri che ogni
applicazione di ubiquitous computing deve rispettare.
•
Scalabilità: il sistema costruito deve possedere un concetto di scalabilità, intesa
come capacità di aumentare, col passare del tempo, il numero di entità coinvolte,
lo spazio coperto, la varietà dei dispositivi utilizzati senza compromettere la
funzionalità dell’intero sistema.
•
Uso continuato: il sistema deve essere soggetto ogni giorno ad un utilizzo
intenso. Ciò comporta, in alcuni casi, il sopraggiungere di problematiche tipiche
dei sistemi operanti in tempo reale.
•
Valutabilità: l’uso del sistema deve poter essere valutato per determinare il suo
impatto sulla comunità. Deve essere possibile avere una valutazione da parte degli
utenti del sistema, positiva o negativa che sia.
Nella precedente sezione ho descritto cosa immaginava Weiser e quale sembra essere la
tendenza di crescita dell’ubiquitous computing nei prossimi anni. Di seguito cercherò di
descrivere i requisiti che un sistema di ubiquitous computing deve avere per poter realizzare
il sogno immaginato da Weiser e per poter rispettare i criteri da lui suggeriti relativi a sistemi
di ubiquitous computing.
Quelle che verranno trattate saranno delle linee guida relative ai requisiti per un sistema di
ubiquitous computing. Mi disinteresserò di requisiti specifici di un’applicazione (requisiti
funzionali) ma concentrerò la trattazione su requisiti non funzionali. Questi ultimi
identificano le proprietà che un sistema di ubiquitous computing deve avere o meglio, i
vincoli che dovranno essere presi in considerazione nel processo di sviluppo di un sistema di
ubiquitous computing [32]. In accordo con ciò ho definito un gruppo eterogeneo di requisiti
20
non funzionali (molti di loro possono essere trovati in [31]). Ogni singolo requisito può
coinvolgere diversi aspetti ed il suo raggiungimento può influenzare numerose proprietà del
sistema.
Ho diviso i requisiti non funzionali in due classi, quelli fortemente caratterizzanti e tipici di
un sistema di ubiquitous computing e quelli invece comuni anche ad altri sistemi.
Definizione di requisiti non funzionali specifici dell’ubiquitous computing
Vengono riportati di seguito, in ordine alfabetico, i requisiti non funzionali tipici di un
sistema di ubiquitous computing
•
Adattabile. Deve essere flessibile e autonomo in risposta ai cambiamenti delle
richieste dell’utente e delle condizioni operative [31]. Il sistema deve essere in grado
di adattarsi ad esempio a numerosi cambiamenti relativi a mutamenti della topologia
della rete e del contesto corrente. Il contesto corrente può riguardare informazioni
relative alle risorse fisiche disponibili, informazioni relative all’utente e all’ambiente,
ecc. Per raggiungere il requisito di adattabilità il sistema dovrà essere in grado di
gestire un alto grado di eterogeneità, visto il grande numero di dispositivi, ambienti e
tecnologie differenti che compongono un sistema di ubiquitous computing [15].
•
Eterno. Non deve mai arrestarsi, spegnersi o essere riavviato; l’intero sistema deve
essere disponibile in qualsiasi momento [22]. Inoltre il sistema deve garantire la
persistenza dei dati e tolleranza ai guasti.
•
Integrato (embedded). Deve essere inserito come parte integrante del nostro mondo
sentendo ed agendo [22, 29]. Il sistema deve essere integrato in ogni entità
dell’ambiente.
•
Intenzionale. Le persone devono essere in grado di formulare richieste esprimendo
delle intenzioni e nominando degli oggetti o delle funzioni. Ad esempio la richiesta di
stampa dalla stampante più vicina esprime un’intenzione che il sistema deve essere in
grado di interpretare anche senza un esplicito riferimento all’indirizzo fisico della
stampante.
•
Nomadico. Deve permettere agli utenti e a qualsiasi dispositivo di potersi muovere
liberamente secondo le necessità [31, 80, 81]. La nomadicità è riferita quindi sia
all’utente che alla computazione. La nomadicità riguarda due aspetti: mobilità fisica,
21
consente spostamenti da un posto ad un altro di dispositivi e utenti; mobilità logica,
consente spostamenti da un sottosistema computazionale ad un altro.
•
Pervasivo. Deve essere ovunque [22], i componenti di un sistema di ubiquitous
computing pervadono qualsiasi entità che può interagire con l’uomo, con l’ambiente o
con altre entità. Questo requisito riguarda principalmente la possibilità per gli
utilizzatori (dove per utilizzatori si intende qualsiasi entità che utilizza il sistema e
formula richieste, quindi sia persone che dispositivi) di accedere ovunque al sistema
con consistenza informativa [15].
•
Pro-attivo. Deve avere degli obiettivi o un insieme di obiettivi e deve cercare di
raggiungerli anche senza una guida esplicita da parte del fruitore di tali obiettivi (altri
sottosistemi o gli uomini). Alcuni obiettivi possono essere generati autonomamente
dal sistema di ubiquitous computing o direttamente dagli utilizzatori [57].
•
Reattivo. Deve essere in grado di reagire a specifici eventi. Gli eventi possono essere
di diversi tipi, come il cambiamento di un particolare contesto, variazione delle
risorse disponibili, la terminazione di un compito ecc. [15]. La reattività è un requisito
basilare per permettere l’adattabilità [9].
•
Scalabile. Come espresso in precedenza nei requisiti desiderati per un sistema di
ubiquitous computing secondo Weiser, la scalabilità è intesa come capacità di
aumentare il numero di entità coinvolte, lo spazio coperto, la varietà dei dispositivi
utilizzati senza compromettere la funzionalità dell’intero sistema. Inoltre il sistema
deve essere in grado di supportare un accrescimento dimensionale logico, riferito
all’accrescimento delle applicazioni e delle loro funzioni, aumento quindi della
complessità computazionale e funzionale.
•
Tempo Reale (real time). Un sistema è definito real time se è in grado di elaborare
con un tempo di risposta trascurabile, cioè in tempo utile per non compromettere
eventuali azioni successive dipendenti dai risultati precedentemente elaborati [15]
•
Trasparente. La trasparenza si rifà al concetto espresso da Weiser per cui la
tecnologia deve essere in grado di stare sullo sfondo. In un sistema trasparente gli
utenti finali non percepiscono il mezzo tecnologico che stanno utilizzando per il
conseguimento dei propri obiettivi [6]. Il concetto di trasparenza si riflette soprattutto
sui requisiti delle interfacce di comunicazione di un sistema di ubiquitous computing
come vedremo in seguito nella Sezione 2.1.3.1.
22
Definizione di requisiti non funzionali non specifici dell’ubiquitous computing
Per completezza della trattazione cito soltanto, senza entrare nei dettagli, i requisiti non
funzionali tipici di un sistema di ubiquitous computing ma comuni anche ad altri sistemi
informatici provenienti dalla letteratura di ingegneria del software [42]. Tali requisiti sono:
efficienza [31]; mantenibilità [82]; riusabilità [82]; sicurezza [82]
2.1.3 Architetture per l’ubiquitous computing
Un generico sistema di ubiquitous computing interessa un largo numero di aspetti, sia
hardware che software, che può essere organizzato in un’architettura multistrato. Lo scopo di
questa decomposizione funzionale è di ottenere un numero di livelli architetturali
indipendenti, ognuno dei quali può essere adottato per comporre l’intera architettura di un
sistema di ubiquitous computing. In questa prospettiva cercherò di dare ad ogni livello la sua
natura, proprietà e caratteristica al fine di identificare delle scatole nere (black box) per gli
altri livelli. Tale scopo non sarà possibile ottenerlo completamente, infatti i livelli che andrò a
descrivere sono in parte dipendenti. In particolare alcune tecnologie adottate in un livello
finiscono per influenzare alcune scelte progettuali di altri livelli.
I livelli che sono riuscito ad identificare dall’analisi della letteratura sono cinque e
riguardano discipline di ricerca eterogenee, tale suddivisione può essere utile
all’identificazione della relativa disciplina per ogni livello.
Nella trattazione multi livello che seguirà si porteranno esempi di sistemi, tecnologie e
progetti esistenti in letteratura in relazione al livello trattato.
I livelli identificati sono i seguenti.
•
Interfaccia
•
Applicativo
•
Middleware
•
Comunicazione
•
Dispositivi
23
2.1.3.1 Interfaccia
Il livello dell’interfaccia è rappresentato ed è costituito da tutte le risorse hardware e
software dedite alla comunicazione tra l’uomo ed il sistema di ubiquitous computing [4].
Weiser [1, 2, 4, 8] oltre ad aver ipotizzato una computazione ubiqua e pervasiva aveva
immaginato anche che il rapporto tra uomo e la macchina dovesse cambiare, non solo dal
punto di vista quantitativo ma anche in modo qualitativo. Non è più l’uomo che si deve
adattare all’interfaccia delle macchine ma anzi le macchine devono essere in grado di fornire
un’interfaccia il più vicino possibile ai modi di comunicare dell’essere umano. Immaginare
un interfaccia classica con tastiera, mouse, monitor, scanner ecc. per un numero elevato di
elaboratori sparsi ovunque nell’ambiente è sicuramente un’idea non praticabile e sicuramente
risulterebbe troppo intrusiva ed inaccettabile. Le parole d’ordine in letteratura per
un’interfaccia di un sistema di ubiquitous computing sono dunque trasparenza e non
intrusività [4, 8, 9, 10, 11].
Con il concetto d’interfaccia trasparente si intende un nuovo insieme di tecniche e di
strumenti che permettono di interagire in modo poco intrusivo con l’ambiente circostante.
Una buona interfaccia trasparente è un’interfaccia che non è intrusiva per la nostra coscienza,
un paio di occhiali ad esempio è uno strumento che ci fa guardare il mondo e non gli occhiali
stessi [6]. Le interfacce devono essere progettate dunque adattandosi al modo con cui
tipicamente opera l’uomo. Interagire in modo trasparente significa che la persona, mentre si
trova nell’ambiente, può continuare ad agire come se nessun elaboratore fosse presente; sarà
compito di questi ultimi assecondare nel miglior modo possibile la persona.
In un’interazione uomo - uomo la gran parte delle informazioni è scambiata senza l’ausilio
delle parole, ma utilizzando molteplici mezzi di comunicazione d’altra natura. Questo
insieme di suggerimenti condivisi fra più persone, il contesto, aiuta a migliorare la qualità
dell’interazione fra i partecipanti.
Possiamo quindi identificare come contesto ogni sorta di informazione che permette di
caratterizzare la situazione di un’entità, dove per entità si può intendere una persona, un
luogo, un oggetto fisico o un dispositivo elettronico [12, 33].
Un’interfaccia trasparente dovrà per forza di cose essere sensibile al contesto al fine di
avvicinarsi quanto più possibile allo stile comunicativo umano. Adattarsi al contesto, pur
essendo importante anche nelle applicazioni tradizionali, assume un ruolo fondamentale
quando i sistemi sono distribuiti e mobili, dove gli elaboratori non solo si possono spostare
24
all’interno di un ambiente, ma addirittura possono cambiarlo, modificando di conseuenza
l’intero contesto.
Per fare in modo che un sistema di ubiquitous computing sia in grado di adattare il proprio
comportamento ai cambiamenti di contesto, è necessario in primo luogo che sia in grado di
percepirlo. Un uomo percepisce il contesto utilizzando i propri sensi, con in quali è in grado
di sentire ciò che lo circonda; allo stesso modo un’applicazione, se vuole “sentire” ciò che
c’è nello spazio circostante, deve essere dotata di particolari dispositivi, detti sensori.
Un ‘interfaccia di un sistema di ubiquitous computing deve essere in grado di interagire
con tutti gli strumenti in grado di rilevare il contesto messogli a disposizione dai sotto livelli
dell’intera architettura di un sistema di ubiquitous computing. Questo tipo di comunicazione
contestuale in letteratura va sotto il nome di context-awareness. Si è ancora lontani dal creare
vere e proprie interfacce o applicazioni context-aware, ma analizzando quelle che sono state
realizzate fino ad oggi [34], si nota come le informazioni relative al contesto realmente
utilizzate sono veramente poche rispetto all’enorme quantità di altre informazioni che
potrebbero essere trattate. In genere, l’uso del contesto è limitato solo all’identificazione ed
alla localizzazione. Di notevole interesse sono progetti prototipati, se pur non ancora ben
funzionanti, di interfacce in grado di effettuare un riconoscimento gestuale, cogliendo cioè
dai gesti di una persona l’informazione sottesa come quella rappresentata ad esempio dal
movimento degli arti o dei muscoli facciali [1, 10].
Anche l’analisi della scrittura manuale è sicuramente un tipo d’interfaccia per l’ubiquitous
computing, infatti la scrittura manuale fa perdere la percezione e la coscienza di trovarsi
davanti ad un elaboratore [6, 10].
Sempre nel dominio del riconoscimento dei metodi d’espressione classici dell’uomo, un
ampio campo di ricerca è quello relativo al riconoscimento vocale, poter comunicare con la
voce senza nemmeno vedere l’elaboratore conferisce all’interfaccia le caratteristiche di
trasparenza e facilità d’uso e spontaneità, essenziali per un sistema di ubiquitous computing
[10].
Un’altra strada che si sta percorrendo per far comunicare l’uomo e le macchine in modo più
trasparente possibile è quello di immergere sensori nei dispositivi d’uso comune. Un esempio
di progetto in tal senso è dato da un esperimento dell’università di Karlsruhe: MEDIACUP
(Fig. 2.3) [1], che ha lo scopo di capire le opportunità provenienti dalla presenza di
apparecchi digitali negli oggetti di tutti i giorni.
25
Una tipologia d’interfacce che sta prendendo sempre più piede, nei sistemi di ubiquitous
computing e nei sistemi ad alta interazione con l’uomo, sono le interfacce multimodali e
multicanale. Un’interfaccia multimodale è in grado di percepire la stessa informazione o la
stessa intenzione di dialogo da più sorgenti differenti, un’interfaccia multicanale fornisce
all’utente la possibilità di scegliere tra diversi canali di comunicazione per dialogare con il
sistema [14].
Figura 2.3 MEDIACUP, una tazza di sensori e connessione senza fili.
2.1.3.2 Applicativo
Il livello applicativo è quello che utilizza ed elabora le informazioni provenienti dal livello
superiore (interfaccia del sistema) e dai livelli inferiori (middleware, comunicazione e
dispositivi) al fine di raggiungere lo scopo applicativo per il quale è stato progettato. E’
difficile fare una trattazione generale in merito ai caratteri distintivi del livello applicativo di
un’architettura adeguata ad un sistema di ubiquitous computing, infatti le applicazioni sono
progettate secondo gli obiettivi di volta in volta fissati e possono essere estremamente
eterogenee in natura ed obiettivi.
Non è scopo di questa sezione fare dunque una trattazione completa di tutte le possibili
applicazioni assimilabili al concetto di ubiquitous computing, anche perchè probabilmente
non sarebbe possibile essere esaustivi. Trovo invece interessante descrivere i campi di ricerca
26
e disciplinari sui quali le applicazioni di ubiquitous computing possono assumere
un’importanza rilevante. I campi e le aree interessate maggiormente, secondo me, dal
concetto e l’idea di ubiquitous computing sono:
•
realtà aumentata (augmented reality)
•
smart room
•
computazione indossabile (wearable computing)
Realtà aumentata
La realtà aumentata è un’area in forte crescita nata all’interno del settore della realtà
virtuale (VR). La tendenza attuale è quella di un distaccamento netto tra realtà aumentata e
virtuale, le due aree infatti impiegano spesso concetti e modellizzazioni in antitesi fra loro
[13]. L’ubiquitous computing è messo in relazione con la realtà aumentata e viene
considerato da molti e dal padre fondatore (Weiser) l’esatto opposto della realtà virtuale.
Weiser infatti scrisse : “la realtà virtuale mette le persone nel mondo generato dal computer,
mentre l’ubiquitous computing forza il computer a vivere nel mondo delle persone” [5]. La
tecnologia e la virtualità sono “incarnate” nella realtà (embodied virtuality), gli elaboratori
pervasivi ed ubiqui diventano in un certo qual senso la realtà quotidiana [8]. Alcuni, in linea
con le linee tracciate da Weiser, criticano apertamente la realtà virtuale contestandogli il fatto
che focalizza una enormità di risorse per simulare il mondo invece di migliorare il mondo in
modo invisibile e trasparente come cerca di fare invece l’ubiquitous computing [8]. Nella
Fig. 2.4 [4] si trovano degli schizzi di Weiser che enfatizzano la differenza tra virtual reality
e embodied virtuality (ubiquitous computing).
Il mondo che ci circonda fornisce una moltitudine d’informazioni che sono difficili e
talvolta impossibili da replicare con un computer; è facile rendersene conto, osservando
quanto poco dettagliati sono gli ambienti virtuali creati al computer.
Un sistema basato sull’augmented reality (AR) genera all’utente una vista composita, una
combinazione di percezioni reali osservate dall’utente e di scene e dati virtuali generate al
computer, che quindi “aumentano” la scena reale, la arricchiscono, con informazioni
addizionali. Numerosi sono i possibili campi di utilizzo di applicazioni che permettono agli
utenti di migliorare le loro capacità di percepire il mondo circostante. Il fine ultimo è quello
di creare un sistema che non permetta ai suoi utilizzatori di rendersi conto che stanno
osservando una scena composita.
27
Figura 2.4 Un parallelo schematico di Weiser tra virtual reality ed embodied virtuality
Il computer che genera oggetti virtuali deve essere quindi in grado di calibrarli e proporli
adeguatamente insieme al mondo reale. Errori compiuti in questa fase impediscono all’utente
di percepire la fusione tra reale e virtuale in modo naturale.
Milgram [27, 28] ha proposto una tassonomia (Fig. 2.5) che descrive come la realtà
aumentata e la realtà virtuale possono essere messe in relazione ma come esse stiano agli
antipodi dal punto di vista concettuale.
Il mondo reale e la realtà completamente virtuale sono gli estremi di questo schema, mentre
le regioni di mezzo prendono il nome di mixed reality. La realtà aumentata si pone nelle
vicinanze del mondo reale, con una predominanza di percezioni provenienti dal mondo reale,
aumentata da dati generati dal computer. Augmented virtuality è il duale creato da Milgram
28
per identificare un sistema nel quale si ha una predominanza di scene virtuali con l’aggiunta
di informazioni percepite direttamente dal reale.
Mixed Reality (MR)
Real
Environment
Augmented
Reality (AR)
Augmented
Virtuality (AV)
Virtual
Environment
Figura 2.5 Tassonomia sulla realtà virtuale proposta da Milgram
La realtà aumentata è quella che più fa rimanere nello sfondo la tecnologia, avvicinandosi
all’idea sottesa al concetto di ubiquitous computing, in cui la percezione dell’interazione con
degli elaboratori deve essere il più trasparente possibile, arricchendo l’ambiente senza che
l’utente percepisca cambiamenti. La diffusione quantitativa e qualitativa nell’ambiente di
dispositivi ubiqui può essere sfruttata ad esempio per generare immagini aumentate [36].
Di seguito riporto alcuni possibili campi d’impiego dell’AR.
•
Medico: la medicina negli ultimi anni ha fatto sempre maggiore affidamento alla
computer grafica (Fig. 2.6); non stupisce quindi che uno dei maggiori domini
applicativi della realtà aumentata sia proprio in campo medico.
Figura 2.6 Immagine aumentata per applicazioni mediche
29
Un chirurgo può, ad esempio, sfruttare scansioni fatte precedentemente sul corpo di
un paziente e utilizzarle in sala operatoria durante un intervento [67, 68].
•
Intrattenimento: gli effetti speciali utilizzati nei film impiegano tecniche digitali per
creare illusioni. Un film non può essere considerato realtà dunque secondo me è
improprio parlare di realtà aumentata, ma la scena di un film arricchita con immagini
elaborate al computer viene comunque considerata realtà aumentata, io la chiamerei
finzione aumentata. Lavori a tale riguardo sono stati svolti da Schmidt [69].
•
Militare: i militari utilizzano particolari visori, all’interno degli abitacoli degli aerei o
direttamente indossati dai piloti, che permettono a questi ultimi di avere maggiori
informazioni su ciò che sta avvenendo, senza che siano obbligati a guardare
direttamente la strumentazione di bordo.
•
Progetto tecnico: immaginiamo che un gruppo di progettisti stia lavorando al
modello di un complesso dispositivo per alcuni loro clienti. Sia i progettisti che i
clienti trarrebbero notevoli vantaggi avendo una rappresentazione reale e
tridimensionale di ciò che stanno progettando. Questo diventa possibile se ci si trova
in una stanza equipaggiata con i display della AR. I clienti sarebbero in grado di
visionare il dispositivo estruso in tre dimensioni dagli strumenti di AR e riuscirebbero
a prendere coscienza dei volumi progettati e dei materiali utilizzati. L’AR in questo
caso aumenta la realtà del progetto proponendo un’ulteriore rappresentazione grafica
rispetto a quella bidimensionale proposta dai progettisti con il classico utilizzo di
strumenti rappresentativi come planimetrie, prospetti, sezioni e foto di materiali
possibili.
•
Robotica e telerobotica: nell’ambito della telerobotica un sistema di realtà aumentata
può assistere gli utilizzatori del sistema. L’operatore può utilizzare un’immagine
virtuale dello spazio operativo del robot per guidano più facilmente [70].
Smart room
I computer sono comunemente utilizzati per operazioni prettamente elaborative, come la
lettura di e-mail, la scrittura di testi, ecc. Le persone però utilizzano la maggioranza del loro
tempo in attività che non richiedono l’utilizzo dei classici elaboratori, ad esempio leggono
libri, mangiano e fanno altre attività. Gli uomini trascorrono il loro tempo immersi nel mondo
reale, facendo attività che non richiedono l’uso di un computer. A questo proposito è
possibile riprendere una frase di Coen [8]: “il valore di un computer decresce con il quadrato
30
della distanza dal suo monitor”. Quanto appena detto permette di introdurre l’idea degli
ambienti intelligenti.
Il concetto di smart room è quello che probabilmente maggiormente si affianca a quello
dell’ubiquitous computing e al concetto di domotica come vedremo nelle sezioni successive.
Le moderne interazioni uomo-computer sono implicitamente basate sull’idea di addestrare
l’uomo all’utilizzo delle macchine. Possiamo vederlo nelle tradizionali interfacce WIMP
(window, icon, mouse, pointer) o nelle più immersive applicazioni di realtà virtuale. In
entrambi i casi la persona che vuole usufruire di tali mezzi deve adeguarsi al funzionamento
dell’elaboratore e manipolare oggetti di un mondo artificiale. Il computer non ha
consapevolezza di cosa sia una persona, non ne possiede un modello e non può comprendere
ciò che realmente un uomo vuole fare.
Nelle stanze intelligenti si cerca di invertire questa relazione fra persona e computer. Nelle
smart room, infatti, le persone lavorano insieme o da sole, come se i computer non fossero
presenti: non ci sono tastiere, mouse, monitor o altri dispositivi tradizionali. I computer sono
concepiti al di fuori del mondo delle persone e sono forzati ad operare lì, ascoltando ciò che
la gente dice, osservando ciò che si fa, tenendo traccia di ciò che avviene e cercando di essere
utili quando c’è qualcosa che ritengono di poter fare. Tutto questo è possibile utilizzando
tecniche sviluppate negli ultimi decenni in campo robotico, nel riconoscimento del
linguaggio naturale, nel riconoscimento vocale e nella computer grafica.
L’intento è quello di creare computer “pronti all’uso”, cioè con la capacità di non aver
bisogno d’alcuna interazione umana per poter funzionare.
Per ciò che riguarda l’ambiente in cui le smart room devono essere realizzate, esistono due
diverse correnti di pensiero. La prima prevede ambienti strutturati appositamente per
contenere i vari dispositivi necessari, ciò significa che i vari computer dispongono di
informazioni riguardanti il contesto in cui si trovano: dimensione della stanza, posizione di
oggetti fissi, ecc. La seconda corrente di pensiero prevede invece che i computer debbano
adeguarsi a qualsiasi ambiente ed eventualmente, quando necessario, ricavare direttamente da
esso le informazioni sul contesto che servono. Il secondo approccio è sicuramente più
auspicabile, secondo me, in quanto permette l’installazione di una smart room in un qualsiasi
ambiente. È da sottolineare, però, la maggior complessità realizzativa, che ne limita la
performance rispetto al primo approccio.
Un importante impiego delle smart room che sta sollevando un notevole interesse è
l’adattamento di case per persone disabili [47, 83]. L’utilizzo di dispositivi poco intrusivi e
31
che interagiscono in modo semplice fornisce un importante aiuto a persone con problemi
fisici. Se a questo aggiungiamo la possibilità di far indossare dispositivi studiati
appositamente, è possibile raggiungere risultati insperati.
Lo studio di ambienti intelligenti è sicuramente uno dei campi dell’intelligenza artificiale
maggiormente in fermento, sia per le interessanti sfide tecnologiche che presenta, sia per i
suoi possibili campi di utilizzo, che spaziano dalle stanze intelligenti per uso domestico, ad
altri tipi di ambiente (automobili, spazi aperti, fabbriche, ecc.) che trarrebbero notevoli
vantaggi da questa tecnologia. Ciò ha anche spinto molte aziende ad investire ingenti quantità
di denaro in questo tipo di ricerca.
Computazione indossabile (wearable computing)
Una possibile definizione per il termine wearable computing può essere la seguente: “ogni
cosa che può essere indossata o portata con sé e che permette di migliorare la propria
interazione con il resto del mondo” [71]. Generalmente quando si parla di wearable
computing ci si riferisce a qualsiasi tipo di dispositivo elettronico portatile dotato di una certa
capacità elaborativa (vedi Sezione 2.1.3.5 relativo ai dispositivi per l’ubiquitous computing).
Steve Mann, uno fra i primi ricercatori che si sono interessati a questo settore, ha definito
alcune proprietà che permettono di caratterizzare più rigorosamente un sistema wearable
[72].
•
Eudaemonic criterion: l’intero apparato elaborativo deve essere sistemato in modo
che l’utente lo consideri una parte di sé e non dell’ambiente; la stessa percezione deve
essere avvertita da chiunque altro interagisca con il portatore dei dispositivi wearable.
•
Existential criterion: le capacità elaborative devono essere controllate dagli utenti.
Questa possibilità di controllo non deve rappresentare uno sforzo per chi la utilizza,
ma deve essere esercitata in maniera semplice ed intuitiva. Questo approccio permette
ai dispositivi wearable di comportarsi come se fossero delle estensioni del corpo e
della mente dell’utilizzatore.
Oltre a questi criteri è possibile identificare alcune caratteristiche che accomunano tutti i
wearable computer [84].
32
•
Portabilità: un wearable computer deve operare anche mentre l’utente è in
movimento, adattandosi rapidamente ai cambi di contesto. L’utente può entrare in
ambienti nuovi, con persone diverse ed oggetti diversi.
•
Maneggevolezza: un wearable computer deve essere concepito per poter essere
utilizzato usando minimamente le mani, affidandosi quando possibile al
riconoscimento vocale. L’uso limitato dei tradizionali strumenti di input rende
necessario un miglioramento delle capacità percettive del computer.
•
Percettività: per favorire l’input da parte dell’utente, un wearable computer deve
essere in grado di raccogliere la maggior parte delle informazioni riguardanti l’utente
e l’ambiente in cui è immerso sfruttando i propri sensori. Per migliorare la capacità
percettiva si può anche pensare di far interagire dispositivi immersi nell’ambiente con
sensori posti sul corpo.
•
Attività: un wearable computer deve agire, se necessario, anche quando l’utente non
lo richiede. Ciò può essere fatto analizzando i dati provenienti dai sensori, elaborando
queste informazioni e agendo di conseguenza.
•
Sempre attivo: un wearable computer deve essere sempre attivo. Questo è
fondamentale per permettere un continuo monitoraggio delle informazioni
provenienti dai sensori.
2.1.3.3 Middleware
Il middleware è un livello software che si trova tra il sistema operativo e il livello
applicativo che fornisce dei servizi all’applicazione rendendogli il sistema operativo
trasparente [37].
I componenti di un sistema di ubiquitous computing sono in grado di interagire con le altre
entità, altri componenti di ubiquitous computing o altre macchine, utilizzando i servizi messi
a disposizione dal middlware. Questi servizi provvederanno a garantire comunicazioni
sincrone e asincrone, traduzione delle informazioni scambiate tra piattaforme differenti, o
stabilirsi di connessioni dinamiche client-server ecc.
Diversi criteri possono essere adottati per classificare le tipologie di middleware, come ad
esempio il tipo di dati scambiati (oggetti o messaggi) o altre proprietà come la gestione del
contesto, gestione del real time ecc. In accordo con la letteratura [38] ho distinto i
middleware adottati in sistemi di ubiquitous computing tenendo in considerazione il carico
33
computazionale richiesto per l’esecuzione, i paradigmi di comunicazione supportati, il tipo di
rappresentazione del contesto fornito al livello applicativo.
Carico computazionale
Il carico computazionale dipende da un insieme di requisiti non funzionali che il sistema
vuole soddisfare. Ad esempio, uno dei principali propositi di un middleware è quello di
rendere possibile la comunicazione, permettendo ad esempio all’utilizzatore del middleware,
di richiedere servizi remoti; quello che distingue i diversi middleware è l’efficienza e
l’efficacia con la quale le richieste sono gestite. E’ ad esempio molto più dispendioso
garantire che una richiesta sarà sicuramente eseguita ed esattamente una volta piuttosto che
fornire un’affidabilità di tipo best-effort in cui non vi è la certezza dell’esecuzione di una
richiesta. Come altro esempio possiamo considerare la ridondanza. La replicazione è
largamente utilizzata dai middleware al fine di fornire una tolleranza agli errori sfruttando la
ridondanza. Tenere sincronizzate tutte le informazioni replicate richiede però un grosso
sforzo computazionale oltre che un intenso carico sulla rete di comunicazione. Dal punto di
vista computazionale i middleware possono essere quindi distinti in “pesanti” (heavy
computational load ) e “leggeri” (light computational load).
Diversi carichi computazionali implicano dunque differenti qualità e quantità di servizi
offerti, la richiesta di quantità e qualità dei servizi offerti da un middleware comporta
necessariamente un maggiore uso delle risorse disponibili da parte del middleware, la scelta
del tipo di middleware dovrà essere fatta quindi solo dopo un’attenta analisi delle
caratteristiche del sistema che si intende progettare e delle applicazioni che dovranno essere
implementate.
Paradigma di comunicazione
In letteratura si trovano principalmente due tipi di paradigmi di comunicazione che i
middleware supportano: esplicita o implicita. Nel primo caso, tipico della comunicazione
client-server, si richiede che il trasmettitore delle informazioni e il ricevente si conoscano
esplicitamente, nel secondo caso, tipico del paradigma pubblica-sottoscrivi (publishsubscribe) invece un trasmettitore invia il proprio messaggio senza avere una referenza
diretta del ricevente. Simmetricamente al concetto di esplicita od implicita, la comunicazione
può essere sincrona o asincrona. In una comunicazione sincrona sia il richiedente di un
34
servizio che quello che lo fornirà sono connessi allo stesso momento, in una comunicazione
asincrona la simultaneità della connessione non è necessaria.
Rappresentazione del contesto
Questo ultimo parametro che ho identificato per distinguere diverse classi di middleware si
riferisce ad informazioni possedute e strutturate da un middleware per descrivere il contesto
d’esecuzione e come tali informazioni vengono utilizzate.
Il contesto relativo all’esecuzione può essere passato al livello applicativo superiore
rendendo quindi l’applicazione consapevole (awareness) [16] del contesto oppure tenerlo
nascosto internamente al middleware stesso rendendo il contesto trasparente al livello
applicativo [15]. Il middleware interagisce con il sottostante sistema operativo e colleziona
informazioni relative, ad esempio, all’attuale locazione di un dispositivo, ai valori di
larghezza di banda disponibile in un dato istante, ai valori di latenza, alla disponibilità di
servizi remoti, ecc. Con il termine trasparenza, intendo che tutte le informazioni raccolte per
descrivere il contesto sono usate “privatamente” dal middleware e non vengono mostrate al
livello superiore; ad esempio, il middleware potrebbe accorgersi di una congestione sulla rete
in una porzione del sistema distribuito e prenderà le dovute misure per aggirare l’ostacolo
senza informare il livello superiore. Un middleware considerato di tipo awareness, invece,
passa le informazioni relative al contesto d’esecuzione (o parte di esse) all’applicazione, che
dovrà farsi carico della strategia decisionale da adottare a seconda della situazione
contestuale.
I sistemi di ubiquitous computing sono generalmente composti da diversi tipi di sistemi
distribuiti. La scelta del middleware è strettamente dipendente dal tipo di sistema sul quale
sarà in esecuzione e dall’obiettivo che tale sistema si prefigge. Per tale motivo di seguito
verrà proposta una classificazione relativa ai tipi di sistemi distribuiti seguita da una
trattazione più specifica dei middleware in relazione ad ogni tipo di sistema distribuito.
I sistemi distribuiti sono classificati in letteratura in tre categorie: tradizionali (o fissi);
nomadici; ad-hoc [39].
•
Sistemi tradizionali. Sono una collezione di dispositivi fissi, permanentemente
connessi alla rete con banda larga e con stabili connessioni, in esecuzione in ambienti
statici o con specificate dinamiche (dove la mobilità dei dispositivi è resa possibile
grazie al DHCP). I sistemi tradizionali sono la prima forma di sistemi distribuiti.
35
•
Sistemi nomadici. Sono un compromesso tra sistemi totalmente fissi e totalmente
mobili. I sistemi nomadici sono generalmente composti da un insieme di dispositivi
mobili e da una rete centrale fissa. I dispositivi mobili si spostano da una posizione ad
un’altra mantenendo sempre una connessione con la rete fissa centrale. Il carico
computazionale e i servizi per la connettività sono forniti per lo più dalla rete fissa
definita di backbone. In alcuni dei sistemi nomadici le sconnessioni sono consentite
da servizi trasparenti di riconnessione e risincronizzazione automatica. In un sistema
nomadico per l’ubiquitous computing i servizi possono essere offerti anche dai
dispositivi mobili (che non si limitano quindi ad essere dei client leggeri) in questo
caso sono previsti meccanismi di rilevazione del contesto per valutare la disponibilità
di alcuni dispositivi e dei loro servizi (discovery) [39, 15] .
•
Sistemi ad-hoc. Sono costituiti da dispositivi mobili tutti connessi alla rete tramite
connessioni molto variabili che eseguono operazioni in un ambiente estremamente
dinamico e mutevole. Differiscono dai sistemi nomadici per il fatto che i sistemi adhoc non posseggono un’infrastruttura fissa centrale (di backbone). La connettività
può essere simmetrica a seconda delle condizioni. Per i sistemi ad-hoc vi è la
necessità di definire dei protocolli di instradamento ad-hoc per ottimizzare la
trasmissione dei pacchetti tra i dispositivi mobili, l’utilizzo di protocolli classici per
reti fisse (ad esempio il protocollo IP) o nomadiche (come il mobile IP [30])
renderebbe il lavoro dell’instradamento eccessivamente pesante compromettendo
l’intero sistema [7]. Al contrario dei sistemi nomadici nel caso dei sistemi ad-hoc
ogni servizio è fornito dai dispositivi mobili. Un sistema ad-hoc dovrà essere più che
gli altri adattabile e scalabile.
Un sistema di ubiquitous computing può essere composto da una composizione delle
categorie di sistemi distribuiti appena descritti ed adottare quindi differenti tipi di middleware
in interazione tra di loro. Di seguito descriverò quali sono le caratteristiche di un middleware
adatto ad un sistema distribuito fisso (di tipo tradizionale) e quali invece quelle di
middleware adatti a sistemi distribuiti di tipo nomadico e ad-hoc.
Middleware per sistemi distribuiti tradizionali
I middleware per sistemi distribuiti fissi sono ad alto consumo di risorse e nascondono i
dettagli della distribuzione all’applicazione e in genere supportano comunicazioni sincrone.
36
•
Alto carico computazionale (heavy computational load). I sistemi distribuiti fissi
dispongono generalmente di grosse risorse computazionali distribuite in dispositivi
fissi e di una banda di comunicazione ampia. Per tale motivo si cerca di sfruttare al
massimo tale risorse al fine di avere una migliore qualità dei servizi da offrire al
livello applicativo.
•
Comunicazione esplicita e sincrona. I sistemi distribuiti tradizionali sono spesso
permanentemente connessi su una rete a banda larga e con connessioni stabili. Questo
significa che trasmettitore e ricevitore sono sempre connessi allo stesso tempo.
•
Trasparenza dal contesto. Il contesto d’esecuzione di un sistema distribuito
tradizionale è generalmente statico: la posizione di un dispositivo raramente cambia,
la topologia del sistema e pressoché costante nel tempo, la larghezza di banda rimane
stabile ecc. L’abbondanza di risorse permette di poter fornire efficienti servizi
rendendo il contesto trasparente all’applicazione. Nascondendo il contesto all’interno
del middleware si facilita il compito di chi dovrà implementare le applicazioni che
dovrà preoccuparsi solo dei requisiti funzionali e non di quelli non funzionali (ad
esempio la tolleranza ai guasti) concentrandosi quindi sul problema reale che
l’applicazione si propone di risolvere.
Middleware per sistemi distribuiti nomadici e ad-hoc
Si è scelto di fare una trattazione unica per i sistemi nomadici ed ad-hoc in relazione ai
middleware, infatti questi sistemi pur differendo per alcuni aspetti presentano alcune
caratteristiche comuni che influenzano i requisiti che un middleware adeguato deve
soddisfare.
•
Basso carico computazionale (light computational load). Le applicazioni mobili
sono eseguite da dispositivi con risorse limitate, con poca memoria, cpu lente, e in
genere con limitata potenza dovuta ad una alimenatazione a batterie. A causa delle
risorse limitate, middleware molto pesanti ottimizzati per macchine potenti non
sembrano essere una buona soluzione.
•
Comunicazione implicita ed esplicita. I dispositivi mobili sono connessi alla rete in
modo opportunistico e per piccoli periodi, normalmente giusto per il tempo
37
necessario per accedere a qualche dato o richiedere qualche servizio. Durante la
connessione la banda disponibile è minore di quella di un sistema fisso e può, in
alcuni casi, anche ridursi a zero in aree di non copertura. Per tale motivo il
middleware deve essere in grado di gestire oltre alle comunicazioni sincrone esplicite
anche quelle asincrone, infatti accade spesso in sistemi mobili ed altamente dinamici
che un servizio o delle informazioni vengano richieste anche se non
momentaneamente disponibili. Con una comunicazione asincrona il servitore
risponderà quando sarà in grado fornire le informazioni richieste. Il richiedente a sua
volta potrà accedere alle informazioni fornite in modo asincrono senza dover
attendere una risposta esplicita dal servitore.
•
Contesto dinamico, consapevolezza del contesto. Come detto in precedenza i
sistemi mobili nomadici, ma soprattutto quelli ad-hoc distribuiti, operano in un
contesto fortemente dinamico con una larghezza di banda di comunicazione non
stabile e servizi non sempre disponibili in ogni istante. Questa alta variabilità
associata alle scarse ed incerte risorse disponibili costringe ad impiegare un
middleware che delegherà parte del contesto ai singoli applicativi distribuendo cosi
l’ottimizzazione dei comportamenti ad ogni singola applicazione e alla sua specificità
e criticità funzionale.
Dopo una breve trattazione teorica per l’identificazione delle caratteristiche adeguate a
diversi tipi di sistemi distribuiti di seguito verranno riportati alcuni esempi di middleware
esistenti per il supporto allo sviluppo di sistemi distribuiti e di ubiquitous computing.
Esistono middleware commerciali progettati per reti aziendali, con le relative
standardizzazioni industriali, che possono essere considerati vicini a middleware adeguati per
sistemi di ubiquitous computing se pur non progettati specificamente a tale scopo. Tra questi
troviamo ad esempio CORBA, COM, REAL TIME CORBA, TINA-C [18]. In aggiunta a questi
troviamo altri middleware, provenienti dalla ricerca per reti mobili, come TAO [19] e
DYNAMICTAO [20] studiati e progettati per ambienti real time con limitate risorse e per tale
motivo si prestano ancor meglio ad essere middleware adeguati per l’ubiquitous computing
[18]. Tra i middleware particolarmente adatti a sistemi di ubiquitous computing c’è JINI,
progettato per ambienti dinamici e basato sul paradigma publish-subscribe. Questo ultimo
middleware verrà trattato in modo più approfondito nella Sezione 2.3 relativa alle tecnologie
per la domotica.
38
Ho trovato di maggior interesse, per i propositi dello stato dell’arte relativo all’ubiquitous
computing, riassumere e descrivere un po’ più in dettaglio alcuni middleware progettati per
sistemi distribuiti mobili, sviluppati con particolare attenzione ai concetti provenienti
dall’ubiquitous computing. I middleware che seguiranno sono tutti disponibili come prodotti
di ricerca e non sono prodotti commerciali.
•
MOBIWARE [21]. un progetto della Columbia University in grado di gestire una rete
mobile aperta, attiva, e adattativa. Mobiware per tale gestione si appoggia su
l’architettura CORBA e usa diversi algoritmi adattativi, degli oggetti JAVA, che
vengono distribuiti dinamicamente nei dispositivi mobili, punti d’acceso, in hub e
router mobili e fissi [18]. Prevede anche la gestione del flusso informativo durante la
mobilità e prevede servizi per il QoS (Quality Of Service). MOBIWARE può essere
considerato un soluzione per lo sviluppo di applicazioni per la gestione di
infrastrutture di reti mobili e non come un middleware completo per il supporto allo
sviluppo delle applicazioni finali destinate all’utente.
•
ARCHITECTURE
FOR
LOCATION INDEPENDENT CORBA ENVIRONMENT [22]. Un
middleware progettato al Trinity College che parte dall’architettura CORBA per
garantire l’interoperabilità con altri middleware. E’ in grado di gestire sia client che
server mobili. La comunicazine è basata in parte sulla tecnologia RMI (Remote
Method Invocation). Questa scelta di totale mobilità, dei gateway, router, server e
client, introduce una semantica di comunicazione adatta solo per sistemi distribuiti di
tipo ad-hoc, non prevedendo la possibilità di elementi fissi di supporto.
•
LIME [23]. Sviluppato alla università di Washington e al Politecnico di Milano, è
basato su un modello di spazio di tuple condivise. Il modello di riferimento permette
di vedere la mobilità come un cambiamento trasparente dello spazio delle tuple.
Questo modello facilmente supporta l’interazione tra dispositivi in una rete ad-hoc.
LIME inoltre supporta anche una sensibilità al contesto basato sulla memorizzazione
delle informazioni sempre nello spazio delle tuple. Nonostante ciò ignora lo stato dei
dispositivi e dell’ambiente circostante come parte delle condizioni generali del
contesto. Lo spazio delle tuple, pur portando ad una semplificazione delle
informazioni necessarie al supporto per la comunicazione tra dispositivi mobili,
carica di compiti computazionali, a volte molto gravosi i dispositivi.
39
•
XMIDDLE [24]. E’ un middleware basato sulla condivisione e la replicazione di
documenti in reti mobili ad-hoc. XMIDDLE conta su un modello di coordinate basato
sullo spazio delle tuple e aumenta le proprie capacità sfruttando la struttura gerarchica
dell’XML (eXtensible Markup Language). Fornisce un supporto per effettuare
conversioni e fusioni di documenti tra applicazioni specifiche differenti.
•
QOS-AWARE
OF
MIDDLEWARE [25]. Progettato all’università dell’Illinois Urbana-
Champaign, prevede un struttura di supporto al QoS attraverso livelli diversi
dell’architettura del sistema. I servizi di Qos offerti sono adattativi e contestuali. Le
politiche di adattamento sono basate su controllo di tipo fuzzy (logica sfumata). Il
Middleware supporta la computazione per l’instradamento, la gestione per la
trasmissione e ricezione dei pacchetti, prevede inoltre la comunicazioni di gruppo,
servizi per l’accesso a basi di dati e servizi per la gestione della localizzazione
(discovery).
•
TSPACES [26]. Progetto dell’IBM basato sullo spazio delle tuple. Tutti i meccanismi
di comunicazione sono stati implementati in JAVA. Prevede una comunicazione
basata sugli oggetti e sullo scambio messaggi asincrono. E’ robusto ai guasti di rete e
si occupa di recuperare le informazioni perse. Non prevede un esplicito supporto per
l’identificazione del contesto.
Nonostante l’enorme fermento per la progettazione e l’identificazione di middleware adatti
per applicazioni di ubiquitous computing, fino ad oggi i middleware esistenti, in campo
commerciale e nella ricerca, hanno ancora delle forti limitazioni per supportare reali
applicazioni in ambienti di ubiquitous computing. Di seguito fornirò una lista delle principali
mancanze da me riscontrate in tal senso.
•
I middleware e le standardizzazioni commerciali oggi esistenti spesso partono
dall’assunzione che la rete di comunicazione sia stabile, ipotesi inaccettabile per
ambienti di ubiquitous computing. La maggior parte di essi inoltre utilizzano una
semantica client-server esplicita non sempre utilizzabile in ubiquitous computing.
•
Molti dei middleware progettati appositamente per reti mobili non sono in grado di
utilizzare informazioni contestuali, informazioni che in ubiquitous computing
assumono invece un’importanza rilevante. Anche quando alcune informazioni
40
contestuali vengono prese in considerazione non vi è mai una relazione diretta tra
contesto ed operazioni in tempo reale svolte dalle applicazioni.
•
Molti dei middleware provenienti dalla ricerca scientifica, specifici per applicazioni
di ubiquitous computing, utilizzano architetture e semantiche troppo specifiche e non
eterogenee, questo costituisce una barriera per l’utilizzo di tali middleware nella
pratica reale, infatti diventa difficoltoso perseguire una vera interoperabilità con altre
architetture e middleware.
2.1.3.4 Comunicazione
La rete di comunicazione è quella che connette i dispositivi di un sistema di ubiquitous
computing tra di loro. A seconda delle applicazioni, diverse reti e tecnologie per la
comunicazione possono essere impiegate per sistemi di ubiquitous computing, ognuna con le
sue peculiarità. I fattori maggiormente caratterizzanti di una rete sono: la dimensione
dell’area potenzialmente copribile dalla rete, la tecnica di trasmissione, il mezzo di
trasmissione, il meccanismo per stabilire una connessione [15]. Tra questi fattori io prenderò
in considerazione, per proporre una trattazione sintetica e significativa, la dimensione
dell’area potenzialmente copribile dalla rete. Fattore questo che, come vedremo, finisce
anche per influenzare le altre caratteristiche della rete di comunicazione. In particolar modo
la tecnica e la tecnologia trasmissiva sarà nettamente influenzata dalla dimensione della rete.
Per dimensione dell’area coperta, e quindi dimensione potenziale della rete stessa, si
intende lo spazio fisico coperto da una particolare rete. Secondo tale caratteristica
distinguerò, in accordo con la letteratura [15], le reti in quattro classi: Personal Area Network
(PAN), Local Area Network (LAN), Metropolitan Area Network (MAN) e Wide Area
Network (WAN).
•
Personal Area Network. Una formale specifica di una PAN in merito alle
dimensioni dell’area e al numero dei dispositivi non esiste, una PAN può essere
considerata come una rete composta da tutti i dispositivi personali (di cui si darà una
definizione più precisa nella sezione successiva relativa ai dispositivi) di un singolo
utente [15]. Una specifica più formale, relativa alla dimensione, esiste invece per la
rete chiamata WPAN (wireless personal area network) dalla IEEE [73]. La IEEE
infatti fissa il raggio di azione di una WPAN a circa dieci metri.
41
Dal punto di vista implemetativo una PAN è costituita generalmente da
un’infrastruttura centrale composta da dispositivi fissi (mobili assieme all’utente) e da
un insieme di dispositivi dinamici che possono essere connessi o disconnessi durante
il funzionamento (dispositivi mobili con l’utente o integrati nell’ambiente). In questo
tipo di rete possono essere adottate due tipi di tecnologie di comunicazione. La prima
composta da una rete cablata per connettere i dispositivi personali fissi sull’utente
(normalmente si utilizzano dei bus di comunicazione progettati ad hoc [40]) . La
seconda è composta da un bus di comunicazione wireless a bassa potenza al fine di
connettere l’insieme dei dispositivi personali; BLUETOOTH [42] e l’infrarosso sono le
tecnologie maggiormente in uso. Lo standard attuale è il IEEE 802.15 WPAN [73].
Le reti PAN normalmente fanno parte dei sistemi distribuiti ad-hoc e nomadici.
•
Local Area Network. È formalmente definita nello standard IEEE 802 [42]. La LAN
come dimensione rientra nell’ordine dei cento metri. Tale rete è composta da
dispositivi eterogenei che possono essere sia personali che ambientali. Per la
creazione di una LAN alcuni tipi di standard di comunicazione vengono adottati: lo
standard IEEE 802.11a/b WAVELAN [42] che permette la mobilità dei dispositivi
all’interno della rete con un raggio di azione di circa cento metri. Una rete LAN
generalmente è utilizzata per interconnettere dispositivi di sistemi distribuiti nomadici
e fissi.
•
Metropolitan Area Network. Questo tipo di rete serve per interconnettere dispositivi
eterogenei in dimensione e struttura. La MAN può servire per interconnetere fra loro
diverse LAN o integrare diverse PAN. Dal punto di vista teorico una MAN copre una
area relativa ad una città (metropolitan) o, più in generale una vasta zona urbana. Per
questo tipo di rete diverse tecnologie integrate possono essere utilizzate. Le
tecnologie maggiormente utilizzate sono quelle che fanno riferimento allo standard
IEEE 802.11 WAVELAN [42] e allo standard IEEE 802.16 WAVEMAN [42] per le
trasmissioni senza cavi. Invece per le trasmissioni cablate vengono utilizzate la
ETHERNET, Internet e tecnologie che fanno riferimento allo standard IEEE 802 [42].
La MAN generalmente è utilizzate per sistemi distribuiti fissi.
•
Wide Area Network. Questo tipo di rete è composta da un insieme molto eterogeneo
di dispositivi. Ogni rete descritta fino ad’ora può essere considerata un componente
delle WAN. La comunicazione senza cavi utilizzate in una WAN sono il GSM,
42
GPRS, UMTS. La connessione cablata utilizzata è Internet. La WAN è utilizzata per
sistemi distribuiti fissi e nomadici.
2.1.3.5 Dispositivi
Il livello dei dispositivi è l’ultimo livello, quello in stretta relazione fisica con l’ambiente e
con le persone, di qualsiasi tipo di sistema di ubiquitous computing.
I dispositivi sono gli elementi base per ogni applicazione di ubiquitous computing, ogni
dispositivo rappresenta un singolo mattone da utilizzare per costruire un intero sistema di
ubiquitous computing [15]. I dispositivi costituiscono i componenti hardware e possono
essere ad esempio dei sensori, attuatori, unità di calcolo, antenne ecc. I dispositivi usati per
uno specifico sistema di ubiquitous computing definiscono la capacità d’interazione del
sistema con l’ambiente fisico. Un dispositivo avere sia un’identità computazionale di rete che
una capacità computazionale individuale [15].
Al fine di classificare i dispositivi prenderò in considerazione tre caratteristiche: ruolo e
campo d’azione; mobilità; tipo d’interazione tra il dispositivo e le altre entità fisiche.
Per identificare la dimensione del campo d’azione ed il ruolo dei dispositivi, faccio
riferimento ad una prospettiva antropica nella quale l’uomo è posto al centro del mondo e
della computazione [31], come nella visione proposta nell’ubiquitous computing [1, 4]. In
questa ottica possiamo riconoscere due entità: l’utente e l’ambiente; in relazione a ciò
possiamo distinguere i dispositivi in quelli utilizzati dall’uomo come dispositivi personali e
quelli usati nell’ambiente come dispositivi ambientali.
•
Dispositivi personali (Fig. 2.7, 2.8). Sono dei particolari dispositivi che possono
essere utilizzati dall’uomo in qualsiasi posizione lui si trovi, questo tipo di dispositivi
dovrà quindi essere mobile con l’uomo. I dispositivi personali possono essere distinti
in tre classi: amovibili (per esempio i palmari o i PDA); indossabili (ad esempio
dispositivi inseribili nei vestiti, orologi, occhiali e tutti i dispositivi che compongono
un sistema di wearable computing in genere ecc.); trapiantabili (ad esempio
introducibili in protesi o sottocutanei) [15]. Ogni classe identificata farà riferimento
ad una tecnologia adeguata relativa soprattutto alla parte hardware (ad esempio i
materiali utilizzati per dispositivi trapiantabili saranno diversi da quelli utilizzati per
un dispositivo amovibile).
43
•
Dispositivi ambientali (Fig. 2.9, Fig. 2.10, Fig. 2.11, Fig. 2.12). La definizione del
campo d’azione e del ruolo giocato dai dispositivi ambientali è complementare al
campo d’azione e ruolo dei dispositivi personali. Ogni dispositivo che non è
personale è ambientale. I dispositivi ambientali per sistemi di ubiquitous computing
sono sicuramente pervasivi. Per pervasività dei dispositivi si intende che questi
pervadono l’ambiente. Altri requisiti generali non sono specificabili in quanto
fortemente dipendenti dall’applicazione.
Per identificare una dimensione relativa alla mobilità, considererò la capacità dei
dispositivi di muoversi da una rete computazionale ad un’altra. In questa prospettiva
possiamo distinguere i dispositivi in mobili o fissi.
•
Dispositivi mobili (Fig. 2.7, Fig. 2.8, Fig. 2.9, Fig. 2.10). Possono muoversi da
un’area computazionale ad un’altra. La mobilità può essere indotta o spontanea. I
dispositivi mobili generalmente rispondono ai requisiti di nomadicità (riferito alla
mobilità) e sicurezza, vista la mobilità in diverse aree i dispositivi condividono
diverse informazioni che possono essere riservate, per alcune aree e per alcuni utenti
o pubbliche [15].
•
Dispositivi fissi (figure 2.11, 2.12). In modo complementare ai precedenti i
dispositivi fissi non possono muoversi da un’area computazionale ad un’altra. I
dispositivi fissi sono in genere integrati nell’ambiente ed aggiornabili nel tempo.
Al fine di identificare una dimensione per l’interazione, considererò l’interazione che una
macchina generica può avere con il mondo fisico. Una macchina può essere attiva se può
rilevare ed agire nel mondo fisico, altrimenti è passiva [15].
•
Dispositivi attivi (Fig. 2.7, Fig. 2.8, Fig. 2.9, Fig. 2.11). Posseggono sensori, attuatori
o entrambi. Nel caso siano dotati di sensori si definiscono sensitivi, se posseggono
attuatori si definiscono attuativi. I dispositivi attivi in uno scenario di ubiquitous
computing dovranno possedere i seguenti requisiti: intenzionale, pro-attivo, reattivo.
L’intenzionalità implica che i dispositivi ricevano richieste utilizzando nome. La proattività implica che i dispositivi possono agire per il conseguimento di un obiettivo
44
d’alto livello d’astrazione. La reattività implica la possibilità di reagire a degli eventi
[15]. Altri requisiti sono dipendenti dall’applicazione specifica.
•
Dispositivi passivi (Fig. 2.10, Fig. 2.12). Questi dispositivi non posseggono né
attuatori né sensori e possono svolgere dei ruoli computazionali o di supporto alla
comunicazione.
Figura 2.7 Palmare, dispositivo personale mobile, attivo e amovibile
Figura 2.8 Sulla sinistra un computer portatile con monitor e unità di calcolo indossabili. Sulla destra un insieme
di sensori con un’unità di calcolo indossabili. Dispositivi personali, mobili, attivi, indossabili (wearable)
45
Figura 2.9 Robot della RobotCup (manifestazione internazionale per incontri di calcio tra robot). Dispositivo
ambientale, mobile e attivo
Figura 2.10 Punto d’accesso per reti wireless trasportabile. Dispositivo ambientale, mobile e passivo
46
Figura 2.11 Sensori di rilevazione per i serramenti. Dispositivi ambientali, fissi e attivi
Figura 2.12 Centralina antifurto di controllo. Dispositivo ambientale, fisso e passivo
47
2.2 Domotica e ubiquitous computing
Nella seguente sezione seguirà una breve trattazione introduttiva sulla domotica (Sezione
2.2.1) e sugli ambiti applicativi in cui tale disciplina interviene (Sezione 2.2.2). Cercherò di
mostrare successivamente come, secondo me, la domotica può essere vista come una
specializzazione per uso commerciale del concetto ben più ampio e generalizzato di
ubiquitous computing (Sezione 2.2.3). In particolare la domotica è molto vicina al concetto di
smart room espresso nella Sezione 2.1.3.2.
2.2.1 Introduzione alla domotica
Il termine domotica deriva dall’importazione di un neologismo francese domotique, a sua
volta contrazione della parola greca domus e di informatique e rappresenta la disciplina che si
occupa dell’integrazione dei dispositivi elettronici, degli elettrodomestici e dei sistemi di
comunicazione e di controllo che si trovano nelle nostre abitazioni. Le origini risalgono
intorno agli anni ‘70 quando si vennero a sviluppare i primi progetti concreti di automatismi
legati alla gestione di impianti di allarme o altre funzionalità come l’accensione, lo
spegnimento e la temporizzazione delle luci.
La continua evoluzione delle tecnologie e lo studio più approfondito delle esigenze dei
consumatori permettono di concepire la disciplina della domotica lontano dall’idea della
semplice informatica applicata alla casa. Domotica vuol dire interazione fra la casa e l’uomo,
vuol dire ricerca di una migliore accessibilità e fruibilità dell’abitazione, vuol dire anche
creare nuovi mezzi per condividere gli ambienti domestici con gli altri membri della famiglia
[49]. Si sta creando un nuovo modo di vivere la casa è quello di vedere non più ogni
elettrodomestico o ogni servizio dell’abitazione come unico ed isolato dagli altri, bensì
vedere un ambiente integrato dove coesistenza diventa una parola d’ordine. Grazie all’uso di
nuove tecnologie e nuovi standard potranno nascere anche nuove tipologie di servizi avanzati
per gli utenti. L’utente disporrà di tutti i mezzi necessari per tenere sotto controllo il sistema
abitazione, e saranno i singoli dispositivi a gestire tutto il lavoro e a fornire in modo
automatico i servizi, decidendo tra loro priorità, privilegi, modalità di uso ed eventuali
collaborazioni e cooperazioni.
48
2.2.2 Domotica, ambiti applicativi
Gli ambiti applicativi della domotica oggi sono molteplici e riassumibili in quattro grandi
categorie: risparmio energetico, comfort, sicurezza, safety.
•
Risparmio energetico. Nell’ambito del risparmio energetico rientrano tutte le
tecniche e gli impianti in grado di ottimizzare il consumo energetico. In domotica nel
risparmio energetico rientra anche il risparmio monetario sul costo dell’energia. Il
risparmio monetario ha lo scopo di progettare sistemi in grado di approvvigionarsi
dalla fonte energetica più conveniente.
•
Comfort. Nell’ambito del rientrano tutti i sistemi progettati per la semplificazione del
rapporto uomo – casa e per il miglioramento della qualità della vita privata e
lavorativa. La connessione con la rete Internet, impianti audio e video multi room e
gli elettrodomestici in genere sono alcuni esempi delle tecnologie atte al
raggiungimento di un maggior livello di comfort nell’abitazione.
•
Sicurezza. La sicurezza è intesa come controllo degli accessi indesiderati
dall’esterno, accesi sia fisici che telematici. Il controllo degli accessi fisici è gestito da
impianti antifurto e da sistemi per il controllo degli accessi. Gli attacchi telematici
sono quelli provenienti dalla rete esterna (ad esempio Internet) collegata alla rete
domestica. La protezione da questi tipi di attacchi avviene tramite le tecnologie
classiche dell’informatica, come l’installazione di firewall e il controllo degli accessi
con codici d’identificazione.
•
Safety.
La
safety
è
intesa
come
sicurezza
personale
contro
eventuali
malfunzionamenti d’impianti potenzialmente pericolosi o dannosi per le persone e
l’abitazione. Per la gestione della safety si impiegano ad esempio l’impianto
antincendio, antiallagamento, gestori dei carichi di potenza ecc.
2.2.3 Domotica: una specializzazione dell’ubiquitous computing,
caratteristiche e peculiarità
Nonostante la crescita e lo sviluppo della domotica e dell’ubiquitous computing abbiano
seguito per lo più due strade differenti, le applicazioni domotiche partano da concetti teorici
direttamente riconducibili a quelli espressi per l’ubiquitous computing. Che il legame tra
ubiquitous computing e domotica sia molto stretto e parentale lo si evince anche dalla lettura
49
di numerose trattazioni di ubiquitous computing le quali spesso fanno riferimento al rapporto
uomo-casa per esemplificare trattazioni teoriche generiche relative a sistemi di ubiquitous
computing.
In domotica si assiste ad una vera e propria specializzazione dei concetti e dei requisiti
esposti nelle precedenti sezioni relativamente ai sistemi di ubiquitous computing. Il rapporto
uomo-ambiente è uno degli aspetti centrali nella ricerca in ubiquitous computing, in
domotica tale rapporto si trasforma o meglio si specializza e si restringe al rapporto uomoambiente domestico, dove l’abitazione è quindi un ambiente specializzato a compiti di
dimora. Tutti i requisiti attesi per i sistemi di ubiquitous computing sono auspicabili anche
per i sistemi domotici riferendoli però al rapporto uomo-casa e non più a quello uomoambiente. Tra i requisiti soddisfatti da molti dei sistemi domotici oggi esistenti troviamo:
•
adattabilità, intesa come flessibilità del sistema domotico ai cambiamenti delle
condizioni operative, i cambiamenti operativi in una casa si riferiscono per lo più
all’aggancio e sgancio a caldo di dispositivi ed elettrodomestici;
•
nomadicità, intesa come la capacità di poter gestire e controllare la mobilità dei
dispositivi su una o più reti domotiche;
•
reattività, intesa come reazione del sistema agli eventi fisici percepibili dall’uomo;
•
scalabilità, intesa come la possibilità di accrescere la rete domotica e il numero di
dispositivi che popolano la casa senza compromettere le funzionalità del sistema
domotico;
•
tempo reale, è riferito per lo più all’interazione del sistema con l’uomo che deve
essere la più rapida possibile, l’uomo infatti è abituato ad interagire con gli oggetti e
le funzioni della propria abitazione in tempo reale;
•
trasparenza, la domotica non persegue pienamente tale requisito ma si limita a
realizzare sistemi non troppo intrusivi.
Tutti gli altri requisiti non funzionali (eternità, integrazione totale e intenzionalità)
rimangono, per la maggior parte dei sistemi domotici reali, solo sperati.
50
2.3 Standard e tecnologie ad impatto sull’automazione domestica esistenti
sul mercato
I progettisti e gli sviluppatori di sistemi domotici, per la scelta della tecnologia da
utilizzare, fanno riferimento di norma ad interi “pacchetti” omogenei di sviluppo. Le aziende
produttrici, operanti sul mercato della domotica, infatti, propongono delle specifiche, riunite
in un unico pacchetto standardizzato, che regolamentano quasi tutti i livelli dell’architettura
tecnologica che propongono. Le specifiche riguardano i dispositivi, i linguaggi di
programmazione, i supporti da utilizzare per la comunicazione, i protocolli di
comunicazione, la codifica dei messaggi ecc. Per questo motivo ho scelto di trattare, non solo
le tecnologie trasmissive esistenti per la sola interconnessione tra dispositivi, adeguate a
sistemi domotici (Sezione 2.3.1), ma anche i protocolli e le standardizzazioni di intere
architetture per sistemi domotici consolidate sul mercato (Sezione 2.3.2).
Vista la presenza di numerosi standard differenti e non compatibili tra di loro, nella Sezione
2.3.3 mi occuperò di descrivere brevemente come, tramite l’uso di gateway, OSGI (Open
Services Gateway Iniziative) e l’HES (Home Electronic System) si stia cercando di ovviare ai
problemi d’interoperabilità. Inoltre descriverò quali sono le soluzioni attualmente adottate
per implementare sistemi domotici multipiattaforma.
2.3.1 Standard e tecnologie d’interconnessione
Visto lo stretto legame tra la domotica e l’ubiquitous computing molte delle tecnologie che
verranno citate in questa sezione sono già presenti nella trattazione del livello comunicativo
delle architetture per l’ubiquitous computing.
Sviluppare sistemi che riescono a sfruttare infrastrutture già presenti in una abitazione è
sicuramente uno degli obiettivi prefissati dai produttori di tecnologia per la domotica. Infatti
nella gran parte dei casi l’abitazione è preesistente ad un eventuale sistema domotico. La casa
è dotata di diversi mezzi sui quali possono essere trasmesse informazioni codificate in
segnali elettrici, in particolare ogni casa moderna possiede già una linea telefonica, una linea
di potenza e il cavo per l’antenna tv.
Le linee telefoniche odierne sono state costruite essenzialmente per il segnale vocale e
ottimizzate per tale scopo, per cui non sono adatte per la trasmissione di segnale digitali,
comunque la HOMEPNA (Home Phoneline Networking Alliance) utilizzando una tecnologia
proprietaria di modulazione di impulsi è in grado di ottenere una velocità di trasferimento
dati che arriva fino a 10 Mbit/s.
51
Le linee elettriche sono oramai presenti in ogni abitazione e per questo da diversi anni sono
stati profusi grandi sforzi per far comunicare diverse aree della casa tramite onde
convogliate. Vedremo in seguito come questo sistema sia stato adottato dallo standard X-10 e
CEBUS, largamente diffusi negli Stati Uniti e dallo standard EHS diffuso sul mercato
europeo.
Altre compagnie riunitesi in un'unica organizzazione, HOMEPLUG POWERLINE ALLIANCE,
mediante una tecnologia sviluppata da INTELLION e l’installazione di componenti in ogni
personal computer o dispositivo che si intende interconnettere, permette di condividere
informazioni tra questi su rete elettrica.
Il mercato della domotica non sta investendo invece sulle comuni reti telematiche cablate
per elaboratori, si immagini ad esempio lo sforzo che si dovrebbe compiere per cablare via
ETHERNET un centinaio di dispositivi in un’abitazione non predisposta per tale rete.
La trasmissione wireless è la tecnologia attualmente in fase di maggior sviluppo. La
radiofrequenza risulta sempre più spesso una soluzione conveniente ed economica nella
costruzione di una rete domestica o per reti aziendali o parti di esse.
Fra le tecnologie per implementare il “senza cavi” troviamo l’infrarosso che non riveste
però particolare interesse in domotica. Tale tecnologia, infatti, non permette la
comunicazione se fra i due dispositivi comunicanti viene frapposto un ostacolo fisico non
trasparente, condizione questa molto frequente in un ambiente domestico. Molta attenzione è
posta invece su sistemi che si basano sulla radiofrequenza. La comunicazione con
radiofrequenza è disturbata dalla presenza di ostacoli fisici fra i dispositivi che intendono
comunicare, ma il degrado della comunicazione è spesso trascurabile all’interno di ambienti
relativamente ristretti, come quelli domestici.
Gli standard più importanti presenti oggi sul mercato, con impatto sull’automazione
domestica, per la trasmissione in radiofrequenza sono:
• HOMERF (sostenuto da IBM e MOTOROLA) che permette una banda di trasmissione di
2 Mbit/s;
• WI-FI (Wireless Fidelity), sostenuto da 3COM e CISCO SYSTEM, con una banda di
12Mbit/s (con la prima specifica IEEE802e su 2,4Ghz) e 54Mbit/s (con la specifica
IEEE802a su banda che necessita di licenza statale)
• BLUETOOTH, sostenuto da INTEL, ERICSSON e NOKIA, ha una banda effettiva di circa
1Mbit/s. BLUETOOTH, come si vedrà meglio in seguito, non si limita a dare le
52
specifiche per la sola interconnessione ma stabilisce altre regole d’interoperabilità
che permettono di soddisfare altri requisiti specifici.
2.3.2 Protocolli, standard, bus di campo e architetture consolidate sul
mercato della domotica
La panoramica sulle tecnologie esistenti per la comunicazione tra dispositivi non si deve
limitare ad una elencazione di standard di sola interconnessione, ma particolare attenzione va
data a standardizzazioni che si occupano di fissare le specifiche di quasi tutti livelli di
un’architettura complessiva per un sistema di automazione domestica. Gli standard che
prenderò in considerazione in questa sezione non si limitano a definire solo specifiche per
l’interconnessione, come quelli citati nella sezione precedente, ma si occupano di fissare
regole e specifiche implementative per i dispositivi, i mezzi di comunicazione, il protocollo
di comunicazione, la codifica dei messaggi scambiati e il linguaggio di programmazione per
lo sviluppo delle applicazioni. La standardizzazione di quasi tutti i livelli di un’architettura in
un unico standard (dall’hardware al software) permette di creare degli ambienti di sviluppo
che forniscono built in (già costruiti, pronti all’uso) funzioni e servizi di notevole importanza
in automazione domestica. Tra questi, troviamo ad esempio l’autoconfigurazione della rete,
che permette lo sgancio e l’aggancio a caldo dei dispositivi senza compromettere il
funzionamento globale del sistema; il discovery automatico dei dispositivi agganciati, che
permette, ad esempio, di rendere fin da subito disponibile un nuovo dispositivo agganciato
ecc. Poter disporre di una serie di servizi pronti all’uso facilita il compito del progettista di
sistemi di automazione domestica che viene messo in condizione di poter rispettare la
maggior parte dei requisiti teorici attesi per un sistema domotico descritti in precedenza
(Sezione 2.2.3).
I principali standard da me identificati che si occupano di fornire notevoli servizi e funzioni
pronti all’uso per il progettista sono: EHS, BATIBUS, EIB, KNX (per il mercato Europeo),
LONTALK, HAVI, CEBUS, X-10 (per il mercato Americano), HBS (per il mercato
Giapponese) e BLUETOOTH (per il mercato internazionale. Inoltre nel mercato internazionale
sono presenti altre due standardizzazioni, l’HES e l’OSGI vedi Fig. 2.13. Queste due ultime
non dettano delle specifiche per un sistema tecnologico specifico, ma stabiliscono linee guida
formali per l’interoperabilità tra tecnologie esistenti in domotica. OSGI e HES propongono
una strada per far coesistere diversi standard tecnologici in un unico standard.
53
Figura 2.13 Schematizzazione del mercato degli standard mondiali per la domotica
Una trattazione specifica per ogni standard si trova nell’Appendice A. Tutte le informazioni
di maggior interesse, per gli scopi di questa tesi, saranno riassunte in una tabella comparativa
(Tab. 2.2).
Messaging
Discovery
(plug &
play)
Lookup
service
Gestione
degli
eventi
Configurazione
automatica
della rete
(plug & play)
Multicanalità
digitale
/analogico
Velocità di
trasmissione
X
8 Kbit/s
X
4-1250 Kbit/s
X-10
X
CEBUS
X
X
LONTALK
X
X
X
X
X
HAVI
X
X
X
X
X
EIB
X
BATIBUS
X
EHS
X
X
X
X
X
KNX
X
X
X
X
X
BLUETOOTH
X
X
1000-10000
Kbit/s
9 Kbit/s
X
X
X
4,8 Kbit/s
X
1,2 – 64
Kbit/s *
1,2-64 Kbit/s
*
1000 Kbit/s
* 9,6 Kbit/s se in utilizzata con la configurazione che permette anche la trasmissione del segnale analogico
Tabella 2.2 Riassunto dei servizi, funzioni e caratteristiche tecniche dei principali standard diffusi nei diversi
mercati internazionali per l’automazione domestica
54
Per chiarezza e completezza di seguito riassumo e specifico cosa intendo con i termini
utilizzati nelle colonne della tabella comparativa (Tab. 2.2).
•
Messaging: stabilisce uno schema di indirizzi e il trasferimento di messaggi (senza
perdita d’informazione), garantisce la comunicazione.
•
Discovery: è un meccanismo in grado di individuare quando i dispositivi sono
aggiunti o rimossi dalla rete.
•
Lookup Service: è una particolare scelta progettuale basata su una tabella dei servizi
(lookup table) nella quale ogni dispositivo, nel momento in cui si connetterà alla rete,
dovrà registrarsi inserendo nella tabella tutti i servizi che è in grado di fornire.
Cosicché tutti gli altri dispositivi saranno in grado di vedere quali sono i servizi messi
a disposizione sull’intera rete.
•
Gestione degli eventi: permette la comunicazione ad eventi consentendo il
paradigma di comunicazione di tipo publish-subscribe.
•
Configurazione automatica della rete: la configurazione dei router switcher ed Hub
e degli altri gestori della rete è totalmente automatica e non necessità di lavoro
manuale esplicito ad ogni modifica della topologia. Permette ad esempio l’aggancio e
lo sgancio di un dispositivo senza compromettere il funzionamento dell’intera rete.
•
Multicanalità digitale/analogico: ci dice se lo standard in considerazione è in grado
di trasportare o controllare contemporaneamente sia segnali analogici che digitali.
•
Velocità di trasmissione: indica la velocità di scambio dati, il bit rate della rete
considerata.
•
Plug and play: tale caratteristica è resa possibile dall’azione combinata dei servizi di
discovery e di configurazione automatica della rete e permette l’aggancio di un nuovo
dispositivo senza compromettere il funzionamento del sistema consentendone
l’utilizzo immediato.
Nel corso dell’esposizione del progetto di tesi spiegherò perché ho scelto la tecnologia
LONTALK per realizzare la mia applicazione domotica.
55
2.3.3 I gateway: una soluzione per un unico standard con molti standard
Esistono attualmente numerosi standard legati all’automazione e alla comunicazione
domestica. Purtroppo questo è stato uno dei principali fattori di rallentamento per la crescita
e per lo sviluppo del settore della domotica [60].
Nell’ambiente domestico oggi sono presenti numerosi dispositivi, ognuno dei quali
possiede protocolli di comunicazioni, portanti trasmissive, bit rate che lo rendono molto
spesso non compatibile nè con altre componenti della rete domestica nè con la rete esterna.
Su vari fronti si sta cercando di operare per eliminare questo problema, due esempi di
maggior peso nel settore della ricerca in questo senso sono l’OSGI e l’HES che si occupano,
oltre che dell’interoperabilità interna all’abitazione tra standard differenti, anche
dell’interoperabilità delle reti domestiche con quelle esterne pubbliche (rete elettrica, rete
telefonica ecc.). Entrambi si basano sulla standardizzazione del livello gateway e sulla
formalizzazione delle interfacce di comunicazione tra piattaforme differenti [60].
OSGi [49]
La Open Services Gateway Iniziative nacque nel marzo del 1999 a opera di un gruppo di
oltre sessanta compagnie tra le quali giganti nel settore della comunicazione come SUN
MICROSYSTEMS, ERICSSON, CISCO, NOKIA, SIEMENS, IBM, MOTOROLA, NORTEL, PHILIPS,
ORACLE, ALCATEL, LUCENT, TOSHIBA, TEXAS INSTRUMENTS e altri.
L’idea di base che accompagnò fin dall’inizio il progetto fu quella di standardizzare un
residential gateway capace di connettersi con un vasto spettro di applicazioni per lo scambio
di informazioni, in modo da fornire un’interfaccia sia tra gli apparati domestici che tra questi
e le reti pubbliche. La distribuzione delle specifiche fornite da questo gruppo avviene in
modo libero ed indipendente. L’OSGI cerca di coinvolgere non solo le case produttrici, ma
anche l’utenza finale mediante la pubblicazione di articoli informativi e testi di riferimento o
con attività educative. La ricerca si è concentrata fin da subito su una soluzione end-to-end
fra i dispositivi della rete domestica ed i provider dei servizi. Per i dettagli sullo standard
OSGi si faccia riferimento all’Appendice A.
HES [48]
La Home Electronic System è uno standard che sta per essere sviluppato da un gruppo di
lavoro costituito dall’ISO (Organizzazione Internazionale per la Standardizzazione) e dalla
IEC (Commissione Elettrotecnica Internazionale) di Ginevra, Svizzera.
56
La scrittura dello standard è eseguita da esperti dei paesi membri.
La HES fa parte di una commissione denominata Interconnection of Information Tecnology
Equipment la quale è costituita da venti paesi membri principali e da tredici paesi osservatori.
Sebbene gli standard di ISO e IEC siano volontari, alcuni paesi possono richiedere che i
prodotti commercializzati siano conformi con tali standard; l’Unione Europea ne sta
valutando la possibilità. Quindi affinché uno standard possa diffondersi è necessario che i
costruttori prendano nota delle conformità dettate da queste sorta di standard “d’alto livello”
(o meglio direttive) internazionali.
Esperti tecnici dei seguenti paesi si incontrano due volte l’anno per formulare lo standard
HES: Canada, Francia, Italia, Giappone, Olanda, Norvegia, Svezia, Regno Unito e Stati Uniti.
L’HES non si prefigge lo scopo di essere l’unico standard esistente per la Home
automation, ma, anzi, detta le regole e le specifiche che potranno portare ad una
interoperabilità tra standard differenti. Non si limita però a definire solo delle regole
d’inteoperabilità ma propone anche delle nuove scelte progettuali per i futuri dispositivi per
la home automation. Il fine primo dello standard internazionale HES è quindi di permettere ad
un apparecchio di comunicare su qualunque rete della home automation. Per i dettagli sullo
standard HES si faccia riferimento all’Appendice A. Tutti i tentativi di standardizzazione fatti
fino a oggi per garantire l’interoperabilità non hanno ancora sortito gli effetti voluti sul
mercato.
Tecnologia IP
gateway
gateway
Traduttore dei
messaggi
Traduttore dei
messaggi
Tecnologia 1
Dispositivi
Tecnologia 2
Dispositivi
Figura 2.14 Descrizione schematica di una possibile soluzione, per l’interoperabilità tra tecnologie
diverse, che sfrutta la tecnologia IP
57
Vista la consolidata tecnologia IP e la stabile standardizzazione di questo protocollo, oggi
tutte le case produttrici di tecnologie per la domotica propongono gateway IP per permettere
l’interazione con i personal computer o i web server. La comunicazione avviene codificando
i messaggi in stringhe da trasmettere su rete IP. Oggi è quindi già possibile far coesistere
diverse tecnologie in un unico sistema passando tutta l’informazione d’interscambio
multipiattaforma su rete IP. Questo metodo sicuramente crea gravi problemi di efficienza
visti gli over head e gli sforzi computazionali di traduzione dei messaggi vedi Fig. 2.14. Per
applicazioni non critiche questo sistema viene spesso utilizzato [62]. I gateway IP sono
quindi oggi una soluzione per un unico standard con molti standard.
2.3.4 Un’altra tecnologia ad impatto sulla domotica: JINI
JINI [58] è una tecnologia di rete, sviluppata da SUN e annunciata al pubblico nel gennaio
1999. Si basa su JAVA e su TCP-IP e mediante protocolli di rete rende possibile la
comunicazione di oggetti differenti in unico network, in cui ogni elemento non necessita di
essere installato in un sistema centrale, ma dove ogni dispositivo pubblica dei servizi che
rende disponibili. Tutte le volte che un nuovo dispositivo viene connesso alla rete JINI prima
annuncia il suo arrivo, poi quali sono le sue capacità ed infine come queste possono essere
utilizzate tramite la sua interfaccia.
L’architettura di JINI utilizza cinque concetti di base: lookup service, discovery, leasing,
eventi remoti, e transazioni. Questi concetti sono implementati come un insieme di librerie
JAVA, rese disponibili dalla SUN.
•
Lookup service: viene utilizzato da una persona o un programma per utilizzare un
servizio. Il servizio di lookup agisce come intermediario tra un client richiedente un
servizio e questo servizio. Una volta che è stata eseguita la connessione, il servizio di
lookup non viene più coinvolto, e i dispositivi comunicano direttamente attraverso
JAVA RMI. Il lookup service non è altro che una tabella contenente le interfacce che
descrivono le funzionalità dei servizi presenti nella comunità JINI. Un servizio viene
aggiunto al lookup service attraverso due protocolli: discovery e join. Prima il
servizio individua il lookup service tramite il protocollo di discovery, poi con l’uso di
join si unisce ad esso.
•
Discovery: la comunicazione fra servizi avviene tramite JAVA RMI (Remote Method
Invocation) che permette il trasferimento di dati e oggetti tra un oggetto e l’altro
58
attraverso la rete.
•
Leasing: questo servizio si occupa di assegnare le licenze per l’utilizzo di una risorsa.
I leasing vengono negoziati fra il richiedente e il fornitore del servizio.
•
Eventi remoti: un oggetto può permettere che altri oggetti si registrino a suoi eventi.
Il servizio che gestisce gl eventi remoti manda una notifica a questi oggetti quando
tali eventi si verificano.
•
Transazioni, questo servizio permette ad una rete JINI di rimanere consistente anche
nel caso di impreviste interruzioni di servizi da parti di dispositivi non funzionanti.
JINI può essere vista come una rete plug & play (hot) distribuita per dispositivi e servizi.
JINI è uno standard aperto: per ogni dispositivo non esistono API standard e per il suo utilizzo
in una architettura usata da più produttori è necessario un forte lavoro di standardizzazione.
59
3
IMPOSTAZIONE DEL
PROBLEMA DI RICERCA:
DALLA SIMULAZIONE ALLA
PRATICA IN AMBITO
DOMOTICO
L’obiettivo della tesi è la realizzazione di un’applicazione pratica che utilizzi
un’architettura multiagente con la capacità di effettuare pianificazione distribuita sviluppata
in precedenti progetti di ricerca e denominata AGENZIA AMBIENTALE [3].
Lo scopo della mia ricerca e del mio progetto è quindi anche quello di mettere in luce e
validare le caratteristiche e le funzionalità offerte dall’AGENZIA AMBIENTALE, come la
dinamicità, l’adattamento al conteso e la pianificazione distribuita orientata ai goal,
realizzando un applicazione reale e non solo simulata.
Per provare e verificare, in ambiente non simulato, la forte dinamicità e reattività
dell’AGENZIA AMBIENTALE si è scelto di realizzare un’applicazione concreta in ambiente
domestico con tecnologie opportune e già presenti sul mercato. L’ambiente domestico infatti
si presta bene a essere un ambiente molto dinamico, variabile, non totalmente strutturabile e
quindi non programmabile. In una abitazione l’uomo si trova spesso a dover raggiungere
obiettivi complessi il cui raggiungimento necessita di una pianificazione complessa e
dinamica che richiede l’interazione di più attori. Inoltre è stata scelta l’abitazione come
ambito in cui realizzare un’applicazione reale pratica anche perché il mercato della domotica
offre oggi numerose tecnologie per operare in ambiente domestico facilmente interfacciabili
con altre tecnologie, come introdotto nello stato dell’arte.
L’AGENZIA AMBIENTALE non è stata concepita con scopi specifici per la domotica ma è stata
progettata per applicazioni generiche di ubiquitous computing. Nel corso della trattazione
relativa all’impostazione del problema di ricerca si evidenzieranno le caratteristiche che
rendevano non del tutto adeguata l’AGENZIA AMBIENTALE per la realizzazione pratica di
un’applicazione domotica.
Verrà presentata inizialmente l’intera AGENZIA AMBIENTALE così come era stata progettata
e realizzata (Sezione 3.1) e in un secondo momento verranno evidenziate le problematiche
specifiche riscontrate dall’utilizzo dell’AGENZIA AMBIENTALE per la realizzazione pratica in
ambito domestico (Sezione 3.2). Un inquadramento generale sull’intera AGENZIA
AMBIENTALE preesistente mi permetterà di fissare e definire termini e concetti che verranno
ripresi in tutto il testo della tesi.
L’AGENZIA AMBIENTALE aveva toccato solo dal punto di vista teorico gli aspetti legati
all’interoperabilità tra la agenzia ed eventuali altre tecnologie, prevedendo l’uso di un proxy.
Nella Sezione 3.3 verranno analizzate le problematiche legate alla progettazione e
realizzazione pratica di un’interfaccia per la comunicazione tra il proxy e altre tecnologie.
Molti problemi riscontrati nell’architettura e nei principi di funzionamento dell’AGENZIA
AMBIENTALE sono anche di carattere generale e non specifici per la domotica. L’AGENZIA
AMBIENTALE, infatti, fino al presente progetto non era mai stata testata in nessun ambiente
reale e con tecnologie concrete. La fase dei test simulati non aveva quindi evidenziato alcuni
aspetti importanti che verranno descritti in questo capitolo.
3.1 Inquadramento e introduzione all’architettura preesistente
L’AGENZIA AMBIENTALE è stata ideata con lo scopo di fornire una architettura per la
progettazione di sistemi multiagente adeguata per ambiti non completamente strutturabili e
programmabili, in grado di far fronte ad esigenze la cui soddisfazione è fortemente
dipendente dal contesto, sfruttando una pianificazione e una conoscenza distribuita e
dinamica.
Nelle sezioni che seguono si darà una panoramica concettuale e funzionale precisa
dell’intera AGENZIA AMBIENTALE preesistente. In particolare nella Sezione 3.1.1 si presenta
la struttura generale, le funzioni e i servizi messi a disposizione dall’AGENZIA AMBIENTALE.
Nelle restanti sezioni viene fornita una schematizzazione logica più precisa di ogni singolo
61
componente e modulo ponendo l’attenzione sul meccanismo di cooperazione tra agenti e di
comunicazione dell’agente con le proprie componenti operanti nell’ambiente.
3.1.1 Architettura generale della AGENZIA AMBIENTALE
Il progetto dell’AGENZIA AMBIENTALE si colloca nella categoria delle applicazioni di
intelligenza artificiale distribuita e ubiquitous computing. Mi limiterò a descrivere i criteri
generali di progettazione e le caratteristiche di base di tale agenzia.
Bisogna innanzitutto chiarire che con il termine “ambiente” (termine da cui prende il nome
l’AGENZIA AMBIENTALE) s’intende un qualsiasi luogo delimitato, sia al chiuso come può
essere una stanza, un ufficio, l’interno di un’automobile, il vagone di un treno, la cabina di
pilotaggio di un aereo, sia all’aperto, ad esempio, una piazza od un parco.
Il ruolo dell’ambiente è quello di fornire lo spazio dentro il quale è possibile introdurre una
moltitudine di agenti in grado di cooperare. Come è facile intuire, il primo problema che era
stato affrontato nella realizzazione dell’AGENZIA AMBIENTALE era quello dell’eterogeneità
degli agenti coinvolti; un agente, infatti, può essere un’entità hardware o software e può
essere sviluppata utilizzando diversi linguaggi di programmazione e tecnologie. Tale
eterogeneità è stata gestita suddividendo un agente in due semiagenti, un primo semiagente
esclusivamente di tipo software detto cooperativo (CO), comune a tutti gli agenti e quindi
sviluppato con lo stesso linguaggio di programmazione, e un secondo semiagente di qualsiasi
natura detto operativo (OP) che permette di realizzare tutte le funzioni specifiche operative
dell’agente (cioè tutte le funzioni escluse quelle utili alla cooperazione).
Nel caso i due semiagenti non siano compatibili tra di loro è stato introdotto, solo dal punto
d vista teorico, un terzo componente, chiamato proxy, il cui ruolo è di permettere alla parte
cooperativa di utilizzare la parte operativa e viceversa (Fig. 3.1).
Sfruttando la scomposizione in CO e OP l’AGENZIA AMBIENTALE è in grado, tramite l’uso
di un agente supervisore, denominato maggiordomo, di gestire la pianificazione e la
cooperazione tra agenti per perseguire obiettivi d’alto livello chiamati goal.
Prima di procedere nella descrizione dettagliata dei semiagenti appena esposti è necessario
soffermarsi sul linguaggio di programmazione che è stato scelto per realizzare la parte
cooperativa degli agenti. La scelta era caduta su JAVA, essendo un linguaggio orientato alle
applicazioni distribuite in grado di realizzare programmi portabili, cioè in grado di
funzionare su diverse piattaforme operative: WINDOWS, LINUX, MACOS e altri, e con un
notevole grado di sicurezza, rendendo difficoltoso l’accesso a parti di codice non autorizzate.
62
Tutto ciò permetterebbe di avere diversi dispositivi di differente natura interagenti fra loro.
Agente
Agente
Java
Java
CO
CO
OP
proxy
OP
Altra tecnologia
Hw, Sw
Figura 3.1 Due possibili strutture di un agente
Il vincolo più oneroso introdotto da JAVA è la necessità di installare una JAVA Virtual
Machine (JVM) su ogni dispositivo che si vuole utilizzare come agente. La JVM è
semplicemente un interprete del linguaggio bytecode (prodotto dalla compilazione dei
sorgenti JAVA), ma spesso richiede un’occupazione di memoria non indifferente per piccoli
dispositivi, rimanendo comunque nell’ordine dei MegaByte.
3.1.2 Semiagente cooperativo
Come detto in precedenza, ogni agente è composto da un semiagente chiamato cooperativo
comune a tutti gli agenti del sistema. E’ sviluppato in JAVA e mette a disposizione le
funzionalità basilari per appartenere all’AGENZIA AMBIENTALE.
Per fare in modo che gli agenti possano cooperare fra di loro in modo omogeneo, tutti
dovranno estendere la classe che contiene i metodi necessari per la cooperazione, la
connessione e la gestione degli eventi e dei goal. Tale classe è stata chiamata Cooperative.
63
Vediamo in dettaglio le funzioni e servizi messi a disposizione dalla classe Cooperative.
Connessione: permette all’agente di entrare a far parte dell’agenzia. È la prima
operazione che un agente deve fare quando entra in un ambiente in cui è presente un’agenzia.
Connettendosi può sfruttare le funzionalità dell’agenzia, generare goal, ricevere notifiche di
eventi, inoltre può mettere a disposizione degli altri agenti le proprie funzionalità. Al
momento della connessione è possibile fornire all’agenzia un certo numero di parametri che
permetteranno una sua migliore identificazione. In particolare è possibile fornire un nome
con il quale registrarsi, una breve descrizione che ne riassuma le proprietà, un’immagine che
lo schematizzi, e un insieme di caratteristiche, dette Entry, che permettono di modellare più
dettagliatamente un agente. Il meccanismo con il quale un agente si connette è fondato sulla
tecnologia messa a disposizione da JINI, in particolare sul lookup service di JINI.
Il metodo della classe Cooperative che implementa questo comportamento è il seguente:
•
void connect (String name, Entry[] entry, String host, int port, String image, String
descr).
Sconnessione: è l’operazione duale rispetto alla connessione, l’agente con questa
operazione comunica all’agenzia che ci si vuole sconnettere. Dopo una sconnessione, pur
trovandosi all’interno di un ambiente, non si potrà interagire direttamente con esso. A
proposito della sconnessione, è importante distinguerne i due tipi possibili: sconnessione soft,
quella appena descritta, che non presenta particolari problemi, e la sconnessione hard, che
avviene in caso di brusca interruzione del collegamento, dovuto ad un guasto hardware o ad
un malfunzionamento della rete di collegamento, che introduce alcuni problemi. In
particolare, l’agenzia continuerà a credere che l’agente in questione sia appartenente al
sistema, e quindi potrebbe tentare di utilizzarlo, a quel punto se l’agente non risponde parte
un timeout. Il metodo della classe Cooperative che implementa la sconnessione volontaria è
il seguente:
•
void disconnect().
Gestione eventi: permette all’agente di compiere tre operazioni: generare un evento,
registrarsi ad un evento e ricevere la notifica di un evento. In altre parole, si fornisce
64
all’agente la possibilità di inviare la notifica di un determinato evento a tutti gli agenti che ne
hanno dichiarato l’interesse, inoltre si riceve una comunicazione ogni qualvolta un evento a
cui si è dichiarato l’interesse è generato da un agente dell’agenzia. Non riporterò di seguito i
metodi che implementano questo comportamento in quanto non verranno utilizzati nella mia
tesi.
Generazione goal: fornisce all’agente la possibilità di dichiarare una propria esigenza sotto
forma di goal. Esistono due modi con i quali un agente può chiedere all’agenzia di risolvere
un’esigenza. Il primo lascia la completa libertà nella pianificazione (insieme di operazioni
necessarie alla risoluzione di un goal) all’agenzia, senza che l’agente possa intervenire. Il
secondo prevede un’interazione fra agente e agenzia ogni volta che c’è la necessità di
scegliere fra due possibilità durante la pianificazione. Di fondamentale importanza è
dichiarare ciò che si è in grado di fare (i goal che si è in grado di risolvere autonomamente)
per permettere al pianificatore, come vedremo più avanti, di definire l’esatta strategia di
risoluzione del goal. I metodi della classe
Cooperative che implementano questo
comportamento sono i seguenti:
•
void generaGoal (PoliticaOrdinamento pol, DescrizioneGoal dg, int priorita);
•
void generaGoal (PoliticaOrdinamento poi, DescrizioneGoal dg, int priorita, int
maxEsp, int maxL);
•
boolean addEspansioneFinale (DescrizioneGoal dg, String metodo, Mappa
mappaIn, Mappa mappaOut, float cos, float per, float prob);
•
boolean addEspansioneintermedia (EspansioneIntermedia ei);
•
void eseguiEspansioneFinale (Integer iDPiano, Integer iDEspansioneFinale,
Integer priorita).
Comunicazione fra agenti: sono un insieme di funzionalità che permettono ad un agente
di comunicare con un altro agente e di conoscerne le abilità. Tali funzionalità consistono
nelle capacità di inviare messaggi di tipo testuale, di ricevere tali messaggi, di ottenere una
65
lista di tutti gli agenti attualmente connessi, e nella possibilità di richiamare un metodo di un
altro agente. Tutte queste operazioni, pur essendo interessanti dal punto di vista teorico
poiché aggiungono importanti capacità di comunicazione e di interoperabilità all’agenzia,
sono nella pratica scarsamente utilizzabili poiché partono dal presupposto che un agente
conosca la struttura dell’agente che vuole “utilizzare”. Per questo motivo tali operazioni non
verranno da me utilizzate e dunque non mi addentro nella loro trattazione specifica.
Ogni agente che voglia mettere a disposizione dell’agenzia le proprie funzionalità deve
implementare un’interfaccia remota (Remote). Questa interfaccia deve contenere tutti i
metodi che si vuole rendere disponibili pubblicamente. Oltre a questo è necessario dichiarare
i goal che si è in grado di risolvere. Questa operazione consiste nell’associare ad un goal un
particolare metodo e può essere fatta utilizzando un oggetto chiamato EspansioneFinale,
come sarà descritto più avanti in questa sezione.
3.1.3 Semiagente operativo
Se finora si è parlato delle funzionalità comuni a tutti gli agenti, ora descriverò le
caratteristiche specifiche degli agenti. La parte operativa di un agente può essere realizzata
nei più svariati modi a seconda dei compiti specifici che si vogliono portare a termine con un
agente.
In linea di principio, dovrebbe essere un’entità software che eventualmente s’interfaccia
con un componente hardware e che mette a disposizione alcune procedure e funzioni.
Nella tesi che esponeva l’AGENZIA AMBIENTALE [3] è stato considerato che il caso più
semplice d’implementazione del semiagente operativo si verifica quando anche la parte
operativa è realizzata utilizzando JAVA. In questo modo è possibile interconnettere le due
parti CO e OP, sfruttando la caratteristica dell’ereditarietà del linguaggio, implementando la
parte operativa come una estensione del semiagente CO, tale estensione provvederà ad
aggiungere i metodi necessari per espletare le funzioni operative.
Era stata posta l’attenzione al caso diverso in cui si utilizzi un altro linguaggio o
addirittura altre piattaforme e sistemi operativi, come sarà nel caso della mia tesi, in cui è
stato evidenziato la necessità d’introdurre un nuovo componente, chiamato proxy, il cui
compito è di gestire la comunicazione tra il semiagente CO e quello OP.
66
3.1.4 Linee guida per la progettazione di un proxy
Nella progettazione dell’AGENZIA AMBIENTALE è stata evidenziata la necessità quindi
dell’utilizzo di un proxy se si utilizzano tecnologie differenti per il CO e l’OP e sono state
tracciate delle linee guida per la sua implementazione. Riporto di seguito le considerazioni
che erano state fatte nel precedente progetto di tesi in merito al proxy [3].
Relativamente al proxy si sosteneva che esso dovrà sostituirsi all’OP al fine di rendere
trasparente all’agente la tecnologia utilizzata per l’implementazione del semiagente
operativo. Il proxy sarà quindi l’oggetto che estenderà il semiagente CO. Per fare ciò il
proxy, che è visto dall’agente dunque come se fosse l’OP, dovrà funzionare effettuando un
mapping tra tutte le funzionalità pubbliche messe a disposizione dalla parte operativa e i
metodi JAVA implementati per offrire all’agente i servizi operativi (vedi Fig. 3.2).
L’utilità teorica del proxy è evidente quando si vuole adattare un agente preesistente per il
funzionamento con l’AGENZIA
AMBIENTALE:
è sufficiente crearsi un proxy che lo interfacci
con la parte cooperativa, o quando in un agente si vogliono utilizzare degli OP da sviluppare
con altre tecnologie.
In un ambito di UC, caratterizzato da una elevata eterogeneità, sicuramente il proxy avrà un
ruolo determinante per l’utilizzo dell’AGENZIA AMBIENTALE in ambiente non simulato così
come vedremo nel proseguio della trattazione della tesi (vedi Sezione 3.4). Nel precedente
progetto di tesi [3] nulla si era però detto in merito alla logica di comunicazione tra il proxy
(oggetto JAVA) e l’OP (implementabile su qualsiasi tecnologia).
CO
P
R
O
X
Y
Metodo 1
Procedura
Metodo 2
Funzione
Metodo 3
Routine
Metodo 4
Valore Variabile
OP
Figura 3.2 Funzionamento del proxy
3.1.5 Maggiordomo dell’AGENZIA AMBIENTALE
Il progetto dell’AGENZIA AMBIENTALE prevede un agente, il maggiordomo, il cui compito
è di gestire l’agenzia. Sarà ad esso, ad esempio, che arriveranno tutte le richieste di
67
connessione. L’importanza del maggiordomo diventerà evidente quando si parlerà della
pianificazione per il raggiungimento di un goal. E’ infatti compito del maggiordomo
raccogliere tutte le esigenze provenienti dagli agenti e cercare di soddisfarle (Fig. 3.3).
Genera Goal
Maggiordomo
Solleva evento
Disconnetti
Lookup Service
Connetti
Jini
Figura 3.3 Il maggiordomo raccoglie tutte le esigenze degli agenti e usa il lookup service per gestirle
Il maggiordomo non è altro che un agente come tutti gli altri, quindi composto dalla parte
operativa (Fig. 3.4) e dalla parte cooperativa (comune a tutti gli agenti).
OP Maggiordomo
Interfaccia utente
Gestore eventi
Pianificatore
Esecutore
Figura 3.4 Parte operativa del Maggiordomo
68
Analizzo ora solo l’interfaccia utente di questo agente, gli altri tre moduli del maggiordomo
saranno trattati nelle sezioni successive.
Sono tre le operazioni principali che possono essere eseguite dall’utente tramite
l’interfaccia.
•
Monitoraggio dell’agenzia: permette di visionare in tempo reale quali agenti sono
connessi all’agenzia fornendo per ognuno di essi informazioni riguardanti l’host di
provenienza, il tempo di connessione e altri dettagli specifici di ogni agente. Tali
dettagli sono costituiti da un’immagine e da una descrizione particolareggiata delle
funzionalità dell’agente, ovviamente se fornita come parametro al momento della
connessione dall’agente stesso.
•
Gestione espansioni: le espansioni saranno descritte nelle sezioni seguenti dedicate
alla risoluzione dei goal, per il momento è sufficiente sapere che un’espansione può
essere facilmente creata, modificata o cancellata con semplici e intuitive operazioni.
•
Gestione goal: i goal e la loro gestione saranno descritti accuratamente nelle
successive sezioni; allo stesso modo delle espansioni, possono essere creati con
semplici operazioni.
3.1.6 Comportamento dell’AGENZIA AMBIENTALE orientato ai goal
L’agenzia è in grado di fornire una gestione degli eventi sfruttando il maggiordomo che si
occupa di ricevere e notificare agli interessati gli eventi. La descrizione dettagliata di come
ciò avviene non verrà trattata in quanto l’applicazione domotica da me implementata non ha
fatto uso di tale servizio implementato dall’AGENZIA AMBIENTALE. Dell’esistenza dei servizi
per la gestione degli eventi ho comunque tenuto conto nella progettazione di alcuni
componenti del mio progetto di tesi (come vedremo in seguito). Per la realizzazione della
logica di comunicazione e cooperazione tra agenti ho utilizzato il solo meccanismo di
cooperazione e pianificazione orientato ai goal messo a disposizione dall’AGENZIA
AMBIENTALE. Per tale motivo di seguito descriverò in dettaglio tale meccanismo.
La pianificazione è la tecnica con la quale è possibile trovare soluzioni a esigenze connesse
createsi all’interno dell’agenzia. Ciò significa che quando un agente non è in grado di
69
risolvere autonomamente un problema chiede l’intervento dell’agenzia, e in particolare del
pianificatore presente nel maggiordomo, che tenterà di trovare la soluzione migliore.
Di per sé il pianificatore produce semplicemente un piano, che è un insieme di operazioni
legate da particolari vincoli; serve quindi anche un esecutore che avendo in ingresso il piano
sia capace di realizzarlo, cioè sia in grado di far eseguire a tutti gli agenti i loro compiti
specifici che costituiscono il piano. Come si può intuire, per la risoluzione di un goal è
necessaria la cooperazione di più agenti coordinati correttamente: questo conferisce
all’agenzia un comportamento orientato ai goal, che si contrappone al comportamento
reattivo basato sugli eventi.
Vediamo ora meglio quali sono i componenti all’interno dell’agenzia che permettono
generare un goal, pianificare ed eseguire il piano che porta alla soluzione (se questo viene
trovato dal pianificatore) (Fig. 3.5).
•
Generatore del goal: è uno qualunque degli agenti appartenenti all’agenzia; un
agente quando vuole sollevare un’esigenza che intende soddisfare, genera un goal che
rappresenta tale esigenza. È importante porre l’accento sulla differenza che esiste fra
la generazione di un evento e la generazione di un’esigenza. L’evento, infatti, pur
essendo prodotto da un cambiamento nell’ambiente, serve solo ad informare tutti gli
agenti che è successo qualcosa, dopo di che ognuno reagirà nel modo che ritiene
opportuno. Con la generazione di un’esigenza, invece, l’agente richiede
esplicitamente che sia trovata una soluzione al suo problema.
•
Pianificatore: è il modulo cui pervengono le richieste da parte degli agenti ed è,
come detto in precedenza, una parte del maggiordomo (si veda la Fig. 3.4). Si è
quindi scelto di adottare un pianificatore centralizzato che si faccia carico dell’intero
processo di pianificazione. Come però si vedrà successivamente, nel processo di
pianificazione saranno utilizzati tutti gli agenti appartenenti all’agenzia, perché essi
sono i depositari delle conoscenze distribuite riguardo le azioni che possono essere
eseguite.
•
Esecutore: è il modulo che permette di eseguire il piano che il pianificatore
costruisce; anch’esso è parte integrante del maggiordomo (Fig. 3.4). Il suo compito è
di analizzare il piano e far eseguire ad ogni agente interessato il suo compito,
rispettando i vincoli imposti dal piano stesso. Le difficoltà maggiori sono dovute alla
sincronizzazione dei tempi, al passaggio di parametri fra agenti e alla gestione degli
70
errori durante l’esecuzione.
•
Attuatori: sono gli agenti dell’agenzia in grado di svolgere una qualche operazione
che si ripercuota sull’ambiente o che comunque generi un risultato utile ad altri
agenti. Un agente, per svolgere il ruolo di attuatore, deve dichiarare in qualche modo
ciò che è capace di fare, rendendo pubblici alcuni dei suoi metodi (ricordo che
nell’AGENZIA AMBIENTALE un agente è un oggetto JAVA). E’ utile ricordare inoltre
che lo stesso agente generatore del goal può essere utilizzato anche come attuatore, se
è utile per eseguire una parte del piano. Le prossime sezioni si occuperano appunto
delle varie parti di un piano.
Ambiente
Agente
Generazione esigenza: goal
Pianificatore
Pianificazione
Piano da eseguire
Esecutore
Operazioni da eseguire
Attuatori
Ambiente
Figura 3.5 Schema di risoluzione di un’esigenza (goal)
3.1.7 Elementi del piano
In questa sezione saranno analizzati gli elementi basilari che permettono di costruire un
piano; verrà invece tralasciata la descrizione in merito alla tecnica di pianificazione adottata
in quanto esula dagli scopi descrittivi per questa tesi.
71
Gli elementi del piano, dal punto di vista implementativo, si traducono in oggetti JAVA
realizzati con le seguenti classi.
•
DescrizioneGoal
•
GoalIniziale
•
Goal
•
Espansione (intermedia e finale)
•
PoliticheOrdinamento
•
ModificatoriGoal (Ordinamento, Selezione, IterazioneCiclica,
IterazioneCondizionata)
•
Piano
DescrizioneGoal
Questa è la classe che permette di dare una forma concreta ad un goal, permette cioè di
dare una forma implementativa al concetto astratto di esigenza.
Un goal è descritto mediante i seguenti parametri.
•
Un nome: rappresenta in sintesi l’esigenza desiderata; è una stringa e il suo
significato dovrebbe essere semplice e immediato.
•
Un’ontologia: rappresenta la semantica con la quale è stato definito il nome del goal.
L’ontologia e il nome sono strettamente legati, infatti, uno stesso nome può assumere
diversi significati se sono utilizzate due ontologie diverse. È anch’essa implementata
mediante una stringa.
•
Un vettore di parametri di ingresso: è un array di object e permette di definire degli
ingressi per il goal. Facciamo un esempio: se il goal è “telefonare” il parametro di
ingresso potrebbe essere una stringa rappresentante il nome da chiamare.
•
Un vettore di parametri di uscita: anch’esso è un array di object, permette di definire
gli
eventuali
risultati
forniti
dal
goal.
Esempio:
se
il
goal
è
ad
esempio:“cercaNumeroDiTelefono” l’ingresso potrebbe essere un nome (stringa) e
l’uscita una stringa rappresentante il numero di telefono.
•
Un vettore di tipi in ingresso: array di stringhe nel quale è contenuto il tipo, sotto
forma di stringa, dei parametri di ingresso, che invece sono object. Ovviamente se i
72
parametri di ingresso sono definiti, quest’array contiene i nomi dei tipi di questi
parametri, ma fra breve vedremo che gli oggetti in ingresso possono non essere
definiti. I tipi che possono essere utilizzati sono quelli definiti dal linguaggio di
programmazione JAVA, nonché quelli stabiliti dalle classi create.
•
Un vettore dei tipi in uscita: vale lo stesso discorso fatto sopra per gli ingressi.
•
Una descrizione: è un parametro facoltativo che permette di descrivere in maniera più
dettagliata il significato del goal.
E’ ora importante spiegare una sottile, ma importante differenza fra due possibili modalità
con le quali si può creare DescrizioneGoal. Finora abbiamo assunto che un goal sia generato
da un agente nel preciso momento in cui se ne verifica la necessità. Abbiamo anche
affermato che l’oggetto DescrizioneGoal serve a darne una rappresentazione concreta. E’
ovvio che tale oggetto sia creato utilizzando come parametri di ingresso gli oggetti che
effettivamente rappresentano gli input, in altre parole DescrizioneGoal conterrà un array di
object dove ogni elemento è un oggetto vero e proprio (un file, una stringa, un intero). Quello
che ancora non ho detto è che l’agenzia, e in particolare il pianificatore, ha la necessità di
trattare i goal anche in un contesto più astratto. Deve, infatti, conoscere come un goal può
essere decomposto in altri goal (vedi le espansioni più avanti) dove ognuno di questi nuovi
goal è rappresentato mediante l’oggetto DescrizioneGoal. In questo caso però, non è
possibile assegnare come parametri di input e output degli oggetti reali, in quanto non esiste
l’esigenza e quindi i parametri stessi. La soluzione adottata dall’AGENZIA AMBIENTALE è
stata quella di rappresentare i parametri non mediante l’oggetto vero e proprio ma utilizzando
il suo tipo. Quando poi il maggiordomo dovrà trovare nella sua conoscenza il goal rispettivo
a quello generato da un agente dovrà confrontare il nome del goal, l’ontologia e il tipo dei
parametri.
GoalIniziale
Nella decomposizione di un goal nei suoi sottogoal, GoalIniziale rappresenta il goal da
decomporre. Oltre ad avere tutte le proprietà di DescrizioneGoal possiede anche una lista di
tutte le possibili decomposizioni del goal.
Goal
E’ utilizzato all’interno delle decomposizioni di un GoalIniziale e a differenza di esso può
73
avere associati alcuni modificatori (ordinamento, selezione, iterazione) che ne controllano
l’esecuzione.
Espansione
E’ l’oggetto utilizzato per rappresentare le decomposizioni dei goal. L’idea è che un goal
per essere risolto debba prima essere “espanso” in una forma più semplice. Il primo, e più
intuitivo, modo per espandere un goal è di scomporlo in un insieme di goal più semplici che,
eseguiti con determinati vincoli, sono equivalenti al goal originario. Tale processo di
espansione può ripetersi parecchie volte, ma se si vuole risolvere effettivamente un’esigenza
è necessario che si arrivi a dei goal elementari o primitivi che non hanno bisogno di ulteriori
espansioni. E’ quindi necessario introdurre il secondo modo per espandere un goal; con
questo è possibile associare ad un goal la sua risoluzione vera e propria che consisterà
nell’esecuzione di un particolare metodo di un agente (sarà associata cioè a una
decomposizione finale e non più espandibile).
Riassumendo quanto appena detto è possibile distinguere fra due tipi di espansioni:
intermedie (EspansioniIntermedie) e finali (EspansioniFinali) (Fig. 3.6).
•
EspansioniIntermedie: espandono un goal in un insieme di goal considerati più
semplici.
•
EspansioniFinali: espandono un goal dicendo come risolverlo effettivamente.
Espansione intermedia
Espansione finale
Agente
+
Metodo
Goal
Goal iniziale
Goal iniziale
Figura 3.6 Tipi di espansione: finale e intermedia
Nulla vieta di creare più espansioni per uno stesso goal e addirittura è possibile che esistano
74
sia espansioni finali sia espansioni intermedie associate allo stesso goal.
L’efficienza con la quale il goal è risolto non è però sempre la medesima, anzi è possibile
trovare espansioni migliori di altre. Per valutare la bontà e l’efficacia di un’espansione si è
quindi associato ad ognuna di loro un insieme di tre parametri.
•
Performance: misura la qualità dell’espansione, dove per qualità s’intende, di volta in
volta, la caratteristica che maggiormente permette di identificarne l’efficienza. Se, per
esempio, il goal è “alzaLaTemperatura” l’efficienza potrebbe essere misurata dal
tempo necessario a raggiungere la temperatura richiesta.
•
Costo: misura il dispendio di risorse necessario per portare a termine l’esecuzione del
goal tramite l’espansione. Riprendendo l’esempio di prima, il costo è dato dal valore
economico necessario per ottenere l’innalzamento di temperatura.
•
Probabilità di successo: indica la probabilità che adottando questa espansione si
riesca veramente a risolvere il goal iniziale. Esiste la possibilità, infatti, che in taluni
casi si verifichino errori durante l’esecuzione di un metodo in un agente, che
compromettono l’intera fase di risoluzione.
Performance, costo e probabilità di successo saranno utilizzati dal pianificatore per
scegliere l’espansione migliore (potranno essere adottate diverse politiche, come ad esempio
massimizzare la performance, minimizzare i costi, ecc.), da utilizzare per un determinato
goal. I valori che tali parametri possono assumere sono numeri interi compresi tra zero e
mille.
Per concludere il discorso sulla costruzione delle espansioni bisogna parlare del problema
del mapping dei parametri del goal iniziale sui goal dell’espansione. Come detto, ogni goal
possiede degli input e degli output, quindi, quando espandiamo il goal iniziale, bisogna
specificare come i goal dell’espansione utilizzeranno i suoi input. In altre parole, è necessario
creare una mappa che associ ad ogni ingresso del goal iniziale un ingresso del goal
dell’espansione. Stesso discorso vale per i parametri di output.
PoliticheOrdinamento
E’ un oggetto che permette di definire un ordinamento fra due espansioni; ciò è possibile
definendo fra esse un vincolo di maggioranza. Chiarirò il concetto analizzando le tre
politiche di ordinamento predefinite nell’AGENZIA AMBIENTALE.
75
• Minor costo: un’espansione è maggiore di un’altra se il suo costo è minore.
• Maggiore performance: un’espansione è maggiore di un’altra se la sua performance è
maggiore.
• Maggiore probabilità di successo: un’espansione è maggiore di un’altra se la sua
probabilità di successo è maggiore.
Tutte e tre queste politiche prendono in esame un solo valore singolarmente, è però
possibile creare politiche personalizzate più complesse.
ModificatoriGoal
Un’espansione intermedia permette di decomporre un goal complesso in goal più semplici,
solo questo però non sarebbe sufficiente a raggiungere delle azioni eseguibili. E’ necessario
infatti che i goal dell’espansione siano eseguiti rispettando determinati vincoli. In altre
parole, l’ordine d’esecuzione dei goal semplici non sempre può essere casuale ma spesso
deve essere predeterminato, altre volte invece è necessario introdurre la possibilità di
effettuare scelte in esecuzione per decidere quale goal utilizzare nella decomposizione, infine
è utile introdurre il concetto di iterazione nel caso si desideri che il goal sia ripetuto più volte.
Tutti questi vincoli sono imposti all’espansione associando ad ogni suo goal un opportuno
modificatore. I modificatori possibili sono: ordinamento, selezione, iterazione, che analizzerò
dettagliatamente di seguito.
• Ordinamento, permette di creare un vincolo di sequenzialità fra due goal all’interno
di un’espansione. Quando ad un goal è associato questo modificatore significa che la
sua esecuzione deve avvenire solo dopo l’esecuzione dei goal specificati dal
modificatore stesso. Permette inoltre di specificare come avviene l’eventuale
passaggio di parametri fra i goal. Esiste anche la possibilità di creare sequenze di
ordinamento che comprendono più goal, l’importante è che non si creino dei cicli che
impedirebbero il completamento dell’esecuzione dell’espansione.
•
Selezione, permette di inserire all’interno di un’espansione la possibilità di fare una
scelta fra più goal condizionata a dei valori. Le proprietà del modificatore selezione
sono le seguenti:
o goal della selezione: il goal che fra tutti quelli presenti nell’espansione ha il
ruolo di selettore, nel senso che avrà il compito di produrre i valori per
76
effettuare la selezione condizionata;
o output del confronto: l’output del goal della selezione che genererà il
termine da confrontare;
o termine di confronto: stringa utilizzata per effettuare il confronto con
l’output generato precedentemente.
Il funzionamento è il seguente: un goal è scelto come selettore, scegliendolo fra
tutti i goal presenti nell’espansione; si definisce un suo output da utilizzare per il
confronto e si imposta un termine di confronto. Durante la fase di esecuzione, prima
di eseguire il goal in esame è eseguito il suo selettore (si noti che implicitamente è
definito un vincolo di ordinamento); si confrontano quindi l’output del selettore con
il termine di confronto e in caso corrispondano anche il goal in esame è eseguito. E’
facile, utilizzando questa tecnica, creare diversi tipi di selezione: semplice, doppia,
multipla, associando lo stesso selettore a diversi goal.
•
Iterazione, permette di impostare un comportamento iterativo per i goal
dell’espansione. E’ possibile definire due tipi di iterazione: iterazione ciclica e
iterazione condizionata. La prima consiste nel far ripetere l’esecuzione del goal un
numero prestabilito di volte. La seconda fa ripetere l’esecuzione del goal finché una
condizione è verificata. La verifica della condizione è del tutto simile al controllo
della selezione: s’imposta un selettore, un output da confrontare e un termine di
confronto. Anche nell’iterazione condizionata è implicito un vincolo di
sequenzialità tra selettore e goal in esame, ma questa volta al termine
dell’esecuzione di questo ultimo si ritorna ad eseguire il selettore.
I tre modificatori analizzati, schematizzati in Fig. 3.7, permettono di creare all’interno di
un’espansione intermedia una sorta di algoritmo risolvente in cui si possono trovare i
costrutti di un qualsiasi linguaggio di programmazione di alto livello: sequenza, selezione,
iterazione. Importante caratteristica è la possibilità di utilizzare più modificatori
contemporaneamente sullo stesso goal: ciò comporta l’adozione di alcune regole di
precedenza durante l’esecuzione di un goal con più modificatori.
Prima dell’esecuzione di un goal, se a questo è associato un modificatore, vengono eseguite
le sue precondizioni: selezione ed esecuzione del piano del goal precedente e verifica della
condizione espressa dal modificatore in relazione al risultato prodotto dall’esecuzione; se non
sono specificati vincoli, le precondizioni sono eseguite tutte contemporaneamente; è bene
77
ricordarsi però che ogni precondizione è essa stessa un goal e quindi può aver associati
diversi modificatori.
Ordinamento
Selezione
Iterazione
B
A
true
A
B
L’esecuzione del goal B
deve essere preceduta
dall’esecuzione dal goal
A.
B
A
-out
false
C
L’esecuzione del goal A è seguita:
dall’esecuzione del goal B se l’out,
prodotto dall’esecuzione del goal A, è
uguale a true; dall’esecuzione del goal C
se l’out è uguale a false
Stile for
5
10
-out
stile until
C
L’esecuzione dei goal A e B si ripete
ciclicamente per 5 volte (stile for).
L’esecuzione dei goal A e C si ripete
ciclicamente finché l’out fornito
dall’esecuzione di A non sarà uguale a 10
Figura 3.7 Modificatori dei goal
Piano
L’ultimo componente che analizzo è il piano (Fig. 3.8) che raggruppa tutti gli elementi
finora analizzati.
Ad ogni piano è associato un GoalIniziale cui, durante la fase di pianificazione, sono
associate le espansioni che lo decompongono e, in modo ricorsivo, ad ogni goal delle
espansioni sono associate altre espansioni fino al raggiungimento delle espansioni finali. Si
crea così un albero, chiamato albero di pianificazione, la cui radice è il goal completo,
l’esigenza, che sarà quindi risolvibile quando ogni sua foglia corrisponderà ad un’espansione
finale.
Concludo con una nota teorica che chiarisce su come può essere usata l’AGENZIA
AMBIENTALE. I goal generati dall’uomo o da un agente rappresentano un problema che si
vuole risolvere. Per farlo bisogna portare questo problema in una forma risolvibile da una
78
macchina. Questa fase che permette di passare dal mondo reale, i goal, al mondo delle
conoscenze della realtà, le espansioni (modelli), è realizzata esclusivamente dall’uomo. E’
quindi compito di questo ultimo definire come un goal può essere decomposto. E’ compito
cioè di chi vuole realizzare un’applicazione specifica, sfruttando l’AGENZIA AMBIENTALE,
definire le decomposizioni per risolvere delle esigenze (dei goal). Quando siamo a
conoscenza del problema rappresentato, è possibile passare, mediante processi inferenziali
(deduzione, induzione, che nell’AGENZIA AMBIENTALE sono realizzati) e tramite la
pianificazione, al problema risolto. Il problema risolto rappresenterà una sequenza di azioni
che andranno poi in esecuzione sui vari agenti.
D1
Agente 3
+
Metodo 1
C1
D2
C2
Agente 1
+
Metodo 1
B1
D3
A
B2
C3
C4
D4
Agente 1
+
Metodo 2
C5
D5
D6
Agente 3
+
Metodo 3
Agente 4
+
Metodo 2
Agente 5
+
Metodo 1
Agente 5
+
Metodo 2
Agente 6
+
Metodo 1
I goal A, B1, B2, C1, C3, e C5 possono essere decomposti con le espansioni
intermedie (cioè ulteriormente espandibili). Tutti gli altri hanno associati delle
espansioni finali (cioè non ulteriormente espandibili ma direttamente eseguibili).
Figura 3.8 Un esempio di albero generato dal pianificatore
3.1.8 Passaggio di conoscenza fra agenti
Al termine della pianificazione è presente una fase in cui gli agenti si scambiano le
conoscenze. Un agente, come detto, ha la possibilità di connettersi e disconnettersi a diverse
79
agenzie con estrema facilità: questo significa che potrebbe entrare in contatto con agenti che
dispongono di conoscenze a lui utili in futuro. Nell’AGENZIA AMBIENTALE è stato previsto un
semplice meccanismo per il passaggio della conoscenza che permette di condividere con gli
altri agenti dell’agenzia o delle altre agenzie le eventuali conoscenze acquisite. Non
descriverò come ciò avviene in dettaglio in quanto esula dagli scopi di questa tesi.
3.2 Problematiche specifiche per un’applicazione domotica in contesto
reale
Da questa sezione in poi si inizierà a parlare in modo specifico del mio progetto di tesi.
Nella Sezione 2.2.2 si è visto come la domotica può essere vista come una specializzazione
dell’ubiquitous computing, al contempo l’applicazione concreta che si è sviluppata in questa
tesi in ambito domotico può essere considerata una specializzazione dell’AGENZIA
AMBIENTALE, orientata alla creazione di applicazioni per l’ubiquitous computing. Per tale
motivo nelle prossime sezioni specializzerò, nella concretezza dell’applicazione domotica
realizzata, alcuni dei concetti e funzionalità implementati dall’architettura multiagente per
applicazioni di ubiquitous computing. Visto il carattere di generalità dell’AGENZIA
AMBIENTALE e visto che in concreto non era stata ancora sviluppata alcuna applicazione
pratica
che
sfruttasse
tale
agenzia,
inevitabilmente
nella
progettazione
e
nell’implementazione si erano tralasciati degli aspetti cruciali per il buon funzionamento di
un applicazione reale. Nelle successive sezioni verranno messi in luce le problematiche di
progetto che si sono poste in relazione all’utilizzo in ambito non simulato e nello specifico, in
quello domotico, dell’AGENZIA AMBIENTALE.
Nella Sezione 3.2.1 si spiegherà cosa si intende per contesto in una abitazione e quali sono
i tipi di mutamenti dell’ambiente uomo-casa sensibili al fine del funzionamento di
un’applicazione domotica. Verranno quindi dati dei suggerimenti per la creazione di
un’applicazione domotica che tenga conto delle informazioni contestuali utili in domotica.
Nella Sezione 3.2.2 si analizzeranno in dettaglio alcune delle dinamiche dell’interazione
dell’uomo con l’ambiente domestico al fine di focalizzare il progetto di ricerca su aspetti
tipici di un sistema domotico.
Nella Sezione 3.2.3 verrà sottolineato come la visione di un agente composto da una
componente operativa (OP) costituita da un solo dispositivo fisico sia drasticamente
limitativa nella pratica reale in ambito domotico e come tale limitazione, se non fosse stata
80
eliminata tramite una reingegnerizzazione dell’agente, avrebbe comportato un aumento della
complessità dell’intero progetto, portando ad una drastica diminuzione dell’efficienza
dell’applicazione.
Nella Sezione 3.2.4 verranno evidenziate le problematiche che nascono modificando
l’agente in modo che possa gestire con un solo OP logico anche più di un dispositivo fisico.
Nella Sezione 3.2.5 si porrà il problema della scelta di una tecnologia adeguata per
l’implementazione dei semiagenti operativi, verranno evidenziati i servizi e le caratteristiche
che deve possedere la tecnologia da scegliere.
3.2.1 Il contesto per un sistema domotico
Nello stato dell’arte relativo all’ubiquitous computing il contesto è stato identificato come
ogni sorta di informazione che permette di caratterizzare la situazione di un’entità, dove per
entità si può intendere una persona, un luogo, un oggetto fisico o un dispositivo elettronico.
Per la domotica oggi le entità rilevanti, al fine di rilevare il contesto, sono solo i dispositivi
collegati alla rete domestica, le persone e i parametri fisici ambientali (come la temperatura o
l’intensità luminosa).
Contesto relativo ai dispositivi di un’abitazione
I cambiamenti di contesto sensibili ai fini di un’applicazione domotica sono dovuti: al tipo
di utilizzo che si fa dei dispositivi in una casa, ai possibili malfunzionamenti e al mutamento
dei servizi offerti dai dispositivi.
• Tipo di utilizzo dei dispositivi in una casa. Gli elettrodomestici, particolari tipi di
dispositivi domestici che utilizzano l'energia elettrica per trasformarla in lavoro utile
all’uomo nella casa [76], vengono di continuo spostati, sganciati riagganciati alla rete
domestica, spenti e riaccesi. In una casa l’uomo deve avere la possibilità di
posizionare gli elettrodomestici dove vuole senza vincoli eccessivi. Gli unici vincoli a
cui l’uomo è già abituato sono quelli relativi alle prese di corrente, alla presa
dell’antenna o agli allacciamenti di acqua e gas. La domotica si propone come una
tecnologia che semplifica la tecnologia già esistente in una casa, non dovrà inserire
quindi ulteriori vincoli fisici alla mobilità e alla libertà d’azione in genere. A tal fine
un’applicazione domotica dovrà essere in grado di rilevare autonomamente la
posizione degli elettrodomestici e dei dispositivi, per poterlo fare dovrà essere in
81
grado di percepire il contesto relativo alla posizione fisica e allo stato dei dispositivi
(accesi o spenti, agganciati o sganciati).
• Malfunzionamenti. I dispositivi presenti in un’abitazione sono soggetti spesso a
malfunzionamenti, infatti la casa è ricca di dispositivi di media o breve durata rispetto
alla vita media di un’abitazione, come ad esempio le caldaie autonome (vita media di
circa 10 anni) o i punti luce (con durata spesso inferiore ai due anni). Un sistema
domotico deve essere in grado di rilevare questa informazione contestuale al fine di
prevenire malfunzionamenti a cascata e poter fornire eventuali strumenti di diagnosi.
• Mutamento dei servizi offerti. I dispositivi in una casa sono spesso rimpiazzati da
nuovi dispositivi che potrebbero essere in grado di fornire nuovi servizi o non essere
più in grado di fornire quelli del dispositivo sostituito. Tale mutamento contestuale
deve essere rilevato da un sistema domotico al fine di poter sfruttare i nuovi servizi e
di non incorrere in operazioni incoerenti, tentando ad esempio di far fronte ad
un’esigenza utilizzando funzioni e servizi non più presenti nel sistema domotico.
Conteso relativo agli abitanti della casa.
Nell’analisi del contesto abitativo la rilevazione di presenza dell’utente e l’individuazione
della posizione è un’informazione fondamentale per poter fornire alcuni servizi e funzioni
tipici di un sistema domotico. La posizione dell’utente è ad esempio utile per poter soddisfare
esigenze d’intenzione come, ad esempio, la richiesta di una stampa sulla stampante più vicina
o la richiesta di uno scenario luminoso nella stanza in cui si è senza dover specificare
esplicitamente la stanza in cui ci si trova. La rilevazione della presenza dell’utente in un
ambiente specifico è una informazione necessaria, ad esempio, per poter permettere al
sistema domotico di effettuare un più efficace ed efficiente risparmio energetico. La proattività richiesta per portare a termine un piano di risparmio energetico può essere ottimizzata
sfruttando le informazioni contestuali relative alla rilevazione di presenza. Se il sistema è a
conoscenza della presenza umana o meno in una stanza sarà in grado, ad esempio, di poter
spegnere le luci quando la stanza non è più occupata, almeno che non vi sia stata una
esplicita richiesta da parte dell’uomo di lasciare la luce accesa anche in assenza di rilevazione
di presenza umana.
82
Contesto relativo ai parametri fisici ambientali.
La rilevazione di alcuni parametri fisici, in domotica, diventa fondamentale per poter
svolgere molte funzioni, anche basilari. La rilevazione della temperatura, ad esempio, servirà
per il processo di climatizzazione e per il risparmio energetico. La rilevazione dell’intensità
luminosa può servire, ad esempio, per poter controllare l’intensità luminosa in una stanza al
fine di mantenerla ad un livello richiesto dall’utente mescolando diverse sorgenti luminose
(naturali e non).
Concludo evidenziando che la rilevazione del contesto dei dispositivi è fondamentale per
non compromettere il funzionamento e la stabilità di tutto il sistema. Invece il contesto
relativo agli abitanti della casa e ai parametri fisici ambientali serve per realizzare funzioni
specifiche.
Alla luce di quanto detto un’applicazione domotica dovrà essere in grado di:
•
monitorare lo stato dei suoi dispositivi in ogni momento;
•
comunicare con i dispositivi indipendentemente da dove siano posizionati
fisicamente, purché collegati ovviamente in qualche modo alla rete domotica;
•
percepire il contesto relativo ai dispositivi, sviluppando una reattività immediata alle
variazioni. Tale reattività si dovrà ripercuotere e influenzare sulla logica con cui il
sistema svolgerà le operazioni che gli vengono richieste.
E’ auspicabile, inoltre, che un’applicazione domotica complessiva (in grado di coprire tutti
gli ambiti applicativi della domotica) ed efficace, sia costituita da tutta la tecnologia
necessaria per poter rilevare anche il contesto relativo agli abitanti e ai parametri ambientali.
3.2.2 Ergonomia dell’interazione uomo - ambiente domestico, alcuni aspetti
percettivi
Un sistema domotico deve cercare di avvicinarsi il più possibile alle abitudini degli abitanti
della casa cercando di essere il più trasparente e meno intrusivo possibile.
L’uomo è abituato a comunicare con la propria abitazione e i rispettivi dispositivi in tempo
reale, senza latenze percepite, in cui l’effetto di un’azione è percepito contemporaneamente
all’azione stessa. Come ad esempio l’apertura e chiusura di una schermatura tramite corda
83
avvolgibile produce l’effetto istantaneo di movimento verso l’alto o verso il basso della
schermatura, così come la banale accensione di una luce è l’istantanea conseguenza della
pressione su un interruttore. Per tale motivo un sistema domotico, che si prefigge come scopo
la non intrusività, non potrà prescindere da tale prerogativa. I tempi computazionali e di
trasporto delle informazioni dovranno essere ottimizzati al fine di rispettare le abitudini
d’interazione uomo-casa. Si immagini ad esempio la scomodità e la conseguente
inutilizzabilità di un potenziometro per un punto luce che agisce sull’intensità luminosa con
una latenza percepibile, in cui, non solo l’uomo percepisce qualcosa d’inatteso dalla propria
abitazione, disorientandosi, ma nel caso specifico, si trova in difficoltà nell’attuare un
retroazione percettiva per regolare l’intensità luminosa fino a quella desiderata.
L’uomo è abituato ad essere il controllore ultimo di ogni aspetto tecnico e artistico della
propria abitazione e per tale motivo vuole essere in grado di operare, controllare e monitorare
direttamente qualsiasi dispositivo operante nell’ambiente. La possibilità di poter controllare
direttamente, con mano propria, tutte le funzioni messe a disposizione dai dispositivi operanti
nella casa fornisce all’utente la certezza di trovarsi nella sua casa dove ogni cosa è “sotto
controllo” come testimoniato anche da una ricerca dell’Enea sul rapporto dell’uomo con le
nuove tecnologie [75]. Per tale motivo, qualsiasi sistema domotico che si preoccupi delle
esigenze emozionali degli abitanti di un ambiente domestico dovrà essere in grado di dare il
controllo su qualsiasi dispositivo in modo diretto, in caso di esplicita richiesta, fornendo così
la sensazione che il controllo sulla casa non si basi solo su intermediari tecnologici. Il sistema
domotico dovrà essere additivo e non sottrattivo rispetto alle abitudini funzionali che si
hanno in una casa.
Un’applicazione domotica, ad esempio, oltre a fornire la possibilità di ricreare degli scenari
d’ambiente, impostabili e configurabili dall’utente, agendo sull’illuminazione, riscaldamento,
impianto audio/video ecc. dovrà anche fornire la possibilità, se richiesto, di operare
direttamente sulla singola lampadina, sul singolo termosifone e su ogni funzionalità messa a
disposizione dagli elettrodomestici audio/video. Così come sarebbe stato in assenza di un
sistema tecnologico domotico.
Visti gli aspetti ergonomici evidenziati è importante specificare che la reattività al contesto,
che un’applicazione domotica deve sviluppare, si deve riflettere istantaneamente anche
sull’interfaccia di comunicazione con l’uomo.
84
Affinché l’uomo abbia la sensazione di avere tutto “sotto controllo” deve essere messo
nelle condizioni di poter monitorare e controllare ogni dispositivo presente nel sistema
domotico tramite l’uso dell’interfaccia utente.
3.2.3 Necessità di gestire più dispositivi per ogni agente in ambito domotico
La casa è popolata da numerosi dispositivi il cui controllo non comporta computazioni
complesse e grossi scambi d’informazione, come nel caso ad esempio di una lampadina o di
un sensore di rilevazione di presenza.
Sviluppare un agente per ogni dispositivo fisico presente in un sistema domotico
comporterebbe un decremento delle prestazioni dell’intera AGENZIA AMBIENTALE. Ogni
agente infatti è da considerarsi un processo residente in memoria in esecuzione. Un agente,
come detto, è costituito da un semiagente CO e uno OP, il semiagente CO è uguale per tutti
gli agenti. Le parti CO sono in grado di gestire tutta una serie di servizi per la connessione,
sconnessione, pianificazione e gestione degli eventi e altro, quindi sono dei processi
abbastanza complessi che portano ad una sensibile occupazione di memoria e un certo sforzo
computazionale. Non sarebbe dunque pensabile di mandare in esecuzione un intero processo
CO per ogni dispositivo fisico collegato alla rete domotica. Si pensi ad esempio al caso di un
interruttore o di un punto luce, in cui la maggior parte dei servizi messi a disposizione dal CO
sarebbero del tutto superflui. Si deve quindi allentare il concetto di agente legato ad un
singolo dispositivo fisico prevedendo una soluzione tentacolare. Per tale soluzione ho
ipotizzato la possibilità che il semiagente OP di un agente, implementato per un’applicazione
domotica, possa essere costituito da più di un dispositivo domestico per volta oppure che un
agente sia costituito da più semiagenti OP (ognuno dei quali gestisce un singolo dispositivo).
3.2.4 Problematiche legate alla gestione di più dispositivi per ogni agente
Nel caso in cui il semiagente OP sia costituito da più dispositivi fisici, esso sarà in grado di
metter a disposizione dell’agente la somma dei servizi messi a disposizione da ogni singolo
dispositivo. L’agente percepirà la presenza di un solo OP disinteressandosi dei dispositivi
fisici realmente operanti nell’ambiente. In questo modo si richiede però al semiagente OP di
non essere uno sterile esecutore, ma di essere in grado di impartire i comandi adeguati ai
dispositivi fisici che lo compongono a seconda delle operazioni che l’agente vorrà portare a
termine (Fig. 3.9). Inoltre l’OP dovrà anche essere in grado di comunicare al CO quali sono i
85
servizi che questo potrà o non potrà più mettere a disposizione dell’intera agenzia a seconda
dello stato dei dispositivi fisici rilevato. Anche il flusso d’informazione tra dispositivi e
agente per il monitoraggio dello stato, al fine di tenere traccia del contesto dei dispositivi,
deve essere gestito dall’OP. Per tali operazioni può venirci in soccorso il concetto di proxy,
di cui abbiamo parlato nella Sezione 3.1, che, come era stato proposto dal precedente
progetto di tesi [3], può sostituirsi all’OP nell’estensione del CO per effettuare
un’intermediazione. Il proxy può essere un buon candidato a essere, non solo un
intermediario ma, il modulo deputato a tenere insieme diversi dispositivi costituendo, dal
punto di vista logico, un semiagente OP unico (Fig. 3.9).
Agente
Java
CO
Dispositivo
Altra tecnologia
Hw, Sw
Dispositivo
Proxy
Altra tecnologia
Hw, Sw
(OP)
Dispositivo
Altra tecnologia
Hw, Sw
OP
Dispositivo
Dispositivo
Altra tecnologia
Hw, Sw
Altra tecnologia
Hw, Sw
Figura 3.9 Un proxy in grado di gestire più dispositivi fisici costituendo un unico OP
La soluzione alternativa è quella che prevede che un agente possa essere composto anche
da più di un semiagente OP (Fig. 3.10). In questo caso si dovrebbe prevedere un proxy per
ogni OP esistente e si dovrebbe prevedere la totale reingegnerizzazione del CO, parte
fondante di tutta l’agenzia.
86
Agente
Java
Proxy
OP
Altra tecnologia
Hw, Sw
CO
Proxy
OP
Proxy
Proxy
OP
Altra tecnologia
Hw, Sw
Proxy
Altra tecnologia
Hw, Sw
OP
OP
Altra tecnologia
Hw, Sw
Altra tecnologia
Hw, Sw
Figura 3.10 Un CO in grado di gestire più proxy, ognuno dei quali gestisce un OP costituito da un unico
dispositivo
Indipendentemente dalla soluzione adottata si dovrà fare in modo che l’agente sia in grado
di effettuare un monitoraggio continuo sui vari dispositivi che ingloba al fine di poter
sviluppare una reattività contestuale adeguata verso l’utente e verso l’intera agenzia. Verso
l’utente fornendo informazioni coerenti sullo stato dei dispositivi e verso l’agenzia
pubblicando solo servizi e funzioni realmente eseguibili dall’agente (espansioni finali).
Nessun processo di controllo o monitoraggio per il semiagente OP era però stato preso in
considerazione nell’AGENZIA AMBIENTALE quando si è introdotto il concetto di proxy,
processo fondamentale invece per un’applicazione reale e non simulata. Infatti il proxy
risultava un semplice modulo destinato a mappare dei metodi JAVA sulle funzioni disponibili
sull’OP e si disinteressava se la comunicazione reale CO-OP fosse andata a buon fine o
meno. Senza un processo di controllo dei dispositivi l’intero sistema diventa instabile, non
efficiente e non in grado di gestire adeguatamente le variazioni del contesto. L’agente, non
potendo rendersi conto dello stato effettivo delle proprie parti operanti, non può essere in
87
grado di garantire che la comunicazione con l’OP avverrà con successo introducendo quindi
una forte aleatorietà.
Problematica accentuata in quei casi in cui il semiagente CO e alcune o tutte le componenti
dell’OP sono in esecuzione su macchine con tecnologie differenti, dove quindi la
comunicazione tra CO e OP può non essere sempre garantita.
Il caso in cui CO e OP siano fisicamente residenti su macchine con tecnologie differenti è
molto frequente in domotica. Non si può pretendere ad esempio che un interruttore abbia
sufficiente memoria e capacità di calcolo per ospitare una virtual machine JAVA ed eseguire
l’intero agente.
Per questa tesi si è posto l’obiettivo di realizzare un processo in grado di monitorare il
semiagente OP e di aumentare le capacità del proxy in modo che possa gestire anche più di
un dispositivo (Fig. 3.9) per sviluppare reattività specifiche.
3.2.5 Una tecnologia adeguata per la messa in opera del semiagente
operativo
L’AGENZIA AMBIENTALE si basa su una pianificazione dinamica dipendente dalle funzioni
e i servizi realmente disponibili. Se la tecnologia adottata per l’implementazione dei
semiagenti operativi sarà in grado di fornire il servizio di discovery si eviterà di progettare
manualmente tutta la infrastruttura per poter riconoscere se un dispositivo (e le sue funzioni)
è disponibile o meno. La tecnologia che si andrà ad utilizzare sarà adottata per tutti i
dispositivi domotici presenti. Vista l’elevata mobilità degli elettrodomestici e dei dispositivi
di una casa in genere, sarebbe auspicabile che la tecnologia preveda la possibilità di
configurazione automatica della rete dei dispositivi. Discovery e riconfigurazione automatica
della rete, combinati insieme, permettono di fornire il servizio di plug & play.
E’ utile inoltre che la tecnologia impiegata preveda un servizio di lookup al fine,
eventualmente, di poterlo sincronizzare con la lookup table di JINI (ricordo che è la tabella
che permette a JINI di fornire il servizio di lookup).
L’AGENZIA AMBIENTALE è in grado di gestire gli eventi. Anche se tale gestione non è stata
da me utilizzata per l’implementazione dell’applicazione domotica, una tecnologia adeguata
per poter interagire con l’AGENZIA AMBIENTALE dovrà essere in grado di supportare e gestire
gli eventi o almeno poter gestire degli interrupt. La gestione degli eventi ottimizza la
88
gestione per ottenere un comportamento reattivo di un agente in risposta a un evento
avvenuto sul semiagente OP.
Infine una tecnologia adeguata per la messa in opera del semiagente OP deve essere in
grado di garantire una comunicazione CO - OP stabile e veloce. Vedremo nella Sezione
4.2.1 che la scelta è caduta sulla tecnologia LONTALK (LON) e i motivi di tale scelta.
3.3 Interfaccia proxy - dispositivi
Ci si è posti il problema di progettare un’interfaccia tra il proxy e dispositivi da lui gestiti
per costituire un OP unico al fine di poter prevedere la possibilità d’implementare il
semiagente CO e parti dell’OP con tecnologie differenti. In questa sezione si lascerà da parte
per un momento l’ambito domotico e ci si concentrerà più su aspetti generali al fine di poter
fornire delle soluzioni progettuali non specifiche per la domotica ma utilizzabili in tutti i
campi in cui l’AGENZIA AMBIENTALE può essere impiegata.
3.3.1 Interfaccia proxy - dispositivi: servizi offerti e trasparenza della
tecnologia utilizzata
Per il concetto di proxy contestualizzato nell’AGENZIA
AMBIENTALE
si faccia riferimento
alla Sezione 3.1.4.
Come detto in precedenza l’AGENZIA AMBIENTALE è strutturata come un’architettura
multiagente non specializzata in nessun dominio specifico ma utilizzabile invece per diverse
applicazioni specifiche. Nella progettazione dell’interfaccia proxy – dispositivi mi sono posto
dunque il problema di definire dei servizi d’interfacciamento implementabili per differenti
tecnologie, domotiche e non, rendendo trasparente la tecnologia scelta.
Il proxy dovrà essere in grado d’interfacciarsi con la tecnologia sottostante, utilizzata per
implementare e interconnettere i dispositivi, in modo trasparente, in questo modo il proxy
implementato per un agente può essere utilizzabile con diverse tecnologie. L’agente quindi
non dovrà essere riprogettato nel caso in cui i alcune parti dell’OP venissero trasferite su una
tecnologia differente ma sarà sufficiente rimplementare solo l’interfaccia. Con un’interfaccia
di comunicazione proxy - dispositivi, inoltre, il proxy sarà in grado di comunicare con le
parti dell’OP utilizzando sempre gli stessi servizi messi a disposizione dall’interfaccia proxy
- dispositivi (vedi Fig. 3.11). In questo modo, il progettista che utilizzerà L’AGENZIA
AMBIENTALE in futuro, indipendentemente dagli agenti che andrà ad implementare, avrà a
89
disposizione sempre gli stessi servizi per comunicare con i dispositivi che costituiscono l’OP
e potrà disinteressarsi della tecnologia sulla quale, alcune parti dell’OP, sono realmente in
esecuzione.
Agente
Java
CO
Proxy
(OP)
Interfaccia proxy - dispositivo
Dispositivo
(OP)
Altra tecnologia
Hw, Sw
Figura 3.11 Interfaccia proxy - dispositivo
L’interfaccia dovrà pubblicare tutti i servizi necessari per comunicare le informazioni
relative allo stato dei dispositivi oltre che permettere la comunicazione esplicita con i
dispositivi stessi. Con i servizi offerti dall’interfaccia di comunicazione di Fig. 3.11 si deve
prevedere la possibilità di catturare e gestire gli eventi al fine di poter sfruttare a pieno la
dinamicità e la reattività dell’AGENZIA AMBIENTALE.
L’implementazione dell’interfaccia dovrà essere ottimizzata al fine di poter propagare le
informazioni tra i dispositivi e il proxy con latenze di tempo trascurabili. Il termine
trascurabile dipende dai casi specifici d’utilizzo di un agente, volendo però progettare
un’interfaccia utilizzabile da qualsiasi agente appartenente all’AGENZIA AMBIENTALE si
richiede che l’implementazione curi il più possibile l’ottimizzazione della velocità di
comunicazione, non conoscendo a priori il dominio di applicazione.
90
3.3.2 Identificazione di servizi efficaci per la comunicazione proxy dispositivi
Mi sono posto il problema di definire un’interfaccia semplice ed efficace in grado di
comunicare con i dispositivi operativi, che compongono l’OP, in modo logico, astraendo
dalla fisicità dei dispositivi stessi. A tal fine ho cercato di identificare una standardizzazione
possibile per l’informazione scambiata tra il proxy e i dispositivi che fosse adeguata per
diversi ambiti applicativi in cui l’AGENZIA AMBIENTALE potrà essere impiegata.
Questo problema non è di facile soluzione. I dispositivi esistenti per l’ubiquitous
computing sono di un’enorme eterogeneità fisica e logica. Parlare di standardizzazione o
generalizzazione senza una fase di test e verifica su un buon numero di possibilità d’impiego
delle scelte fatte può essere fallimentare. Nel capitolo successivo si vedrà in dettaglio con
quale logica di progettazione ho tentato di proporre una soluzione al problema.
91
4
PROGETTO LOGICO DELLA
SOLUZIONE DEL PROBLEMA
L’AGENZIA AMBIENTALE del precedente progetto di tesi [3] non era stata concepita con
scopi specifici per la domotica ma era stata progettata per applicazioni generiche di UC,
inoltre era stata testata solo in ambiente simulato. Per tale motivo, come riscontrato nel
Capitolo 3, l’AGENZIA AMBIENTALE presentava dei problemi per una realizzazione pratica di
un’applicazione reale e per la realizzazione specifica in ambito domotico. Per far fronte a tali
deficit ho dovuto riprogettare alcune parti dell’AGENZIA AMBIENTALE e aggiungerne delle
altre. In questo capitolo verranno presentate tutte le scelte progettuali e implementative che
ho adottato per poter utilizzare l’AGENZIA AMBIENTALE per la realizzazione di
un’applicazione domotica dimostrativa. In particolare nella Sezione 4.1 verrà esposto tutto il
processo di reingegnerizzazione dell’agente con le relative motivazioni per le scelte fatte.
Da questo capitolo in poi il modulo denominato proxy, nel precedente progetto di tesi [3],
verrà rinominato device controller per i motivi che vedremo in seguito.
Nella Sezione 4.2 verrà proposta la soluzione adottata per l’implementazione
dell’interfaccia proxy - dispositivi (ridenominata device controller - dispositivi). Nell’ultima
sezione verranno evidenziate le scelte progettuali fatte per andare incontro ad alcuni degli
aspetti ergonomici evidenziati nel Capitolo 3.
4.1 Reingegnerizzazione dell’agente, reattività e stabilità del sistema
In questo capitolo verrà descritto l’intero progetto logico di reingegnerizzazione per
l’agente puntualizzando l’attenzione su scelte progettuali strettamente legate alle funzionalità
generiche dell’AGENZIA AMBIENTALE e scelte progettuali fatte per la risoluzione di esigenze
pratiche implementative in campo domotico, al fine di far fronte ai requisiti relativi alla
stabilità del sistema e alla reattività a tutti i mutamenti sensibili del contesto.
Verrà descritto come l’agente è in grado di avere la maggior parte delle caratteristiche
auspicate con la semplice introduzione di un processo nel CO e di un nuovo metodo
specializzabile nella progettazione specifica di ogni agente.
Nella riprogettazione dell’agente sono state introdotte delle formalizzazioni per lo sviluppo
dei nuovi agenti che mi hanno permesso di sviluppare un prima reattività (standardizzata per
tutti gli agenti) verso l’agenzia (Sezione 4.1.2) e verso l’utente (Sezione 4.1.3) a fronte di
eventuali malfunzionamenti.
Successivamente mostrerò in che modo ho reso possibile la gestione di più dispositivi per
ogni agente (Sezione 4.1.4) e come tale soluzione al problema può permettere all’agente di
sviluppare delle reattività specifiche (e non solo quelle standardizzate), per ogni dispositivo,
verso l’agenzia (Sezione 4.1.5). Introdurrò inoltre la formalizzazione di un’interfaccia utente,
specializzabile da ogni agente, che permette di sviluppare delle reattività specifiche per ogni
dispositivo anche verso l’interfaccia utente (Sezione 4.1.6).
Infine concluderò con una sezione riassuntiva relativa a tutto il processo di
reingegnerizzazione dell’agente (Sezione 4.1.7) e ai nuovi meccanismi d’interazione
progettati per l’intera AGENZIA AMBIENTALE.
4.1.1 Un processo per il monitoraggio del semiagente operativo
Come detto nell’impostazione del problema di ricerca, nella realizzazione pratica di una
applicazione, e quindi non solo simulata, non si può prescindere dall’incertezza introdotta
dall’utilizzo di tecnologie e reti di connessione che potrebbero subire dei disservizi
temporanei introducendo instabilità in tutto il sistema. A tale scopo, in questa sezione,
tratterò le scelte progettuali fatte per poter far fronte ad eventuali problemi di comunicazione
tra il device controller e i dispositivi fisici (e quindi tra il CO e l’OP).
All’interno del semiagente CO, comune per tutti gli agenti, è stato inserito un processo,
chiamato OperativeAgState. Tale processo si occupa di monitorare lo stato dell’OP e viene
istanziato da un opportuno costruttore del CO, che vedremo meglio in seguito. Poiché il
processo è implementato all’interno del semiagente CO, lo stesso processo sarà presente in
tutti gli agenti e quindi non potrà conoscere a priori l’OP dell’agente. Per poter monitorare il
semiagente OP il processo di monitoraggio dovrebbe disporre però delle informazioni e delle
tecniche specifiche che gli permettano di comunicare e controllare lo stato di tutti i
dispositivi che compongono l’OP. Il processo OperativeAgState, per disporre di tali
93
informazioni, farà riferimento ad un metodo (checkOp) che sarà in grado di ritornare lo stato
complessivo dell’OP in qualsiasi momento gli venga richiesto. Tale metodo l’ho definito nel
CO affinché fosse visibile dal processo OperativeAgState ma, per poter svolgere la propria
funzione dovrà essere specializzato opportunamente dall’oggetto che estenderà il CO
(sfruttando l’overriding del linguaggio JAVA).
Nel riprogettare il semiagente CO, oltre ad avere introdotto al suo interno il processo
OperativeAgState, ho creato dei nuovi costruttori, lasciando però anche tutti i costruttori che
erano già presenti prima del mio intervento, sfruttando così la capacità del linguaggio JAVA
di overloading (per garantire la compatibilità con gli agenti già implementati). Uno dei
costruttori che ho aggiunto, che in seguito vedremo in dettaglio, prevede la possibilità di
attivare il processo OperativeAgState; il vecchio costruttore, ovviamente, non sarà invece in
grado di attivare tale processo.
L’oggetto che estenderà il CO potrà essere l’OP o il device controller (il vecchio proxy),
come spiegato nelle sezioni 3.1.3 e 3.1.4.
4.1.2 Reattività laterale (verso l’agenzia) comune a tutti gli agenti
Proporrò una trattazione più precisa del meccanismo appena descritto evidenziando i
meccanismi reattivi verso l’agenzia, formalizzati allo stesso modo per tutti gli agenti, che
possono essere ottenuti grazie a OperativeAgState e la specializzazione del metodo checkOp.
Prima di tale trattazione fornirò alcuni dettagli della classe Cooperative per introdurre alcuni
termini che verranno utilizzati e per evidenziare alcune modifiche da me introdotte in tale
classe.
Classe Cooperative
Attributo da me introdotto:
• protected boolean uiAgentRunning: tale attributo tiene memoria dello stato
d’esecuzione dell’interfaccia utente dell’agente, per i dettagli rimando alla Sezione
4.1.3.
Costruttore preesistente:
• cooperative(): per i dettagli si rimanda a [3]
94
Costruttori da me introdotti:
• (a) cooperative(String agentName, String agentUrl, int agentPort, long checkTime,
AgUserInterface agUI): si occupa di impostare alcuni attributi della classe
Cooperative, che vedremo meglio in seguito e d’istanziare e mandare in esecuzione
il processo OperativeAgState;
• (b) cooperative(String agentName,String agentUrl,int agentPort, AgUserInterface
agUI): simile al precedente solo che non manderà in esecuzione il processo
OperativeAgState.
Un metodo già esistente:
• boolean connected(): restituisce true se l’agente risulta essere connesso all’agenzia,
altrimenti restituirà false.
Un nuovo metodo introdotto:
• public boolean checkOp(){return true;}: possiede un implementazione banale di
default (return true), infatti è un metodo che andrà specializzato dalla classe che
estenderà Cooperative. Questo metodo è utilizzato dal processo OperativeAgState per
monitorare lo stato dell’OP. Tale metodo dovrà essere implementato in modo da
restituire true se esiste almeno uno tra i dispositivi appartenenti all’OP funzionante
altrimenti dovrà restituire false. Vorrei evidenziare che l’implementazione errata di
tale metodo in fase di implementazione di un nuovo agente potrebbe compromettere il
corretto funzionamento dell’intero agente.
All’interno della classe Cooperative inoltre è presente il processo OperativeAgState
(chiamato Thread in JAVA), già citato e da me creato, istanziabili e all’interno della classe
Cooperative:
• class OperativeAgState extends Thread: Questo è il processo che andrà a chiamare
ciclicamente (ogni checkTime millisecondi) il metodo checkOp, eventualmente
specializzato per monitorare lo stato dei dispositivi. Tale processo inoltre è quello
deputato a gestire una prima reattività comune per tutti gli agenti. Infatti
disconnetterà l’agente dall’agenzia quando i dispositivi non saranno più in grado di
funzionare (checkOp restituisce false), cioè quando l’agente non sarà più in grado di
essere utile in nessun modo all’agenzia. In caso contrario (checkOp restituisce true),
se l’agente non è già connesso, tenterà di connetterlo all’agenzia.
95
OP estende il CO
Nel caso semplice in cui sia l’OP ad estendere il CO e cioè nel caso in cui CO e OP siano
entrambi scritti in JAVA e possano essere in esecuzione sullo stesso sistema, il processo
OperativeAgState sarà superfluo, infatti CO e OP saranno in esecuzione come lo stesso
oggetto JAVA e dunque la comunicazione all’interno dello stesso oggetto è sicuramente
garantita. In tal caso si potrà istanziare l’OP (estensione del CO) utilizzando il costruttore
della super classe (Cooperative) da me creato e indicato con (b), (utilizzando il costruttore (a)
tutto funzionerebbe comunque ma si avrebbe un processo inutile in esecuzione) che si
occuperà solo di costruire l’oggetto, con tutti i valori opportuni degli attributi e di connettere
l’agente all’agenzia, se un’agenzia viene trovata, altrimenti rimarrà in attesa finché la
connessione all’agenzia non sarà possibile (vedi Fig. 4.2). Nel caso in cui il processo
OperativeAgState non venga utilizzato il metodo checkOp potrà anche non essere
specializzato lasciando l’implementazione di default presente in Cooperative (CO)
Chiamata al
costruttore
cooperative (b)
Agente connesso?
(connected = true ?)
No
Connetti
all’agenzia
Figura 4.2 Descrizione schematica del comportamento dell’agente nel caso in cui si utilizzi il costruttore (b)
Device controller estende il CO
Nel caso diverso e molto più comune nella pratica reale, in cui il semiagente OP sia
implementato utilizzando una tecnologia differente da quella usata per implementare il CO,
sarà il device controller ad estendere il CO (sostituendosi all’OP). Nel momento
dell’estensione del CO il device controller si dovrà occupare di specializzare il metodo
checkOp con l’implementazione opportuna (si veda Sezione 4.1.4). Per istanziare il device
controller si potrà utilizzare il costruttore della super classe Cooperative indicato con (a), che
manderà in esecuzione il processo OperativeAgState. Tale processo inizierà ad utilizzare il
metodo checkOp ad intervalli regolari definiti in un parametro del costruttore (checkTime).
Se checkOp restituirà il valore true (nel caso almeno uno dei dispositivi sia in grado di
fornire un servizio operativo), il semiagente CO tenterà automaticamente la connessione
96
all’agenzia per mezzo del processo OperativeAgState e rimarrà connesso finché checkOp
restituirà il valore true (Fig. 4.3). In questo modo l’agente verrà sconnesso dall’agenzia
quando non sarà più in grado di fornire alcuna espansione finale diminuendo il carico sul
maggiordomo che dovrà gestire dunque solo gli agenti realmente utilizzabili operativamente.
C’è da precisare che l’agente fin dal momento della creazione tenterà la connessione
all’agenzia nel caso in cui almeno uno dei dispositivi sia disponibile. Con il preesistente
costruttore della classe Cooperative veniva lasciato invece al programmatore degli agenti la
decisione di connettersi in maniera esplicita con la chiamata al metodo opportuno (connetti
[3]) e di gestire le eccezioni e le attese nel caso in cui l’agente non riuscisse a connettersi con
l’agenzia. La soluzione da me proposta è giustificata dal fatto che al momento che un agente
viene creato, vi è la volontà implicita, di chi lo ha eseguito, che l’agente tenti di connettersi
all’agenzia e inizi a funzionare in cooperazione con gli altri agenti (nel caso in cui il device
controller, sia in grado di fornire i servizi necessari affinché l’agente venga utilizzato).
Chiamata al
costruttore
cooperative (a)
Istanza ed
esecuzione di
OperativeAgState
checkOp()
false
true
Agente connesso?
(connected = true ?)
false
Connetti
all’agenzia
true
false
Agente connesso?
(connected = true ?)
true
Disconnetti
dall’agenzia
Figura 4.3 Descrizione schematica del comportamento reattivo laterale dell’agente nel caso in cui si utilizzi il
costruttore (a)
97
Rimane comunque la possibilità per l’agente di mettere a disposizione o no determinati
servizi e informazioni (ad esempio privati) e di decidere eventualmente di sconnettersi
(chiamando il metodo disconnetti [3]) o riconnettersi esplicitamente (metodo connetti [3]).
Ho deciso di seguire la strada descritta per avere una strutturazione più precisa del
comportamento comune a tutti gli agenti. Indipendentemente da altri componenti reattivi
specifici progettati per ogni singolo agente (che vedremo nelle sezioni successive), ho
cercato d’introdurre una omogeneità di reattività minima. La soluzione proposta porterà
anche ad una diminuzione dei tempi di risposta del maggiordomo e un limitato
peggioramento nell’efficacia di pianificazione. Infatti, va evidenziato che la scelta di
sconnettere l’agente quando non è più operativo potrebbe portare ad una penalizzazione
qualitativa e quantitativa della conoscenza distribuita; difatti, sconnettendo l’agente, il
maggiordomo non sarà più in grado di raggiungere la conoscenza acquisita dall’agente
sconnesso. In un sistema domotico non vi è però un grande interscambio di dispositivi che
entrano ed escono dalla rete (dall’agenzia) frequentemente, migrando da un sistema
computazionale ad un altro (da un’agenzia ad un’altra). Raramente accade dunque che un
agente abbia acquisito della conoscenza in più (espansioni intermedie) che il maggiordomo
non abbia già acquisito dall’uomo. Inoltre, come già detto, ad ogni esecuzione di un piano il
maggiordomo distribuisce tutte le espansioni intermedie a tutti gli agenti connessi. In un
sistema domotico si arriverebbe quindi, in brevissimo tempo, ad un alto grado di ridondanza
della conoscenza, dove le espansioni intermedie acquisite da un agente sono con un’altissima
probabilità anche presenti in altri agenti connessi. Sconnettendo un agente non più operativo
la perdita della conoscenza è trascurabile, invece il carico computazionale sostenuto dal
maggiordomo diminuirà. Infatti non dovrà più gestire e interrogare ad ogni pianificazione un
agente che non sarà in grado di fornirgli alcun servizio operativo (espansione finale).
L’agente sconnesso non sarà neanche più in grado di fornire al maggiordomo della
conoscenza che quasi certamente riuscirà però ad acquisire da altri agenti presenti
nell’agenzia.
Sconnettere un agente che non è più operativo è stata quindi una scelta dettata più da aspetti
specifici legati alla domotica che da aspetti generali d’UC. Maggior velocità di risposta a
fronte di una limitatissima minor efficacia. L’ottimizzazione dei tempi di risposta era uno
degli aspetti auspicati dall’impostazione del problema di ricerca.
Per completezza di seguito andrò a descrivere il significato di alcuni termini e parametri
introdotti non ancora trattati.
98
agentName: è il nome con cui l’agente verrà riconosciuto dall’agenzia, tale parametro non
era presente nel vecchio costruttore e il nome dell’agente veniva fornito al momento della
connessione esplicita all’agenzia. Poiché con i nuovi costruttori da me introdotti la
connessione è automatica al momento della creazione dell’agente vi è il bisogno di passare,
fin dalla costruzione dell’oggetto CO, il nome dell’agente. Lo stesso vale anche per agentUrl
e agentPort.
Per quanto riguarda il parametro agUI (di tipo AgUserInterface) si rimanda alla sezione
successiva.
4.1.3 Reattività superiore (verso l’interfaccia utente) comune a tutti gli
agenti
Abbiamo visto, nelle sezioni precedenti, come il processo OperativeAgState del CO,
comune a tutti gli agenti, grazie alla formalizzazione del metodo checkOp, potesse
implementare una semplice ma importante reattività laterale verso l’agenzia, standardizzata
per tutti gli agenti.
Nella versione degli agenti data in [3] la progettazione dell’interfaccia utente non era stata
formalizzata e la si riteneva implicitamente parte del semiagente OP. Io ho preferito
distinguere nettamente l’interfaccia utente dal semiagente OP, in quanto, secondo me, questi
due moduli dell’agente hanno scopi funzionali nettamente diversi. Infatti l’OP è destinato ad
interagire con l’ambiente mentre l’interfaccia utente è destinata all’interazione con l’utente
(che può essere un qualsiasi utilizzatore dell’agente). Inoltre la formalizzazione
dell’interfaccia utente, che descriverò di seguito, mi ha permesso di implementare una
reattività comune a tutti gli agenti anche verso l’utente e non solo verso l’agenzia, sfruttando
il processo OperativeAgState del CO.
La formalizzazione per la progettazione dell’interfaccia utente è stata ottenuta creando un
oggetto astratto (AgUserInterface) che ogni agente dovrà implementare ed estendere per
gestire l’interazione con l’utente.
Di seguito in dettaglio l’oggetto AgUserInterface.
public abstract class AgUserInterface{
public void startUserInterface(){}
public void stopUserInterface(){}
}
99
Sono stati definiti due metodi standard che l’interfaccia utente di ogni agente deve
possedere e implementare: startUserInterface e stopUserInterface.
•
startUserInterface: questo metodo dovrà implementare tutte le operazioni che si
vogliono svolgere al momento dell’inizio dell’esecuzione dell’interfaccia utente
(normalmente operazioni di inzializzazione).
•
stopUserInterface: questo metodo dovrà implementare tutte le operazioni che si
vogliono svolgere al momento della terminazione dell’esecuzione dell’interfaccia
utente.
Chiamata al
costruttore
cooperative (a)
Istanza ed
esecuzione di
OperativeAgState
true
checkOp
Interfaccia utente in
esecuzione?
(uiAgentRunning = true ?)
false
startUserInterface
false
true
false
Interfaccia utente in
esecuzione?
(uiAgentRunning = true ?)
true
stopUserInterface
Figura 4.4 Descrizione schematica del comportamento reattivo superiore dell’agente nel caso in cui si utilizzi
il costruttore (a)
100
Avendo definito nell’interfaccia i due metodi astratti appena descritti, OperativeAgState
può essere a conoscenza della struttura minima dell’interfaccia utente di ogni agente. Infatti
nel costruttore (a) descritto prima, fra i parametri che il device controller deve passare al
costruttore di Cooperative vi è anche un riferimento alla super classe dell’interfaccia utente
specializzata dell’agente (agUI di tipo AgUserInterface). OperativeAgState potrà intervenire
così sui metodi di startUserInterface e stopUserInterface della interfaccia utente
indipendentemente dall’agente che li specializza.
Così come OperativeAgState è in grado di svolgere operazioni reattive verso l’agenzia
(sconnettendo o riconnettendo l’agente a seconda del valore restituito da checkOp), grazie
alla formalizzazione dell’interfaccia utente proposta, è anche in grado di sviluppare una
reattività superiore, interrompendo l’esecuzione o rimettendo in esecuzione l’interfaccia
utente a seconda della capacità (checkOp restituisce true) o non (checkOp restituisce false) di
svolgere compiti operativi. In questo ultimo caso l’interfaccia utente non avrebbe più motivo
di esistere (vedi Fig. 4.4).
La sola reattività esposta in questa sezione non è sufficiente per la gestione adeguata
dell’interfaccia utente. Infatti l’interfaccia utente deve essere reattiva separatamente per ogni
specifico dispositivo e sensibile a diversi tipi di mutamento del contesto (possibilmente a tutti
quelli espressi nella Sezione 3.2.1). Vedremo nelle successive sezioni come ciò può avvenire.
La reattività minima superiore (come quella laterale descritta precedentemente),
standardizzata per tutti gli agenti, contribuisce all’omogeneità della piattaforma multiagente
messa a disposizione dall’AGENZIA AMBIENTALE. Per altri dettagli su come è possibile
utilizzare l’interfaccia utente si veda la Sezione 4.3.
4.1.4 Gestione di più dispositivi per ogni agente
Per far fronte all’esigenza di dover gestire più dispositivi fisici per ogni agente ho pensato
di utilizzare la soluzione proposta in Fig. 3.9, cioè di costruire un device controller in grado
di poter gestire e monitorare lo stato di più dispositivi. Questo è uno dei motivi per cui il
proxy è stato rinominato da me device controller, infatti, tale modulo non si limiterà ad
essere un semplice intermediario per le informazioni scambiate, ma sarà in grado di svolgere
dei compiti reattivi specifici per ogni dispositivo.
Come visto, checkOp è un metodo chiamato ciclicamente dal processo OperativeAgState
del CO a intervalli di tempo personalizzabili, tale metodo, se implementato opportunamente,
può essere sfruttato per implementare un comportamento reattivo come conseguenza di
101
eventuali malfunzionamenti dei dispositivi (implementando ad esempio una sorta di ping sui
dispositivi).
Il checkOp, ogni volta che sarà chiamato dal processo OperativeAgState, oltre ad accertarsi
del buono (o cattivo) stato dei dispositivi e quindi restituire true (o false), potrà ad ogni
chiamata svolgere delle funzioni specifiche per reagire adeguatamente ai malfunzionamenti
di ogni singolo dispositivo. Le reazioni da sviluppare saranno anche in questo caso di due
tipi: reattività superiore e reattività laterale.
4.1.5 Reattività specializzata laterale
Come anticipato nella Sezione 4.1.4, una adeguata specializzazione del metodo checkOp
permette di sviluppare anche reazioni specifiche verso l’agenzia (e verso l’interfaccia utente
come vedremo nella sezione successiva) per ogni dispositivo collegato. Infatti checkOp,
specializzato dal device controller, ha le potenzialità per poter richiedere al CO di pubblicare
o meno, verso l’agenzia (reattività laterale), determinati servizi.
Il CO memorizza i servizi che è in grado di mettere a disposizione (espansioni finali) nella
sua base della conoscenza tramite il metodo addEspansioneFinale.
Il CO notifica al maggiordomo (e quindi all’intera agenzia) i servizi che è in grado di
portare a termine (presenti nella sua base della conoscenza) al momento della connessione
all’agenzia. Implementando il checkOp in modo che elimini le espansioni finali, non
adeguate allo stato operativo dei dispositivi, dalla base di conoscenza dell’agente, è possibile
fare in modo che il maggiordomo veda solo i servizi che realmente l’agente potrà portare a
termine con i dispositivi a disposizione. Si sarà così realizzata un reattività specifica laterale.
Tale reattività sarà dunque totalmente controllata dall’implementazione del metodo checkOp.
Per chiarire il meccanismo reattivo laterale specializzabile dal checkOp riporto un semplice
esempio. Si immagini un agente deputato al controllo di due centraline per la gestione
dell’illuminazione. Inizialmente entrambe le centraline sono disponibili e quindi l’agente, al
momento della connessione, pubblicherà al maggiordomo di essere in grado di accendere e
spegnere le luci appartenenti ad entrambe le centraline. In un secondo momento, checkOp,
chiamato periodicamente da OperativeAgState, si rende conto che una delle due centraline
non è più raggiungibile. Il metodo checkOp, se implementato adeguatamente, farà in modo di
eliminare dalla base di conoscenza dell’agente tutti i servizi resi possibili (espansioni finali)
tramite la centralina non più utilizzabile. Come è stato anticipato prima, il CO comunica al
maggiordomo le proprie espansioni finali all’atto della connessione, quindi, per poter
aggiornare il maggiordomo della nuova base di conoscenza relativa alle espansioni finali, il
102
metodo checkOp dovrà occuparsi di sconnettere e riconnettere l’agente all’agenzia. Questo
metodo artificioso di connettere e sconnettere l’agente dall’agenzia è dovuto al fatto che
nell’AGENZIA AMBIENTALE non era stata prevista la possibilità di variare le espansioni finali
durante l’esecuzione dell’agente. Non prevedendo infatti la possibilità che si verificassero dei
malfunzionamenti tra il CO e l’OP, non era stata evidenziata la necessità di aggiornare le
espansioni finali. L’AGENZIA AMBIENTALE prevede che si possano aggiungere e modificare
solo le espansioni intermedie (che consistono nella nuova conoscenza acquisita dall’agente
durante la sua cooperazione e interazione con l’agenzia).
4.1.6 Reattività specializzata superiore
Allo stesso modo descritto nella sezione precedente è realizzabile dal checkOp anche una
reattività specifica verso l’interfaccia utente.
Il checkOp, specializzato dal device controller, ha le potenzialità per poter effettuare
qualsiasi intervento anche sull’interfaccia utente, sempre che si presti attenzione, durante
l’implementazione del device controller, a mantenere un riferimento verso l’interfaccia
utente implementata.
La reattività verso l’interfaccia utente non dovrà però limitarsi a prendere in considerazione
solo le informazioni contestuali relative ai malfunzionamenti, ma dovrà essere in grado di
tenere aggiornata l’interfaccia su tutti gli eventi sensibili e interessanti per l’utente, come
manifestato nell’impostazione del problema di ricerca nella Sezione 3.2.2.
Questa reattività può essere svolta dal device controller sfruttando i servizi di notifica degli
eventi messi a disposizione dall’interfaccia da me implementata tra il device controller e i
dispositivi, che vedremo in dettaglio nella Sezione 4.2.
4.1.7 Struttura logica complessiva
Nella Fig. 4.5 ho messo in evidenza come nell’AGENZIA AMBIENTALE possono coesistere
sia agenti sviluppati con la struttura proposta in [3] che i nuovi agenti progettati con la
struttura da me proposta. Inoltre ho evidenziato le interazioni superiori e laterali esistenti.
Nella Fig. 4.6 ho riportato lo schema logico di un agente (con parti dell’OP implementate
con tecnologie differenti rispetto a quelle usate per il CO) e delle sue interazioni laterali e
superiori.
103
AGENZIA AMBIENTALE
Maggiordomo
Cooperazione
CO
Cooperazione
Interazione
laterale
OP
Interazione
laterale
Interfaccia
utente
Agente A
Agente C
CO
OP
Interazione
superiore
Interfaccia
utente
CO
OP
Interfaccia
utente
Agente B
Agente D
CO
Interfaccia
utente
Proxy (OP)
Interfaccia
utente
CO
Device controller (OP)
BusControllerInterface
Dispositivi
Dispositivi
OP
(con tecnologie differenti dal CO)
A e B sono sviluppati con la struttura proposta in [3].
C e D sono implementati con la struttura da me proposta.
A e C implementano l’OP con la stessa tecnologia usata per il CO.
B e D implementano l’OP con tecnologie differenti da quella usata per il CO.
Figura 4.5 Visione complessiva dell’AGENZIA AMBIENTALE
104
I moduli BusControllerInterface e OpController verranno descritti nella Sezione 4.2. Per
gli altri moduli implementati precedentemente al mio progetto di tesi si faccia riferimento a
[3].
Agente
java.rmi.Remote
estende
CooperativeInterface
estende
Device controller interface
implementa
implementa
CO (Cooperative)
AgUserInterface
startUserInterface()
stopUserInterface()
connetti ()
disconnetti()
OperativeAgState
estende
checkOp()
estende
Device controller (OP)
Interfaccia utente
connetti()
disconnetti()
startUserInterface()
stopUserInterface()
Altri metodi facoltativi e
specifici per l’agente
implementato
checkOp()
Base della
conoscenza
OperativeAgState
OpController
implementa
BusControllerInterface
Dispositivi (OP)
(qualsiasi tecnologia Hw Sw)
Nuovi elementi rispetto a [3]
Reattività specializzate
Reattività comuni a tutti gli agenti
Figura 4.6 Schema complessivo della struttura di un agente e delle sue possibili reazioni
105
4.2 Progettazione logica dell’interfaccia device controller - dispositivi
Nelle Sezione 3.3, relativa all’impostazione del problema di ricerca, si è posto il problema
di identificare un interfaccia di comunicazione tra il proxy (diventato ora device controller) e
i dispositivi. La soluzione a questo problema verrà data in questa sezione.
In particolare nella Sezione 4.2.1 verrà motivata la scelta fatta relativa alla tecnologia
impiegata per la comunicazione tra il device controller e i dispositivi.
Nella Sezione 4.2.2 verrà descritto come è stato possibile ottenere la trasparenza dalla
tecnologia utilizzata per comunicare con i dispositivi.
Nella Sezione 4.2.3 verranno descritti i servizi offerti dall’interfaccia di comunicazione tra
il device controller e i dispositivi. Verrà descritto come i servizi identificati possano essere in
grado di far comunicare il device controller con un ampia classe di tipologie di dispositivi.
Nella Sezione 4.2.4 descriverò come fra i servizi offerti dall’interfaccia di comunicazione
tra il device controller e i dispositivi vi sia un servizio in grado di gestire gli eventi.
Nella Sezione 4.2.5, infine, si descriverà l’implementazione che ho dato all’interfaccia di
comunicazione tra il device controller e i dispositivi relativa alla tecnologia scelta.
4.2.1 LON, una tecnologia adeguata per comunicare con i dispositivi
Come risulta dalla tabella riassuntiva relativa alle tecnologie per la domotica (Tab. 2.2), sia
LON che HAVI posseggono tutte le caratteristiche auspicate nell’impostazione del problema
di ricerca (plug & play, gestione degli eventi, connessione stabile e veloce, tabella di lookup).
Anche KNX, per il mio progetto, sarebbe una tecnologia adeguata, infatti l’unico servizio non
disponibile rispetto agli altri due è la tabella dei servizi che però non è stata sfruttata nel mio
progetto.
Una differenza sostanziale tra HAVI e LON è la velocità di scambio dati. HAVI infatti
prevede che i segnali audio e video siano scambiati in digitale e dunque supporta un velocità
di comunicazione adeguata per uno streaming audio-video. LON sopperisce alla sua più bassa
velocità di scambio dati prevedendo la possibilità di trasportare l’audio e il video con segnali
analogici con l’ausilio di opportune centraline di comando.
La maggior parte dei dispositivi esistenti sul mercato, necessari in un’abitazione, sono
interfacciabili sia con tecnologia LON che HAVI che KNX. La scelta della tecnologia per la
comunicazione con dei dispositivi reali è caduta su LON in quanto lo sviluppo di tutto il
progetto di questa tesi è stato portato a termine nell’ambito di uno stage presso l’azienda
TECHSELESTA [77] che adotta, per l’implementazione dei propri sistemi, tecnologia LON.
106
4.2.2 Astrazione dalla tecnologia scelta per la comunicazione con i
dispositivi
Nella progettazione dell’interfaccia di comunicazione tra il device controller e i dispositivi
ho cercato di astrarre dalla tecnologia impiegata. Un’interfaccia che rende trasparente al
device controller la tecnologia adottata per la comunicazione con i dispositivi facilita la
portabilità e la riusabilità degli agenti su diverse tecnologie. La riusabilità è uno dei principi
fondamentali provenienti dall’ingegneria del software. Tale principio in domotica assume
una grossa importanza visto il sostanzioso numero di standard e tecnologie differenti presenti
oggi sul mercato per l’automazione domestica. Una formalizzazione di un’interfaccia in
grado di rendere trasparente la tecnologia che verrà impiegata per la comunicazione con i
dispositivi fornisce, inoltre, all’intera AGENZIA AMBIENTALE, una maggiore omogeneità di
progettazione.
Al fine di ottenere la trasparenza descritta, ho costruito un’interfaccia astratta di
comunicazione tra il device controller e i dispositivi astratta (BusControllerInterface) che
dovrà essere implementata da ogni agente a seconda della tecnologia adottata per la
comunicazione con i dispositivi.
Nella sezione successiva mi occuperò di descrivere quali sono i servizi che tale interfaccia
mette a disposizione dell’agente. Tali servizi, come vedremo, ho cercato di renderli il più
generici e plasmabili possibili al fine di poter realmente utilizzare tale interfaccia con tutti gli
agenti e i rispettivi dispositivi specifici.
4.2.3 Servizi offerti dall’interfaccia di comunicazione device controller dispositivi
I dispositivi possono essere costituiti sia da componenti che agiscono direttamente
sull’ambiente (attuatori) che da quelli che rilevano informazioni dall’ambiente (rilevatori).
Gli attuatori e i rilevatori possono essere distinti in due categorie: quelli di tipo acceso/spento
(o rileva/non rileva) che trattano informazioni in modo binario e quelli che vengono chiamati
in domotica di tipo dimmer che attuano una azione (nel caso degli attuatori) o rilevano una
informazione (nel caso dei rilevatori) in relazione a dei valori riferiti ad una precisa scala di
riferimento. I componenti dimmer non si limitano quindi a utilizzare solo un’informazione di
tipo binaria.
Di seguito riporto due esempi che chiariscono la distinzione, da me proposta, in
componenti di tipo acceso/spento e di tipo dimmer.
107
La centralina di gestione di più punti luce può essere provvista di due tipi di attuatori, quelli
di tipo acceso/spento (ad esempio dei relè) per accendere o spegnere dei punti luce e quelli di
tipo dimmer (ad esempio dei potenziometri controllabili elettronicamente) in grado di
regolare l’intensità luminosa. A seconda del tipo di comando che gli si vorrà impartire si
utilizzerà una strategia binaria oppure no.
Un altro esempio è dato dalla centralina che gestisce le schermature in grado di posizionare
su diversi livelli l’apertura di una schermatura (informazione quantitativa riferita ad una scala
di valori) e al contempo di rilevare se una finestra è aperta o meno (informazione binaria).
Da questi due esempi e da molti altri da me incontrati in fase di ricerca in ambito domotico,
mi sento di poter affermare che la suddivisione dei rilevatori e degli attuatori nelle due
tipologie acceso/spento e dimmer, mi ha permesso di progettare un’interfaccia in grado di
gestire la comunicazione con la quasi totalità dei dispositivi presenti in una casa e con buone
probabilità l’interfaccia identificata la si potrà utilizzare anche per la comunicazione con
innumerevoli dispositivi degli altri domini applicativi.
La categorizzazione relativa ai componenti dei dispositivi esposta mi ha portato ad
identificare una possibile standardizzazione relativa allo scambio d’informazioni tra il device
controller e i dispositivi.
Per la comunicazione esplicita dal device controller verso i dispositivi saranno sufficienti
solo due servizi di scrittura (uno per i componenti di tipo acceso/spento e uno per i
componenti di tipo dimmer) e due servizi di lettura.
•
setOnOff (boolean onOff, String deviceName, String onOffName);
onOff=1 (onOff=0) se si desidera mettere a on (acceso) il componente onOffName del
dispositivo deviceName.
•
boolean getOnOff (String deviceName, String onOffName);
restituisce true se il componente onOffName del dispositivo deviceName è nello stato
di on altrimenti restituise false.
•
setDimmer (real value, String deviceName, String dimmerName);
il componente dimmerName del dispositivo deviceName verrà settato con il valore
value.
•
real getDimmer (real value, String deviceName, String dimmerName);
restituisce il valore assunto dal componente dimmerName del dispositivo
deviceName.
108
I servizi con prefisso set servono per impartire dei comandi, mentre i servizi con il prefisso
get servono per acquisire delle informazioni. A seconda che si tratti di una componente di
tipo dimmer o acceso/spento si utilizzeranno i servizi rispettivamente con suffisso Dimmer
oppure OnOff.
Per utilizzare i servizi elencati il device controller dovrà conoscere solo il tipo di
componenti che compongono il dispositivo sul quale vorrà agire (dimmer o acceso/spento) e
dovrà conoscere il nome del dispositivo (l’indirizzo fisico del dispositivo sulla rete è
trasparente al device controller).
4.2.4 Gestione degli eventi
L’architettura delle agenzie è in grado di gestire anche una comunicazione ad eventi fra i
diversi agenti e gli eventi generati dagli agenti corrispondono normalmente ad eventi
accaduti nell’ambiente e quindi captati o generati dai dispositivi. Quindi un’interfaccia
completa e adeguata per la comunicazione con i dispositivi non può prescindere da tale
prerogativa.
Per fornire un servizio di comunicazione basato sulla gestione degli eventi ho pensato di
creare il seguente servizio, unico per qualsiasi tipologia delle componenti.
•
addRawUpdateListener (String deviceName, String componentName, NvListener l)
Questo servizio permette al device controller di sottoscriversi (e fornire il comportamento
desiderato tramite il listener) per la notifica di un evento generato come conseguenza al
cambiamento di stato di un componente (componentName) di uno specifico dispositivo
(deviceName). Se utilizzato in sequenza con uno dei servizi con prefisso get permette di
rilevare il nuovo valore sul componente in caso di cambiamento di stato.
La gestione degli eventi inoltre permette la comunicazione diretta tra dispositivi e il device
controller tramite il paradigma publish-subscribe.
4.2.5 Implementazione del BusControllerInterface per il bus LON
Affinché i servizi messi a disposizione dall’interfaccia device controller - dispositivi
(BusControllerInterface) possano essere implementati per il bus di comunicazione messo a
disposizione dalla tecnologia da me scelta per la comunicazione con i dispositivi (LON), è
necessario fornire un algoritmo in grado di interpretare ed eseguire fisicamente dei comandi
logici (come setOnOff o getDimmer). In questa tesi tale implementazione è stata resa
109
possibile leggendo e scrivendo opportuni valori sulle variabili di rete, pubblicate secondo lo
standard LON, dagli algoritmi implementati su ogni dispositivo presente sul bus (per i dettagli
relativi alla pubblicazione delle variabili di comunicazione tra i dispositivi e il bus LON si
faccia riferimento all’Appendice A nella sezione relativa alla tecnologia LON). C’è da
precisare che gli algoritmi sviluppati su ogni dispositivo sono stati implementati nell’ambito
di un altro progetto di tesi [79] parallelo al mio. Al fine di poter fornire un’implementazione
unica del BusControllerInterface per tutti i dispositivi presenti sulla rete LON utilizzata, io e
l’autore della tesi [79] abbiamo progettato e formalizzato una standardizzazione, che andrò di
seguito a descrivere, relativa all’implementazione degli algoritmi presenti sui singoli
dispositivi LON.
Abbiamo deciso che ogni dispositivo deve pubblicare obbligatoriamente, per poter
funzionare con l’implementazione da me realizzata (in una classe chiamata OpController,
vedi Fig. 4.6) per l’interfaccia di comunicazione tra il device controller e i dispositivi, una
variabile d’interfaccia (nvoInterface). Tale variabile conterrà tutte le informazioni sufficienti
per descrivere con quali, delle variabili di rete pubblicate dal dispositivo, si dovrà
comunicare per impartire fisicamente i comandi logici richiesti dal device controller. La
nvoInterface, presente su ogni dispositivo, dovrà contenere quindi informazioni relative ad
ogni componente di cui il dispositivo è fatto. In particolare per ogni componente dovrà
specificare:
•
nome del componente;
•
tipologia del componente (acceso/spento o dimmer);
•
nome della variabile pubblicata sulla quale scrivere o leggere per poter rilevare
(leggendo da una variabile) o attuare (scrivendo su una variabile).
Nel caso si tratti di un componente di tipo dimmer la nvoInterface dovrà inoltre fornire:
•
il massimo valore che può assumere la variabile (si è scelto per convenzione che il
valore minimo debba essere sempre zero).
Per identificare se il componente è un rilevatore o un attuatore, quindi sapere se utilizzare
rispettivamente i servizi con prefisso get o set (leggere o scrivere una variabile), abbiamo
fatto riferimento alla standardizzazione proposta da ECHELON (proprietario della tecnologia
LON) relativa ai nomi delle variabili da pubblicare. ECHELON stabilisce infatti che le variabili
che possono essere scritte dovranno utilizzare il prefisso nvi (ad esempio nviLight[1]),
mentre quelle che possono essere lette dovranno utilizzare il prefisso nvo (come, ad esempio,
110
la nvoInterface) Con la tecnologia LON non si può pubblicare una variabile che può essere sia
letta che scritta.
Per chiarire e dettagliare meglio il principio di funzionamento di OpController e del ruolo
della variabile nvoInterface, di seguito riporto un semplice esempio.
Si immagini di avere come dispositivo (di nome LightControl) una centralina in grado di
gestire una luce a relè (acceso/spento) e una luce regolabile in intensità (dimmer). La
variabile nvoInterface pubblicata dal dispositivo conterrà la seguente stringa:
•
nvoInterface=”DvState,OnOff,nvoState;light1,OnOff,nviLight[1];light1,OnOff,nvo
Light[1];light2,Dimmer,nviLight[2],200; light2,Dimmer,nvoLight[2],200”.
Tale variabile, se analizzata correttamente, informa che il dispositivo è costituito da due
componenti di nome: light1 e light2, inoltre specifica che light1 è di tipo acceso/spento
(OnOff) mentre light2 è di tipo dimmer. Dalla nvoInterface si evince, ad esempio, che per
poter accendere (mettere a ON) il componente light1 si dovrà agire sulla variabile
nviLight[1] (abbiamo scelto per convenzione che il valore 1 indica acceso e il valore 0 indica
spento). Per poter invece rilevare lo stato di light1 si dovrà leggere il valore della variabile
nvoLight[1] che avrà valore 1 se il componente light1 è acceso o 0 viceversa.
Abbiamo pensato, per permettere al device controller di effettuare il ping sui dispositivi
tramite il metodo checkOp, di considerare ogni dispositivo composto da un componente
(virtuale) che abbiamo chiamato DvState. Lo stato di tale componente sarà settato
dall’algoritmo presente sui dispositivi (settando la rispettiva variabile di rete che fa
riferimento a tale componente nvoState). DvState verrà settato come acceso (nvoState=1) se
il dispositivo sta funzionando correttamente oppure come spento in caso contrario
(nvoState=0). Se DvState risulta acceso (il servizio getOnOff chiamato per DvState restituisce
true) allora significa che il dispositivo sta funzionando correttamente. Se DvState risulta
spento (il servizio getOnOff restituisce false) significa che il dispositivo non è in grado di
funzionare correttamente. Nel caso in cui il dispositivo non sia più raggiungibile sulla rete,
neanche la sua variabile nvoInterface lo sarà più. Ma in tal caso il device controller sarà in
grado di rendersi conto che il dispositivo non è più operativo in quanto non riesce ad
accedere alla sua variabile nvoInterface, quindi, anche senza leggere lo stato del componente
DvState il device controller farà restituire false al servizio getOnOff relativo a DvState.
OpController, leggendo la nvoInterface del dispositivo interessato dalla richiesta di un
servizio con prefisso get o set e sfruttando un apposito algoritmo (dettagliato con
111
pseudocodice in Fig. 4.7), sarà in grado di convertire i comandi logici in comandi fisici
adeguati per la tecnologia LON e per l’algoritmo implementato sul dispositivo.
Si supponga ad esempio che il device controller voglia accendere la luce light1 sul
dispositivo LightControl, di conseguenza chiamerà il metodo:
setOnOff (true, LightControl, light1).
Variabili globali di OpController.
String componentType
// conterrà il tipo di componente: OnOff o dimmer
String nvName // conterrà il nome della variabile sulla quale agire per interagire con componentName
Real valueRef // conterrà il valore massimo della scala di riferimento nel caso di componente tipo dimmer
Algoritmo per l’analisi della nvoInterface in pseudocodice (implementato nel metodo chiamato varRequest).
boolean varRequest (String nvoInterface, String componentName)
{inizio
- Scandisci nvoInterface fino a che non viene trovato una sottostringa uguale a componentName o
fino alla fine della stringa
- se non si è alla fine della stringa allora:
// il componente è stato trovato
- leggi i caratteri successivi a “,” fino al successivo carattere “,”
- memorizza i caratteri letti in componentType
- se componetType=”OnOff” allora:
- leggi i caratteri successivi a “,” fino al successivo carattere “;”
- memorizza i caratteri letti in nvName
- altrimenti
- leggi i caratteri successivi a “,” fino al successivo carattere “,”
- memorizza i caratteri letti in nvName
- leggi i caratteri successivi a “,” fino al successivo carattere “;”
- trasforma i caratteri letti in valore numerico di tipo Real
- memorizza il valore in valueRef
- return true
// il componente è stato trovato
// e i valori interessati memorizzati
- altrimenti
return false
// se si è arrivati alla fine della stringa
// il componente non è stato trovato
} fine
Figura 4.7 Pseudocodice descrittivo dell’algoritmo utile all’OpController per analizzare le variabili nvoIntefrace
112
L’OpController, che contiene l’implementazione del servizio richiesto (setOnOff), andrà
inizialmente a leggere la variabile nvoInterface, presente sul dispositivo LightControl,
successivamente, la analizzerà con l’algoritmo di Fig. 4.7, e sarà così in grado di sapere che
per portare a termine il compito richiesto dovrà agire sulla variabile nviLight[1] e dunque,
per le convenzioni adottate, scriverà il valore 1 sulla variabile nviLight[1]. Se tutto è andato a
buon fine il dispositivo LightControl accenderà la luce (light1).
L’OpController agirà in modo simile anche per gestire il servizio relativo alla gestione
degli eventi (addRawUpdateListener). Dopo aver identificato la variabile sulla quale dovrà
agire, invece di scrivere o leggere dei valori gli assocerà un event listener.
Per svolgere qualsiasi operazione sulle variabili presenti nei dispositivi (leggere, scrivere e
associare degli event listener) ho utilizzato una delle librerie JAVA [74], messe a disposizione
dalla ECHELON, in grado di comunicare con un modulo presente sul bus LON chiamato LNS
SERVER che è in grado d’interfacciarsi con tutte le variabili pubblicate dai dispositivi (vedi
Fig. 4.8)
Interfaccia
utente (JAVA)
CO (JAVA)
Device controller (JAVA)
OpController (JAVA)
Librerie
JAVA
LNS SERVER
Scheda di rete
proprietaria
Bus LON
nvi 1
...
nvi n
Dispositivo 1
(Sw: Neuron C)
nvo 1
...
nvo n
...
nvi 1
...
nvi n
Dispositivo n
(Sw: Neuron C)
nvo 1
...
nvo n
Figura 4.8 Dettaglio dell’infrastruttura multi livello di un agente con i dispositivi comunicanti su bus LON
113
4.3 Dettagli implementativi attenti ad alcuni aspetti ergonomici in ambito
domotico
Ogni agente deve garantire, quando il proprio utilizzatore è l’uomo, l’accesso a tutti i
servizi messi a disposizione dal semiagente OP per i motivi espressi nell’impostazione del
problema di ricerca nella sezione relativa agli aspetti ergonomici d’interazione uomo –
ambiente (Sezione 3.2.2). Quando ho dovuto far fronte, nella realizzazione di un applicazione
domotica dimostrativa realistica, a tale esigenza, per ogni agente, ho deciso di progettare
un’interfaccia utente in grado di essere reattiva (nel modo descritto nella Seziona 4.1.3 e
nella Sezione 4.1.6) e in grado di poter comandare tutti i dispositivi gestiti dall’agente. Visto
che tale interfaccia è presente su tutti gli agenti da me implementati ho pensato, come già
detto, di formalizzare in modo preciso e omogeneo un’interfaccia utente minima,
specializzabile di volta in volta secondo le esigenze specifiche di ogni agente.
Maggiordomo
Esecutore
Interfaccia utente
Interfaccia remota
CO
device controller
Metodi per implementare
comandi locali
lightOff()
Metodi per implementare
comandi remoti
LightOffRem()
OP
Figura 4.9 Una esempio di possibile implementazione del device controller per soddisfare sia esigenze
locali, provenienti dall’interfaccia utente, che esigenze provenienti dal maggiordomo.
Abbiamo visto nella Sezione 4.1 come un’adeguata implementazione del metodo checkOp
può permettere al device controller di intervenite in modo reattivo sull’interfaccia utente
realizzando un efficace monitoraggio dei dispositivi di un agente. Per permettere, non solo il
114
monitoraggio, ma anche un controllo diretto sui dispositivi da parte dell’utente, si devono
implementare l’interfaccia utente e il device controller in modo opportuno da permettere, non
solo il flusso d’informazioni diretto dai dispositivi all’utente (monitoraggio), ma anche quello
inverso. Il device controller oltre ad essere dotato di metodi che implementano servizi remoti
disponibili per l’intera agenzia e comandabili dall’esecutore del maggiordomo (come
descritto in [3]), dovrà essere quindi dotato anche di metodi che servono per implementare
servizi, messi a disposizione dai dispositivi, comandabili direttamente e localmente
dall’interfaccia utente (vedi Fig. 4.9).
Vedremo alcuni esempi di implementazione dell’interfaccia utente e dal device controller
in dettaglio nel capitolo successivo.
La formalizzazione di un’interfaccia utente mi ha permesso inoltre, come vedremo nel
capitolo successivo, di far fronte ad un’ottimizzazione dei tempi di risposta del sistema
domotico.
115
5
REALIZZAZIONI
SPERIMENTALI E
VALUTAZIONI
Uno degli obiettivi di questa tesi è la realizzazione pratica di un’applicazione domotica
dimostrativa in grado di validare la capacità dell’AGENZIA AMBIENTALE di risolvere problemi
d’alto livello d’astrazione utilizzando una pianificazione dinamica. Le realizzazioni
sperimentali, come vedremo, dimostreranno come l’AGENZIA AMBIENTALE sia in grado di
pianificare delle soluzioni per far fronte a delle esigenze d’alto livello d’astrazione (goal), in
modo dinamico, in relazione agli agenti e ai servizi che ha a disposizione al momento della
pianificazione.
Le realizzazioni sperimentali hanno portato a verificare anche che le soluzioni logiche da
me adottate e descritte nel Capitolo 4 possono, nella pratica, realmente essere utilizzate per
permettere ad ogni agente di sviluppare delle reattività laterali e superiori.
Tutte le realizzazioni sperimentali che presenterò in questo capitolo dimostreranno come
l’interfaccia di comunicazione tra il device controller e i dispositivi sia adeguata per
l’applicazione domotica realizzata e come con tale interfaccia sia possibile far fronte ad
eventuali malfunzionamenti o agganci e sganci a caldo dei dispositivi.
Vedremo come la formalizzazione dell’interfaccia utente per ogni agente sia stata utilizzata
per realizzare delle interfacce di comunicazione tra l’uomo e gli agenti.
Preciso che non tutta l’applicazione domotica realizzata è stata progettata da me, alcune
parti, relative ai dispositivi, sono state progettate e realizzate in un altro progetto di tesi
parallelo al mio [79]. Vedremo nelle sezioni successive, in dettaglio, solo ciò che è stato
realmente progettato e realizzato da me e verranno solo citate, per completezza della
trattazione, le realizzazioni fatte nell’ambito della tesi [79].
5.1 L’applicazione domotica realizzata
L’applicazione domotica dimostrativa realizzata si occupa di gestire l’illuminazione, il
riscaldamento, un rilevatore di presenza e una finestra. Uno dei compiti, d’alto livello, che
tale applicazione riesce a portare a termine è la razionalizzazione dell’energia in funzione dei
dispositivi realmente utilizzabili. Come vedremo, al momento della richiesta da parte
dell’utente di attivare il sistema per il risparmio energetico (EnergySaving), l’applicazione
coinvolgerà tutti gli agenti disponibili per realizzare un piano d’azione che permetta di
risparmiare energia. Vedremo nella Sezione 5.3, dedicata alle decomposizioni dei goal (che
costituiscono la conoscenza iniziale del maggiordomo), come funziona in dettaglio
l’EnergySaving.
5.1.1 Servizi e funzioni
L’applicazione realizzata, per poter comunicare con l’uomo, utilizza le interfacce utente
degli agenti e in particolare l’interfaccia utente di un agente specifico (GoalGenerator)
progettato solo per raccogliere le richieste di esigenze d’alto livello, che necessitano cioè
dell’intervento del maggiordomo; si rimanda alla Sezione 5.1.2 per il dettaglio sulla
realizzazione dell’interfacciamento dell’uomo con l’applicazione domotica realizzata. In
particolare l’applicazione realizzata permette all’utente, tramite l’uso di un’interfaccia
grafica, i seguenti servizi (e funzioni).
•
Accensione e spegnimento di una luce.
•
Apertura e chiusura di una finestra motorizzata. L’azienda che mi ha ospitato per
svolgere le realizzazioni sperimentali [75] non mi ha fornito un motore attuatore per
l’apertura e la chiusura della finestra. Quindi è stato progettato solo il controllore per
un eventuale motore d’attuazione. Tale controllore dà il comando al motore (anche se
non collegato) di aprire o chiudere la finestra; vedremo in seguito che è possibile
117
vedere quando il controllore fornisce il comando di apertura o chiusura con l’ausilio
di un led.
•
Accensione, spegnimento e regolazione della potenza del riscaldamento. C’è da
precisare che per il controllo del riscaldamento non è stata fatta una realizzazione
pratica reale (utilizzando cioè un controllore su una pompa di calore) ma è stato
utilizzato un software che simula un riscaldamento. Tale software (denominato
Heating) era già stato sviluppato nel progetto di tesi [3].
•
Attivazione o disattivazione dell’EnergySaving.
Inoltre, l’utente avrà la possibilità di monitorare in ogni istante e in tempo reale (con
qualche latenza che vedremo in seguito) lo stato dei dispositivi appartenenti all’applicazione
domotica. In particolare potrà rendersi conto dei seguenti stati.
•
Luce accesa o spenta.
•
Finestra aperta o chiusa; sia che sia stata aperta manualmente sia che sia stata aperta
sfruttando la motorizzazione.
•
Presenza umana o no nella stanza.
•
EnergySaving in esecuzione o no.
L’applicazione domotica, che ricordo è stata realizzata anche grazie ad un altro progetto di
tesi [79] parallelo al mio, è in grado di fornire tutte le funzionalità descritte anche senza
l’AGENZIA AMBIENTALE connessa sulla rete, ad esclusione della funzione di EnergySaving.
Infatti la rete domotica dei dispositivi è stata progettata in modo che continui a funzionare
anche senza la presenza dell’AGENZIA AMBIENTALE (stand alone). In caso di
malfunzionamento dell’AGENZIA AMBIENTALE o di parte di essa, i dispositivi presenti sulla
rete domotica potranno ancora essere utilizzati. Ovviamente non saranno più possibili i
servizi che, per funzionare, necessitano dell’ausilio dell’AGENZIA AMBIENTALE (come
l’EnergySaving). Tutta la progettazione e la realizzazione stand alone è stata realizzata nel
progetto di tesi [79]. Per tale motivo non descriverò in dettaglio come è possibile ottenere
tutte le funzionalità stand alone senza l’ausilio dell’AGENZIA AMBIENTALE e delle interfacce
utente degli agenti. Per tale trattazione si rimanda quindi a [79].
118
5.1.2 Interazione superiore: interfaccia uomo - applicazione domotica
Nella progettazione di ogni agente, come detto nel Capitolo 4, ho previsto l’esistenza di
un’interfaccia utente in grado di agire direttamente sui dispositivi e sui servizi operativi che
l’agente è in grado di mettere a disposizione. Tale interfaccia, con un’adeguata
implementazione, è in grado di sviluppare una reattività superiore adeguata al contesto.
Per interfacciare l’uomo con l’applicazione domotica ho pensato di far gestire ad ogni
agente implementato un’interazione specifica con l’uomo, creando così una sorta
d’interfaccia complessiva decentralizzata. Per fare ciò ho utilizzato il modulo destinato
all’interfaccia utente (AgUserInterface) di ogni agente specializzandolo per l’interazione con
l’uomo. Ho progettato, per ogni agente presente nel mio sistema, un’interfaccia grafica che
mette a disposizione dell’uomo tutti i servizi operativi dell’agente (come auspicato nella
Sezione 3.2.2). Inoltre, tale interfaccia, sfruttando i meccanismi descritti nel Capitolo 4, è in
grado di garantire una reattività in tempo reale relativa allo stato dei dispositivi e del
contesto.
Il risultato di questa scelta implementativa è un’interfaccia di comunicazione, tra l’uomo e
l’applicazione domotica, composta dalla somma delle singole interfacce di ogni agente,
totalmente decentralizzata e “autocomponibile”. Decentralizzata perché ogni agente gestisce
il proprio rapporto con l’uomo. Autocomponibile in quanto ogni singola interfaccia, come
detto, è reattiva allo stato dei dispositivi, del contesto e dei servizi che l’agente è in grado
realmente di garantire. Dunque, l’interfaccia globale complessiva risulterà essere in continua
evoluzione, dipendente dal contesto e in grado di interfacciare l’uomo solo con i servizi
realmente esistenti.
Per spiegare più concretamente ciò che ho realizzato riporto un esempio pratico. Ho creato,
come vedremo meglio in nella Sezione 5.2.2, un agente deputato alla gestione della luce
(LightAg). L’interfaccia utente di tale agente è stata implementata graficamente in modo che
l’uomo possa accendere e spegnere la luce e al contempo monitorare lo stato attuale della
luce (vedi Fig. 5.1).
Tra gli altri agenti che ho creato vi è anche l’agente deputato alla rilevazione di presenza
umana (HPresenceDetector). L’interfaccia utente di tale agente è stata implementata
graficamente in modo che l’uomo possa rendersi conto se l’agente sta rilevando presenza
umana o meno (vedi Fig. 5.1).
Se entrambi gli agenti sono in esecuzione e i rispettivi OP stanno funzionando
correttamente, allora l’uomo si troverà di fronte sia all’interfaccia di LightAg che a quella di
119
HPresenceDetector. Si sarà così composta un’interfaccia complessiva derivata dalla somma
delle due. Se, ad esempio però, la centralina della luce, gestita da LightAg, viene sganciata
dalla rete (a caldo), LightAg si rende conto che non sarà più in grado di fornire servizi e
sfruttando il meccanismo per la reattività superiore spiegato nel Capitolo 4, chiuderà la
propria interfaccia utente modificando automaticamente l’interfaccia complessiva a
disposizione dell’uomo. Se la centralina dovesse essere successivamente riagganciata, allora
LightAg si renderà conto che potrà di nuovo mettere a disposizione dei servizi e rimetterà a
disposizione
l’interfaccia
utente
(ne
risulta
quindi
un’interfaccia
complessiva
autocomponibile). Vedremo meglio in dettaglio il funzionamento specifico di ogni agente
implementato nella Sezione 5.2.
Delegare ad ogni agente il compito di gestire il rapporto tra l’uomo e i servizi messi a
disposizione dall’agente stesso permette all’intera applicazione domotica di poter soddisfare
le esigenze che non richiedono pianificazione e cooperazione fra agenti in modo rapido ed
efficiente senza coinvolgere il maggiordomo inutilmente.
La scelta progettuale fatta, in cui ogni agente mette a disposizione dell’uomo solo i propri
servizi operativi, non consente però all’uomo di sollevare, nei confronti dell’AGENZIA
AMBIENTALE (del sistema domotico), esigenze d’alto livello (goal) la cui soddisfazione
richiede pianificazione e cooperazione fra diversi agenti e dispositivi. Ho realizzato un
agente specifico (GoalGenerator) deputato alla generazione dei goal. Tale agente fa in modo
che l’uomo possa sollevare tutte le esigenze potenzialmente soddisfabili dal maggiordomo.
Il GoalGenerator rappresenta la componente centralizzata dell’intera interfaccia
dell’applicazione domotica. I servizi operativi che il GoalGenerator “dichiara”, tramite la
propria interfaccia utente, di poter realizzare, sono potenzialmente quindi tutte le esigenze
che il maggiordomo, tramite la pianificazione e la cooperazione, potrebbe essere in grado di
soddisfare. Il GoalGenerator si occupa di raccogliere dunque delle esigenze (goal) e di
trasmetterle al maggiordomo, il quale si occuperà di gestirle. C’è da evidenziare che il
maggiordomo, quando riceve un goal, non è in grado di notificare a chi lo ha generato se
l’obiettivo rappresentato dal goal è stato raggiunto o no (cioè se è stato trovato un piano e se
questo è stato eseguito correttamente). Poiché nella mia tesi non mi sono occupato di
modificare il maggiordomo ma ho utilizzato il preesistente [3], non sono stato in grado di
realizzare una reattività superiore per il GoalGenerator. Tale agente, infatti, invia dei goal al
maggiordomo ma non saprà mai se i goal sono stati soddisfatti e quindi non sarà in grado di
notificarlo all’uomo tramite l’interfaccia utente.
120
Agente: Heating
Interfaccia
utente
Agente: WindowAg
Interfaccia
utente
CO
OP
CO
OP
Agente: GoalGenerator
Interfaccia
utente
CO
OP
Agente: HPresenceDetector
Interfaccia
utente
CO
OP
Agente: LightAg
Interfaccia
utente
CO
OP
Figura 5.1 Interfaccia uomo - applicazione domotica autocomponibile e decentralizzata
121
L’uomo, che ha manifestato l’esigenza tramite il GoalGenerator, nella maggior parte dei
casi sarà in grado comunque di percepire se la propria esigenza è stata soddisfatta o meno,
osservando le reazioni contestuali delle interfacce utente degli altri agenti.
I servizi che il GoalGenerator può mettere a disposizione dell’uomo sono potenzialmente
tutti i tipi di espansioni presenti nella base di conoscenza del maggiordomo e quindi anche
tutti i servizi messi a disposizione singolarmente da ogni agente (espansioni finali). Per
esigenze sperimentali ho implementato il GoalGenerator in modo che questo metta a
disposizione due espansioni finali risolvibili da LightAg (accensione e spegnimento di una
luce, vedi Fig. 5.1). L’utilizzatore dell’applicazione domotica potrà così decidere di
accendere o spegnere la luce sia intervenendo direttamente e localmente sull’interfaccia
utente del LightAg sia agendo sull’interfaccia utente del GoalGenerator (per ulteriori dettagli
si veda la Sezione 5.3.2). Vedremo nelle valutazioni sperimentali come le due strade portano
a tempi di risposta notevolmente differenti.
5.2 Agenti realizzati
Per realizzare l’applicazione domotica, descritta finora solo dal punto di vista funzionale,
ho implementato quattro nuovi agenti (LightAg, HPresenceDetector, WindowAg,
GoalGenerator) e ne ho utilizzato uno realizzato in un precedente progetto di tesi [3]
(Heating).
Gli agenti realizzati sfruttano la maggior parte dei meccanismi da me progettati e descritti
nel Capitolo 4, per permettere i diversi tipi di reattività superiore e laterale. Inoltre gli agenti
comunicano con i dispositivi presenti su una rete LON sfruttando l’interfaccia di
comunicazione descritta nella Sezione 4.2.
Nelle sezioni successive verrà data una panoramica di tutti gli agenti utilizzati per
realizzare l’applicazione domotica e successivamente verranno descritti dettagliatamente i
moduli e la logica di funzionamento di ogni metodo implementato per ogni agente realizzato.
Con un’elencazione dei metodi principali e con la spiegazione puntuale delle rispettive
implementazioni descriverò la logica di funzionamento di tutti gli agenti realizzati.
Per chiarezza specifico che il nome della classe che serve per implementare il device
controller coincide con il nome dato al rispettivo agente, ma non bisogna confondere l’agente
(composto da CO e l’OP gestito dal device controller) con il device controller stesso.
122
5.2.1 Una visione d’insieme degli agenti e dei dispositivi
Di seguito farò una panoramica dell’hardware impiegato presso l’azienda TECHSELESTA
[77] per la realizzazione dell’applicazione domotica.
L’agente deputato al controllo della luce, LightAg, utilizza la centralina LON (IOC306)
rappresentata schematicamente nella Fig. 5.2. Tale centralina ha la possibilità di controllare
sia uscite binarie (relè) che uscite analogiche (potenziometri), inoltre è dotata di led
comandabili. LightAg utilizza, per accendere o spegnere il punto luce, un’uscita relè, e
segnala con un led sulla centralina se la luce è accesa o spenta.
LightAg
CO
e
device
controller
Bus LON
IOC306
Generatore di
tensione 220 Volt
Punto
luce
Figura 5.2 Dispositivi di LightAg
123
L’agente che si occupa di rilevare la presenza umana nell’ambiente utilizza un rilevatore di
presenza interfacciabile su rete LON (HPresenceOp), vedi Fig. 5.3. Tale rilevatore avverte il
device controller quando rileva una presenza nell’ambiente.
HPresenceDetector
CO
e
device
controller
Bus LON
HPresenceOP
Trasformatore
Figura 5.3 Dispositivi di HPresenceDetector
L’agente deputato al controllo della finestra, WindowAg, utilizza un pulsante a pressione
presente su una pulsantiera (TAST) costituita da quattro pulsanti, interfacciabile con la rete
LON (vedi Fig. 5.4). Il pulsante evidenziato in Fig 5.4 è stato utilizzato per simulare l’apertura
124
o chiusura della finestra; finché tale pulsante rimane premuto TAST segnala al device
controller che la finestra è chiusa, altrimenti segnala al device controller che la finestra è
aperta e accende il led presente sul pulsante. Il dispositivo TAST è anche utilizzato per alcune
funzioni stand alone della rete domotica LON, come l’accensione e lo spegnimento del punto
luce, per i dettagli si veda [79].
WindowAg
CO
e
device
controller
Bus LON
Trasformatore
TAST
Figura 5.4 Dispositivi di WindowAg
125
Il GoalGenerator utilizza la stessa centralina di LightAg per segnalare, con un led (vedi
Fig. 5.5), quando l’utente ha richiesto l’accensione dell’EnergySaving.
GoalGenerator
CO
e
device
controller
Bus LON
IOC306
Generatore di
tensione 220 Volt
EnergySaving
acceso
Figura 5.5 Dispositivi del GoalGenerator
126
Di seguito una foto panoramica di tutti i dispositivi utilizzati per la realizzazione
sperimentale (vedi Fig. 5.6) con, in evidenza, un dispositivo non ancora mostrato.
Scheda di rete che permette d’interfacciare la rete LAN alla rete LON
Figura 5.6 Panoramica complessiva dei dispositivi utilizzati per le prove sperimentali
5.2.2 Agente LightAg
Riporto di seguito i moduli di cui è composto LightAg e per ogni modulo tratterò solo i
metodi significativi per il funzionamento logico dell’agente, tralasciando alcuni dettagli
implementativi. Per le interazioni tra i moduli dell’agente e tra l’agente e l’esterno si faccia
riferimento alla Fig. 5.7.
•
public
class
LightAgUserInterface
extends
AgUserInterface:
questa
classe
rappresenta l’interfaccia utente dell’agente e implementa i seguenti metodi.
o public void startUserInterface(): si occupa di rendere visibile l’interfaccia grafica.
127
o public void stopUserInterface(): si occupa di rendere non più visibile l’interfaccia
grafica.
o public void actionExecuted (String actionName): serve al device controller per
notificare all’interfaccia utente quale azione (actionName) è stata attuata o rilevata
(con successo) dal device controller.
LightAg
Esecutore del
maggiordomo
Uomo (utente)
Device controller interface
Interfaccia utente
turnOffLight
turnOnLight
userInterfaceClosed
actionExecuted
lightOffRem
lightOnRem
isLightOn
lightUState
Device controller
setOnOff
getOnOff
addRawUpdateListener
OpController
Dispositivo: IOC306
Ambiente
Figura 5.7 Descrizione schematica delle attività interne ed esterne di LightAg
•
public class LightAg extends Cooperative implements LightAgInterface: questa classe
rappresenta il modulo device controller, estende la classe Cooperative (CO) e
implementa LightAgInterface (che rappresenta il device controller interface) per
l’interfaccia remota (o laterale) specifica dell’agente. La classe implementa i seguenti
metodi.
128
o public LightAg(String agentName, String agentUrl,int agentPort, long checkTime,
LightAgUserInterface agUI, OpController bc) throws RemoteException: è il
costruttore del device controller; agentName, agentUrl, agentPort, checkTime e
agUI sono tutti parametri che servono per poter chiamare il costruttore della super
classe (Cooperative); bc rappresenta il riferimento al modulo OpController che,
come detto, è l’implementazione del BusControllerInterface ed è in grado di
dialogare con il dispositivo IOC306.
o public boolean checkOp(): chiama il metodo getOnOff (“ IOC306”, ”DvState”)
per leggere il valore di DvState del dispositivo IOC306, se getOnOff restituisce
true (DvState=ON, il dispositivo funziona correttamente) allora checkOp
restituisce true altrimenti restituisce false.
o public void lightOn(): memorizza lo stato acceso della luce e notifica
all’interfaccia
utente
che
la
luce
è
accesa,
chiamando
il
metodo
actionExecuted(“lightOn”).
o public void lightOff(): memorizza lo stato spento della luce e notifica
all’interfaccia
utente
che
la
luce
è
spenta,
chiamando
il
metodo
actionExecuted(“lightOff”).
o public void lightBusListener():aggiunge un listener sul relè del dispositivo
IOC306 che gestisce la luce della centralina IOC306 e fornisce, al gestore degli
eventi di OpController, il comportamento desiderato quando avviene un
cambiamento di stato: chiama il metodo lightOn() se la luce risulta accesa
altrimenti chiama lightOff(). Inoltre questo metodo assegna un listener anche al
componente DvState specificando che, nel caso venga notificato un cambio di
stato, si dovrà chiamare checkOp.
o public void turnOffLight(): spegne la luce e lo notifica all’interfaccia utente nel
caso la luce si sia realmente spenta. Questo metodo è chiamato localmente
dall’interfaccia utente quando l’utente comunica di voler spegnere la luce.
o public void turnOnLight(): accende la luce e lo notifica all’interfaccia utente nel
caso la luce si sia realmente accesa. Questo metodo è chiamato localmente
dall’interfaccia utente quando l’utente comunica di voler spegnere la luce.
o public void userInterfaceClosed(): questo metodo è chiamato dall’interfaccia
utente nel caso l’interfaccia grafica venga chiusa espressamente dall’utente
129
(esprimendo quindi la volontà di terminare l’agente). Tale metodo, se chiamato,
sconnette l’agente dall’agenzia e termina tutti i processi in esecuzione.
Di seguito riporto tutti i servizi pubblicati da LightAg verso l’agenzia che possono
essere chiamati in modo remoto dall’esecutore del maggiordomo. Tali metodi saranno
quelli realmente utilizzabili per la costruzione delle espansioni finali relative al
LightAg.
o public String isLightOn() throws RemoteException: restituisce yes se la luce è
accesa.
o public void lightOffRem() throws RemoteException: spegne la luce e lo notifica
all’interfaccia utente solo se la luce si è realmente spenta.
o public void lightOnRem() throws RemoteException: accende la luce e lo notifica
all’interfaccia utente solo se la luce si è realmente accesa.
o public String lightUState() throws RemoteException: restituisce on se nell’ultima
interazione con l’interfaccia utente locale l’uomo aveva acceso la luce; restituisce
off se invece l’utente aveva spento la luce.
•
public interface LightAgInterface extends Remote: questa classe serve al CO per poter
pubblicare verso l’agenzia tutti i metodi chiamabili remotamente appena descritti.
Al momento dell’istanza di LightAg ho deciso di porre:
•
checkTime = 5000 (5 secondi);
•
agentName = “LightAg”;
•
agentUrl = “10.0.0.1” (indirizzo IP di classe A sul quale è indirizzata l’intera
AGENZIA AMBIENTALE);
•
agentPort= “4160” (numero di porta aperta su JINI per comunicare con l’AGENZIA
AMBIENTALE).
5.2.3 Agente HPresenceDetector
Riporto di seguito i moduli di cui è composto HPresenceDetector e per ogni modulo
tratterò solo i metodi significativi per il funzionamento logico dell’agente, tralasciando alcuni
dettagli implementativi. Per le interazioni tra i moduli dell’agente e tra l’agente e l’esterno si
faccia riferimento alla Fig. 5.8.
130
HPresenceDetector
Esecutore del
maggiordomo
Uomo (utente)
Device controller interface
Interfaccia utente
userInterfaceClosed
ishPresence
actionExecuted
Device controller
getOnOff
addRawUpdateListener
OpController
Dispositivo: HPresenceOP
Ambiente
Figura 5.8 Descrizione schematica delle attività interne ed esterne di HPresenceDetector
•
public class HPresenceDetectorUserInterface extends AgUserInterface: questa classe
rappresenta l’interfaccia utente dell’agente e implementa i seguenti metodi:
o public void startUserInterface(): si occupa di rendere visibile l’interfaccia grafica.
o public void stopUserInterface(): si occupa di rendere non più visibile l’interfaccia
grafica.
o public void actionExecuted(String actionName): serve al device controller per
notificare all’interfaccia utente quale azione (actionName) è stata rilevata (con
successo) dal device controller.
•
public
class
HPresenceDetector
extends
Cooperative
implements
HPresenceDetectorInterface: questa classe rappresenta il modulo device controller,
131
estende la classe Cooperative (CO) e implementa HPresenceDetectorInterface (che
rappresenta il device controller interface) per l’interfaccia remota (o laterale)
specifica dell’agente. La classe implementa i seguenti metodi.
o public HPresenceDetector(String agentName, String agentUrl, int agentPort,
long checkTime, HPresenceDetectorUserInterface agUI, OpController bc) throws
RemoteException: è il costruttore del device controller; agentName, agentUrl,
agentPort, checkTime e agUI sono tutti parametri che servono per poter chiamare
il costruttore della super classe (Cooperative); bc rappresenta il riferimento al
modulo OpController (in grado di dialogare con il dispositivo HPresenceOP).
o public boolean checkOp(): chiama il metodo getOnOff (“HPresenceOP”,
”DvState”) per leggere il valore di DvState del dispositivo HPresenceOP, se
getOnOff restituisce true (DvState=ON, il dispositivo funziona correttamente)
allora checkOp restituisce true altrimenti restituisce false.
o public void hPresence(): memorizza lo stato di rilevazione di presenza e notifica
all’interfaccia utente che vi è rilevazione di presenza, chiamando il metodo
actionExecuted(“hPresence”).
o public void noHPresence (): memorizza lo stato di non rilevazione di presenza e
notifica all’interfaccia utente che non vi è rilevazione di presenza, chiamando il
metodo actionExecuted(“noHPresence”).
o public void hPresenceBusListener(): aggiunge un listener sul sensore di
rilevazione di presenza (l’unico componente del dispositivo HPresenceOp) e
fornisce, al gestore degli eventi di OpController, il comportamento desiderato
quando avviene un cambiamento di stato: chiama il metodo hPresence() se vi è
stata una rilevazione di presenza altrimenti chiama windowClose (). Inoltre questo
metodo assegna un listener anche al componente DvState specificando che, nel
caso venga notificato un cambio di stato, si dovrà chiamare checkOp.
o public void userInterfaceClosed(): questo metodo è chiamato dall’interfaccia
utente nel caso l’interfaccia grafica venga chiusa espressamente dall’utente
(esprimendo quindi la volontà di terminare l’agente). Tale metodo, se chiamato,
sconnette l’agente dall’agenzia e termina tutti i processi in esecuzione.
o public String ishPresence() throws RemoteException: restituisce yes se vi è
presenza rilevata altrimenti restituisce no. Questo è un servizio pubblicato da
HPresenceDetector verso l’agenzia e chiamabile remotamente; questo metodo è
132
quello utilizzabile per la costruzione delle espansioni finali relative al
HPresenceDetector ed è quello che può essere chiamato dall’esecutore del
maggiordomo.
•
public interface HPresenceDetectorInterface extends Remote: questa classe serve al
CO per poter pubblicare verso l’agenzia il metodo appena descritto che può essere
chiamato in modo remoto.
Al momento dell’istanza di HPresenceDetector ho deciso di porre:
•
checkTime = 5000 (5 secondi);
•
agentName = “HPresenceDetector”;
•
agentUrl = “10.0.0.1” (indirizzo IP di classe A sul quale è indirizzata l’intera
AGENZIA AMBIENTALE);
•
agentPort= “4160” (numero di porta aperta su JINI per comunicare con l’AGENZIA
AMBIENTALE).
5.2.4 Agente WindowAg
Riporto di seguito i moduli di cui è composto WindowAg e per ogni modulo tratterò solo i
metodi significativi per il funzionamento logico dell’agente, tralasciando alcuni dettagli
implementativi. Per le interazioni tra i moduli dell’agente e tra l’agente e l’esterno si faccia
riferimento alla Fig. 5.9.
•
public class WindowAgUserInterface extends AgUserInterface: questa classe
rappresenta l’interfaccia utente dell’agente e implementa i seguenti metodi:
o public void startUserInterface(): si occupa di rendere visibile l’interfaccia grafica.
o public void stopUserInterface(): si occupa di rendere non più visibile l’interfaccia
grafica.
o public void actionExecuted(String actionName): serve al device controller per
notificare all’interfaccia utente quale azione (actionName) è stata attuata o rilevata
(con successo) dal device controller.
133
WindowAg
Esecutore del
maggiordomo
Uomo (utente)
Device controller interface
Interfaccia utente
closeWindow
openWindow
userInterfaceClosed
isWindowOpen
actionExecuted
Device controller
setOnOff
getOnOff
addRawUpdateListener
OpController
Dispositivo: TAST
Ambiente
Figura 5.9 Descrizione schematica delle attività interne ed esterne di WindowAg
•
public class WindowAg extends Cooperative implements WindowAgInterface: questa
classe rappresenta il modulo device controller, estende la classe Cooperative (CO) e
implementa WindowAgInterface (che rappresenta il device controller interface) per
l’interfaccia remota (o laterale) specifica dell’agente. La classe implementa i seguenti
metodi.
o public WindowAg(String agentName, String agentUrl, int agentPort, long
checkTime,
WindowAgUserInterface
agUI,
OpController
bc)
throws
RemoteException: è il costruttore del device controller; agentName, agentUrl,
agentPort, checkTime e agUI sono tutti parametri che servono per poter chiamare
il costruttore della super classe (Cooperative); bc rappresenta il riferimento al
modulo OpController (in grado di dialogare con il dispositivo TAST).
134
o public boolean checkOp(): chiama il metodo getOnOff (“TAST”, ”DvState”) per
leggere il valore di DvState del dispositivo TAST, se getOnOff restituisce true
(DvState=ON, quindi il dispositivo funziona correttamente) allora checkOp
restituisce true altrimenti restituisce false.
o public void windowOpen(): memorizza lo stato aperto della finestra e notifica
all’interfaccia utente che la finestra è aperta, chiamando il metodo
actionExecuted(“windowOpen”).
o public void windowClose(): memorizza lo stato chiuso della finestra e notifica
all’interfaccia utente che la finestra è chiusa, chiamando il metodo
actionExecuted(“windowClose”).
o public void windowBusListener(): aggiunge un listener sul sensore della finestra
(un pulsante di TAST) e fornisce, al gestore degli eventi di OpController, il
comportamento desiderato quando avviene un cambiamento di stato: chiama il
metodo windowOpen() se la finestra risulta aperta altrimenti chiama
windowClose(). Inoltre questo metodo assegna un listener anche al componente
DvState specificando che, nel caso venga notificato un cambio di stato, si dovrà
chiamare checkOp.
o public void openWindow(): apre la finestra e lo notifica all’interfaccia utente nel
caso la finestra si sia realmente aperta. Questo metodo è chiamato localmente
dall’interfaccia utente quando l’utente comunica di voler aprire la finestra.
o public void closeWindow(): chiude la finestra e lo notifica all’interfaccia utente
nel caso la finestra si sia realmente chiusa. Questo metodo è chiamato localmente
dall’interfaccia utente quando l’utente comunica di voler chiudere la finestra.
o public void userInterfaceClosed(): questo metodo è chiamato dall’interfaccia
utente nel caso l’interfaccia grafica venga chiusa espressamente dall’utente
(esprimendo quindi la volontà di terminare l’agente). Tale metodo, se chiamato,
sconnette l’agente dall’agenzia e termina tutti i processi in esecuzione.
o public String isWindowOpen() throws RemoteException: restituisce yes se la
finestra è aperta altrimenti restituisce no. Questo è un servizio pubblicato da
WindowAg verso l’agenzia e chiamabile remotamente; questo metodo è quello
utilizzabile per la costruzione delle espansioni finali relative al WindowAg ed è
quello che può essere chiamato dall’esecutore del maggiordomo.
135
•
public interface WindowAgInterface extends Remote: questa classe serve al CO per
poter pubblicare verso l’agenzia il metodo appena descritto che può essere chiamato
in modo remoto.
Al momento dell’istanza di WindowAg ho deciso di porre:
•
checkTime = 5000 (5 secondi);
•
agentName = “WindowAg”;
•
agentUrl = “10.0.0.1” (indirizzo IP di classe A sul quale è indirizzata l’intera
AGENZIA AMBIENTALE);
•
agentPort= “4160” (numero di porta aperta su JINI per comunicare con l’AGENZIA
AMBIENTALE).
5.2.5 Agente GoalGenerator
Riporto di seguito i moduli di cui è composto il GoalGenerator e per ogni modulo tratterò
solo i metodi significativi per il funzionamento logico dell’agente, tralasciando alcuni
dettagli implementativi. Per le interazioni tra i moduli dell’agente e tra l’agente e l’esterno si
faccia riferimento alla Fig. 5.10.
•
public class GoalGeneratorUserInterface extends AgUserInterface: questa classe
rappresenta l’interfaccia utente dell’agente e implementa i seguenti metodi:
o public void startUserInterface(): si occupa di rendere visibile l’interfaccia grafica.
o public void stopUserInterface(): si occupa di rendere non più visibile l’interfaccia
grafica.
•
public
class
GoalGenerator
extends
Cooperative
implements
GoalGeneratorInterface: questa classe rappresenta il modulo device controller,
estende la classe Cooperative (CO) e implementa GoalGeneratorInterface (che
rappresenta il device controller interface) per l’interfaccia remota (o laterale)
specifica dell’agente. La classe implementa i seguenti metodi.
o public HPresenceDetector(String agentName, String agentUrl, int agentPort,
long checkTime, HPresenceDetectorUserInterface agUI, OpController bc) throws
RemoteException: è il costruttore del device controller; agentName, agentUrl,
136
agentPort, checkTime e agUI sono tutti parametri che servono per poter chiamare
il costruttore della super classe (Cooperative); bc rappresenta il riferimento al
modulo OpController (in grado di dialogare con il dispositivo IOC306).
GoalGenerator
Uomo (utente)
Interfaccia utente
maggiordomo
Goal generati:
turnOffLight
turnOnLight
ESOn
Esecutore del
maggiordomo
Device controller interface
turnLightOff
turnLightOn
userInterfaceClosed
eSavingOn
Device controller
setOnOff
OpController
Dispositivo: IOC306
Ambiente
Figura 5.10 Descrizione schematica delle attività interne ed esterne di GoalGenerator
o public boolean checkOp(): Non è specializzato (dunque ritorna sempre true) in
quanto l’OP del GoalGenerator non è costituito solo dal dispositivo fisico
(IOC306), sul quale notifica se l’EnergySaving è acceso o spento, ma anche da
altri servizi implementati direttamente in JAVA (senza l’ausilio di altri moduli
esterni) in questa classe (GoalGenerator). Quindi, finché l’agente è in esecuzione,
137
disporrà almeno di tutti i servizi operativi che non fanno riferimento ad altri
moduli esterni al device controller per funzionare.
o public void turnLightOff(): Genera il goal turnOffLight e lo manda al
maggiordomo.
o public void turnLightOn(): Genera il goal turnOnLight e lo manda al
maggiordomo.
o public void turnOnESaving(): Genera il goal ESOn e lo manda al maggiordomo.
o public void userInterfaceClosed(): questo metodo è chiamato dall’interfaccia
utente nel caso l’interfaccia grafica venga chiusa espressamente dall’utente
(esprimendo quindi la volontà di terminare l’agente). Tale metodo, se chiamato,
sconnette l’agente dall’agenzia e termina tutti i processi in esecuzione.
o public String eSavingOn() throws RemoteException: restituisce yes se l’utente,
dopo aver espresso la volontà di accendere il sistema di EnergySaving non ha
ancora chiesto di spegnerlo. Altrimenti, se l’utente o non ha attivato EnergySaving
o ha richiesto di spegnerlo, restituisce no.
o public interface GoalGeneratorInterface extends Remote: questa classe serve al
CO per poter pubblicare verso l’agenzia il metodo appena descritto che può essere
chiamato in modo remoto.
Al momento dell’istanza del GoalGenerator ho deciso di porre:
•
checkTime = 30000 (30 secondi); ho messo un tempo lungo perché per il
GoalGenerator non ho previsto alcuna reattività. GoalGenerator l’ho solo
predisposto per renderlo eventualmente reattivo;
•
agentName = “GoalGenerator”;
•
agentUrl = “10.0.0.1” (indirizzo IP di classe A sul quale è indirizzata l’intera
AGENZIA AMBIENTALE);
•
agentPort= “4160” (numero di porta aperta su JINI per comunicare con l’AGENZIA
AMBIENTALE).
138
5.2.6 Agente Heating
L’agente Heating non verrà dettagliato come gli altri e si rimanda a [3] per una trattazione
più precisa. Di seguito riporto solo i servizi remoti che tale agente è in grado di mettere a
disposizione dell’AGENZIA AMBIENTALE.
•
public void heatingOff() throws RemoteException: spegne il riscaldamento.
•
public void heatingOn() throws RemoteException: accende il riscaldamento.
• public String heatingUState() throws RemoteException: restituisce on se nell’ultima
interazione con l’interfaccia utente locale l’uomo aveva acceso il riscaldamento;
restituisce off se invece l’utente aveva spento il riscaldamento.
5.3 Espansioni e goal realizzati
Ho realizzato delle espansioni per risolvere alcuni goal iniziali, utilizzando l’interfaccia
grafica del maggiordomo, per poter modellizzare delle esigenze d’alto livello da risolvere
(goal iniziali) e la conoscenza (espansioni) necessaria per poter portare i goal iniziali in una
forma risolvibile dagli agenti domotici. Il maggiordomo, grazie alle espansioni create, è in
grado, tramite processi inferenziali e una pianificazione, di passare da un goal iniziale (che
rappresenta un’esigenza) al problema risolto (piano esecutivo), rappresentato da una
sequenza di azioni che saranno eseguite da uno o più agenti.
I goal (e le espansioni) realizzati sono solo a scopo dimostrativo e sono serviti per validare,
in fase sperimentale, alcune peculiarità dell’AGENZIA AMBIENTALE come la pianificazione
dinamica dipendente dalle risorse realmente disponibili.
I goal iniziali creati sono:
•
ESOn, rappresenta l’esigenza di voler risparmiare energia nell’ambiente, questa
esigenza è quella che l’utente esprime chiedendo l’accensione dell’EnergySaving
come detto nella Sezione 5.1;
•
turnOffLight, rappresenta l’esigenza di voler spegnere la luce;
•
turnOnLight; rappresenta l’esigenza di voler accendere la luce.
5.3.1 Espansioni per ESOn
Per soddisfare l’esigenza rappresentata da ESOn ho fornito tre diverse decomposizioni
possibili (tre diverse espansioni intermedie) che potranno essere usate dal pianificatore per
139
trovare un piano d’azione realmente eseguibile. Nel caso il pianificatore riesca a trovare più
di un piano eseguibile sceglierà quello giudicato migliore secondo i criteri esposti nella
Sezione 3.1.7 o con maggiore dettaglio in [78]. Per tutte le espansioni create ho fornito i
medesimi valori per i parametri di performance, costo e probabilità di successo. Vedremo
nelle valutazioni sperimentali quale è l’effetto prodotto da questa scelta.
EsOn, considerato dal maggiordomo come goal iniziale, è stato espanso (con un’espansione
intermedia) nei seguenti goal (vedi Fig. 5.11).
HeatingES
Iterazione
until
ESOn
ESavingOn
GoalGenerator
Iterazione
until
LightES
Figura 5.11 Espansione per il goal ESOn
•
HeatingES: rappresenta l’esigenza di risparmiare energia utilizzando in modo
adeguato il riscaldamento in relazione all’apertura o chiusura della finestra.
•
ESavingOn: è un goal direttamente espandibile con un’espansione finale. Il
GoalGenerator è in fatti in grado di risolvere questo goal. ESavingOn è risolvibile
con una chiamata al metodo eSavingOn() del GoalGenerator.
140
•
LightES: rappresenta l’esigenza di risparmiare energia utilizzando in modo adeguato
la luce in relazione alla rilevazione di presenza.
Per la realizzazione dell’espansione intermedia di Fig. 5.11 sono stati utilizzati modificatori
(dei goal) di iterazione. Per il significato e la logica di funzionamento dei modificatori dei
goal si faccia riferimento alla Sezione 3.1.7 e alla Fig. 3.7.
•
Modificatore iterazione ESavingOn – HeatingES: l’esecutore del maggiordomo
continua a eseguire l’eventuale piano risolutivo per HeatingES e per ESavingOn
finché l’esecuzione del piano risolutivo di ESavingOn non fornirà come valore no.
•
Modificatore iterazione ESavingOn – LightES: l’esecutore del maggiordomo continua
a eseguire l’eventuale piano risolutivo per LightES e per ESavingOn finché
l’esecuzione del piano risolutivo di ESavingOn non fornirà come valore no.
ESavingOn
ESOn
Iterazione
until
LightES
GoalGenerator
Figura 5.12 Espansione per il goal ESOn
Come detto per ESOn ho fornito anche altre due espansioni possibili rappresentate in Fig.
5.12 e in Fig. 5.13. L’espansione rappresentata in Fig. 5.12 si occupa di gestire in modo
adeguato solo la luce in relazione alla rilevazione di presenza nell’ambiente per soddisfare
ESOn (risparmio energetico).
141
L’espansione rappresentata in Fig. 5.13 si occupa di gestire in modo adeguato solo il
riscaldamento in relazione all’apertura o chiusura della finestra per soddisfare ESOn.
HeatingES
ESOn
Iterazione
until
ESavingOn
GoalGenerator
Figura 5.13 Espansione per il goal ESOn
5.3.1.1 Espansioni per HeatingES
HeatingES è espanso nei seguenti goal tutti risolvibili con un’espansione finale (vedi Fig.
5.14).
•
IsWindowOpen: risolvibile da WindowAg tramite il metodo isWindowOpen.
•
HeatingOff: risolvibile da Heating tramite il metodo heatingOff.
•
HeatingOn: risolvibile da Heating tramite il metodo heatingOn.
•
HeatingUState: risolvibile da Heating tramite il metodo heatingUState.
Per la realizzazione dell’espansione di Fig. 5.14 sono stati utilizzati modificatori (dei goal)
di selezione.
•
Modificatore selezione IsWindowOpen – HeatingOff: se il valore fornito
dall’esecuzione del piano risolutivo di IsWindowOpen è yes allora l’esecutore del
maggiordomo esegue il piano risolutivo di HeatingOff .
142
•
Modificatore selezione IsWindowOpen – HeatingUState: se il valore fornito
dall’esecuzione del piano risolutivo di IsWindowOpen è no allora l’esecutore del
maggiordomo esegue il piano risolutivo di HeatingUState.
•
Modificatore selezione HeatingUState – HeatingOn: se il valore fornito
dall’esecuzione del piano risolutivo di HeatingUState è on allora l’esecutore del
maggiordomo esegue il piano risolutivo di HeatingOn.
IsWindowOpen
WindowAg
selezione
HeatingOff
Heating
HeatingES
selezione
HeatingUState
Heating
selezione
HeatingOn
Heating
Figura 5.14 Espansione per il goal HeatingES
5.3.1.2 Espansioni per LightES
LightES è espanso nei seguenti goal tutti risolvibili con un’espansione finale (vedi Fig.
5.15).
•
IsHPresence: risolvibile da HPresenceDetector tramite il metodo ishPresence.
•
LightOff: risolvibile da LightAg tramite il metodo lightOffRem.
143
•
LightOn: risolvibile da LightAg tramite il metodo lightOnRem.
•
LightUState: risolvibile da LightAg tramite il metodo lightUState.
HPresence
Detector
IsHPresence
selezione
LightAg
LightOff
LightES
selezione
LightAg
LightUState
selezione
LightOn
LightAg
Figura 5.15 Espansione per il goal LightES
Per la realizzazione dell’espansione di Fig. 5.15 sono stati utilizzati modificatori (dei goal)
di selezione.
•
Modificatore selezione IsHPresence – LightOff: se il valore fornito dall’esecuzione
del piano risolutivo di IsHPresence è yes allora esegue il piano risolutivo di LightOff.
•
Modificatore
selezione
IsHPresence
–
LightUState:
se
il
valore
fornito
dall’esecuzione del piano risolutivo di IsHPresence è no allora esegue il piano
risolutivo di LightUState.
144
•
Modificatore selezione LightUState – LightOn: se il valore fornito dall’esecuzione del
piano risolutivo di LightUState è on allora esegue il piano risolutivo di LightOn.
Con l’espansioni descritte nelle sezioni 5.3.1.1 e 5.3.1.2 e l’espansione iniziale descritta
nella Sezione 5.3.1, il maggiordomo potrà essere in grado di costruire un piano che termini
con tutte espansioni finali (eseguibili dall’esecutore) se le condizioni in fase di pianificazione
glielo consentiranno.
5.3.2 Espansioni per turnOnLight e turnOffLight
Le esigenze rappresentate dai due goal iniziali turnOnLight e turnOffLight hanno una
decomposizione composta da un solo goal (decomposizione banale). Ho realizzato dei goal
iniziali con una decomposizione banale per poter valutare sperimentalmente la differenza dei
tempi di risposta nel soddisfare un’esigenza coinvolgendo o no il maggiordomo.
turnOnLight
lightOn
turnOffLight
lightOff
LightAg
LightAg
Figura 5.16 Espansioni per i goal turnOnLight e turnOffLight
Grazie alle espansioni di Fig. 5.16 l’utente dell’applicazione domotica può richiedere di
accendere (o spegnere) la luce sia al GoalGenerator che al LightAg. Nel primo caso il
GoalGenerator raccoglie l’esigenza e la trasmette al maggiordomo generando il goal
turnOnLight (o turnOffLight); il maggiordomo (tramite il pianificatore), se LightAg è
145
connesso all’agenzia, riuscirà a realizzare un piano eseguibile che verrà eseguito
dall’esecutore. Questo ultimo, per eseguire il piano, si occuperà di chiamare il metodo
lightOnRem (lightOffRem ) di LightAg che accenderà (o spegnerà) la luce (vedi Fig. 5.17).
GoalGenerator
LightAg
Device controller interface
turnOffLight
turnOnLight
Maggiordomo
Device controller interface
lightOnRem
lightOnRem
turnOnLight
turnOffLight
Pianificatore
Dispositivo IOC306
Esecutore
Figura 5.17 Due modi possibili per accendere la luce
Nel caso in cui l’utente dell’applicazione domotica chieda direttamente a LightAg di
accendere (o spegnere) la luce, utilizzando l’interfaccia utente di LightAg, il maggiordomo
non verrebbe coinvolto e LightAg si occuperebbe direttamente di accendere (o spegnere) la
luce utilizzando il metodo turnOnLight (o turnOffLight), vedi Fig. 5.17.
146
5.4 Prove sperimentali e valutazioni
In questa sezione verranno descritte tutte le prove sperimentali effettuate e le valutazioni
tratte.
Nella Sezione 5.4.1 descriverò le prove fatte per verificare il corretto funzionamento degli
agenti implementati per la realizzazione dell’’applicazione domotica.
Nella Sezione 5.4.2 descriverò le prove realizzate per validare alcune caratteristiche
dell’AGENZIA AMBIENTALE. In particolare vedremo come è stata verificata la capacità
dell’AGENZIA AMBIENTALE di pianificare delle soluzioni per soddisfare esigenze d’alto
livello d’astrazione, in modo dinamico e dipendente dalle reali condizioni operative.
Le prove sperimentali eseguite per testare la rete domotica in assenza dell’AGENZIA
AMBIENTALE (stand alone) non verranno riportate ma le si potranno trovare nel progetto di
tesi [79].
Nella Sezione 5.4.3 verrà fornita una valutazione complessiva sul comportamento
dell’applicazione domotica nel suo complesso.
Nella Sezione 5.4.4 verranno fatte delle valutazioni qualitative e quantitative su alcuni
tempi di risposta dell’applicazione domotica.
5.4.1 Operatività e reattività degli agenti
Verranno fornite delle valutazioni sull’operatività e reattività di ogni singolo agente. Si
rimanda invece alla Sezione 5.4.3 per la valutazione della cooperazione tra gli agenti e quindi
anche per la valutazione dei servizi remoti messi a disposizione.
C’è da evidenziare che tutti i moduli degli agenti implementati in JAVA, durante la fase di
test, erano in esecuzione contemporaneamente sullo stesso PC (2,6 GHz, 512 MB RAM)
5.4.1.1 LightAg
In fase sperimentale è stato possibile sia accendere che spegnere un punto luce utilizzando
l’interfaccia grafica del LightAg. L’interfaccia grafica inoltre ha mostrato correttamente
l’accensione (e spegnimento) effettivo della lampadina.
Dal momento della pressione del bottone preposto all’accensione o spegnimento della luce,
all’avvenuta accensione della lampadina è passato circa ½ secondo. Dall’accensione della
lampadina fino al riscontro sull’interfaccia grafica di LightAg è trascorso circa ½ secondo.
147
Accendendo e spegnendo il punto luce, utilizzando un interruttore sulla rete LON, è stata
riscontrata l’esatta reazione dell’interfaccia grafica al cambiamento dello stato del punto luce.
Il tempo di reazione rilevato è stato di circa ½ secondo.
Chiudendo esplicitamente l’interfaccia utente di LightAg l’agente si disconnetteva
dall’agenzia e terminava tutti i processi ad esso legati in modo corretto come previsto.
Sganciando il dispositivo IOC306 finché LightAg era in esecuzione è stata riscontrata una
corretta reazione: LightAg si è disconnesso dall’agenzia e ha terminato la propria interfaccia
utente. La reazione è da considerarsi corretta: infatti tutti i servizi operativi che LightAg è in
grado di mettere a disposizione dipendono strettamente dal buon funzionamento del
dispositivo IOC306.
Agganciando il dispositivo IOC306 finché LightAg era in esecuzione è stata riscontrata una
corretta reazione: LightAg attiva l’interfaccia utente e si connette all’agenzia. C’è da
evidenziare però che la reazione riscontrata è stata più veloce di quella prevista, infatti
LightAg riesce a rendersi conto che è in grado di essere di nuovo operativo in circa ½
secondo, senza aspettare i 2,5 secondi di media previsti (checkTime = 5000 millisecondi).
Tale comportamento credo sia dovuto al fatto che checkOp non venga chiamato dal processo
OperativeAgState ma dal listener associato a DvState. Ipotizzo dunque che la tecnologia
LON, ogni volta che un dispositivo viene collegato alla rete a caldo, sollevi un evento di
update per tutte le variabili pubblicate dal dispositivo agganciato.
5.4.1.2 WindowAg
Come detto, WindowAg non agisce realmente su un motore di azionamento di una finestra
ma solo su un controllore. Tale controllore, implementato sul dispositivo TAST, quando
riceve il comando di apertura (o chiusura) della finestra accende (o spegne) un led su TAST.
In fase sperimentale è stato possibile simulare sia l’apertura che la chiusura della finestra
(accendendo il led su TAST) utilizzando l’interfaccia grafica di WindowAg. L’interfaccia
grafica inoltre ha mostrato correttamente l’avvenuta apertura (e chiusura) della finestra.
Dal momento della pressione del bottone preposto all’apertura della finestra, all’accensione
del led che simula l’apertura è passato circa ½ secondo. Dall’accensione del led fino al
riscontro sull’interfaccia grafica di WindowAg è trascorso circa ½ secondo.
Come detto, l’apertura e chiusura della finestra è stata simulata tenendo premuto (finestra
chiusa) e rilasciando (finestra aperta) un pulsante su TAST.
148
Tenendo premuto o rilasciando il bottone che simula l’apertura o chiusura di una finestra è
stato riscontrata l’esatta reazione dell’interfaccia grafica al cambiamento dello stato della
finestra. Il tempo di reazione rilevato è stato di circa ½ secondo.
Chiudendo esplicitamente l’interfaccia utente di WindowAg l’agente si disconnetteva
dall’agenzia e terminava tutti i processi ad esso legati in modo corretto come previsto.
Sganciando il dispositivo TAST finché WindowAg era in esecuzione è stata riscontrata una
corretta reazione: WindowAg si è disconnesso dall’agenzia e ha terminato la propria
interfaccia utente. La reazione è da considerarsi corretta poiché tutti i servizi operativi che
WindowAg è in grado di mettere a disposizione dipendono strettamente dal buon
funzionamento del dispositivo TAST.
Agganciando il dispositivo TAST finché WindowAg era in esecuzione è stata riscontrata una
corretta reazione: WindowAg attiva l’interfaccia utente e si connette all’agenzia. C’è da
evidenziare però che la reazione riscontrata è stata anche in questo caso, come per LightAg
più veloce di quella prevista ( circa ½ secondo). Credo che valgano le stesse considerazioni
esposte per LightAg.
5.4.1.3 HPresenceDetector
In fase sperimentale è stato riscontrato che l’interfaccia utente reagisce in modo corretto
alla rilevazione o non rilevazione di presenza che gli perviene dal dispositivo HPresenceOP.
Chiudendo esplicitamente l’interfaccia utente di HPresenceDetector l’agente si disconnette
dall’agenzia e termina tutti i processi ad esso legati in modo corretto come previsto.
Sganciando il dispositivo HPresenceOP finché HPresenceDetector era in esecuzione è
stata riscontrata una corretta reazione: HPresenceDetector si è disconnesso dall’agenzia e ha
terminato la propria interfaccia utente. La reazione è da considerarsi corretta poiché tutti i
servizi operativi che HPresenceDetector è in grado di mettere a disposizione dipendono
strettamente dal buon funzionamento del dispositivo HPresenceOP.
Agganciando il dispositivo HPresenceOP finché HPresenceDetector era in esecuzione è
stata riscontrata una corretta reazione: HPresenceDetector attiva l’interfaccia utente e si
connette all’agenzia. C’è da evidenziare però che la reazione riscontrata è stata anche in
questo caso, come per LightAg e WindowAg, più veloce di quella prevista (circa ½ secondo).
149
5.4.1.4 GoalGenerator
I goal che doveva poter generare il GoalGenerator erano: turnOffLight, turnOnLight e
ESOn.
Il GoalGenerator è risultato in grado di generare tutti i goal quando l’utente sollevava le
rispettive esigenze utilizzando gli appositi pulsanti dell’interfaccia grafica. Inoltre il
GoalGenerator al momento della generazione del goal ESOn accendeva, come previsto, un
led sul dispositivo IOC306.
Agganciando o sganciando il dispositivo IOC306 durante il funzionamento del
GoalGenerator non accadeva nulla sul GoalGenerator come previsto.
5.4.2 Pianificazione ed esecuzione
Per validare la capacità dell’AGENZIA AMBIENTALE di pianificare in relazione alle reali
condizioni operative è stato creato il goal ESOn ed è stato espanso nei tre modi descritti nella
Sezione 5.3.1.
Di seguito descriverò il comportamento, riscontrato in fase sperimentale, dei dispositivi,
degli agenti da me implementati e del maggiordomo.
Successivamente alla pressione del pulsante “Turn On Energy Saving” presente
sull’interfaccia grafica del GoalGenerator, il GoalGenerator ha generato il goal ESOn. Da
un’interfaccia di monitoraggio del maggiordomo si è visto che il goal generato è stato preso
in considerazione. Nel momento in cui il goal è arrivato al maggiordomo (quasi
contemporaneamente all’istante di generazione del goal) il maggiordomo ha iniziato a
pianificare una soluzione possibile per soddisfare l’esigenza rappresentata da ESOn.
Il pianificatore del maggiordomo, durante la pianificazione, ha comunicato con tutti gli
agenti disponibili nell’agenzia per costruire un piano eseguibile.
Questa prova è stata ripetuta più volte con condizioni operative differenti. A seconda delle
condizioni sono stati costruiti dal maggiordomo diversi piani esecutivi per la stessa esigenza.
Di seguito riporto tutti i casi sperimentati.
•
Agenti connessi all’agenzia: LightAg; WindowAg; HPresenceDetector; Heating;
GoalGenerator.
- Piano esecutivo trovato (piano 1): piano di Fig. 5.11 (più i piani correlati di Fig.
5.14 e Fig. 5.15).
150
•
Agenti
connessi
all’agenzia:
LightAg;
WindowAg;
HPresenceDetector;
GoalGenerator.
- Piano esecutivo trovato (piano 2): piano di Fig. 5.12 (più il piano correlato di Fig.
5.15).
•
Agenti connessi all’agenzia: LightAg; HPresenceDetector; Heating; GoalGenerator.
- Piano esecutivo trovato (piano 2): piano di Fig. 5.12 (più il piano correlato di Fig.
5.15).
•
Agenti connessi all’agenzia: LightAg; WindowAg; Heating; GoalGenerator.
- Piano esecutivo trovato (piano 3): piano di Fig. 5.13 (più il piano correlato di Fig.
5.14).
•
Agenti
connessi
all’agenzia:
HPresenceDetector;
WindowAg;
Heating;
GoalGenerator.
- Piano esecutivo trovato (piano 3): piano di Fig. 5.13 (più il piano correlato di Fig.
5.14).
•
Agenti connessi all’agenzia: HPresenceDetector; WindowAg; GoalGenerator.
- Piano esecutivo trovato: nessuno.
•
Agenti connessi all’agenzia: LightAg; Heating; GoalGenerator.
- Piano esecutivo trovato: nessuno.
Ho provato inoltre a generare i goal turnOffLight e turnOnLight. Quando LightAg era
connesso all’agenzia i piani esecutivi per i due goal venivano trovati ed eseguiti, se LightAg
non era invece connesso all’agenzia i piani esecutivi per soddisfare turnOffLight e
turnOnLight non venivano invece trovati.
I piani esecutivi trovati dal maggiordomo sono sempre risultati corretti e adeguati alle
condizioni operative dell’intera agenzia. I piani trovati inoltre sono risultati anche quelli più
efficaci in relazione alle condizioni operative. Infatti, nonostante per tutte le espansioni create
io abbia impostato i medesimi valori per i parametri di performance, costo e probabilità di
successo, dall’analisi dei risultati sperimentali si può evincere che il pianificatore, quando
può scegliere tra più piani qualitativamente uguali, sceglie euristicamente sempre quello che
coinvolge il numero più elevato di espansioni.
Ricordo che il pianificatore una volta che ha trovato un piano eseguibile lo passa
all’esecutore. Quest’ultimo, come detto, si occuperà di utilizzare i servizi utili per
151
l’esecuzione del piano messi a disposizione dagli agenti connessi. In fase di esecuzione del
piano 1 ho provato a sganciare il dispositivo IOC306, l’agente WindowAg di conseguenza si
è sconnesso dall’agenzia in fase di esecuzione. L’esecutore del piano ha iniziato a generare
eccezioni e il piano in esecuzione si è operativamente interrotto. L’esecutore però, non
avendo gestito opportunamente le eccezioni, non è stato in grado di notificare al
maggiordomo che il piano non era più in esecuzione. Difatti nell’interfaccia di monitoraggio
del maggiordomo risultava che il piano era ancora in esecuzione. Ho provato a quel punto a
rigenerare di nuovo il goal ESOn (tramite il GoalGenerator) ma il maggiordomo sospendeva
la pianificazione di tale goal attendendo la terminazione del piano realizzato
precedentemente per il medesimo goal (ESOn). Generando invece un altro goal, ad esempio
turnOffLight, il maggiordomo si comportava invece correttamente pianificando ed eseguendo
il piano trovato.
Ho provato più volte a generare tre o quattro goal a distanza di circa ½ secondo l’uno
dall’altro, nella maggior parte delle volte il maggiordomo andava in errore, generando
eccezioni non gestite e compromettendo il funzionamento dell’intera AGENZIA AMBIENTALE.
Concludendo, l’AGENZIA AMBIENTALE ha dimostrato di essere perfettamente adattabile alle
condizioni operative in modo dinamico ma ha dimostrato una forte instabilità.
5.4.3 Valutazione funzionale dell’applicazione domotica
In questa sezione darò una valutazione funzionale dell’applicazione domotica dal punto di
vista dell’utilizzatore.
L’applicazione domotica da me realizzata è stata in grado di sfruttare tutte le funzioni
esposte nella Sezione 5.1.1 messe a disposizione da ogni singolo agente (compreso il
GoalGenerator) pur dimostrando in molti casi un’instabilità complessiva (dovuta
all’instabilità dell’AGENZIA AMBIENTALE).
E’ stato riscontrato che finché il piano 1 era in esecuzione, osservando le azioni, le reazioni
e le interazioni fisiche tra l’uomo, l’ambiente e i dispositivi, accadeva che:
1)
- Se non vi era più presenza rilevata nell’ambiente
allora:
- veniva segnalato lo stato di non rilevazione di presenza tramite l’interfaccia
utente del HPresenceDetector;
152
- si spegneva la luce e veniva segnalata sull’interfaccia utente di LightAg che la
luce era spenta.
- Se veniva nuovamente rilevata presenza nell’ambiente
allora:
- veniva segnalata la rilevazione di presenza tramite l’interfaccia utente del
HPresenceDetector;
- veniva rimessa la luce nello stesso stato in cui era prima che il sistema
intervenisse per spegnerla;
- l’interfaccia utente di LightAg reagiva all’eventuale nuovo stato della luce.
2)
- Se veniva aperta la finestra
allora:
- veniva segnalata l’apertura della finestra tramite l’interfaccia utente di
WindowAg;
- si spegneva il riscaldamento.
- Se la finestra veniva richiusa il riscaldamento veniva riportato nello stesso stato in cui era
prima dell’apertura della finestra.
Finché il piano 2 era in esecuzione veniva eseguito solo il comportamento descritto al
punto 1.
Finché il piano 3 era in esecuzione veniva eseguito solo il comportamento descritto al
punto 2.
Dalla valutazione funzionale dell’applicazione domotica che ho realizzato posso
concludere che tutti i servizi remoti messi a disposizione per l’agenzia dagli agenti sono stati
implementati correttamente. Inoltre si può concludere che la cooperazione tra gli agenti e il
maggiordomo dell’AGENZIA AMBIENTALE funziona correttamente e grazie a questa
cooperazione l’utente dell’applicazione domotica può beneficiare della funzionalità di
EnergySaving. L’utente è in grado di sfruttare l’EnergySaving anche se alcuni dispositivi
presenti sulla rete domotica non funzionano o non sono presenti grazie all’adattabilità alle
condizioni operative messe a disposizione dall’AGENZIA AMBIENTALE. Sganciando alcuni
dispositivi finché l’EnergySaving era attivo, l’applicazione domotica risultava non essere più
in grado di funzionare correttamente e necessitava di essere riavviata (per i motivi descritti
153
nella Sezione 5.4.2). Nello stato dell’arte relativo alla domotica (Sezione 2.2.3) tra i requisiti
espressi per l’UC e auspicabili anche per un sistema domotico vi era l’eternità; l’applicazione
domotica realizzata non rispetta tale requisito.
Osservando l’interfaccia grafica messa a disposizione dall’applicazione domotica posso
dire che, grazie alla reattività dei singoli agenti, l’utente si trova di fronte ad un’interfaccia
dinamica, reattiva e in grado di mettere a disposizione solo i servizi realmente operativi,
come auspicato nella Sezione 3.2. Fatta eccezione per i servizi messi a disposizione dal
GoalGenerator che saranno invece strettamente legati alla buona riuscita della pianificazione
e per tale motivo non prevedibili a priori.
5.4.4 Valutazione di alcuni tempi di risposta
In questa sezione descriverò le valutazioni relative al confronto tra il tempo impiegato,
agendo direttamente sull’interfaccia utente di LightAg oppure agendo sull’interfaccia del
GoalGenerator, per accendere (o spegnere) una luce (vedi Fig. 5.17). E’ stato riscontrato che
premendo il pulsante “Turn On Light” sull’interfaccia di LightAg ci vuole circa ½ secondo
prima che la lampadina si accenda. Premendo invece il pulsante “Turn On Light”
sull’interfaccia del GoalGenerator ci vogliono circa 2 secondi prima che la lampadina si
accenda. Quest’ultima è una valutazione media su circa dieci prove ripetute. E’ stato
riscontrato che a seconda del numero degli agenti connessi all’agenzia i tempi di risposta per
accendere la lampadina utilizzando il GoalGenerator aumentavano sensibilmente (fino a 4
secondi). Utilizzando il GoalGenerator, come detto, si chiama in causa il maggiordomo che
costruisce un piano esecutivo. Per costruire un piano il maggiordomo si occupa di dialogare
con tutti gli agenti presenti nell’agenzia al fine di recuperare conoscenza utile alla
pianificazione. A causa di questo meccanismo di pianificazione il tempo di risposta del
sistema per accendere la lampadina, utilizzando il GoalGenerator, è fortemente dipendente
dal numero di agenti connessi all’agenzia durante la costruzione del piano.
154
6
CONCLUSIONI E
SVILUPPI FUTURI
Le conclusioni possono essere divise nelle seguenti parti.
•
Valutazione delle modifiche apportate alla struttura di un agente per aumentarne la
reattività ai mutamenti contestuali.
•
Valutazione dell’interfaccia di comunicazione per l’interoperabilità tra il device
controller e i dispositivi realizzati con altre tecnologie.
•
Valutazione dell’AGENZIA AMBIENTALE come architettura per la realizzazione di
applicazioni domotiche.
•
Valutazione complessiva dell’applicazione domotica realizzata.
Valutazione delle modifiche apportate alla struttura di un agente
Le modifiche alla struttura logica dell’agente mi hanno permesso di realizzare degli agenti
indipendenti, in grado di sviluppare una reattività efficace sia verso l’agenzia che verso
l’utente. Infatti, tutte le prove realizzate hanno confermato la capacità degli agenti di reagire
in modo adeguato sia ai cambiamenti di stato che a eventuali malfunzionamenti o disservizi
dei dispositivi che compongono il semiagente operativo.
Valutazione dell’interfaccia di comunicazione per l’interoperabilità tra il device
controller e i dispositivi
I servizi messi a disposizione dall’interfaccia di comunicazione tra il device controller e i
dispositivi hanno consentito una comunicazione efficace con tutti i dispositivi utilizzati per la
realizzazione dell’applicazione domotica. E’ stato possibile gestire sia una comunicazione
dal device controller verso i dispositivi, che una comunicazione dai dispositivi verso il device
controller di tipo publish-subscribe tramite la gestione degli eventi.
Per connettere dei dispositivi reali con il device controller è stata scelta la tecnologia
LONTALK. L’implementazione realizzata dell’interfaccia di comunicazione tra il device
controller e i dispositivi interconnessi con la tecnologia LONTALK si è dimostrata in grado di
rendere operativi tutti i servizi necessari alla comunicazione. Dalla valutazione dei tempi di
risposta del sistema c’è da evidenziare che l’implementazione non si è dimostrata però molto
efficiente. In tal senso, una direzione futura di sviluppo sta proprio nell’ottimizzazione di tale
implementazione al fine di diminuire i tempi di risposta dell’intera applicazione domotica.
Valutazione dell’AGENZIA AMBIENTALE
I meccanismi per la pianificazione ed esecuzione dei piani d’azione messi a disposizione
dall’agente maggiordomo (parte dell’AGENZIA AMBIENTALE) si sono dimostrati dinamici ed
adeguati per la soddisfazione di esigenze d’alto livello in relazione agli agenti e ai servizi
realmente operativi in un dato momento. Per validare tale caratteristica sono state fornite al
maggiordomo tre diverse soluzioni per far fronte all’esigenza di risparmiare energia. Ognuna
delle soluzioni presupponeva l’esistenza, nell’agenzia, di differenti agenti e servizi. La
sperimentazione effettuata ha dimostrato che il maggiordomo è in grado di costruire ed
eseguire il piano di risparmio energetico (e quindi di soddisfare un’esigenza) effettivamente
realizzabile in relazione alle risorse disponibili. In presenza di più di un piano d’azione
realizzabile, il maggiordomo si è dimostrato in grado di scegliere euristicamente il piano più
efficace. In fase di sperimentazione è stato però riscontrato che, se vengono a mancare degli
agenti utili ad un piano durante l’esecuzione dello stesso, l’intera AGENZIA AMBIENTALE non
funziona più correttamente. Questo è dovuto al fatto che l’esecutore dei piani, presente nel
maggiordomo, non è in grado di gestire i cambiamenti delle condizioni operative in fase di
esecuzione di un piano. Una possibile direzione futura di sviluppo è quindi quella di
modificare il maggiordomo in modo tale che, anche in fase di esecuzione di un piano, sia in
grado di intervenire nel caso di cambiamento delle condizioni operative.
Nella realizzazione dell’applicazione domotica, non è stato possibile fornire all’utente la
possibilità di sapere se la richiesta di risparmiare energia fosse stata presa in considerazione e
risolta positivamente dal sistema. Questo perché, nell’AGENZIA AMBIENTALE, non è previsto
che a un agente venga notificato se l’eventuale esigenza che ha sollevato sia stata soddisfatta
positivamente o meno. Un altro degli sviluppi futuri che propongo, è quindi quello di
modificare i meccanismi di comunicazione tra il maggiordomo e gli altri agenti al fine di
poter notificare quando l’esecuzione di un piano per la soddisfazione di un’esigenza è andata
156
a buon fine. E’ stato riscontrato inoltre che il maggiordomo a volte non è stato in grado di
gestire più di quattro o cinque esigenze consecutive a distanza di pochi decimi di secondo
l’una dall’altra. Concludo quindi dicendo che, secondo me, le potenzialità dell’AGENZIA
AMBIENTALE, così come era stata pensata e con le modifiche da me apportate, sono notevoli
ma, in futuro, si dovrà lavorare molto sulla sua stabilità.
Valutazione complessiva dell’applicazione domotica realizzata
L’applicazione domotica realizzata, utilizzando l’AGENZIA AMBIENTALE e le modifiche da
me apportate, è stata in grado di fornire tutte le funzioni per la quale era stata progettata. Un
utente, utilizzando l’interfaccia grafica messa a disposizione dall’applicazione è in grado di:
monitorare e controllare un punto luce; monitorare e controllare una finestra; monitorare e
controllare il riscaldamento simulato; rendersi conto che il sistema ha rilevato presenza
umana. Inoltre, fornendo la conoscenza necessaria e sfruttando la capacità di pianificare in
modo dinamico dell’AGENZIA AMBIENTALE, l’applicazione è in grado di realizzare un piano
di cooperazione, tra tutti gli agenti e i servizi realmente disponibili, al fine di poter
risparmiare energia. C’è da evidenziare che se viene sganciato un dispositivo, finché è attivo
il piano di risparmio energetico messo a punto dal sistema, l’applicazione non è più in grado
di funzionare correttamente ed è necessario riavviarla per renderla nuovamente operativa.
Questo problema è dovuto all’instabilità, in fase di esecuzione di un piano, dell’architettura
(fornita dall’AGENZIA AMBIENTALE) sulla quale è costruita l’applicazione domotica. Una
possibile direzione di sviluppo futuro è quella di rendere l’applicazione più tollerante ai
guasti e ai cambiamenti contestuali intervenendo sull’implementazione dell’applicazione
domotica per aggirare i problemi dell’ AGENZIA AMBIENTALE o intervenendo, come detto in
precedenza, direttamente sull’AGENZIA AMBIENTALE stessa.
157
APPENDICE A
STANDARD E TECNOLOGIE
PER LA DOMOTICA
In questa appendice fornirò ulteriori dettagli relativi alle tecnologie e agli standard (presenti
sul mercato della domotica) presentati nello stato dell’arte (nella Sezione 2.3.1 e nella
Sezione 2.3.2).
A.1 Mercato europeo
Il mercato europeo è caratterizzato dalla presenza di diversi standard proprietari e non che,
per molteplici motivi non sono riusciti ad imporsi nel mercato dell’automazione domestica
singolarmente.
In Europa si sta imponendo un unico protocollo, chiamato KONNEX (o KNX) [50], nato dalla
fusione dei tre standard nati separatamente e inizialmente in concorrenza fra loro (EHS,
BATIBUS, EIB). Nonostante sembra che si stia arrivando ad un unico standard, di seguito
proporrò una trattazione separata dei tre standard; infatti KNX fissa per lo più regole
d’interoperabilità diventando più che uno standard unico un contenitore di standard
differenti.
EHS [51]
EHS (European Home System), e stato sviluppato a partire dal 1987 nell’ambito dei
programmi europei Eureka ed Esprit, con i finanziamenti della Commissione Europea, nel
tentativo comune di interconnettere diversi dispositivi elettrici ed elettronici per l’uso in
ambito domestico. Il progetto è stato nominato EHS nel 1995 quando le compagnie che hanno
portato avanti lo sviluppo hanno dato vita al EHSA (European Home System Association).
Fanno parte di questa associazione circa trentasei compagnie tra le quali PHILIPS
ELECTRONICS, BT e THORN EMI. Nell’ottobre 1995, il CEBUS INDUSTRY COUNCIL (CIC) ha
annunciato un’alleanza con EHS promosso dal EHSA come la tecnologia di rete del futuro
nell’ambito dell’automazione domestica. Essendo una tecnologia aperta che supporta diversi
mezzi trasmessivi, EHS ricerca l’interoperabilità tramite: l’utilizzo di un linguaggio di
comandi orientato agli oggetti e una classificazione dei dispositivi che permette a dispositivi
appartenenti alla stessa classe di poter essere intercambiabili.
EHS supporta plug & play (l’aggancio e sgancio dei dispositivi non necessita di
riconfigurazione del sistema e della rete), generalmente un apparecchio EHS comprende un
micro-controllore e un modem integrato.
Le specifiche EHS sono state rilasciate verso la fine del 1991, e modificate nel corso degli
anni e le ultime sono del 2000 .
E’ uno standard aperto per il quale è prevista una certificazione dei prodotti.
EHS implementa i livelli 1,2,3 e 7 del modello OSI (Open System Interconnection). I mezzi di
trasmissione previsti sono: il doppino telefonico, le onde convogliate, il cavo coassiale, la
radiofrequenza, i raggi infrarossi e la radio frequenza. La topologia è a stella o bus per il cavo
coassiale, solo a bus per il doppino telefonico.
La rete effettua una trasmissione credibile e sicura di informazioni tra i terminali del sistema,
coinvolgendo i più bassi strati del modello di riferimento OSI effettuando il recupero
automatico delle informazioni perse (recovery).
La rete è in grado di autoconfigurarsi e implementa possibilità diagnostiche.
I livelli di destinazione dei segnali di comando sono rappresentati da indirizzi che
collegano gli attuatori con le applicazioni (attuatori e applicazioni possono anche coesistere
sullo stesso dispositivo). La gestione della rete usa un unico codice di destinazione. Ogni
sezione della rete permette di indirizzare fino a 256 terminali. Un sistema implementato con
lo standard EHS può gestire milioni di indirizzi (oltre 1012).
EHS è dotato di un servizio sviluppato per fornire robustezza al sistema contro gli errori di
comunicazione, apparecchi malfunzionanti o rilocazioni casuali. Questo servizio amministra
l’inizializzazione del sistema e la riconfigurazione dopo la perdita di energia o il
riposizionamento delle unità ed è inoltre sfruttato per poter portare a termine la funzione di
plug & play.
159
BATIBUS [52]
E’ uno standard europeo comprendente oltre cento aziende tra cui MERLINGERIN, AIRLEC,
EDF, LANDIS&GIR. L’associazione BATIBUS CLUB INTERNATIONAL nasce a Parigi nel 1989
ed è l’associazione alla quale si deve il merito di aver introdotto sul mercato il primo vero
sistema a bus. L’obbiettivo iniziale di questa associazione è la realizzazione di prodotti basati
sulla rete di comunicazione BATIBUS e di estenderne l’uso nei vari settori del mercato
residenziale e terziario.
I mezzi di trasmissione previsti sono: il doppino, la radiofrequenza e i raggi infrarossi. La
velocità di trasmissione è limitata a 4800baud su qualsiasi tipo di topologia di rete (bus,
stella, albero, loop o combinazioni di questi) distribuiti su di una distanza non superiore ai
2,5 Km.
Prevede l'identificazione di ogni dispositivo (detto punto) con tre codici definiti indirizzo,
tipo ed estensione. Sono disponibili 240 indirizzi per ogni tipo di punto terminale e sono
realizzabili 32 tipi di punto: centrale (00), ingresso binario (05), uscita binaria (04), comando
manuale (0E), trasmettitore telefonico (01), ecc. Ogni punto può avere indirizzo senza
estensione (codice di estensione 00) oppure con estensione (codice di estensione 04) e in tale
caso dispone di altri byte per definire l'indirizzo.
I messaggi possono avere indirizzamenti di diverso tipo.
•
Diretto (punto a punto): da un punto a un altro punto avente indirizzo, tipo ed
estensione specificati nel pacchetto inviato.
•
Di gruppo (multicast): da un punto a più punti, definiti gruppo, aventi la prima cifra
di indirizzo, tipo ed estensione specificati nel messaggio in linea. Ogni gruppo è
costituito da 16 punti e in totale i gruppi sono 15.
•
Generale (broadcast): da un punto a tutti i punti della rete.
•
Esteso (extended): da un punto con codice estensione 04 ad un altro punto con
estensione 04. Le informazioni riguardanti l'indirizzo sono contenute nei byte
denominati TAE (Tipo di indirizzo esteso), Eadr (Estensione dell'indirizzo) e in altri
opzionali che definiscono il gruppo, la zona e lista indirizzi.
EIB [53]
E’ uno standard europeo di proprietà della EIBA (European Installation Bus Association)
cui sono associate o affiliate più di cento aziende europee. Il protocollo EIB è uno standard
disponibile per le aziende affiliate e i prodotti sviluppati sono certificati dagli appositi
160
laboratori.
Per garantire la compatibilità dei prodotti offerti dai numerosi costruttori, EIBA ha
provveduto a mettere a punto una serie di procedure unificate. Eiba si occupa di:
• stabilire le prescrizioni relative al prodotto, lo standard qualitativo e le procedure di
verifica;
• rilasciare le licenze del marchio;
• partecipare alla stesura delle normative nazionali e internazionali;
• contribuire ad emanare le disposizioni sulle certificazioni e sui centri di formazione.
Il risultato di tutto questo è fornire una serie di prodotti che possono garantire,
indipendentemente dal costruttore, un elevato standard qualitativo e una totale compatibilità.
Vi sono circa cinquanta produttori tra cui i più significativi sono ABB, SIEMENS, VIMAR,
GEWISS, PHILIPS. In Italia si è formata l’associazione EIBA Italia, sulla spinta di quella
europea, importante riferimento per lo sviluppo della tecnologia bus negli impianti di
automazione per gli uffici. La commercializzazione, iniziata nei primi anni novanta,
comprende oltre quindicimila sistemi che in prevalenza sono stati installati nell’ambito della
building automation (automazione industriale) con la tendenza a diffondersi nell’home
automation; è uno standard in Francia e Germania oltre che uno standard sperimentale della
Comunità Europea in convergenza con lo standard KNX.
EIB prevede vari mezzi trasmessivi: il doppino telefonico, le onde convogliate, la
radiofrequenza e ETHERNET. Ad una rete EIBus (dorsale di tipo bus dello standard EIB) è
possibile collegare fino a 61.455 dispositivi. La topologia può essere a bus, stella, albero e
soluzioni miste dove comunque la lunghezza totale non deve superare i 1000 metri per
segmento, 700 metri tra i vari dispositivi e 350 metri tra l’alimentatore e il bus. La velocità di
trasmissione è 9600bps.
EIB prevede lo scambio messaggi come paradigma di comunicazione fra i dispositivi.
L’indirizzamento fisico è dato semplicemente dalla posizione del dispositivo nell’impianto.
EIB ha sviluppato inoltre un dispositivo gateway per l’accesso al bus via IP.
161
KNX [54]
Il mercato degli standard per l’automazione domestica negli ultimi anni è stato
caratterizzato da numerosi standard proprietari e da nuovi consorzi che annunciavano la loro
intenzione di sviluppare lo standard del futuro per l’automazione domestica. In Europa è stata
intrapresa la strada della convergenza verso un unico standard. Hanno partecipato alla
convergenza le associazioni BATIBUS, EIBA e EHSA che hanno dato vita inizialmente nel
1998 ad un’unica associazione, TUBA (The Universal Bus Association) e successivamente nel
1999 all’associazione europea KONNEX con sede a Bruxelles.
KONNEX è stata fondata da nove compagnie appartenenti alle associazioni già citate, con lo
scopo di promuovere lo sviluppo di un nuovo standard denominato KNX (BATIBUS, EHS ed
EIB compatibile).
Le compagnie che compongono l’associazione KONNEX provengono da diversi settori:
• produttori di dispositivi elettrici, elettronici e sistemi HVAC;
• sistemi di intrattenimento domestico;
• telecomunicazioni;
• energetico;
• installatori di dispositivi elettrici e HVAC, integratori di sistemi.
KNX utilizza lo stack di comunicazione di EIB con l’ausilio dell’esperienza maturata da
BATIBUS e EHS e prevede tre diverse possibilità di configurazione su quattro diversi mezzi
trasmissivi (ETHERNET wireless e non, doppino telefonico, rete elettrica con onde
convogliate)
In KNX si possono quindi trovare tutte le specifiche e i requisiti elencati nelle descrizioni
precedenti di EIB, EHS e BATIBUS e in particolare sono implemetati i servizi di discovery e
gestione degli eventi (gestione degli eventi distribuiti, dove gli elementi software si possono
sottoscrivere o sollevare un certo tipo di evento).
A.2 Mercato americano
Sembra essere contraddistinto da una maggiore conflittualità tra standard diversi e non è
ancora stata intrapresa una vera e propria strada di convergenza come nel caso del mercato
europeo [50].
162
X-10 [54]
E’ uno standard sviluppato nel 1976 ed è stato il primo ad utilizzare le onde convogliate su
linea elettrica, ottenendo una buona diffusione negli Stati Uniti. E’ un protocollo di
comunicazione per il comando remoto di dispositivi elettrici, progettato per la comunicazione
tra ricevitori e trasmettitori che comunicano in modo standard. In un sistema X-10 i
trasmettitori possono inviare comandi di tipo binario o di tipo intero o reale (integer o real) ai
ricevitori.
La trasmissione dei comandi avviene tramite l’invio d’impulsi da parte di un pannello di
controllo.
Ad ogni ricevitore installato viene associato un ID che serve per permettere uno scambio
messaggi punto a punto con il trasmettitore. Attualmente è disponibile sul mercato qualsiasi
tipo di dispositivo funzionante con tecnologia X-10 e svariati tipi di trasmettitori in grado di
programmare comandi temporizzati.
Le specifiche del protocollo X-10 definiscono 256 indirizzi: 16 classi di codici (A-P) e 16
codici unità (1-15) che risultano più che sufficienti per le esigenze di un’abitazione, visto
anche che più ricevitori possono gestire lo stesso ID (codice di classe e codice unità) e quindi
un singolo comando può essere eseguito da più ricevitori in parallelo.
Il sistema X-10 incontra problemi con l’aumentare del bit rate: interferenze, rumori,
attenuazione, variazioni di impedenza. Sono disponibili dei filtri e dei ripetitori di segnale per
cercare di risolvere questi problemi che risultano più evidenti nei casi in cui la distanza tra il
controllore e il ricevitore supera certi limiti.
CEBUS [64]
E’ un protocollo di comunicazione per l’automazione domestica, divenuto uno standard
negli Stati Uniti. CEBUS è stato sviluppato dalla EIA (Electronic Industries Association)
dopo che nel 1984 ha deciso di standardizzare l’uso dei segnali infrarossi per il controllo
remoto di dispositivi elettrici.
CEBUS (Consumer Electronics Bus) è stato formalizzato nel 1992 mentre il processo per
divenire standard nazionale è iniziato nel 1995.
Un comitato tecnico nato dalla collaborazione dell’IEC (International Electrotechnical
Commission) e dell’ISO (International Organization for Standardization) ha creato un
Working Group per la specifica di standard di automazione domestica HES (Home Electronic
System) al quale si sono unite delegazioni di CEBUS e SMART HOUSE.
163
Oltre 200 compagnie produttrici di dispositivi per l’automazione domestica hanno
partecipato attivamente al processo di definizione del protocollo, influenzando lo standard
con caratteristiche di flessibilità e controllo dei costi nelle applicazioni.
Nelle specifiche di questo standard è previsto l’utilizzo dei seguenti mezzi di trasmissione:
onde convogliate su linea elettrica, doppino, cavo coassiale, infrarossi, radiofrequenza, fibre
ottiche e cavi coassiali specifici per la trasmissione audio-video. Ogni canale di controllo
CEBUS trasmette segnali alla stessa velocità; possono anche trasportare segnali analogici e
digitali a seconda del supporto di comunicazione utilizzato. I comandi e le informazioni
relative allo stato sono trasportati nel canale in forma di pacchetti di byte simili ai
datagrammi.
CEBUS definisce una topologia flessibile, in cui un dispositivo può venire installato ovunque
tramite interfacce CEBUS. I messaggi sono trasmessi nel sistema tra diversi mezzi grazie a a
degli instradatori specifici. Tutte le applicazioni collegate alla rete sono considerate come se
fossero sul bus, quindi ogni componente CEBUS deve rispondere oltre che ai messaggi
individuali, anche ai messaggi che riportano l’indirizzo di broadcast. Il collegamento tra un
dispositivo e la rete CEBUS avviene tramite un circuito chiamato brick.
Ad esempio con l’uso del telecomando del televisore è possibile accendere le luci. Il
televisore riceve il segnale IR da un brick. Il televisore non riconosce il comando che quindi
passa al router il quale invia alla rete elettrica un segnale contenente il comando da
indirizzare all’unità di controllo delle luci. Il controllore del sistema luci riceve il messaggio
ed effettua l’accensione.
CEBUS specifica anche un linguaggio comune per le applicazioni : CAL (Common Language
Application) che permette ai vari dispositivi installati di comunicare. Ogni dispositivo è
definito nel CAL come un contesto (uno stereo o un TV sono possibili contesti), mentre le
proprietà di ogni dispositivo (volume, luminosità, bilanciamento) sono oggetti del contesto.
LONTALK [55]
E’ uno standard nato nel 1990 di proprietà della compagnia americana ECHELON che, con
MOTOROLA e TOSHIBA, si occupa della produzione di un chip neuronale che ne implementa
le specifiche.
ECHELON offre componenti hardware, firmware e software, come completamento di una
struttura di rete denominata LON (Local Operative Network), cioè network operante
localmente. Il protocollo LONTALK è stato sviluppato specificatamente per il funzionamento
164
LON che, quando è completo di hardware e software, viene chiamato LONWORKS. Il principio
di funzionamento del LON si basa su un'unica interfaccia denominata neuron chip che
permette a tutti i dispositivi di interfacciarsi alla rete. Il neuron chip è richiesto da tutti i
dispositivi collegati ad una rete LONWORKS ed è attualmente composto da tre processori ad 8
bit. Due sono ottimizzati per l’esecuzione del protocollo, mentre il terzo per l’applicazione; il
processore si occupa perciò sia della comunicazione che dell’applicazione.
Ciascun nodo di un network LON è programmato in modo da permettere la comunicazione di
specifici dati interni ad uno o più nodi. Le informazioni che uno specifico nodo invia sono
ottenute come risultato di un cambiamento di stato o di eventi programmati. In seguito ad un
cambio di stato in un nodo del network, gli indirizzi dei destinatari di questa informazione
sono codificati dallo strumento di configurazione in un quadro interno del neuron chip.
Le reti LONTALK dispongono di una vasta gamma di mezzi per la trasmissione. I nodi
dotati di hardware o firmware propri (elettrodomestici, interruttori e sensori) possono essere
collegati a qualsiasi mezzo di trasmissione (onde convogliate, doppino, frequenze radio, fibre
ottiche) con una diversa velocità di comunicazione per ognuno di questi.
I segnali tra i vari nodi viaggiano ad una velocità che varia da circa 4000 bit per secondo
(bps) per linee che trasmettono energia elettrica a 1,25 milioni bps per il doppino (con
lunghezza limitata). Ci sono ditte che offrono trasduttori per cavi coassiali e fibre ottiche. Il
network LON è pensato per apparecchi di controllo ma è in grado di supportare, mediante
l’uso di apposite centraline di controllo, la distribuzione di suoni e immagini in modo
analogico. LONTALK fornisce reti separate a seconda che il mezzo di trasmissione sia energia
elettrica o radio. Nel LONTALK ogni rete logica è chiamata domain. LONTALK provvede alla
radio o filo diffusione indirizzata a ciascun nodo presente in un domain o in una rete
subordinata. È ammessa anche una trasmissione di gruppo dove un nodo può essere parte di
gruppi multipli. Attraverso sistemi LONWORKS è possibile controllare il consumo energetico
di ogni singolo apparecchio e gestire scenari di sovraccarico elettrico e blackout.
Particolare attenzione va data al meccanismo di notifica degli eventi che il sistema
LONTALK utilizza dove ciascun nodo di un network LON è programmato in modo da
comunicare specifici dati interni ad uno o più nodi. Questi rapporti sono emanati come
risultato di un cambiamento di stato o di eventi programmati. Gli indirizzi dei destinatari di
un cambio di stato sono codificati in un quadro interno del neuron chip da uno strumento di
configurazione messo a disposizione da LONWORKS. La comunicazione all’interno di
LONWORKS funziona dunque per lo più ad eventi dipendenti da cambi di stato di variabili
165
d’interfaccia pubblicabili sulla rete da ogni dispositivo (nodo). Le variabili d’interfaccia
pubblicate si dividono in variabili d’ingresso e variabili d’uscita. Ogni valore di una variabile
d’uscita di un dispositivo può essere connessa virtualmente a un valore di una variabile
d’ingresso dello stesso tipo di un altro dispositivo. Le variabili di rete e i valori che queste
possono assumere sono definite in uno standard chiamato Standard Network Variable Types
(SNVTS). Questo standard, tra le diverse formalizzazioni, stabilisce che tutte le variabili
pubbliche d’ingresso abbiano il prefisso nvi e tutte quelle d’uscita il prefisso nvo.
HAVI [56]
HAVI (un abbreviazione per Home Audio/Video Interoperability) è un’architettura
sviluppata da un insieme di aziende per facilitare interoperabilità fra dispositivi realizzati da
produttori diversi, in modo da rendere più semplice la realizzazione di applicazioni
distribuite sulla rete domestica.
La definizione di HAVI è avvenuta nel maggio 1998 da un consorzio di cui fanno parte otto
aziende (GRUNDIG, HITACHI, MATSUSHITA, PHILIPS, SHARP, SONY, THOMSON e TOSHIBA) che
possiedono circa l’ottanta per cento del mercato mondiale degli elettrodomestici. La
documentazione prodotta consta di circa 500 pagine e descrive dettagliatamente come i
dispositivi elettronici presenti nell’abitazione devono interagire nella rete domestica del
futuro.
La sua architettura è formata da un insieme di API, da servizi e del protocollo di rete IEEE
1394 (high performance serial bus). HAVI realizza un sistema paritetico dove ogni dispositivo
è in grado di individuare, interrogare e controllare ogni altro dispositivo. E’ possibile inoltre
la cooperazione tra gruppi di dispositivi.
L’architettura di HAVI definisce uno stack per la gestione della comunicazione di base e
l’interazione tra dispositivi sulla rete e, inoltre, un’interfaccia UI (Universal Interface) che
può essere utilizzata indipendentemente dallo stack.
I moduli definiti nello stack HAVI sono:
•
messaging system, responsabile della comunicazione tra dispositivi;
•
registry, che effettua la registrazione di tutti i dispositivi HAVI presenti nella rete;
•
event manager, per la notifica di eventi;
•
stream manager, che realizza il servizio di data stream;
166
•
resource manager, per la gestione della condivisione e dell’allocazione di dispositivi
e risorse;
•
Device Control Module (DCM), il quale controlla un dispositivo HAVI.
HAVI riconosce quattro categorie di apparecchi elettronici: FAV (Full AV), IAV
(Intermediate AV), BAV (Base AV), LAV (Legacy AV). FAV e IAV hanno funzione di
controllo, mentre i dispositivi BAV e LAV possono essere solamente controllati. Ogni
elemento di questa categoria di dispositivi implementa un sottoinsieme dei moduli definiti
nello stack HAVI.
A.3 Mercato giapponese (HBS)
Un consorzio di società giapponesi, con il supporto di agenzie governative, ha definito un
protocollo standard per lo sviluppo di applicazioni per l’automazione domestica denominato
HBS (Home Bus System).
Le applicazioni dell’HBS includono il controllo di dispositivi domestici, audio, video e
accesso a servizi esterni alla casa. Lo sviluppo di HBS è stato promosso da massicci
investimenti di capitali da parte del MITI (Ministry of International Trade and Industry),
REEA (the Radio Engineering and Electronics Association) e EIAJ (Electronics Association
of Japan) Si è inoltre costituito un consorzio di compagnie giapponesi per l’estensione del
sistema HBS. Le compagnie che partecipano a questo sviluppo sono HITALCHI LTD,
MITSUSHITA ELETTRIC INDUSTRIAL CO LTD, MITSUBISHI ELETTRIC CORP e TOSHIBA CORP.
Nella sua versione originale, HBS definiva inizialmente il doppino e il cavo coassiale come
unici mezzi di trasmissione ma oggi è contemplata anche la radio frequenza, è in fase di
sviluppo la possibilità di utilizzo di onde convogliate su linee di potenza. Su questo standard
non ho potuto addentrarmi ulteriormente per la difficoltà di reperire informazioni relative alle
specifiche tecniche.
A.4 Mercato internazionale
Oltre agli standard che si stanno affermando nei diversi continenti, a livello internazionale
si assiste al diffondersi di BLUETOOTH, uno standard che si occupa per lo più
d’interconnessione, ma si occupa anche di fissare regole su diversi livelli della gerarchia OSI
al fine di fornire, built in, numerose funzioni e servizi di supporto alla comunicazione e
167
all’interazione tra dispositivi e servizi. BLUETOOTH è considerato in letteratura uno standard
d’interconnessione wireless evoluto [57].
Il consorzio BLUETOOTH è stato fondato nel 1998 da ERICSSON, IBM, INTEL, NOKIA e
TOSHIBA e comprende attualmente i maggiori produttori di apparecchiature di telefonia,
elettronica e informatica.
BLUETOOTH, che significa dente blu, era il cognome di Harald re vikingo del decimo
secolo, artefice dell’unificazione geografica tra Danimarca e Norvegia. Per la vocazione a
unire mondi diversi, è stato scelto come nome di questa tecnologia che mediante un sistema
radio che opera sui 2,4 GHz consente ad apparecchiature elettroniche e informatiche di
comunicare con una velocità fino ad 1Mb/s nel raggio limitato di una decina di metri. La
tecnologia wireless BLUETOOTH fornisce una connettività voce e dati ad alta capacità e a
basso costo e si propone come standard per i cellulari, personal computer, laptop e moltissimi
altri dispositivi elettronici. La comunicazione avviene tra piccole radio ricetrasmittenti
integrate, altamente performanti, ognuna delle quali ha assegnato un indirizzo unico a 48 bit
proveniente dallo standard IEEE 802. Le specifiche di BLUETOOTH comprendono hardware,
software e requisiti d’interoperabilità.
Ciò che caratterizza la posizione di confine di BLUETOOTH tra una semplice tecnologia
d’interconnessione e una vera e propria architettura per l’automazione domestica sono la sua
capacità di autoconfigurazione dinamica di reti autonome e il suo protocollo di Service
Discovery Protocol (SDP).
Figura A.1 Un esempio di rete wireless formata secondo lo standard BLUETOOTH
168
I dispositivi comunicano tra loro creando e riconfigurando dinamicamente delle reti ad hoc
(dette piconet), composte da un massimo di otto nodi dove uno dei quali funge da master
(gestore della piconet) e gli altri fungono da slave. La configurazione cambia
automaticamente quando si inserisce o si elimina un dispositivo. Più piconet possono a loro
volta interconnettersi (sfruttando il meccanismo master/slave), aumentando le possibilità di
espansione; l’interconnessione tra più piconet forma una rete wireless chiamata scatternet.
Due dispositivi BLUETOOTH vicini tra loro si riconoscono automaticamente e nel caso che
entrambi svolgano un ruolo di master essi realizzano una scatternet su frequenze diverse,
ogni master a sua volta gestisce gli slave della propria piconet (vedi Fig. A.1 [57]).
Il limite dei canali radio disponibili è 79, che rappresenta il numero massimo di master
attivi. Ciò che permette la sincronizzazione dei dati e il giusto scambio semantico e sintattico
delle informazioni tra dispositivi semplicemente avvicinandoli è l’SDP che permette ad un
dispositivo BLUETOOTH di determinare quali sono i servizi che gli altri apparecchi presenti
nella piconet mettono a disposizione. Tale protocollo può fungere sia da server (ossia può
essere interrogato da un altro dispositivo e rispondere con i propri servizi) sia da client
(interrogando gli altri dispositivi) e ogni apparecchio dispone delle informazioni relative ai
servizi di cui è capace e dei protocolli supportati: altri apparati potranno fare uso di queste
informazioni per determinare le possibilità di interazione con i nodi della piconet. Un
esempio concreto, se un telefonino BLUETOOTH vuole trasferire un messaggio di testo a un
PDA, potrà interrogare questo ultimo per sapere se è dotato di funzionalità e-mail, o se è in
grado di ricevere un testo in altro modo. Quando un dispositivo si inserisce per la prima volta
in una piconet, inoltre, effettuerà una scansione di tutti i nodi presenti per capire come può
interagire con essi.
Le principali caratteristiche tecniche di BLUETOOTH sono di seguito riassunte.
•
Utilizzo di banda di 2.4 GHz ISM (Industrial Scientific Medical);
•
Portata massima di 100 metri. Viene definito un campo di trasmissione corto (circa 10
metri) e, alternativamente, medio (circa 100m) per la trasmissione via radio di dati e
voce con una velocità massima di 720 Kb/s per ogni canale;
•
Utilizzo del Frequence Hop (FH) spread spectrum che divide la banda di frequenza in
un numero di sottocanali (79 frequenze ad intervalli di 1 MHz per ottenere migliori
prestazioni in presenza di interferenze);
•
Usa pacchetti corti per massimizzare la capacità in caso di interferenze. Con
169
l’aumentare delle interferenze, la diminuzione delle prestazioni è minima e graduale,
in modo da mantenere la stabilità dei link;
•
Possibilità di saltare da una sottofrequenza all’altra durante la connessione;
•
Sistemi di sicurezza e riservatezza integrati;
•
Trasmissione attraverso muri e oggetti;
•
Omnidirezionale;
•
Supporto del protocollo TCP/IP;
•
La banda di frequenza è regolata per la legge in tutto il mondo. Il consorzio afferma
che le trasmissioni radio BLUETOOTH si conformeranno agli standard nei paesi in cui
tale tecnologia verrà utilizzata.
Quando sono state definite le specifiche è stata posta molta enfasi nel realizzare un design
che permettesse l’implementazione di questa tecnologia in un unico chip (CMOS), riducendo
così costi, consumi e le dimensioni del circuito complessivo (caratteristica necessaria per
l’utilizzo in telefoni cellulari e piccoli dispositivi in genere).
OSGI [49]
Il componente centrale di questa struttura è il service gateway che funziona da piattaforma
per tutti i servizi basati sulla comunicazione multimediale. Il service gateway permette la
gestione di audio, video, dati Internet e multimediali provenienti dalla rete domestica o ad
essa destinati. Può inoltre funzionare come un application server per una vasta serie di servizi
ad alto livello come la gestione dell’energia, della sicurezza, della manutenzione, del
commercio elettronico ecc. Il service gateway rappresenta per i provider il punto focale di
riferimento al quale mirare per fornire tutte le tipologie di servizi avanzati sia innovativi che
già esistenti.
La comunicazione tra provider e abitazione è permessa grazie alla specifica di una API,
messa liberamente a disposizione dai programmatori e scritta in linguaggio JAVA e che
quindi può, almeno in teoria, essere esportata su qualunque tipo di piattaforma. Come si può
ben capire le caratteristiche che rendono forte e universale l’iniziativa dell’OSGI sono
l’indipendenza da ogni tipo di supporto e la standardizzazione degli aspetti legati alla
comunicazione.
170
HES [48]
L’HES formalizza delle regole d’interoperabilità. Per permettere l’interfacciamento tra
diverse tecnologie domotiche, l’HES formalizza i seguenti componenti logici ai quali si deve
far riferimento per conformarsi allo standard HES.
•
Universal Interface: un modulo da incorporare in un apparecchio per comunicare su
varie reti di home automation. Il dispositivo deve essere dotato di una interfaccia
universale (UI) composta da una spina standard. Un linguaggio di comunicazione
standard è in via di sviluppo per tutti i comandi e messaggi di applicazione. Ogni
punto di collegamento alla rete contiene una unità di accesso (Network Access Unit,
NAU) per convertire i segnali e i messaggi di un dispositivo in un particolare
protocollo di comunicazione della home automation (vedi Fig. A.2).
•
Command Language: un linguaggio per la comunicazione tra gli apparecchi
indipendente dalla rete che trasporta i messaggi.
•
Home Gate: un accesso residenziale per collegare la rete domestica con la rete di
servizio degli enti fornitori (ad esempio la rete di distribuzione elettrica).
Figura A.2 Schematizzazione dell’interconnessione tra dispositivi eterogenei su una stessa rete di
automazione domestica prevista dallo standard HES
La strada percorsa dall’IEC nel definire delle standardizzazioni per la domotica sembra
riuscire a mettere d’accordo tutti gli operatori del mercato. In quanto, l’HES non impone uno
standard unico con caratteristiche hardware e software standardizzate, ma cerca di preservare
gli innumerevoli standard esistenti imponendo solo delle regole formali d’interfacciamento
171
alle quali ogni dispositivo, indipendentemente dallo standard a cui appartiene, dovrà
conformarsi.
172
Scarica

POLITECNICO DI MILANO - Domotica