• Non ci sono risultati.

Device Connector

Nel documento Human Digital Twin: IIoT Layer (pagine 45-49)

La fase di realizzazione dei Connector è avvenuta subito dopo a quella di progettazione.

Inizialmente sono state scoperte e approfondite le SDK dei wearable scelti, come verrà de-scritto nelle sottosezioni dedicate, per poi passare alla modifica e all’integrazione di queste SDK. Un tentativo fatto è stato quello di utilizzare la tecnologia ANT+ per la trasmissione dei dati, visto che il Gateway e la maggior parte dei wearable sono compatibili. Questo tentativo si è rivelato però fallimentare, a causa della difficoltà di integrazione dell’SDK di ANT+, ora-mai obsoleta, all’interno di Android Studio, l’IDE utilizzato per lo sviluppo dell’applicazione Android.

Tutti i Connector implementano la stessa interfaccia, che sostanzialmente offre i metodi per l’inizializzazione, la trasmissione di metriche, la disconnessione e il controllo della connes-sione.

Per motivi di tempo non è stato possibile realizzare un Connector per tutti i wearable scelti, questi verranno eventualmente sviluppati in seguito. Dei 3 connettori realizzati, solo 2 sono del tutto funzionanti: per quello di Garmin ci sono state alcune difficoltà come adesso verrà descritto.

4.1.1 Garmin Connector

Il primo connettore realizzato è stato il Garmin Connector. Nella fase di approfondimento delle SDK è emerso che quella più adatta sarebbe stata la Garmin Health SDK [11] sia nel-l’opzione Standard che Companion. Purtroppo, in seguito alla richiesta di accesso a questa SDK, è stato comunicato che le licenze gratuite a scopo di ricerca per l’anno corrente erano terminate e i prezzi di acquisto erano proibitivi. Fra le altre possibilità, l’unica potenzialmen-te adatta era la Connect IQ SDK [12], dotata anche di una SDK Mobile. Questo approccio consiste nel realizzare un’applicazione per lo smartwatch sviluppata con l’SDK standard che comunica con un’applicazione Android sviluppata con quella Mobile. Una delle grosse limitazioni di questa soluzione, oltre che necessita della presenza e dell’utilizzo di Garmin Connect sullo smartphone, è che permette di collegare solo uno smartwatch per volta. Ol-tretutto, dei 3 dispositivi Garmin acquistati, solo il Venu 2 è compatibile con questa SDK.

Non avendo alternative, si è deciso di proseguire comunque su questa strada pur essendo consapevoli delle limitazioni.

Innanzitutto, è stato configurato l’ambiente di sviluppo, che per l’applicazione smartwatch era Eclipse con un plugin specifico per facilitare la realizzazione dell’app; questo plugin mette a disposizione anche un simulatore per testare il funzionamento dell’applicazione non necessariamente su un dispositivo fisico. Fra le varie opzioni possibili, come watch faces, data fields, widgets, è stato scelto di realizzare una device app: quella più completa e indi-cata allo scopo. Per quanto semplice, questa applicazione va a leggere i valori direttamente dai sensori installati sull’orologio e li stampa a schermo, oltre che inviarli tramite i meto-di specifici messi a meto-disposizione dall’SDK all’applicazione sullo smartphone eventualmente connessa. In Figura 4.1 viene mostrata la schermata presente sullo smartwatch durante l’esecuzione dell’applicazione, le metriche ottenibili sono la frequenza cardiaca (HR), la sa-turazione dell’ossigeno nel sangue (SAT), l’accelerazione (ACC) e i dati del magnetometro (MAG).

Una volta realizzata e collaudata, questa applicazione è stata caricata e pubblicata sullo store ufficiale di Garmin, generando un ID univoco. Questo ID viene utilizzato

dall’appli-cazione Android sullo smartphone, che è stata realizzata proprio all’interno del Connector.

Sostanzialmente il funzionamento di quest’ultimo consiste nell’inizializzare l’SDK messa a disposizione, tramite questa è possibile connettersi ad un dispositivo (in questo caso il Ve-nu 2). Realizzata la connessione fra smartwatch e smartphone, quest’ultimo può restare in ascolto dei messaggi inviati dall’orologio, ma è proprio qui che sorgono i problemi. No-nostante i vari tentativi fatti, i messaggi partono dallo smartwatch ma non vengono ricevuti dallo smartphone, rendendo pertanto impossibile l’ottenimento delle metriche da parte del Connector. Si è optato pertanto di procedere con la realizzazione degli altri connettori visto che le tempistiche iniziavano ad essere stringenti. Non si esclude di tornare sullo svilup-po di questo connettore una volta ottenuto l’accesso alla Health SDK, per la quale è stata richiesta la licenza per l’anno 2022.

