• Non ci sono risultati.

Per la creazione delle notifiche sono stati realizzati due componenti: un Broa- dcast Receiver chiamato Rilevazione Receiver ed un Notification Helper. Il Notification Helper ha il compito di creare il canale di notifica e la notifica in s`e. 1 p u b l i c c l a s s N o t i f i c a t i o n H e l p e r e x t e n d s C o n t e x t W r a p p e r { 2 p u b l i c s t a t i c f i n a l S t r i n g c a n a l e 1 I D = " R i l e v a z i o n e "; 3 p r i v a t e N o t i f i c a t i o n M a n a g e r C o m p a t NM ; 4 5 p u b l i c N o t i f i c a t i o n H e l p e r ( C o n t e x t b a s e ) { 6 s u p e r( b a s e ) ; 7 c r e a t e C h a n n e l () ; 8 } 9 10 p u b l i c v o i d c r e a t e C h a n n e l () { 11 N o t i f i c a t i o n C h a n n e l c a n a l e 1 = new N o t i f i c a t i o n C h a n n e l ( c a n a l e 1 I D , c a n a l e 1 I D , 12 N o t i f i c a t i o n M a n a g e r . I M P O R T A N C E _ D E F A U L T ) ; 13 c a n a l e 1 . e n a b l e L i g h t s (t r u e) ; 14 c a n a l e 1 . e n a b l e V i b r a t i o n (t r u e) ; 15 c a n a l e 1 . s e t L i g h t C o l o r ( R . c o l o r . c o l o r P r i m a r y ) ; 16 c a n a l e 1 . s e t L o c k s c r e e n V i s i b i l i t y ( N o t i f i c a t i o n . V I S I B I L I T Y _ P R I V A T E ) ; 17 g e t M a n a g e r () . c r e a t e N o t i f i c a t i o n C h a n n e l ( c a n a l e 1 ) ; 18 } 19 20 p u b l i c N o t i f i c a t i o n M a n a g e r C o m p a t g e t M a n a g e r () {

21 if ( NM == n u l l) { 22 NM = N o t i f i c a t i o n M a n a g e r C o m p a t . f r o m ( g e t A p p l i c a t i o n C o n t e x t () ) ; 23 } 24 r e t u r n NM ; 25 } 26 27 p u b l i c N o t i f i c a t i o n C o m p a t . B u i l d e r g e t C a n a l e 1 N o t i f i c a t i o n M o n i t o r i a g g i o ( S t r i n g titolo , S t r i n g m e s s a g g i o ) { 28 r e t u r n new N o t i f i c a t i o n C o m p a t . B u i l d e r (this, c a n a l e 1 I D ) 29 . s e t S m a l l I c o n ( R . d r a w a b l e . i c _ i m p o r t a n t e ) 30 . s e t C o n t e n t T i t l e ( t i t o l o ) 31 . s e t C o n t e n t T e x t ( m e s s a g g i o ) 32 . s e t S t y l e (new N o t i f i c a t i o n C o m p a t . B i g T e x t S t y l e () 33 . b i g T e x t ( m e s s a g g i o ) ) ; 34 } 35 }

Listing 3.19: Codice creazione notifica

Come `e possibile vedere dallo snippet sovrastante, inizialmente viene creato il canale per la notifica impostando l’importanza, il colore del LED di notifi- ca, la vibrazione e mostrando la notifica anche nel caso in cui lo smartphone abbia lo schermo bloccato, dopodich`e viene creata la notifica. Attraverso il Notification Compat Builder viene creata una notifica in cui viene impostata l’icona, il titolo e il contenuto; questi ultimi 2 campi vengono forniti come parametri in input quando viene richiamato il Notification Compat Builder. La chiamata verso il Notification Compat Builder `e a cura del Broadcast Receiver chiamato Rilevazione Receiver, questo viene richiamato in fase di rilevazione se viene soddisfatta la condizione sopra menzionata ed il suo com- pito `e quello di ottenere il tipo di notifica che deve creare estrapolando questa informazione dagli Extra dell’Intent che l’ha richiamato e successivamente, in base al tipo, creer`a una notifica impostando il titolo, il messaggio e l’ID. 1 p u b l i c c l a s s R i l e v a z i o n e R e c e i v e r e x t e n d s B r o a d c a s t R e c e i v e r { 2 @ O v e r r i d e 3 p u b l i c v o i d o n R e c e i v e ( C o n t e x t context , I n t e n t i n t e n t ) { 4 S t r i n g t i p o = i n t e n t . g e t S t r i n g E x t r a (" R i l e v a z i o n e ") ; 5 if( t i p o . e q u a l s (" A c c e l e r a t i o n ") ) { 6 Log . v (" n o t i f i c a "," A C C E L E R A T I O N ") ; 7 int n o t i f i c a I D =5; 8 N o t i f i c a t i o n H e l p e r NH = new N o t i f i c a t i o n H e l p e r ( c o n t e x t ) ; 9 N o t i f i c a t i o n C o m p a t . B u i l d e r nc = NH . g e t C a n a l e 1 N o t i f i c a t i o n M o n i t o r i a g g i o (" S o g l i a "+ t i p o +" s u p e r a t a ! ",

10 " A t t e n z i o n e ! Hai s u p e r a t o la s o g l i a i m p o s t a t a ! ") ; 11 N o t i f i c a t i o n M a n a g e r C o m p a t n o t i f i c a t i o n M a n a g e r C o m p a t = N o t i f i c a t i o n M a n a g e r C o m p a t . f r o m ( c o n t e x t ) ; 12 n o t i f i c a t i o n M a n a g e r C o m p a t . n o t i f y ( n o t i f i c a I D , nc . b u i l d () ) ; 13 } 14 } 15 }

