Tesi: Definizione e sviluppo di un sistema di configurazione per Private Assisted House

20,775 views

Published on

Tesi realizzata presso l'Università di Camerino nell'ambito del progetto http://www.projectpass.eu

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
20,775
On SlideShare
0
From Embeds
0
Number of Embeds
18,881
Actions
Shares
0
Downloads
37
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Tesi: Definizione e sviluppo di un sistema di configurazione per Private Assisted House

  1. 1. Universit`a degli Studi di Camerino Scuola di Scienze e Tecnologie Corso di Laurea in Informatica (Classe L-31) Definizione e sviluppo di un sistema di configurazione per Private Assisted House Laureando Relatore Michele Bravi Prof. Francesco De Angelis Matricola 085858 Correlatore Prof. Barbara Re A.A. 2013/2014
  2. 2. a tutti quelli che... ...continuano a sopportarmi. 3
  3. 3. Indice 1 Introduzione 7 2 Il progetto Pass 11 2.1 Descrizione del progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Contesto di riferimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Obiettivi della “Private Assisted House” . . . . . . . . . . . . . . . . . . 12 2.4 Definizione dei profili assistenziali . . . . . . . . . . . . . . . . . . . . . . 13 2.5 Utenti assistiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.6 Definizione e caratteristiche della smart home . . . . . . . . . . . . . . . 14 3 Freedomotic 15 3.1 Panoramica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Messaggi e regole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4 Creazione di un ambiente personalizzato . . . . . . . . . . . . . . . . . . 17 3.4.1 Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.2 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.3 Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.4 Reaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4 La configurazione da scenari assistenziali per la smart home 21 4.1 Storyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.1.1 Impatto assistenziale basso . . . . . . . . . . . . . . . . . . . . . 21 4.1.2 Impatto assistenziale medio . . . . . . . . . . . . . . . . . . . . . 22 4.1.3 Impatto assistenziale alto . . . . . . . . . . . . . . . . . . . . . . 24 4.2 Configurazioni dedotte dalle storyboard . . . . . . . . . . . . . . . . . . 25 5 L’implementazione degli smart object coinvolti 27 5.1 Bed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.2 Bathtub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.3 ShieldedWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.4 HealthSensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.5 GlucoMeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.6 PulseOximeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.7 GasMeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
  4. 4. Indice 5.8 Armchair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.9 Oven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.10 TV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.11 Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.12 Tablet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.13 AlertSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.14 Accelerometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.15 LuxMeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.16 PressureMeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.17 PIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6 L’implementazione delle configurazioni 37 6.1 Spegnimento forno allo scadere del timer . . . . . . . . . . . . . . . . . . 38 6.2 Spegnimento luci del salotto all’accensione della TV . . . . . . . . . . . 38 6.3 Spegnimento luci rimaste accese la notte . . . . . . . . . . . . . . . . . . 38 6.4 Spegnimento luci in caso di uscita dalla stanza . . . . . . . . . . . . . . 39 6.5 Regolazione luminosit`a della stanza . . . . . . . . . . . . . . . . . . . . . 39 6.6 Controllo parametri vitali . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.7 Rilevazione di eventuali situazioni di pericolo . . . . . . . . . . . . . . . 44 6.8 Plugin per la riconfigurazione on-demand . . . . . . . . . . . . . . . . . 46 6.9 Simulazione delle configurazioni . . . . . . . . . . . . . . . . . . . . . . . 47 7 Conclusione e sviluppi futuri 51 Bibliografia 53 6
  5. 5. 1. Introduzione Gli ultimi decenni sono stati caratterizzati da un repentino sviluppo tecnologico che ha influenzato, talvolta sostanzialmente, il nostro modo di vivere e di pensare l’ambiente domestico. La necessit`a di migliorare il comfort, la sicurezza e la qualit`a della nostra vita ha condotto a questo rapido cambiamento. Figura 1.1: Oggetti di uso comune nella casa di oggi L’obiettivo di questa tesi nasce proprio dall’esigenza di voler migliorare l’ambiente domestico sfruttando le attuali tecnologie, cio`e di fornire alle persone un’abitazione che sia in grado di rispondere alle proprie esigenze, soprattutto per quanto riguarda anziani e disabili che trovano maggiori difficolt`a rispetto ad altri. Negli ultimi anni i produttori stanno fornendo dispositivi tecnologici che integrano funzionalit`a sempre pi`u vaste, quindi i nostri acquisti sono condizionati dalla ricerca delle funzionalit`a aggiuntive, subordinando il ruolo per il quale l’oggetto `e destinato. Una dimostrazione che conferma quanto suddetto `e la scelta che la maggior parte delle persone compie nell’acquisto di uno smartphone: si d`a priorit`a alla potenza della CPU e la dimensione alla memoria rispetto alla qualit`a della ricezione data ormai per scontata. I produttori, quindi, stanno cercando di appagare queste richieste di mercato da cui il cliente `e attratto. Si pu`o osservare come le funzionalit`a offerte da un diffuso elettrodomestico come la televisione siano notevolmente arricchite rispetto al recente passato, infatti, quelle che ora vengono chiamate smart TV permettono di compiere azioni che prima erano possibili solo attraverso l’uso del pc, come collegarsi ad internet
  6. 6. e sfruttarne ampiamente le funzionalit`a. Parallelamente, l’ampliamento delle possibilit`a offerte dai dispositivi con cui interagiamo quotidianamente sta dando una forte spinta a un settore gi`a di suo in forte crescita: la domotica. Il termine domotica `e un neologismo derivato dal francese “domotique”, a sua volta contrazione della parola latina “domus” e di “informatique”. La domotica `e quindi la scienza che si occupa dell’integrazione delle tecnologie che consentono di automatizzare una serie di operazioni all’interno della casa. Il suo obiettivo `e quello aiutare le persone ad abitare in case pi`u sicure e confortevoli, dotate di un sistema di automazione semplice, affidabile, flessibile e alla portata di tutti. Figura 1.2: Esempio di casa domotica Rispetto ad alcuni anni fa in cui la domotica poteva offrire soluzioni limitate e spesso a cifre proibitive, le potenzialit`a odierne sono aumentate enormemente, grazie alla possibilit`a di utilizzare dispositivi elettronici sempre pi`u piccoli, accurati ed economici che permettono un ampliamento considerevole dei controlli effettuabili e naturalmente migliorano la qualit`a e la sicurezza della vita. Attualmente, infatti, `e sufficiente spendere poche migliaia di euro per avere un sistema domotico che permetta la centralizzazione della gestione dell’illuminazione, amministrazione intelligente della temperatura ambientale, chiusura automatica delle tapparelle, videocontrollo e sensori di allarme per fughe di gas e allagamento[1]. Interagire con questi dispositivi intelligenti fa parte dei nostri gesti quotidiani, mentre per altri, a causa di disabilit`a di varia natura, anche accendere la televisione mediante il telecomando pu`o essere un’operazione problematica. Purtroppo tali situazioni non sono cos`ı rare come si potrebbe apparentemente credere, basti pensare a una patologia come l’ictus, una malattia che in Italia e nel mondo occidentale `e la prima causa di invalidit`a, che colpisce principalmente gli uomini di un’et`a compresa tra i 65 e gli 85 anni e ogni anno `e responsabile di oltre un decesso su dieci[2]. 8
  7. 7. Quando la gravit`a dell’invalidit`a `e tale da non permettere una sufficiente autonomia, il malato deve fare affidamento a una struttura ospedaliera attrezzata tale da garantire un’adeguata assistenza sanitaria e riabilitativa. Nei casi in cui la disabilit`a `e tale da non consentire un miglioramento che permetta una minima autosufficienza, il malato `e costretto a non far rientro all’interno delle mura domestiche. La condizione di ricovero, infatti, comporta un disagio di variabile entit`a la cui mo- tivazione `e connessa alla separazione dal nucleo familiare, alla necessit`a di adeguarsi ai nuovi ritmi istituzionali, alla parziale rinuncia alla privacy, allo stato di inevitabile di- pendenza altrui e la conseguente perdita di autonomia personale. Tale situazione pu`o avere anche ripercussioni sul recupero fisico della persona (nel caso ci siano possibi- lit`a). Un altro aspetto rilevante riguarda i familiari del malato costretti a spostamenti ripetitivi, a volte dispendiosi e impegnativi. In questo ambito la tecnologia deve essere in grado di fornire degli strumenti adatti, dove il disabile, nei sistemi di aiuto, trova condizioni riabilitative favorenti tanto la conquista di fondamentali livelli di autonomia, quanto occasioni di sostegno cognitivo e sensoriale e d’inclusione sociale. Non a caso, l’Universit`a degli studi di Camerino, in collaborazione con l’Istituto di Riabilitazione Santo Stefano e altre aziende locali, stanno portando avanti un progetto che prende il nome di “Pass”. `E volto a favorire la longevit`a attiva e l’indipendenza dell’anziano e del disabile presso la propria abitazione, attraverso la realizzazione di una “casa intelligente” dove, fruendo di servizi innovativi basati su contenuti tecnologici user-friendly, la persona potr`a continuare a svolgere le abituali attivit`a sia in caso di vita indipendente che di vita in famiglia. L’attivit`a del progetto, che viene esposta in questo elaborato, poggia le basi sulle esigenze e obiettivi del progetto Pass, quindi nello studio delle necessit`a che l’anziano e il disabile trovano nei loro gesti quotidiani e delle tecnologie che possono essere at- tuate. Questo permettere di continuare una vita indipendente all’interno delle mura domestiche in totale sicurezza. Al termine di questa breve introduzione, si inizia a parlare in dettaglio del progetto Pass: prima viene data una sua descrizione, poi, dopo aver specificato il suo contesto di riferimento, viene descritta la tipologia di utenza che si vuole assistere e quindi i servizi che la casa domotica dovr`a fornire. Successivamente si introduce Freedomotic, il software che `e stato scelto per la rea- lizzazione della casa domotica. Ne viene descritta dapprima l’architettura, poi tutto il sistema di messaggistica che utilizza per la creazione di regole e automazioni. Terminata questa parte pi`u teorica e descrittiva, nel capitolo seguente si inizia ad affrontare il problema della creazione di configurazioni per la casa domotica. Si intro- duce il concetto di storyboard e se ne riportano tre: una per ogni profilo assistenziale di gravit`a crescente. Da queste vengono estrapolati gli smart object necessari e le configurazioni attuabili per la casa domotica e quindi implementabili in Freedomotic. Nei due capitoli successivi, infatti, vengono elencati e descritti tutti gli oggetti che so- no stati implementati in Freedomotic e, tutte le configurazioni precedentemente trovate, sono riproposte nel linguaggio utilizzato dal software in questione. Infine, viene intro- dotto il plugin creato per il caricamento a runtime delle configurazioni e il simulatore utilizzato per effettuare i test di corretto funzionamento su di esse. 9
  8. 8. 2. Il progetto Pass Nella vita di tutti i giorni siamo abituati a compiere una quantit`a innumerevole di azioni in modo del tutto automatico. Aprire la porta, chiudere la finestra, spegnere la luce, rispondere al telefono o cambiare canale alla TV sono gesti per noi cos`ı naturali da poter essere svolti senza nemmeno pensarci. Per le persone con disabilit`a, anche le azioni pi`u semplici possono diventare estre- mamente complesse, fino a rendere necessario l’ausilio di altri individui. In molti casi, l’impossibilit`a di fornire l’assistenza e l’aiuto adeguato per tutto l’arco della giornata, costringe la persona malata ad abbandonare la propria abitazione, in favore di strutture in grado di accoglierla adeguatamente. 2.1 Descrizione del progetto Il progetto “Pass”, che sta per “Private Assisted House”, `e un progetto regionale finalizzato alla longe- vit`a attiva e all’indipendenza dell’anziano, in cui l’Isti- tuto di Riabilitazione Santo Stefano `e azienda capofila di un gruppo di partner che comprende anche l’Uni- versit`a degli Studi di Camerino, due centri di ricerca e di sviluppo tecnologico e diverse aziende marchigiane medio-piccole operanti in settori merceologici differenti (mobile, informatica-elettronica, edilizia e tessile). Il progetto implementa un modello di servizio volto a favorire la longevit`a attiva dell’anziano presso la propria abitazione, luogo dove pu`o continuare a svolgere le abi- tuali attivit`a sia in caso di vita indipendente che di vita in famiglia, fruendo di servizi innovativi, basati su contenuti tecnologici user-friendly. Il progetto intende contribuire alla diffusione di una nuova cultura del concetto di casa intelligente, che non sia strettamente legata alla domotica in senso tradizionale, ponendo l’utilizzatore della casa al centro delle soluzioni tecnologiche sviluppate. Il modello Pass integra le migliori tecnologie di teleassistenza e realizza il supporto conoscitivo, formativo e assistenziale necessario alla reale diffusione di smart object. Gli interventi articolati su diverse linee d’azione hanno il comune obiettivo di costruire un ecosistema in grado di sostenere una pluralit`a di scenari d’utilizzo, quindi essere capace di garantire il contatto bidirezionale, diversificato per esigenze, tra l’anziano e il mondo esterno. Ne consegue che la casa dovr`a adattarsi alle esigenze di chi la abita consentendo, inoltre, di prevenire il verificarsi di situazioni di pericolo. Un’abitazione, all’atto della sua costruzione, pu`o essere concepita ad-hoc per un anziano oppure pu`o essere adattata, nel corso degli anni e in modo flessibile, al ciclo
  9. 9. Contesto di riferimento di vita di chi la abita che, invecchiando, modifica i proprio bisogni di “abitabilit`a” e “usabilit`a”. Ci`o deve guidare la progettazione d’interventi non invasivi di rimodulazione e adattamento che, oltre a permettere l’introduzione di strumenti per l’automazione e il controllo dell’ambiente domestico, contribuiscano a migliorare anche la sua sostenibilit`a energetica. Il modello Pass si basa pertanto su una piattaforma d’integrazione, in grado di coor- dinare in modo adattivo l’automazione domestica, le soluzioni di tele-assistenza e gli smart object. Inoltre il ruolo della piattaforma `e quello di realizzare l’integrazione verso il mondo esterno (es. dominio sanitario e sociale) garantendo il rispetto degli standard del settore ospedaliero e domotico e offrendo ai vari interessati una vista dedicata sulla casa, nel rispetto della privacy del singolo individuo. 2.2 Contesto di riferimento La proposta progettuale si cala in un contesto europeo, nazionale e soprattutto marchi- giano caratterizzato da una percentuale crescente di popolazione anziana, la maggior parte della quale ha autosufficienza limitata, tendente verosimilmente al peggioramento in un regime di cronicit`a. Secondo le recenti proiezioni demografiche in Italia, gli ultra 65enni, che nel 2011 ammontavano a 20,3% della popolazione, nel 2020 saranno 22,5% per raggiunger la soglia del 32,6% entro il 2065. Ancora pi`u rilevante sar`a l’incremento degli ultra 80enni, che nello stesso periodo passeranno da 2,8% a 3,7% e infine al 10%[3]. Va da s´e che le prospettive di longevit`a della popolazione anziana, ma attiva, crescono velocemente. In questo panorama, l’Italia `e uno dei Paesi europei con il maggior indice d’invec- chiamento in Europa, che significa crescita esponenziale delle spese di cura per anziani, ospedaliere e territoriali per il prossimo futuro. Altro aspetto che va preso in seria considerazione `e la progressione della disabilit`a. I dati stimati dal Censis per i decenni 2010-2020-2040 mostrano che la disabilit`a, per effetto dell’invecchiamento e delle patologie cronico-degenerative, `e in significativo e preoccupante aumento: 6,7% (circa 4,1 milioni di persone nel 2010) e 7,9% nel 2020 (pari a 4,8 milioni di persone), un incremento destinato a creare una fortissima pressione sul versante della domanda di servizi assistenziali[4]. 2.3 Obiettivi della “Private Assisted House” Il progetto Pass intende favorire la longevit`a attiva e indipendente dell’anziano, realiz- zando il desiderio di invecchiare presso la propria abitazione. In tal senso, il modello di assistenza di tipo “Private Assisted house”, che `e alla base della proposta progettuale, rappresenta una risposta all’eterogeneit`a delle condizioni psico-fisiche e sociali dell’an- ziano, eventualmente disabile. Un’attenzione particolare `e rivolta all’economicit`a e all’usabilit`a delle soluzioni per garantire il massimo livello di accesso. Non da meno `e il ruolo della scalabilit`a, poich´e la casa `e vista come un luogo in grado di cambiare nel tempo e adattarsi alle esigenze di chi la abita. Per quanto attiene agli obiettivi realizzativi, il modello di assistenza di tipo “Private Assisted house” si caratterizza per un’attenzione particolare, posta rispetto alle diver- sit`a, rispondendo in maniera personalizzata a esigenze concrete in termini di: sicurezza, automazione, prevenzione e comunicazione. 12
  10. 10. Definizione dei profili assistenziali 2.4 Definizione dei profili assistenziali Il progetto orienta il proprio modello sulla centralit`a dell’utente e fruitore degli spazi domestici in funzione delle proprie condizioni fisiche e abilit`a. `E quindi necessario individuare delle tipologie di utenti considerando parametri quali: ˆ salute fisica ˆ salute mentale ˆ capacit`a funzionali Si definiscono quindi, alcuni profili di riferimento (profili assistenziali) che possano avere delle caratteristiche omogenee per modellare dei requisiti progettuali di riscontro. Nello specifico si intende caratterizzare il profilo in funzione di un grado di abilit`a che individui secondo i parametri sopra riportati, le caratteristiche dei sistemi di supporto di cui necessita (oggetti d’uso, arredi, componenti architettonici, sistemi informatici ecc.) ad esso associabili, intesi come sistema integrato (smart home). Si possono stabilire i gradi di abilit`a in relazione alle proprie capacit`a di condurre una vita adeguata in funzione dell’et`a e delle caratteristiche fisiche, mentali e funzionali. I livelli di abilit`a definiscono di conseguenza le necessit`a di assistenza e funzionalit`a domestica strutturando quindi il profilo assistenziale conseguente. CARATTERISTICHE: - FISICHE - MENTALI - FUNZIONALI LIVELLI DI ABILITÀ TIPOLOGIE DI ASSISTENZA: - DIRETTA - INDIRETTA - PERIODICA - CONTINUATIVA PIANO DEI REQUISITI DEL FRUITORE INPUT METAPROGETTUALI PROFILO ASSISTENZIALE: - BASSO - MEDIO - ALTO Figura 2.1: Livelli di abilit`a e profili assistenziali 2.5 Utenti assistiti Normodotati: La necessit`a di questo riferimento `e fondamentale perch´e individua gli standard da raggiungere (il limite) con interventi di ausilio per i fruitori con gradi di abilit`a differenti. Si considera come normodotato un utente che ha una autosufficienza completa per sviluppare una vita autonoma e appagante nella fruizione e uso degli spazi domestici e degli oggetti e arredi in essa contenuti, senza alcun controllo esterno o ausilio. `E altres`ı evidente che tale definizione di standard `e funzionale esclusivamente per individuare le caratteristiche di media, considerando che soggettivamente i livelli di abilit`a sono talmente differenziati, per et`a, cultura, territorio, che `e complesso darne una definizione non di media. Profilo assistenziale lieve: utente in condizioni di fragilit`a, il cui stato di salute evi- denzia situazioni di rischio (pressione alta, colesterolo alto, tendenza all’inattivit`a, 13
  11. 11. Definizione e caratteristiche della smart home cio`e condizioni che espongono a rischi coronarici, ecc.) oppure `e compromesso da malattie croniche non gravi tenute sotto controllo mediante farmaci come diabe- te, artrosi e forme non gravi di artrite. In questo caso `e fondamentale attuare azioni di contrasto verso possibili aggravamenti delle condizioni di salute e verso il rischio di insorgenza di ulteriori malattie. Profilo assistenziale medio: utente con disabilit`a e compromesso da malattie cro- niche gravi, necessita di strumenti di ausilio per svolgere in maniera autonoma alcune attivit`a quotidiane, mentre in altre necessita di assistenza. La disabilit`a pu`o investire anche la sfera cognitiva in forma moderata. Profilo assistenziale grave: utente che presenta disabilit`a accentuate da malattie croniche molto gravi, necessita di assistenza continua per svolgere la maggior parte o tutte le attivit`a quotidiane a causa di deficit psicofisici. Aspetti degenerativi: elemento di fondamentale valutazione `e la naturale condizio- ne di modifiche temporali delle proprie abilit`a sia per le condizioni normali di avanzamento dell’et`a sia per i gradi degenerativi di patologie conclamate. 2.6 Definizione e caratteristiche della smart home Gli attuali modelli abitativi risultano oramai obsoleti, in quanto non posseggono quei livelli di flessibilit`a che permettano di rispondere alle nuove problematiche di un’utenza allargata. In uno scenario di questo tipo si pone il tema dell’abitare per le persone anziane e diversamente abili, in un ottica di integrazione sociale e miglioramento della qualit`a della vita. Una smart home deve risultare un modello abitativo complesso e flessibile, formato da componenti intelligenti, aggregabili e riproducibili in moduli standardizzati, atti a poter realizzare qualunque ambiente abitativo domestico. In particolare, il modello di riferimento sar`a rivolto all’implementazione di servizi di tipo “Private Assisted House - Pass”, volti a favorire la longevit`a attiva dell’anziano presso la propria abitazione. Una casa intelligente, che non sia strettamente legata alla domotica in senso tradizio- nale, `e quella che pone l’utilizzatore al centro delle soluzioni tecnologiche, integrando le migliori soluzioni di teleassistenza e realizzando il supporto conoscitivo, formativo e assistenziale necessario alla reale diffusione di smart object. La smart home e gli smart object devono avere caratteristiche tali da garantire: ˆ adattabilit`a e flessibilit`a; ˆ implementazione di funzioni medicali (misurazione di parametri vitali); ˆ supporto alla totale copertura dei bisogni specifici (profili assistenziali); ˆ prevenzione sulle eventuali situazioni di pericolo; ˆ facilit`a di comunicazione con il mondo esterno; 14
  12. 12. 3. Freedomotic La necessit`a di integrare tecnologie e soluzioni che la Smart Home richiede, rende imprescindibile l’utilizzo di un software per la domotica che sia in grado di gestire gli scenari descritti nel capitolo precedente. Esistono diversi applicativi, sia gratuiti che a pagamento, che offrono funzionalit`a in grado di governare un ambiente domestico e la scelta `e ricaduta su Freedomotic. 3.1 Panoramica Freedomotic, come affermato nella pagina ufficiale del progetto[5], `e un software open source, flessibile, scalabile, orientato al mash-up1, ma anche in grado di interagire con i pi`u comuni e utilizzati standard domotici e con soluzioni “fai da te”. Tutto in Freedomotic (web, social network, front-end) `e considerato come un sensore o un attuatore all’interno di un sistema di automazione. Ad esempio `e possibile avviare la lavatrice con un semplice tweet. Figura 3.1: Logo del software Freedomotic `e un framework di programmazione realizzato in primo luogo per ridur- re drasticamente gli sforzi necessari per lo sviluppo di applicazioni della domotica e controllo di ambienti. Tutto ci`o `e possibile considerando che qualsiasi sistema di au- tomazione richiede delle funzionalit`a di base indipendentemente dal proprio ambito di utilizzo, come quello domestico, business, industriale, medico, ecc. 3.2 Architettura L’architettura modulare di Freedomotic prevede un core (framework) e una serie di estensioni (plugins). Framework: include delle strutture dati interne per la rappresentazione degli ambienti (topologia, stanze, connessioni ecc.), degli oggetti presenti e del relativo stato (on, off, open, closed ecc.) ed inoltre fornisce un motore per la generazione di regole 1 applicazione tale da includere dinamicamente informazioni o contenuti provenienti da pi`u fonti.
  13. 13. Architettura con un sistema di elaborazione del linguaggio naturale che consente all’utente di scrivere automazioni come “se fuori `e buio accendi la luce del soggiorno”. Plugins: si dividono a loro volta in due categorie: Device plugins: permettono di estendere le funzionalit`a del framework e pos- sono essere sviluppati e distribuiti come pacchetti indipendenti attraverso il marketplace ufficiale. Di solito sono creati per comunicare con specifiche tipologie di hardware, ma anche gli stessi client (grafici o web) sono a tutti gli effetti dei plugins. Object plugins: modellano gli oggetti del mondo reale (lampade, porte, sensori ecc.) con tutte le loro propriet`a “istruendo” opportunamente il framework. Ad esempio un plugin per una lampada indica al framework che l’oggetto ha una propriet`a (behavior) chiamata “powered” e un’altra “brightness” che pu`o assumere valori interi compresi tra 0 e 100. Una lampada pu`o essere accesa (turn on) o spenta (turn off) e la sua luminosit`a regolata opportunamente (set brightness). Se la propriet`a “brightness” assume il valore 0 allora la lampada `e spenta (powered=false) altrimenti `e accesa (powered=true). Figura 3.2: Interazioni fra le varie componenti 16
  14. 14. Messaggi e regole 3.3 Messaggi e regole Freedomotic adotta un sistema di messaggistica basato interamente su eventi, ogni cambiamento nell’ambiente o interazione con il software da parte degli utenti (click sull’interfaccia grafica, modifica di un valore su un oggetto ecc.) genera un evento. Questi ultimi sono pubblicati sui channels ed intercettati dai triggers in ascolto. A sua volta, ciascun trigger pu`o essere associato ad uno o pi`u comandi definendo una reaction. In altre parole, quando un sensore comunica un qualsiasi cambiamento nell’ambiente, viene generato un evento su uno specifico canale e, se l’evento `e consistente con il trigger, allora uno o pi`u comandi possono essere inviati all’attuatore in grado di eseguirli. Questo meccanismo apparentemente elaborato, permette invece, di creare regole per le automazioni in maniera del tutto semplice e molto vicina al linguaggio naturale. Le regole, infatti, sono di tipo “if THIS than THAT”, dove la parte THIS corrisponde ad un trigger, quella THAT `e costituita da uno o pi`u comandi eseguiti in sequenza e la stessa regola presa nella sua interezza rappresenta un’automazione in grado di associare tra loro trigger e comandi. Per esempio: if luminosity is less than 50% trigger than turn on kitchen light command reaction 3.4 Creazione di un ambiente personalizzato Il sistema di regole basato sullo scambio di messaggi permette di nascondere i detta- gli implementativi dei trigger e comandi sugli oggetti virtuali di Freedomotic, quindi, consente il loro utilizzo anche agli utenti pi`u inesperti per la creazione di automazioni. Ovviamente per creare automazioni che si adattino perfettamente alle necessit`a di ogni persona, non sono sufficienti le funzioni fornite di default, infatti Freedomotic offre la possibilit`a di modificare o creare oggetti, trigger, comandi e automazioni attraverso appositi file di configurazione XML. Pertanto ora verranno esposti i concetti necessari per creare un ambiente personalizzato attraverso questi file. 3.4.1 Object Ogni oggetto di uso comune ha determinate caratteristiche e propriet`a in base al suo scopo ed utilizzo. Per esempio una lampadina pu`o essere accesa o spenta, mentre un’altra potrebbe permettere anche il settaggio della luminosit`a. In Freedomotic, gli oggetti non sono altro che l’astrazione di quelli reali presenti in ca- sa e delle loro caratteristiche, pertanto l’oggetto virtuale “lampadina” sar`a sintetizzato dai behaviors stato (accesa o spenta) e luminosit`a. Per creare un oggetto `e necessario scrivere la relativa classe java ed il file XML che ne specifica i behaviors. L’implementazione, per`o, verr`a trattata nl capitolo successivo. 3.4.2 Trigger Ogni evento `e inviato su uno specifico canale il cui indirizzo `e rappresentato da una strin- ga con una struttura gerarchica del tipo app.event.sensor.calendar.event.schedule e, attraverso un trigger, `e possibile filtrare gli eventi in transito su uno specifico canale. Un esempio potrebbe essere quello di un evento che notifichi che sono le ore 10 e che un 17
  15. 15. Creazione di un ambiente personalizzato trigger sia in ascolto sul corrispondente canale filtrando gli eventi temporali compresi tra le ore 6 e le ore 12. Possiamo attribuire a questo trigger un nome significativo come “it’s morning” e utilizzarlo per costruire automazioni del tipo IF “it’s morning” THEN “turn off outside lights”. Pertanto un trigger decide se un evento deve essere processato o meno. In altre parole se il trigger `e consistente con l’evento verranno eseguiti i comandi ad esso associati. Nell’esempio precedente, se l’evento notifica che “it’s 10 o’clock” allora `e vero che “it’s morning”, quindi possiamo eseguire il comando “turn off outside lights”. 1 <trigger> <name>it’s morning</name> 3 <description>it’s morning (from 6 to 12)</description> <channel>app.event.sensor.calendar.event.schedule</channel> 5 <payload> <payload> 7 <com.freedomotic.reactions.Statement> <logical>AND</logical> 9 <attribute>time.hour</attribute> <operand>GREATER_EQUAL_THEN/operand> 11 <value>6</value> </com.freedomotic.reactions.Statement> 13 <com.freedomotic.reactions.Statement> <logical>AND</logical> 15 <attribute>time.hour</attribute> <operand>LESS_EQUAL_THEN</operand> 17 <value>12</value> </com.freedomotic.reactions.Statement> 19 </payload> </payload> 21 </trigger> 3.4.3 Command Eseguire un comando, ovvero far compiere un’azione a un oggetto, significa per Free- domotic cambiare il valore che assume un behavior. Ad esempio, (“turn on livingroom light”) comporta la modifica del bahavior powered che passa dallo stato false a true. Un comando, quindi, non `e altro che un contenitore di parametri personalizzati che associano ad ognuno di essi un valore. 1 <com.freedomotic.reactions.Command> <name>turn on livingroom light</name> 3 <receiver>app.events.sensors.behavior.request.objects</receiver> <description>turn an object called livingroom light</description> 5 <properties> <properties> 7 <property name="behavior" value="powered"/> <property name="value" value="true"/> 9 <property name="object" value="livingroom light"/> </properties> 11 <tuples/> </properties> 13 </com.freedomotic.reactions.Command> 3.4.4 Reaction Nella terminologia di Freedomotic, la reaction identifica l’automazione ed `e costituita da un trigger e da uno o pi`u comandi eseguiti sequenzialmente all’interno di un thread dedicato in modo da garantire l’elaborazione parallela. Come `e stato appena mostrato, sia i trigger che i comandi sono definiti all’interno di file indipendenti dall’automazione e questo consente di utilizzarli pi`u volte in automazioni differenti. 18
  16. 16. Creazione di un ambiente personalizzato Nel caso si volesse creare un’automazione che permetta di spegnere le luci del sog- giorno e di chiudere le tapparelle ogniqualvolta si accenda la TV, si avr`a uno scenario di questo tipo: ˆ trigger: TV turns on; ˆ command 1: turn off livingroom lights; ˆ command 2: close rolling shutters; 1 <com.freedomotic.reactions.Reaction> <trigger>TV turns on</trigger> 3 <sequences> <sequence> 5 <command>turn off livingroom lights</command> <command>close rolling shutters</command> 7 </sequence> </reaction> 9 </com.freedomotic.reactions.Reaction> `E altres`ı possibile aggiungere delle condizioni all’interno della reaction per verificare lo stato di uno oggetto prima di eseguire un’automazione, permettendo cos`ı, di ampliare il ventaglio dei controlli effettuabili. “WHEN TV turns on AND livingroom window is closed THEN turn off livingroom lights AND close rolling shutters” permette di controllare lo stato della finestra dopo che la TV `e stata accesa. Se la verifica d`a esito positivo allora verrano eseguiti i comandi associati. 1 <com.freedomotic.reactions.Reaction> <trigger>TV turns on</trigger> 3 <conditions> <condition> 5 <target>livingroom window</target> <com.freedomotic.reactions.Statement> 7 <logical>AND</logical> <attribute>status_open</attribute> 9 <operand>EQUALS</operand> <value>false</value> 11 </com.freedomotic.reactions.Statement> </condition> 13 </conditions> <sequence> 15 <command>turn off livingroom lights</command> <command>close rolling shutters</command> 17 </sequence> </com.freedomotic.reactions.Reaction> 19
  17. 17. 4. La configurazione da scenari assistenziali per la smart home Nei precedenti capitoli `e stato descritto il progetto Pass e gli obiettivi che la sua piat- taforma si `e prefissata di raggiungere. Successivamente si `e introdotto Freedomotic come software per la gestione della domotica ed `e stato spiegato come sono fatte le sue componenti e come sia possibile farle interagire per creare automazioni personalizzate. In questo capitolo verranno individuati gli oggetti e configurazioni necessari per la smart home, in accordo con i requisiti del progetto Pass. Per poter fare questo, mi sono state fornite delle storyboard da cui trarre tutte le informazioni necessarie per creare un ambiente domestico che permetta una vita indipendente dell’anziano e del malato. 4.1 Storyboard Le storyboard che mi sono state fornite sono dei racconti verosimili, che descrivono la giornata tipo che potrebbe svolgersi in una Private Assisted House da parte di persone che non riescono ad avere una vita autonoma a causa di qualche malattia. Le storie su cui si `e basato il mio lavoro sono tre, dove ognuna di esse racconta situazioni di persone con problemi fisici di diversa gravit`a, quindi ogni storyboard rappresenta un livello assistenziale differente, che per semplicit`a verr`a definito come basso, medio e alto. Di seguito sono riportate le tre storyboard e, per ognuna di esse, sono messe in evidenza le frasi chiave che descrivono i bisogni assistenziali di ogni persona. 4.1.1 Impatto assistenziale basso Il signor Paolo R, di 35 anni, presenta tetraparesi spastica atetosica disartrica, con difficolt`a nell’utilizzo degli arti superiori e inferiori. Il quadro generale del paziente `e stabile e non mostra alcun problema cognitivo e sensoriale. Dal punto di vista motorio, Paolo riesce a deambulare con l’uso della carrozzina o del girello con ascellari. L’arti- colarit`a passiva `e completa e, per quanto riguarda le mani, riesce ad afferrare oggetti ma ha difficolt`a nel rilasciarli ed `e comunque privo di motilit`a fine. Paolo `e una persona attiva, vuole lavorare e condurre una vita regolare; la sua giornata tipo `e cos`ı organizzata: ore 7.00: sveglia e grazie al letto automatizzato riesce a passare da supino a seduto e a trasferirsi sulla carrozzina utilizzando barre d’appoggio. Pu`o lavarsi in va- sca dotata di piattaforma sollevabile e farsi la barba con il rasoio elettrico;
  18. 18. Storyboard necessita di un assistenze per la vestizione, ma `e in grado di preparare la colazio- ne e mangiare grazie ai diversi smart object: braccio meccanico in grado di raccogliere oggetti, frigorifero e mobili da cucina con piani estraibili, posata meccanica e forno automatico. ore 8.10: esce di casa in carrozzina elettronica, comandata con joystick, per dirigersi al lavoro dopo aver regolato tramite un’interfaccia semplificata i diversi siste- mi domestici e grazie al braccio meccanico pu`o svolgere le azioni pi`u difficoltose (motilit`a fine). ore 8.30 - 13.00: lavora seduto come segretario per un’associazione utilizzando un PC con supporti specifici (mouse personalizzato). ore 13.00 - 14.00: Paolo `e in grado di pranzare in autonomia con piatti pronti o gi`a preparati e riposti in frigorifero che automaticamente ne facilita il prelievo. Deve solo metterli nel forno. ore 14.00 – 15.30: due volte a settimana Paolo svolge esercizi per il mantenimento dei risultati raggiunti (a corpo libero e sull’apposito tapisroulant) durante i quali `e previsto l’utilizzo di strumenti di telemedicina, per il monitoraggio di para- metri vitali quali misuratore di pressione ed elettrocardiografo, in modo da valutare a distanza lo stato di salute e, al contempo, il grado di impegno nell’eser- cizio e lo stato d’animo. Un giorno alla settimana, uno specialista dell’ospedale si collega con Paolo in videoconferenza e pu`o leggere in real-time tutti i parame- tri registrati durante lo svolgimento degli esercizi. `E in questa occasione che si rivaluta il programma di esercizi per gli arti superiori ed inferiori, considerando anche i dati relativi agli esercizi eseguiti nei giorni precedenti. ore 16.30 – cena: `e tempo dedicato a spesa, varie ed eventuali prima della preparazione della cena, grazie ai medesimi ausili utilizzati per colazione e pranzo. Paolo pu`o muoversi liberamente in casa in carrozzina o con girello e gestire le funziona- lit`a domestiche (apertura porte, finestre, accensione luci ed apparecchiature elet- troniche, regolazione della temperatura) attraverso un’interfaccia di comando semplificata. Attraverso la medesima apparecchiatura `e inoltre possibile invia- re chiamate di emergenza con richieste pre-registrate, chattare e leggere libri o riviste. 4.1.2 Impatto assistenziale medio Marco, pensionato di 65 anni, sposato, senza figli ha avuto in ictus ischemico con esisti di paresi agli arti superiore e inferiore destri 14 mesi orsono. Clinicamente si evidenzia: emiparesi destra, emilato sinistro con conservata mobilit`a, afasia e disfagia esito di recente ictus ischemico cerebrale, ipertensione arteriosa, severa tendinopatia di spalla sinistra, ipertrofia prostatica. Ci sono margini minimi di miglioramento, tuttavia il rischio `e di una regressio- ne funzionale (perdita della capacit`a di deambulare, regressione cognitiva generale e peggioramento della contrattura dell’arto superiore). Marco `e stato dimesso dal centro di riabilitazione 3 mesi dopo l’ictus e ha poi con- tinuato a far riabilitazione in regime di Day Hospital). Valutata la situazione socio- sanitaria del paziente, fisiatra e servizi sociali hanno suggerito allo stesso Marco e a 22
  19. 19. Storyboard sua moglie di trasferirsi in una Private Assisted House, pi`u adatta alle esigenze della famiglia. La sua giornata tipo inizia alle 8 del mattino. Dopo la sveglia, riesce ad alzarsi da letto grazie al sistema di automazione integrato e a vestirsi con l’aiuto di sua moglie; Marco `e in grado di deambulare per brevi tragitti con ortesi gamba-piede e bastone di appoggio e, pertanto, pu`o raggiungere abbastanza agevolmente il bagno, dove `e possi- bile lavarsi all’interno di una vasca munita di piattaforma sollevabile., sempre con l’aiuto del caregiver2. Inoltre, qualora i trasferimenti dovessero avvenire in assen- za dell’assistente, considerando soprattutto i problemi di incontinenza e la necessit`a di recarsi pi`u volte al bagno, la presenza di un sistema di sensori di movimento rive- lerebbe eventuali cadute, garantendo di conseguenza l’arrivo dei soccorsi. Allo stesso modo Marco pu`o raggiungere la cucina in maniera pressoch´e autonoma dove `e possi- bile prepararsi la colazione, purch´e costituita da cibo morbido e sminuzzato in quanto disfagico. La mattina `e la parte della giornata dedicata alla riabilitazione finalizzata in primo luogo prevenire complicazioni dovute dall’ipomobilit`a degli arti e all’incremento delle performance motorie. Durante questa fase, cos`ı come per il resto della giornata, `e molto importante la misurazione dei parametri vitali (su tutti ECG e PA3) attraverso un sistema indossabile di sensori, alla luce anche della sua condizione di iperteso, finalizzata ad un monitoraggio a distanza. La riabilitazione non riguarda solamente l’aspetto motorio, ma anche quello comu- nicativo, dal momento che permangono difficolt`a nella produzione verbale; tale attivit`a, cos`ı come quella fisica, pu`o essere realizzata a casa attraverso opportuni esercizi mo- nitorabili a distanza via skype mediante tablet o PC. Gli stessi strumenti consentono inoltre la definizione periodica delle cure mediche e l’aggiornamento del trattamento riabilitativo. Giunta l’ora di pranzo, la presenza della moglie di Marco `e importante per la predisposizione degli alimenti (sbucciatura della frutta, frollatura, ecc.), mentre l’alimentazione vera e propria pu`o essere svolta in autonomia, anche grazie all’impiego di una posata meccanica. Il pomeriggio `e il momento del relax e non `e pertanto fondamentale la presenza di alcun caregiver all’interno della casa; Marco infatti, mediante interfaccia semplifica- ta, pu`o provvedere alla textbfregolazione della temperatura e della luminosit`a, facilitata anche dalla presenza di finestre a schermo liquido per la luce solare. In questo mo- do pu`o dedicarsi alla lettura su tablet o pc e all’esecuzione di esercizi per la memoria e l’abilit`a di calcolo utilizzando il pannello attrezzato interattivo dotato di schermi touch e scrivania regolabile a seconda delle esigenze dell’utilizzatore. Tuttavia `e bene che Marco continui a mantenere i propri contatti sociali ed una certa motilit`a a prescindere dagli esercizi riabilitativi; pertanto, verso le ore 16, accompagnato dagli amici, si dirige a piedi verso il bar, luogo di ritrovo in cui trascorre qualche ora giocando a carte e dialogando con altre persone. Il rientro a casa `e previsto attorno alle 19, prima della cena che avverr`a con le stesse modalit`a del pranzo. Prima di coricarsi (sempre aiutato da sua moglie), Marco trascorre la serata guar- dando la tv seduto comodamente su una poltrona sensorizzata, dotata di dispositivi di misurazione integrati (misuratore di pressione, bilancia, misuratore livello di glice- mia e della saturazione di ossigeno nel sangue), con annesso dispositivo per invio dei dati alla struttura di supporto medico di riferimento. 2 persona che presta le cure 3 elettrocardiogramma e pressione arteriosa sistemica. 23
  20. 20. Storyboard 4.1.3 Impatto assistenziale alto Giuseppe `e un uomo di 45 anni che presenta esiti di poliomielite, cifoscoliosi dorso- lombare, deficit ventilatorio restrittivo di grado moderato; il suo livello intellettivo `e tuttavia da considerarsi nella norma e possiede una discreta comprensione sia verbale che scritta oltre che una buona memoria, mentre `e pressoch´e impossibilitato a utilizzare gli arti inferiori e superiori. `E presente inoltre un deficit di espressione verbale. La giornata di Giuseppe si svolge essenzialmente all’interno della Private Assisted House ed inizia solitamente alle ore 8, dopo una nottata trascorsa indossando la masche- rina per la respirazione, considerati i problemi di apnea notturna che determinano una certa irregolarit`a del sonno; per tale ragione durante la notte risulta sempre attivo un sensore per il monitoraggio dei parametri vitali, su tutti textbffrequenza respiratoria, attivit`a, accelerazione cardiaca e postura. Giuseppe non `e autonomo in gran parte delle attivit`a quotidiane e necessita di as- sistenza per l’igiene personale e per la vestizione; l’assistente pertanto lo veste ge- neralmente sul letto e poi lo posiziona sulla carrozzina elettrica con l’aiuto di un sollevatore, per poi accompagnarlo in bagno, al cui interno la vasca `e dotata di una piattaforma sollevabile, mentre il WC `e regolabile in altezza ed `e provvisto di bidet integrato e di scarico automatico. La mattina vengono eseguite sedute di riabilitazione sia per quanto riguarda la respi- razione, sia dal punto di vista motorio, sempre in presenza di caregiver. Per la respi- razione vengono impiegati due apparecchi specifici (In Ex Suffletor e Respi Flo) mentre gli esercizi riguardanti la motilit`a sono finalizzati all’esecuzione in maniera pi`u colla- borativa di attivit`a quotidiane (es. vestizione) e al mantenimento di una certa forma fisica attraverso un programma dietetico: in tal senso sono necessari alcuni strumenti per l’analisi multiparametrica del sangue come a esempio misuratore di colesterolo e trigliceridi, glucometro e saturimetro. Al momento del pranzo, la cui preparazione avviene necessariamente da parte del caregiver, Giuseppe riesce ad alimentarsi in maniera autonoma, grazie alla posata meccanica e al braccio meccanico; nonostante per numerose attivit`a occorra il sup- porto assistenziale, il fatto di mangiare in maniera indipendente `e un grande stimolo per Giuseppe, considerando soprattutto la sua personalit`a riservata e le note depressive di fondo. All’interno della Private Assisted House sono inoltre disponibili un PC ed un ta- blet, opportunamente collocati su un pannello attrezzato ad altezza regolabile, in modo da ingombrare il meno possibile e favorire il passaggio della carrozzina elettrica, facilitato anche da porte ad apertura automatica che grazie a opportuni sensori di presenza rilevano la presenza all’interno di una stanza: in questo modo Giusep- pe pu`o trascorrere parte del suo tempo libero giocando virtualmente (es. carte e altri passatempo). La sua vita tuttavia non si svolge esclusivamente all’interno delle mura domestiche: in estate infatti le attivit`a riabilitative vengono svolte in acqua; inoltre, pur ricevendo una pensione di invalidit`a, Giuseppe opera come volontario presso un’associazione e partecipa a eventi sociali organizzati dalla stessa. La cena `e organizzata allo stesso modo del pranzo, mentre le ore successive vengo- no trascorse generalmente guardando la tv seduto su una poltrona intelligente dotata di sensori per il monitoraggio dei parametri vitali e di postura realizzata con tessuti atermici ed impermeabili. 24
  21. 21. Configurazioni dedotte dalle storyboard 4.2 Configurazioni dedotte dalle storyboard Le storyboard appena riportate permettono di definire con un quadro pi`u chiaro come potrebbe essere la vita all’interno di una Private Assisted House. `E importante sottolineare che non tutti gli oggetti nominati esistono effettivamente (per il momento) e/o possono essere utilizzati per gli scopi sopra descritti (es. braccio meccanico), ma fanno comunque parte del “metamodello” che contiene gli smart object che dovrebbero essere realizzati all’interno delle smart home. Partendo da questo presupposto e dal fatto che lo scopo di questo progetto `e quello di creare una serie di configurazioni attuabili e gestibili attraverso Freedomotic, sono stati considerati solamente gli oggetti che hanno un senso all’interno della realt`a di Freedomotic. Ad esempio uno smart object come il sensore per ECG fornisce parametri vitali che possono essere utilizzati per stabilire lo stato di salute della persona e, in caso di valori fuori norma, la smart home pu`o avvertire i soccorsi tempestivamente. La posata meccanica, invece, `e uno smart object che sicuramente `e di grandissimo utilit`a, ma `e indubbiamente un oggetto fine a se stesso, ovvero non fornisce indicazioni che, se elaborate dal “sistema”, possono essere di maggior aiuto per la persona. Per questi motivi, quindi, non tutti gli oggetti sono stati implementati all’interno di Freedomotic anche se effettivamente nella realt`a della piattaforma Pass esistono. Di seguito viene riportato l’elenco dei possibili smart object coninvolti: Letto: un letto meccanizzato che consente il settaggio dell’inclinazione dello schienale. Vasca: una vasca dotata di piattaforma sollevabile. Finestre a schermo liquido: delle finestre che consentono di regolare l’afflusso lu- minoso all’interno della stanza. Sensore CO2: un sensore che misura la quantit`a di CO2 all’interno della casa. Sensori indossabili: dei sensori misurano alcuni parametri vitali come battito car- diaco, pressione arteriosa, saturazione ossigeno, livello del glucosio ecc. Poltrona sensorizzata: una poltrona che incorpora dei sensori che permettono un’a- nalisi dello stato di salute del paziente. Elettrodomestici vari: una serie di oggetti di uso comune nell’abitazione che il cui utilizzo deve essere facilitato come tv, forno, tablet ecc. La lista delle possibili configurazioni attuabili `e una diretta conseguenza dell’elenco degli oggetti coinvolti all’interno della Private Assisted House ed `e cos`ı composta: ˆ automatizzazione di azioni quotidiane e ripetitive: – spegnimento forno allo scadere del timer; – spegnimento luci in caso di uscita dalla stanza; – spegnimento luci del salotto all’accensione della TV; ˆ Regolazione luminosit`a della stanza: – diminuzione luce in caso di luminosit`a troppo alta; – aumento luce in caso di luminosit`a troppo bassa; 25
  22. 22. Configurazioni dedotte dalle storyboard – accensione di luce artificiale in caso di luminosit`a insufficiente; ˆ monitoraggio dei parametri vitali: – rilevazione di valori fuori norma; – chiamata dei soccorsi in caso di necessit`a; ˆ rilevazione di eventuali situazioni di pericolo: – possibili cadute; – valori di CO2 anormali; Agli oggetti precedentemente elencati, `e indispensabile aggiungerne altri (non diretta- mente menzionati nelle storyboard) la cui presenza risulta obbligatoria per effettuare i controlli necessari all’interno della casa e di conseguenza per creare le configurazioni appena descritte. Di seguito sono elencati gli smart object aggiunti alla lista precedentemente creata: Sistema di allarme: un sistema che permette di inoltrare chiamate automatiche ai soccorsi (caregiver, 118, centro di telemedicina). PIR: un sensore che rilevara la presenza di una persona all’interno di una stanza. Luxmetro: un sensore che misura la quantit`a di luce all’interno di un ambiente. Accelerometro: un sensore che permette di rilevare brusche accelerazioni (individua- zione di possibili cadute). Misuratore di pressione: un sensore che rileva la presenza di un peso sopra di esso (persona sopra la poltrona). 26
  23. 23. 5. L’implementazione degli smart object coinvolti Una volta definiti gli oggetti coinvolti, `e possibile passare alla loro implementazione, ovvero alla loro modellazione in smart object virtuali utilizzabili in Freedomotic. Ogni tipo di smart object implementato `e contraddistinto da un nome, una serie di behavior ed eventualmente anche dei comandi e dei trigger. Per evitare un inutile appesantimento di questo documento, viene mostrata solo la parte di codice relativa all’implementazione di alcuni comandi e trigger a titolo esemplificativo. 5.1 Bed Behavior: statusUp: regolazione dello schienale in percentuale. Command: set Bed up: alza lo schienale. Command setUp = new Command(); 2 setUp.setName("Set " + getPojo().getName() + " up"); setUp.setDescription("Raise the backplate of " + getPojo().getName()); 4 setUp.setReceiver("app.events.sensors.behavior.request.objects"); setUp.setProperty("object", getPojo().getName()); 6 setUp.setProperty("behavior", "statusUp"); setUp.setProperty("value", "100"); 8 CommandPersistence.add(setUp); set Bed down: abbassa lo schienale. Trigger: Bed turns up: quando lo schienale si alza. Trigger turnsUp = new Trigger(); 2 turnsUp.setName(this.getPojo().getName() + " turns up"); turnsUp.setChannel("app.event.sensor.object.behavior.change"); 4 turnsUp.getPayload().addStatement("object.name", this.getPojo().getName()); turnsUp.getPayload().addStatement("object.behavior." + BEHAVIOR_STATUS, "100"); 6 TriggerPersistence.add(turnsUp); Bed turns down: quando lo schienale si abbassa.
  24. 24. Bathtub 5.2 Bathtub Behavior: statusUp: regolazione della piattaforma sollevabile in percentuale. Command: set Bathtub up: alza la piattaforma. set Bathtub down: abbassa la piattaforma. Command setDown = new Command(); 2 setDown.setName("Set " + getPojo().getName() + " down"); setDown.setDescription("Lower the backplate of " + getPojo().getName()); 4 setDown.setReceiver("app.events.sensors.behavior.request.objects"); setDown.setProperty("object", getPojo().getName()); 6 setDown.setProperty("behavior", "statusUp"); setDown.setProperty("value", "0"); 8 CommandPersistence.add(setDown); Trigger: Bathtub turns up: quando la piattaforma si alza. Bathtub turns down: quando la piattaforma si abbassa. Trigger turnsDown = new Trigger(); 2 turnsDown.setName(this.getPojo().getName() + " turns down"); turnsDown.setChannel("app.event.sensor.object.behavior.change"); 4 turnsDown.getPayload().addStatement("object.name", this.getPojo().getName()); turnsDown.getPayload().addStatement("object.behavior." + BEHAVIOR_STATUS, "0"); 6 TriggerPersistence.add(turnsDown); 5.3 ShieldedWindow Behavior: shield: valore della schermatura in percentuale. Command: Increase ShieldedWindow shield value: incrementa la schermatura. Command increase = new Command(); 2 increase.setName("Increase " + getPojo().getName() + " shield value"); increase.setDescription("Increase " + getPojo().getName() + " shield value" + " of one step"); 4 increase.setReceiver("app.events.sensors.behavior.request.objects"); increase.setProperty("object", getPojo().getName()); 6 increase.setProperty("behavior", "shield"); increase.setProperty("value", "next"); 8 CommandPersistence.add(increase); Decrease ShieldedWindow shield value: decrementa la schermatura. 28
  25. 25. HealthSensor 5.4 HealthSensor Behavior: powered: sensore acceso o spento. HeartRate: battito cardiaco rilevato. BloodPressure: pressione arteriosa rilevata. ECGAnomalies: rilevazione anomalie nell’ECG (vero o falso). batteryLevel: valore percentuale della batteria del sensore. Command: turn on: accendi il sensore. Command setOn = new Command(); 2 setOn.setName("Turn on " + getPojo().getName()); setOn.setDescription(getPojo().getName() + " turns on"); 4 setOn.setReceiver("app.events.sensors.behavior.request.objects"); setOn.setProperty("object", getPojo().getName()); 6 setOn.setProperty("behavior", BEHAVIOR_POW); setOn.setProperty("value", BooleanBehavior.VALUE_TRUE); 8 CommandPersistence.add(setOn); turn off: spegni il sensore. Trigger: HealthSensor turns on: quando il sensore si accende. HealthSensor turns off: quando il sensore si spegne. HealthSensor detect an ECG anomalies: quando il sensore rileva un’ano- malia nell’ECG. Trigger ECGAnomaliesTrue = new Trigger(); 2 ECGAnomaliesTrue.setName(this.getPojo().getName() + " detect an ECG anomalies"); ECGAnomaliesTrue.setChannel("app.event.sensor.object.behavior.change"); 4 ECGAnomaliesTrue.getPayload().addStatement("object.name", this.getPojo().getName()); ECGAnomaliesTrue.getPayload().addStatement("object.behavior." + BEHAVIOR_ECG_ANOM, BooleanBehavior. VALUE_TRUE); 6 TriggerPersistence.add(ECGAnomaliesTrue); HealthSensor don’t detect an ECG anomalies: quando il sensore non rile- va un’anomalia nell’ECG. battery level il too low: quando la batteria del sensore `e troppo bassa. 5.5 GlucoMeter Behavior: powered: sensore acceso o spento. glucose: valore di glucosio nel sangue rilevato. BatteryLevel: valore percentuale della batteria del sensore. 29
  26. 26. PulseOximeter Command: turn on: accendi il sensore. turn off: spegni il sensore. Trigger: GlucoMeter turns on: quando il sensore si accende. GlucoMeter turns off: quando il sensore si spegne. battery level il too low: quando la batteria del sensore `e troppo bassa. Trigger BatteryLow = new Trigger(); 2 BatteryLow.setName(this.getPojo().getName() + " battery level is too low"); BatteryLow.setChannel("app.event.sensor.object.behavior.change"); 4 BatteryLow.getPayload().addStatement("object.name", this.getPojo().getName()); BatteryLow.getPayload().addStatement("AND", "object.behavior." + BEHAVIOR_BATTERY, "LESS_THAN", "10"); 6 TriggerPersistence.add(BatteryLow); 5.6 PulseOximeter Behavior: powered: sensore acceso o spento. sat: valore della saturazione dell’ossigeno in percentuale. BatteryLevel: valore percentuale della batteria del sensore. Command: turn on: accendi il sensore. turn off: spegni il sensore. Command setOff = new Command(); 2 setOff.setName("Turn off " + getPojo().getName()); setOff.setDescription(getPojo().getName() + " turns off"); 4 setOff.setReceiver("app.events.sensors.behavior.request.objects"); setOff.setProperty("object", getPojo().getName()); 6 setOff.setProperty("behavior", BEHAVIOR_POW); setOff.setProperty("value", BooleanBehavior.VALUE_FALSE); 8 CommandPersistence.add(setOff); Trigger: PulseOximeter turns on: quando il sensore si accende. Trigger turnsOn = new Trigger(); 2 turnsOn.setName(this.getPojo().getName() + " turns on"); turnsOn.setChannel("app.event.sensor.object.behavior.change"); 4 turnsOn.getPayload().addStatement("object.name", this.getPojo().getName()); turnsOn.getPayload().addStatement("object.behavior." + BEHAVIOR_POW, BooleanBehavior.VALUE_TRUE); 6 TriggerPersistence.add(turnsOn); PulseOximeter turns off: quando il sensore si spegne. battery level il too low: quando la batteria del sensore `e troppo bassa. 30
  27. 27. GasMeter 5.7 GasMeter Behavior: CO2: percentuale di CO2 nell’aria. batteryLevel: valore percentuale della batteria del sensore. deviceTemperature: temperatura del sensore in °C. 5.8 Armchair Behavior: glucose: valore di glucosio nel sangue relevato. BloodPressure: pressione arteriosa rilevata. sat: valore della saturazione dell’ossigeno in percentuale. weight: peso corporeo. 5.9 Oven Behavior: powered: dispositivo acceso o spento. temperature: valore della temperatura di cottura. timer: valore del timer. Command: turn on: accendi il sensore. turn off: spegni il sensore. Trigger: Oven turns on: quando il dispositivo si accende. Oven turns off: quando il dispositivo si spegne. timer go to 0: quando il timer arriva a 0. Trigger timer0 = new Trigger(); 2 timer0.setName(this.getPojo().getName() + " timer go to 0"); timer0.setChannel("app.event.sensor.object.behavior.change"); 4 timer0.getPayload().addStatement("object.name", this.getPojo().getName()); timer0.getPayload().addStatement("object.behavior." + BEHAVIOR_TIMER, "0"); 6 TriggerPersistence.add(timer0); 31
  28. 28. TV 5.10 TV4 Behavior: powered: dispositivo acceso o spento. volume: valore del volume impostato. channel: valore del canale selezionato. muted: disattivazione audio (vero o falso). Command: powered: dispositivo acceso o spento. volume: valore del volume impostato. channel: valore del canale selezionato. muted: disattivazione audio (vero o falso). Trigger: turn on: accendi il dispositivo. turn off: spegni il dispositivo. volume up: aumenta il volume di una unit`a. volume down: decrementa il volume di una unit`a. channel up: imposta il canale successivo. channel down: imposta il canale precedente. mute TV: disattiva audio. unmute TV: attiva audio. 5.11 Light4 Behavior: powered: dispositivo acceso o spento. brightness: valore percentuale della luminosit`a. Command: turn on: accendi la luce. turn off: spegni la luce. Increase brightness: aumenta la luminosit`a di una unit`a. Decrease brightness: decrementa la luminosit`a di una unit`a. 4 smart object presente di dafault in Freedomotic 32
  29. 29. Tablet 5.12 Tablet Behavior: powered: dispositivo acceso o spento. Command: turn on: accendi il dispositivo. turn off: spegni il dispositivo. Command setOff = new Command(); 2 setOff.setName("Turn off " + getPojo().getName()); setOff.setDescription(getPojo().getName() + " turns off"); 4 setOff.setReceiver("app.events.sensors.behavior.request.objects"); setOff.setProperty("object", getPojo().getName()); 6 setOff.setProperty("behavior", BEHAVIOR_POW); setOff.setProperty("value", BooleanBehavior.VALUE_FALSE); 8 CommandPersistence.add(setOff); 5.13 AlertSystem Behavior: AlertCG: chiamata al caregiver (vero o falso). Alert118: chiamata al 118 (vero o falso). AlertTM: chiamata al centro di telemedicina (vero o falso). Command: AlCG: chiama il caregiver. Command AlCG = new Command(); 2 AlCG.setName(getPojo().getName() + " alerts the caregiver"); AlCG.setDescription(getPojo().getName() + " alerts the caregiver"); 4 AlCG.setReceiver("app.events.sensors.behavior.request.objects"); AlCG.setProperty("object", getPojo().getName()); 6 AlCG.setProperty("behavior", "AlertCG"); AlCG.setProperty("value", "True"); 8 CommandPersistence.add(AlCG); Al118: chiama il 118. AlTM: chiama il centro di telemedicina. Command AlTM = new Command(); 2 AlTM.setName(getPojo().getName() + " alerts the telemedicine structure"); AlTM.setDescription(getPojo().getName() + " alerts the telemedicine structure"); 4 AlTM.setReceiver("app.events.sensors.behavior.request.objects"); AlTM.setProperty("object", getPojo().getName()); 6 AlTM.setProperty("behavior", "AlertTM"); AlTM.setProperty("value", "True"); 8 CommandPersistence.add(AlTM); 33
  30. 30. Accelerometer 5.14 Accelerometer Behavior: powered: sensore acceso o spento. acceleration: valore dell’accelerazione rilevata dal sensore. horizontal: rilevata posizione orizzonale (vero o falso). BatteryLevel: valore percentuale della batteria del sensore. Command: turn on: accendi il sensore. turn off: spegni il sensore. Trigger: battery level il too low: quando la batteria del sensore `e troppo bassa. 5.15 LuxMeter Behavior: lux: sensore acceso o spento. BatteryLevel: valore percentuale della batteria del sensore. Trigger: battery level il too low: quando la batteria del sensore `e troppo bassa. 5.16 PressureMeter Behavior: pressure: sensore acceso o spento. BatteryLevel: valore percentuale della batteria del sensore. deviceTemperature: temperatura del dispositivo in °C. 5.17 PIR Behavior: presence: sensore acceso o spento. BatteryLevel: valore percentuale della batteria del sensore. 34
  31. 31. PIR Trigger: PIR relieves a presence: quando il sensore rileva un movimento. Trigger PresenceTrue = new Trigger(); 2 PresenceTrue.setName(this.getPojo().getName() + " relieves a presence"); PresenceTrue.setChannel("app.event.sensor.object.behavior.change"); 4 PresenceTrue.getPayload().addStatement("object.name", this.getPojo().getName()); PresenceTrue.getPayload().addStatement("object.behavior." + BEHAVIOR_PRESENCE, BooleanBehavior. VALUE_TRUE); 6 TriggerPersistence.add(PresenceTrue); PIR don’t relieves a presence: quando il sensore non rileva un movimento. Trigger PresenceFalse = new Trigger(); 2 PresenceFalse.setName(this.getPojo().getName() + " don’t relieve a presence"); PresenceFalse.setChannel("app.event.sensor.object.behavior.change"); 4 PresenceFalse.getPayload().addStatement("object.name", this.getPojo().getName()); PresenceFalse.getPayload().addStatement("object.behavior." + BEHAVIOR_PRESENCE, BooleanBehavior. VALUE_FALSE); 6 TriggerPersistence.add(PresenceFalse); battery level il too low: quando la batteria del sensore `e troppo bassa. 35
  32. 32. 6. L’implementazione delle configurazioni Freedomotic permette, una volta creati gli oggetti, di posizionarli a proprio piacimento all’interno dell’abitazione. La “Private Assisted House” ipotizzata, `e composta da un soggiorno, una camera da letto e una cucina, pertanto alcuni degli smart object implementati, sono stati inseriti in ognuna delle suddette stanze: ˆ Light; ˆ PIR; ˆ LuxMeter; ˆ ShieldedWindow; Nel suo complesso, l’ambiente virtuale si presenta nella seguente maniera: Figura 6.1: Casa virtuale in Freedomotic con gli smart object
  33. 33. Spegnimento forno allo scadere del timer Nonostante la smart home abbia al suo interno tutti gli oggetti di cui necessita, non pu`o essere ancora considerata come una casa “intelligente”, poich´e gli smart ob- ject non hanno alcuna automazione associata ai loro trigger. Pertanto ora verranno implementate le configurazioni che sono state in precedenza definite nel paragrafo 4.2. 6.1 Spegnimento forno allo scadere del timer Smart object: Oven; Trigger: “timer go to 0”; Command: “turn off Oven”; Reaction: “IF timer go to 0 THAN turn off Oven”; <com.freedomotic.reactions.Reaction> 2 <trigger>Oven timer go to 0</trigger> <sequence> 4 <command>Turn off Oven</command> </sequence> 6 </com.freedomotic.reactions.Reaction> 6.2 Spegnimento luci del salotto all’accensione della TV Smart object: ˆ LivingroomLight; ˆ TV; Trigger: “TV turns on”; Command: “Turn off LivingroomLight”; Reaction: “IF TV turns on THAN turn off LivingroomLight”; <com.freedomotic.reactions.Reaction> 2 <trigger>TV turns on</trigger> <sequence> 4 <command>Turn off LivingroomLight</command> </sequence> 6 </com.freedomotic.reactions.Reaction> 6.3 Spegnimento luci rimaste accese la notte Smart object: LivingroomLight; Trigger: “It’s night time”; Command: “turn off all lights”; Reaction: “IF it’s night time THAN turn off all lights”; <com.freedomotic.reactions.Reaction> 2 <trigger>It’s night time</trigger> <sequence> 4 <command>turn off all lights</command> </sequence> 6 </com.freedomotic.reactions.Reaction> 38
  34. 34. Spegnimento luci in caso di uscita dalla stanza 6.4 Spegnimento luci in caso di uscita dalla stanza Smart object: ˆ LivingroomPIR; ˆ LivingroomLight; Trigger: “LivingroomPIR don’t relieve a presence”; Command: “Turn off LivingroomLight”; Reaction: “IF LivingroomPIR don’t relieve a presence THAN turn off Livingroom- Light”; <com.freedomotic.reactions.Reaction> 2 <trigger>LivingroomPIR don’t relieve a presence</trigger> <sequence> 4 <command>Turn off LivingroomLight</command> </sequence> 6 </com.freedomotic.reactions.Reaction> 6.5 Regolazione luminosit`a della stanza5 Smart object: ˆ LivingroomLuxMeter; ˆ LivingroomShieldedWindow; Aumento luce Trigger: “Livingroom lux is too low”; <trigger> 2 <name>Livingroom lux is too low</name> <channel>app.event.sensor.object.behavior.change</channel> 4 <payload> <payload> 6 <com.freedomotic.reactions.Statement> <logical>AND</logical> 8 <attribute>Object.behavior.Lux</attribute> <operand>LESS_THAN</operand> 10 <value>50</value> </com.freedomotic.reactions.Statement> 12 <com.freedomotic.reactions.Statement> <logical>AND</logical> 14 <attribute>object.name</attribute> <operand>EQUALS</operand> 16 <value>livingroomLuxMeter</value> </com.freedomotic.reactions.Statement> 18 </payload> </payload> 20 </trigger> Command: “Decrease LivingroomShieldedWindow shield value”; Reaction: “IF Livingroom lux is too low THAN decrease LivingroomShielded- Window shield value”; 5 `E documentato solo il salotto poich´e cucina e camera da letto hanno un’implementazione analoga. 39
  35. 35. Regolazione luminosit`a della stanza Diminuzione luce Trigger: “Livingroom lux is too high”; Command: “Increase LivingroomShieldedWindow shield value”; Reaction: “IF Livingroom lux is too low THAN increase LivingroomShielded- Window shield value”; <com.freedomotic.reactions.Reaction> 2 <trigger>Livingroom lux is too high</trigger> <sequence> 4 <command>Increase LivingroomShieldedWindow shield value</command> </sequence> 6 </com.freedomotic.reactions.Reaction> Luce artificiale in caso di illuminazione insufficiente (sera) Trigger: “LivingroomPIR relieves a presence and its evening”; <trigger> 2 <name>LivingroomPIR relieves a presence and its evening</name> <channel>app.event.sensor.object.behavior.change</channel> 4 <payload> <payload> 6 <com.freedomotic.reactions.Statement> <logical>AND</logical> 8 <attribute>time.hour</attribute> <operand>GREATER_EQUAL_THAN</operand> 10 <value>18</value> </com.freedomotic.reactions.Statement> 12 <com.freedomotic.reactions.Statement> <logical>AND</logical> 14 <attribute>object.name</attribute> <operand>EQUALS</operand> 16 <value>LivingroomPIR</value> </com.freedomotic.reactions.Statement> 18 <com.freedomotic.reactions.Statement> <logical>AND</logical> 20 <attribute>object.behavior.presence</attribute> <operand>EQUALS</operand> 22 <value>true</value> </com.freedomotic.reactions.Statement> 24 </payload> </payload> 26 </trigger> Command: “Turn on LivingroomLight”; Reaction: “IF LivingroomPIR relieves a presence and its evening THAN turn on LivingroomLight”; <com.freedomotic.reactions.Reaction> 2 <trigger>LivingroomPIR relieves a presence and its evening</trigger> <sequence> 4 <command>Turn on LivingroomLight</command> </sequence> 6 </com.freedomotic.reactions.Reaction> Luce artificiale in caso di illuminazione insufficiente (notte) Trigger: “LivingroomPIR relieves a presence and its night”; Command: “Turn on LivingroomLight”; 40
  36. 36. Controllo parametri vitali Reaction: “IF LivingroomPIR relieves a presence and its night THAN turn on LivingroomLight”; 6.6 Controllo parametri vitali Smart object: ˆ HealthSensor; ˆ Armchair; ˆ PulseOximeter; ˆ GlucoMeter; ˆ AlertSystem; Pressione arteriosa troppo alta (HealthSensor) Trigger: “Blood pressure is too high”; <trigger> 2 <name>Blood Pressure is too high</name> <channel>app.event.sensor.object.behavior.change</channel> 4 <payload> <payload> 6 <com.freedomotic.reactions.Statement> <logical>AND</logical> 8 <attribute>object.behavior.BloodPressure</attribute> <operand>GREATER_THAN</operand> 10 <value>100</value> </com.freedomotic.reactions.Statement> 12 <com.freedomotic.reactions.Statement> <logical>AND</logical> 14 <attribute>object.name</attribute> <operand>EQUALS</operand> 16 <value>HealthSensor</value> </com.freedomotic.reactions.Statement> 18 </payload> </payload> 20 </trigger> Command: “AlertSystem alerts the telemedicine structure”; Reaction: “IF blood pressure is too high THAN AlertSystem alerts the teleme- dicine structure”; <com.freedomotic.reactions.Reaction> 2 <trigger>Blood Pressure is too high</trigger> <sequence> 4 <command>AlertSystem alerts the telemedicine structure</command> </sequence> 6 </com.freedomotic.reactions.Reaction> Pressione arteriosa troppo bassa (HealthSensor) Trigger: “Blood Pressure is too low”; Command: “AlertSystem alerts the telemedicine structure”; Reaction: “IF blood pressure is too low THAN AlertSystem alerts the teleme- dicine structure”; 41
  37. 37. Controllo parametri vitali <com.freedomotic.reactions.Reaction> 2 <trigger>Blood Pressure is too low</trigger> <sequence> 4 <command>AlertSystem alerts the telemedicine structure</command> </sequence> 6 </com.freedomotic.reactions.Reaction> Anomalia nell’ECG Trigger: “HealthSensor detect an ECG anomalies”; Command: ˆ “AlertSystem alerts the caregiver”; ˆ “AlertSystem alerts 118”; Reaction: “IF HealthSensor detect an ECG anomalies THAN AlertSystem alerts the caregiver AFTER THAT AlertSystem alerts 118”; <com.freedomotic.reactions.Reaction> 2 <trigger>HealthSensor detect an ECG anomalies</trigger> <sequence> 4 <command>AlertSystem alerts the caregiver</command> <command>AlertSystem alerts 118</command> 6 </sequence> </com.freedomotic.reactions.Reaction> Pressione arteriosa troppo alta (Armchair) Trigger: “Armchair blood pressure value is to high”; 1 <trigger> <name>Armchair blood pressure value is to high</name> 3 <channel>app.event.sensor.object.behavior.change</channel> <payload> 5 <payload> <com.freedomotic.reactions.Statement> 7 <logical>AND</logical> <attribute>object.behavior.BloodPressure</attribute> 9 <operand>GREATER_THAN</operand> <value>80</value> 11 </com.freedomotic.reactions.Statement> <com.freedomotic.reactions.Statement> 13 <logical>AND</logical> <attribute>object.name</attribute> 15 <operand>EQUALS</operand> <value>Armchair</value> 17 </com.freedomotic.reactions.Statement> </payload> 19 </payload> </trigger> Command: “AlertSystem alerts the telemedicine structure”; Reaction: “IF Armchair blood pressure value is to high THAN AlertSystem alerts the telemedicine structure”; Saturazione ossigeno nel sangue troppo alta Trigger: “O2 saturation is too high”; 42
  38. 38. Controllo parametri vitali <trigger> 2 <name>O2 saturation is too high</name> <channel>app.event.sensor.object.behavior.change</channel> 4 <payload> <payload> 6 <com.freedomotic.reactions.Statement> <logical>AND</logical> 8 <attribute>object.behavior.sat</attribute> <operand>GREATER_THAN</operand> 10 <value>95</value> </com.freedomotic.reactions.Statement> 12 <com.freedomotic.reactions.Statement> <logical>AND</logical> 14 <attribute>object.name</attribute> <operand>EQUALS</operand> 16 <value>PulseOximeter</value> </com.freedomotic.reactions.Statement> 18 </payload> </payload> 20 </trigger> Command: “AlertSystem alerts the telemedicine structure”; Reaction: “IF O2 saturation is too high THAN AlertSystem alerts the teleme- dicine structure”; Saturazione ossigeno nel sangue troppo bassa Trigger: “O2 saturation is too low”; Command: “AlertSystem alerts the telemedicine structure”; Reaction: “IF O2 saturation is too low THAN AlertSystem alerts the teleme- dicine structure”; <com.freedomotic.reactions.Reaction> 2 <trigger>O2 saturation is too low</trigger> <sequence> 4 <command>AlertSystem alerts the telemedicine structure</command> </sequence> 6 </com.freedomotic.reactions.Reaction> Glucosio nel sangue troppo basso Trigger: “Glucose value is too low”; <trigger> 2 <name>Glucose value is too low</name> <channel>app.event.sensor.object.behavior.change</channel> 4 <payload> <payload> 6 <com.freedomotic.reactions.Statement> <logical>AND</logical> 8 <attribute>object.behavior.glucose</attribute> <operand>LESS_THAN</operand> 10 <value>40</value> </com.freedomotic.reactions.Statement> 12 <com.freedomotic.reactions.Statement> <logical>AND</logical> 14 <attribute>object.name</attribute> <operand>EQUALS</operand> 16 <value>GlucoMeter</value> </com.freedomotic.reactions.Statement> 18 </payload> </payload> 20 </trigger> 43
  39. 39. Rilevazione di eventuali situazioni di pericolo Command: “AlertSystem alerts the telemedicine structure”; Reaction: “IF glucose value is too low THAN AlertSystem alerts the telemedi- cine structure”; 6.7 Rilevazione di eventuali situazioni di pericolo Smart object: ˆ Accelerometer; ˆ GasMeter; ˆ AlertSystem; Rilevazione di una caduta Trigger: “The person is dropped”; <trigger> 2 <name>The person is dropped</name> <channel>app.event.sensor.object.behavior.change</channel> 4 <payload> <payload> 6 <com.freedomotic.reactions.Statement> <logical>AND</logical> 8 <attribute>object.behavior.acceleration</attribute> <operand>GREATER_THAN</operand> 10 <value>40</value> </com.freedomotic.reactions.Statement> 12 <com.freedomotic.reactions.Statement> <logical>AND</logical> 14 <attribute>object.name</attribute> <operand>EQUALS</operand> 16 <value>Accelerometer</value> </com.freedomotic.reactions.Statement> 18 <com.freedomotic.reactions.Statement> <logical>AND</logical> 20 <attribute>object.behavior.horizontal</attribute> <operand>EQUALS</operand> 22 <value>true</value> </com.freedomotic.reactions.Statement> 24 </payload> </payload> 26 </trigger> Command: ˆ “AlertSystem alerts the caregiver”; ˆ “AlertSystem alerts 118”; Reaction: “IF the person is dropped THAN AlertSystem alerts the caregiver AFTER THAT AlertSystem alerts 118”; <com.freedomotic.reactions.Reaction> 2 <trigger>The person is dropped</trigger> <sequence> 4 <command>AlertSystem alerts the caregiver</command> <command>AlertSystem alerts 118</command> 6 </sequence> </com.freedomotic.reactions.Reaction> 44
  40. 40. Rilevazione di eventuali situazioni di pericolo Concentrazione di CO2 nell’aria troppo elevata Trigger: “CO2 value is too high”; 1 <trigger> <name>CO2 value is too high</name> 3 <channel>app.event.sensor.object.behavior.change</channel> <payload> 5 <payload> <com.freedomotic.reactions.Statement> 7 <logical>AND</logical> <attribute>object.behavior.CO2</attribute> 9 <operand>GREATER_THAN</operand> <value>20</value> 11 </com.freedomotic.reactions.Statement> <com.freedomotic.reactions.Statement> 13 <logical>AND</logical> <attribute>object.name</attribute> 15 <operand>EQUALS</operand> <value>GasMeter</value> 17 </com.freedomotic.reactions.Statement> </payload> 19 </payload> </trigger> Command: “AlertSystem alerts the caregiver”; Reaction: “IF CO2 value is too high THAN AlertSystem alerts the caregiver”; <com.freedomotic.reactions.Reaction> 2 <trigger>CO2 value is too high</trigger> <sequence> 4 <command>AlertSystem alerts the caregiver</command> </sequence> 6 </com.freedomotic.reactions.Reaction> Queste configurazioni, che permettono a Freedomotic di automatizzare la “Priva- te Assisted House”, consentono di effettuare i controlli che le storyboard richiedono, ma ovviamente non rappresentano soluzioni immediatamente applicabili sul campo, in quanto gli smart object configurati: non sono associati a un hardware: nonostante la maggior parte degli smart object utilizzati siano gi`a presenti nel mercato, questi devono essere in grado di comu- nicare con Freedomotic, altrimenti ogni configurazione agisce solamente a livello software. Infatti i valori utilizzati nelle configurazioni non forniscano in alcun mo- do un valore associabile ad una misurazione reale, in quanto tale valore pu`o avere diverse rappresentazioni (unit`a di misura) strettamente dipendenti dall’hardware utilizzato. devono essere adattati a esigenze specifiche: ogni persona pu`o presentare range differenti di valori anormali per ogni parametro vitale, poich´e essi possono variare a seconda della condizioni fisiche (sesso, et`a, peso, altezza, ecc.) e della malattia di cui ognuno `e affetto, senza contare il fatto degli aspetti degenerativi che posso far mutare nel tempo questi range. Pertanto i valori presentati in questa docu- mentazione sono assolutamente indicativi. Sar`a compito del personale medico competente stabilire quali sono i valori per i quali deve scattare una procedura di assistenza. 45
  41. 41. Plugin per la riconfigurazione on-demand 6.8 Plugin per la riconfigurazione on-demand Tutti gli smart object e le relative configurazioni sono stati implementati per rispondere alle esigenze che le persone descritte nelle storyboard richiedono. In precedenza `e stato detto che ogni persona pu`o avere esigenze specifiche differenti, infatti ogni storyboard, che descrive profili assistenziali di diversa gravit`a, necessita di configurazioni che forniscono determinati controlli e che, probabilmente, in un’altra storyboard non sono necessari. Quello che verr`a affrontato ora, `e la suddivisione delle configurazioni in base alle esigenze specifiche di ogni storyboard, in modo da creare una “Private Assisted House” su misura di ogni profilo assistenziale. Come `e stato gi`a discusso nel paragrafo 4.1, ogni storyboard rappresenta un profilo assistenziale sempre pi`u grave, quindi `e possibile dedurre che al crescere della gravit`a del profilo assistenziale cresceranno anche i controlli da effettuare. Nel caso specifico del profilo assistenziale basso, per l’assistito `e sufficiente un con- trollo cardiologico e della pressione per stabilirne lo stato di salute, mentre nel pro- filo assistenziale grave sono necessari ulteriori controlli come il glucosio, saturazione ossigeno nel sangue ecc. Ci`o significa che ogni profilo assistenziale avr`a le configurazioni presenti in quello precedente pi`u altre create appositamente per lui. Di seguito sono proposte le configurazioni specifiche di ogni profilo, dove a queste si aggiungono quelle di tutti i profili precedenti. Configurazione per profilo assistenziale basso ˆ spegnimento del forno allo scadere del timer; ˆ spegnimento luci del salotto all’accensione della TV; ˆ spegnimento luci rimaste accese la notte; ˆ spegnimento luci in caso di uscita dalla stanza; ˆ regolazione luminosit`a della stanza: – aumento luce; – diminuzione luce; – luce artificiale in caso di illuminazione insufficiente; ˆ controllo parametri vitali: – pressione arteriosa troppo alta (HealthSensor); – pressione arteriosa troppo bassa (HealthSensor); – anomalia nell’ECG; Configurazione per profilo assistenziale medio ˆ controllo parametri vitali: – pressione arteriosa troppo bassa (Armchair); ˆ rilevazione di eventuali situazioni di pericolo: – rilevazione di una caduta; 46
  42. 42. Simulazione delle configurazioni Configurazione per profilo assistenziale alto ˆ controllo parametri vitali: – saturazione ossigeno nel sangue troppo alta; – saturazione ossigeno nel sangue troppo bassa; – glucosio nel sangue troppo basso; ˆ rilevazione di eventuali situazioni di pericolo: – concentrazione di CO2 nell’aria troppo elevata; Una volta che tutte le configurazioni precedentemente create sono state suddivise in base al loro profilo assistenziale di riferimento, sono stati creati tre plugin (uno per ogni profilo), che caricano a runtime le configurazioni attraverso i vari file .xtrg e .rea che contengono i relativi trigger e reaction. Questo sistema permette di aumentare l’adattabilit`a e la flessibilit`a della “Private Assisted House” consentendo di gestire anche situazioni degenerative del malato (come descritto nei paragrafi 2.5 e 2.6). Figura 6.2: Finestra con i plugin installati 6.9 Simulazione delle configurazioni In ogni processo di sviluppo software `e necessario passare come ultimo step, attra- verso procedure che permettono di verificare il corretto funzionamento, pertanto in quest’ultima parte di documentazione varranno trattate le simulazioni effettuate sulle configurazioni create. Freedomotic mette a disposizione un apposito pannello di controllo, che per ogni oggetto creato, fornisce pulsanti e barre di scorrimento che permettono di cambiare valori ai relativi behavior. In questo modo `e possibile “forzare” un cambiamento di stato per verificare che un determinato trigger scatti in maniera corretta. Questo modo di operare risulta efficace, ma assolutamente fine a se stesso, perci`o per effettuare simulazioni `e stato utilizzato un meccanismo alternativo e decisamente pi`u interessante. Mi `e stato fornito un software e un relativo plugin per Freedomotic, che permette di simulare i cambiamenti di stato di un oggetto fisico e di conseguenza al relativo oggetto virtuale. 47
  43. 43. Simulazione delle configurazioni Figura 6.3: Pannello di controllo di Freedomotic L’applicazione utilizza il protocollo MQTT6 per simulare cambiamenti di un behavior negli smart object. Nello specifico, bisogna fornire al software un payload di tipo JSON7 contenente il template dello smart object con i relativi valori dei behavior modificati. Il software, poi, si occuper`a di pubblicare (effettua una publish) il payload su un determinato broker (nodo centrale). Figura 6.4: Interfaccia del simulatore A questo punto il plugin di Freedomotic, che non `e altro che un client MQTT connesso al broker, intercetta le pubblicazioni fatte dall’applicazione (effettua una subscribe) e carica i cambiamenti ottenuti sui relativi smart object virtuali. Di seguito vengono proposti due esempi che mostrano come costruire payload per simulare il cambiamento di stato degli smart object. 6 MQ Telemetry Transport (MQTT) `e un protocollo di messaggistica di tipo publish-subscribe. 7 JavaScript Object Notation `e un formato per lo scambio dei dati in applicazioni client-server. 48
  44. 44. Simulazione delle configurazioni Simulazione HealthSensor Behavior modificati: ˆ BloodPressure = 120; ˆ HeartRate = 90; Payload di riferimento: { 2 "time":"165030", "date":"20140911", 4 "timestamp": 1391100630000, "sender": "HealthSensor", 6 "object.address": "777", "object.networkAddress": "0x0001", 8 "object.endpointAddress": "0x0000000000000001", "object.type": "HealthSensor", 10 "object.uuid": "86a2a5bb-a919-3734-ab81-b7544aaee09f", "object.cid": "0x0620", 12 "object.ctype": "0x0620", "measurements": 14 [ { 16 "timestamp": 1396253552418, "name": "HeartRate", 18 "value": 90, "unit": "bpm" 20 }, { 22 "timestamp": 1396253552418, "name": "BloodPressure", 24 "value": 120, "unit": "mmHg" 26 } ] 28 } Figura 6.5: Situazione dell’HealthSensor prima della simulazione Figura 6.6: Situazione dell’HealthSensor dopo la simulazione Di conseguenza alla modifica dei valori nei behavior, tutti i trigger che soddisfano tali cambiamenti scattano, infatti in questo caso viene rilevata una pressione troppo alta e parte la chiamata alla struttura di telemedicina. 49
  45. 45. Simulazione delle configurazioni Simulazione BedroomPIR Behavior modificato: presence = false; Payload di riferimento: { 2 "time":"165030", "date":"20140911", 4 "timestamp": 1391100630000, "sender": "BedroomPIR", 6 "object.address": "778", "object.networkAddress": "0x0001", 8 "object.endpointAddress": "0x0000000000000001", "object.type": "BedroomPIR", 10 "object.uuid": "86a2a5bb-a919-3734-ab81-b7544aaee09f", "object.cid": "0x0620", 12 "object.ctype": "0x0620", "measurements": 14 [ { 16 "timestamp": 1396253552418, "name": "presence", 18 "value": false, "unit": "" 20 } ] 22 } Figura 6.7: Situazione del BedroomPIR prima della simulazione Figura 6.8: Situazione del BedroomPIR dopo la simulazione In questo caso il PIR segnala la presenza di una persona all’interno della camera da letto e la luce `e accesa. Nel momento in cui il simulatore pubblica sul broker un payload in cui il bahavior presence `e false, Freedomotic intercetta questo payload e cambia lo stato del PIR. Come risultato si ha che scatta anche il trigger associato allo stato false: il sensore che non rileva pi`u alcuna presenza spegne l’ormai superflua lampadina. 50
  46. 46. 7. Conclusione e sviluppi futuri La societ`a odierna `e ormai caratterizzata dall’uso di dispositivi tecnologici in qualsiasi ambito. La tecnologia, inoltre, ha un ruolo in primo piano riguardo la salute e il benessere delle persone poich´e nel corso degli anni si `e sviluppata (e lo sta facendo tutt’ora) per poter offrire un sostegno sempre pi`u concreto alle persone. Attualmente sono presenti svariate strutture sanitarie che permettono di fornire assistenza e supporto ad anziani o persone con diverse disabilit`a, in cui si metto- no a disposizione operatori competenti che aiutano i pazienti durante la loro attivit`a quotidiana. Il passo in avanti che oggi la sanit`a, con l’aiuto della tecnologia, sta cercando di effettuare `e quello di studiare e fornire impianti domotici che permettano di migliorare l’autonomia e la qualit`a della vita degli anziani e persone affette da disabilit`a. In particolare, il progetto di cui mi sono occupato `e quello che riguarda la “Private Assisted House”, ovvero un’abitazione in cui il disabile pu`o restare tranquillamente nel suo ambiente familiare, ma con lo stesso grado di sicurezza che pu`o offrire una struttura sanitaria specializzata. Questo avviene attraverso la piattaforma domotica che ho configurato e che, grazie ai vari sensori e dispositivi posti all’interno dell’abitazione, riesce a controllare il livello di salute e agire di conseguenza basandosi sulle regole imposte. Questa soluzione di “casa intelligente” `e ancora in fase di sviluppo e, per il momento, deve essere considerata ancora un come un prototipo, infatti manca della componente hardware che, seppur esistente, non fornisce l’interoperabilit`a necessaria affinch´e tutti i dispositivi possano comunicare le loro informazioni a Freedomotic. Lo sforzo che dovr`a essere fatto in questa direzione sar`a proprio quello di poter prelevare le misurazioni effettuate tramite il sensore fisico, e quindi, di abbandonare l’uso del simulatore che io ho sfruttato. Permettere, per`o, la comunicazione diretta fra il dispositivo e Freedomotic attraverso un protocollo di comunicazione, potrebbe portare diverse complicazioni sotto molti punti di vista. Un’alternativa possibile potrebbe essere quella di sfruttare la stessa tecnologia utilizzata dal simulatore: il protocollo MQTT (o simile) per permettere al sensore di comunicare i parametri misurati a un broker che a sua volta li indirizzer`a a Freedomotic che effettuer`a le dovute valutazioni. Lo spostamento delle misurazioni e informazioni verso un ambiente esterno offrirebbe l’opportunit`a di nuovi possibili sviluppi. Si potrebbe garantire, infatti, la sorveglianza della persona anche da una postazione remota, effettuando ad esempio, delle analisi pi`u approfondite e utilizzare la strumentazione gi`a presente in casa per valutare in tempo reale le condizioni fisiche del malato. Vista la possibilit`a di ottenere e manipolare informazioni al di fuori della smart home, potrebbe essere un ulteriore e interessante sviluppo quello di poter eseguire dei comandi
  47. 47. o perfino configurare l’ambiente della “Private Assisted House” in maniera del tutto indipendente dalla postazione in cui `e installato Freedomotic. In questa maniera si otterrebbe un completo decentramento del sistema di gestio- ne sanitaria che potrebbe essere effettuata dal personale medico addetto, che potreb- be operare ignorando i dettagli implementativi e di comunicazione che Freedomotic utilizza. Concludo la tesi dicendo che sono molto soddisfatto e orgoglioso di aver lavorato per un progetto tanto ambizioso, perch´e mettere a frutto le proprie conoscenze acquisite nel corso degli anni per un qualcosa di pratico `e decisamente stimolante, ma lo `e ancora di pi`u sapere di aver lavorato per la salute e per il miglioramento della qualit`a della vita di persone bisognose. 52
  48. 48. Bibliografia [1] La domotica: quanto costa. la Repubblica, 2012. URL: http://design.repubblica. it/2012/05/17/la-domotica-quanto-costa/. [2] Grappasonni I. e Petrelli F. I registri dell’ ictus cerebrale in italia. Telemedita- lia, 2009. URL: http://www.telemeditalia.it/it/edizioni/edizioni/detail/0/ 185/201/i-registri-dell-ictus-cerebrale-in-italia.html?edition=20092. [3] Il futuro demografico del paese: Previsioni regionali della popolazione residente al 2065. ISTAT, 2011. URL: http://www.telemeditalia.it/it/edizioni/ edizioni/detail/0/185/201/i-registri-dell-ictus-cerebrale-in-italia. html?edition=20092. [4] Aumentano le persone disabili, ma scontano invisibilit`a, ignoranza e pregiudizi. Censis, 2010. URL: http://www.censis.it/7?shadow comunicato stampa=108589. [5] Pagina ufficiale di freedomotic. URL: http://www.freedomotic.com/. [6] Documentazione per freedomotic. URL: http://freedomotic.sednet.it/.

×