Figura 4.1: Schermata app smartwatch

4.1.2 Polar Connector

Dopo i tentativi fallimentari con la realizzazione del Garmin Connector si è passati allo svi-luppo del Polar Connector. Questa volta c’era solo una SDK a disposizione [13] e a differen-za di quella precedente, una volta configurato correttamente il progetto in Android Studio e lanciata l’applicazione di esempio, questa si è subito connessa con il Polar H10 leggendo le varie metriche.

Tuttavia, questa applicazione richiedeva continuamente un’interazione con l’utente, cosa non ammissibile nel contesto del progetto, ed era realizzata in Kotlin. Ciò che è stato fat-to pertanfat-to, è stata la traduzione del codice in Java e la sua integrazione all’interno del Connector. E’ stata semplificata la parte di interazione con l’utente, richiedendo solamente l’attivazione e disattivazione del connettore così come per gli altri, avviando in automatico la trasmissione delle metriche.

Per quanto riguarda le metriche, quelle messe a disposizione dal wearable sono la fre-quenza cardiaca (HR), l’intervallo RR (RR), l’accelerazione (ACC) e l’elettrocardiogramma

(ECG). L’HR e l’RR sono ottenuti tramite una callback ogni secondo, mentre ACC ed ECG sono ottenuti tramite l’avvio di appositi stream.

Una volta inizializzata l’SDK avviene la connessione con un dispositivo Polar (il primo trova-to o quello specifico identificatrova-to da un codice). Successivamente vengono attivati gli stream e le metriche vengono continuamente lette e memorizzate in apposite variabili all’interno del Connector; come verrà descritto nella sezione dedicata sarà il Device Manager e recupera-re questi valori con una frecupera-requenza da lui stabilita. L’SDK di Polar consente la configurazione degli stream con frequenze differenti: 25, 50, 100 e 200 Hz. La callback di HR ed RR avvie-ne sempre ogni secondo e non è configurabile, è però possibile prendere l’RR in millisecondi al posto che in secondi come è in questo momento. In alternativa è possibile leggere l’HR in broadcast da tutti i dispositivi rilevati, ma non è una cosa adatta al conteso del progetto in quanto c’è la necessità di leggere le metriche da un dispositivo specifico.

Così facendo è stato realizzato il primo Connector interamente funzionante e le prime me-triche sono giunte all’applicazione. C’è da tenere presente che la connessione all’H10 ha successo solo se quest’ultimo è correttamente posizionato sul torace dell’utilizzatore, altri-menti il dispositivo non si accenderà. Il codice del Connector dovrà essere leggermente adattato nel caso si decidesse di utilizzarlo anche per altri dispositivi in grado di fornire metriche differenti, ma la logica di funzionamento rimarrebbe invariata.

4.1.3 Empatica Connector

L’Empatica Connector è stato l’ultimo realizzato in ordine cronologico in quanto i tempi di consegna sono stati più lunghi degli altri dispositivi. Avendo accumulato un po’ di ritardo rispetto alla pianificazione con i primi due connettori si è deciso di procedere con lo sviluppo degli altri componenti dell’IIoT Layer.

L’SDK messa a disposizione da Empatica si è rivelata da subito chiara e di facile utilizzo [14], inoltre, era già predisposta ad essere integrata in un progetto di Android Studio. Per questo, una volta testato il funzionamento dell’applicazione di esempio, il codice è stato subito inte-grato all’interno del Connector con le opportune modifiche. L’unico punto dolente dell’SDK è che necessita dell’autenticazione tramite la developer key durante l’inizializzazione. Questa key può essere facilmente ottenuta dopo essersi registrati al sito come sviluppatori e asso-ciando il dispositivo acquistato.

Dopo aver inizializzato l’SDK le varie metriche sono ottenute tramite apposite callback e salvate anche in questo caso nelle variabili dedicate, dalle quali il Device Manager potrà ottenere i valori. Le metriche ottenute tramite questo Connector sono l’intervallo RR (RR), il pletismogramma pulsato (PPG), la risposta galvanica della pelle (GSR), l’accelerazione

(ACC) e la temperatura cutanea (ST). Durante la connessione all’applicazione il dispositivo deve essere fisicamente acceso tramite l’apposito tasto.

Nel documento Human Digital Twin: IIoT Layer (pagine 45-49)

Documenti correlati