Listing 3.20: Codice invocazione Notification Helper

Lo snippet sovrastante mostra un esempio di creazione della notifica: dopo aver ottenuto il tipo dagli Extra dell’Intent se il tipo `e ”Acceleration” viene creata una notifica con ID pari a 5 e con il messaggio visibile nello snippet.

Capitolo 4

Risultati

In questo capitolo verranno mostrati i risultati prodotti dal software svilup- pato sia per quanto riguarda il WAE sia per quanto riguarda la WoT App. Seguiranno immagini rappresentanti ci`o che viene mostrato in output all’u- tente di diverso tipo: per quanto riguarda il WAE vedremo cosa comunica sul Prompt dei comandi dopo che viene lanciato e quando viene spento, per quanto riguarda la WoT App vedremo le varie schermate dell’applicazione e tutto ci`o che `e possibile fare con esse.

4.1

WAE

Quando viene lanciato, come gi`a detto nel capitolo relativo all’implementa- zione, per prima cosa consuma la Thing Directory in modo tale da ottenere gli endpoint delle Web Thing di cui `e necessario creare un ATM e registrarlo come servizio, successivamente, dopo aver creato l’ATM, lo registra come servizio e una volta registrati tutti gli ATM viene stampato a video un mes- saggio in cui viene confermata la corretta registrazione del servizio e ne viene indicato l’ID necessario per l’utilizzo.

Quando viene terminato il processo del WAE `e necessario deregistrare i servi- zi precedentemente registrati questo perch`e altrimenti sull’Arrowhead Service Registry troveremo dei servizi che in realt`a non `e possibile utilizzare. Una volta terminato il processo il WAE invocher`a quindi il metodo Deregistra per tutti i servizi precedentemente registrati e stamper`a a video un messaggio di corretta rimozione del servizio.

4.2

WoT App

Quando viene avviata l’app per la prima volta l’utente verr`a rinviato nel- la pagina relativa alle impostazioni in modo tale da poter inserire le sue preferenze riguardo i parametri da monitorare e l’intervallo di rilevazione.

Figura 4.1: Schermata relativa alle impostazioni che `e possibile personalizzare all’interno dell’app

Per tutti gli altri avvii dell’app l’utente verr`a rinviato alla Main Activity che contiene un bottone attraverso cui `e possibile accedere alla lista dei servizi con cui `e possibile interagire.

Figura 4.2: Schermata Main Activity

Come `e possibile vedere dalla toolbar dell’applicazione `e sempre visibile il men`u che porta alle impostazioni rappresentato dai tre pallini verticali, inoltre quando l’app viene avviata viene mostrata una notifica permanente che avverte l’utente che l’applicazione `e in uso anche in background.

Dopo aver premuto il bottone presente nella Main Activity l’utente si trover`a davanti alla lista dei servizi, potr`a decidere di quale servizio usufruire premendoci sopra.

Figura 4.4: Schermata Lista Servizi

In questo esempio vengono mostrati tutti i servizi offerti dalle Web Thing rappresentanti dei sensori reali il cui funzionamento non `e legato all’applica- zione, per questo motivo tra tutta la lista dei servizi sopra mostrati l’uten- te pu`o interagire con tre di essi: testserial-1-measure, testserial-2-measure, testserial-3-measure. Queste tre Web Things contengono al loro interno un accelerometro ed un giroscopio, entrambi sensori triassiali, che rilevano le condizioni dell’edificio in cui sono installate.

Dopo aver premuto su uno dei tre servizi sopra menzionati l’utente si trover`a davanti ad una schermata che permette l’interazione con lo stesso.

Figura 4.5: Schermata in cui l’utente pu`o interagire col servizio

Il servizio sopra mostrato fornisce la possibilit`a di visualizzare le propriet`a della Web Thing ma non di eseguire azioni su di essa, questo perch`e questa Web Thing non possiede alcuna azione. Dopo aver selezionato una delle propriet`a da visualizzare, l’app mostrer`a il risultato in basso ed apparir`a un tasto che permette di visualizzare lo storico relativo alla propriet`a selezionata.

Figura 4.6: Schermata rappresentante i risultati della rilevazione

Dall’immagine `e possibile notare che la lettura della propriet`a ”Accele- ration” ha fornito come risultato l’orario di rilevamento di tale propriet`a da parte del sensore ed i valori rilevati, inoltre `e apparso il tasto che permette di visualizzare lo storico per quel determinato parametro.

Una volta premuto il bottone l’utente verr`a rimandato in una schermata con- tente una Nested Scroll View contenente tutti i risultati ottenuti per quella determinata propriet`a ed un grafico a linee rappresentante la variazione dei valori ottenuti nel tempo. A causa del fatto che i valori rilevati provengono da sensori triassiali avremo tre valori corrispondenti alle coordinate x,y,z. Per questo motivo sia per la rappresentazione del grafico che per il calcolo del valore usato nel monitoraggio viene realizzato il vettore, come `e gi`a stato spiegato nel capitolo relativo all’implementazione.

Figura 4.7: Schermata contenente lo storico delle rilevazioni

Figura 4.8: Esempio di un grafico relativo alla propriet`a Acceleration di un sensore

Infine, quando viene rilevato un parametro il cui vettore `e superiore alla soglia prefissata viene inviata una notifica che informa l’utente che la soglia relativa a quel parametro `e stata superata.

Capitolo 5

Conclusioni

In questa tesi ho realizzato un framework che permette l’interoperabilit`a tra dispositivi intelligenti attraverso il mondo del Web of Things ed il framework Arrowhead permettendone l’utilizzo attraverso un’applicazione mobile che ho usato per dimostrare il corretto funzionamento tra l’interoperabilit`a dei due sistemi, la possibilit`a di usufruirne attraverso un’applicazione mobile ed un caso d’uso reale relativo al monitoraggio strutturale. Questo elaborato dimo- stra inoltre come possa essere facilmente possibile la diffusione su larga scala di questa tecnologia in quanto tutto ci`o di cui ha bisogno `e uno smartpho- ne Android. I risultati sono promettenti in quanto l’applicazione in futuro potrebbe essere aggiornata in modo tale da permettere facilmente l’intera- zione con altre Web Things sotto forma di servizi. Inoltre la funzionalit`a di monitoraggio applicata ai sensori inseriti nell’edificio utilizzato per la realiz- zazione del progetto potrebbe essere riutilizzata per altre costruzioni diverse dagli edifici quali ponti e strade in modo tale da poter agire preventivamente al crollo degli stessi.

5.1

Stato attuale e limiti del progetto

Ad oggi il framework `e utilizzabile solo per alcuni tipi di Web Things che hanno una determinata struttura interna quindi `e possibile che provando a gestire nuove Web Things sia necessario aggiornare il codice in modo tale gestirle nel modo corretto, inoltre potrebbe essere necessario implementare e migliorare le funzionalit`a relative alla sicurezza.

Documenti correlati