Last update Ottobre 17, 2018 10:59 AM

 

drmlog  


Personal Website


Articoli / Articles
     

Pagina Iniziale Home Page

Informazioni About Me

Curriculum Vitae Resume
Didattica Teaching
Guide Tutorials
Articoli Articles
Libri Books

Contatti Contacts
     
 
     
 

Web of Things: introduzione a Paraimpu
di Roberto Saia

I limiti che per lungo tempo hanno caratterizzato il word wide web sono stati recentemente valicati dal cosiddetto “Web of Things”, un innovativo paradigma di interazione che oltre ai canonici utenti, siti e servizi, coinvolge in rete un enorme numero di dispositivi semplici e complessi, avvalendosi della fortunata simbiosi tra un recente strumento software denominato Paraimpu e un consolidato protocollo di interscambio come HTTP.

Quando entrai in contatto per la prima volta con gli sviluppatori di Paraimpu, un progetto italiano che ha preso vita nei laboratori del Centro di Ricerca, Sviluppo e Studi Superiori in Sardegna (CRS4), rimasi immediatamente affascinato dalle sue potenzialità, ravvisando in esso una sorta di "uovo di Colombo" in ambito web. Tale progetto, infatti, coniuga in modo semplice ma estremamente efficace due mondi in precedenza alquanto distanti tra loro: quello degli utenti e dei servizi connessi e quello dei dispositivi che, in qualche modo, sono in grado di interfacciarsi alla rete web; contesto nel quale Paraimpu opera come una specie di ponte in grado di far interagire gli elementi peculiari di ciascun ambito (Figura 1). Per realizzare questa operazione vengono chiamati in causa sia degli efficaci e ben consolidati protocolli basati su HTTP (Hypertext Transfer Protocol, un semplice protocollo di tipo richiesta/risposta che oggi rappresenta il principale veicolo di informazioni in ambito web), sia una infrastruttura planetaria di interconnessione come il Word Wide Web.

 
Figura 1 - Paraimpu come ponte tra differenti mondi

 Lo scenario di riferimento delle applicazioni software di questo genere è quello del cosiddetto "Web of Things", etichetta adoperata per classificare un ambiente dove, grazie a protocolli basati su HTTP, interagiscono non solo i canonici attori di un tempo, ma qualunque altro "oggetto" dotato di quel minimo di funzionalità necessarie per potersi interfacciare al web: dai grandi impianti tecnologici industriali e di ricerca ai dispositivi più semplici come, per esempio, gli elettrodomestici o le note schede elettroniche Arduino (Figura 2). Prima di proseguire oltre, trovo interessante spendere qualche parola sull'origine alquanto curiosa del nome scelto per questo progetto: esso trae origini da una parola in lingua sarda, "paralimpu", parola che, a sua volta, deriva dal termine greco "paranymphus", con il quale nell'antichità si indicavano coloro che avevano il compito di mediare nei matrimoni, funzione sociale oggi in disuso che in Paraimpu trova una sua perfetta trasposizione informatica. 

IL WEB DEGLI OGGETTI
La frase che secondo gli sviluppatori dovrebbe sintetizzare al meglio gli obiettivi del progetto è "The Web of Things is more than Things in the Web" (il "web degli oggetti" è più di "oggetti nel web"), frase che lascia evincere un grande desiderio di donare dinamicità a degli elementi  che fino a oggi erano caratterizzati da una valenza perlopiù statica, almeno per quel che concerne il loro impiego in ambito web. Infrastrutture similari a Paraimpu come, per esempio, Pachube (piattaforma in grado di gestire giornalmente milioni di datapoint relativi a individui e organizzazioni dislocati geograficamente sull'intero pianeta), possono a loro volta essere tra loro interconnesse al fine di far interagire reciprocamente le proprie risorse. A tal proposito è opportuno evidenziare come sia i protocolli sia le tecnologie impiegate per veicolare le informazioni siano quelli già da tempo impiegati in ambito web, aspetto peculiare che in ambito "Web of Things" ha consentito fin dagli inizi di classificare come "ben collaudata" l'intera infrastruttura di comunicazione afferente. Una delle ragioni per la quale sempre più persone si interessano a questo nuovo modo di intendere il web è principalmente riconducibile alla possibilità di realizzare una condivisione globale delle risorse: una stazione barometrica, un contatore Geiger, una webcam, un servizio e, comunque, qualunque altra cosa interfacciabile con il web, può essere infatti condivisa da un utente della rete attraverso l'infrastruttura centralizzata offerta da Paraimpu, rendendo del tutto superfluo l'acquisto/condivisione della medesima risorsa a un gran numero di utenti.  

Figura 2 - Una scheda Arduino Duemilanove

Un esempio minimale di quanto appena detto potrebbe essere quello di un utente di una certa zona di una determinata città che attraverso Paraimpu connette al web un sensore di temperatura posto sul suo terrazzo; qualunque altro utente della stessa zona e città potrebbe avvalersi delle informazioni prodotte da tale sensore e usarle per gestire determinati eventi, senza la necessità di dovere anche lui acquistare e connettere al sistema un ulteriore sensore. Tale esempio minimale può essere ovviamente trasposto in ambiti differenti come, per esempio, quello scientifico, dove la possibilità di condividere in modo efficiente determinate strumentazioni concretizzerebbe un vantaggio notevole, sia in termini di efficienza sia, soprattutto, in termini economici. La necessità che ciascun oggetto disponga di una sua interfaccia web per essere connesso non rappresenta un grande ostacolo, in quanto sempre più dispositivi vengono oggi equipaggiati con tale interfaccia e, comunque, come nel caso di Arduino, è possibile fruttare l'interfaccia web del proprio elaboratore per connettere al sistema Paraimpu le più disparate apparecchiature, facendo funzionare la macchina come una sorta di HUB in grado di interfacciare un numero potenzialmente illimitato di dispositivi.

Nota: sviluppate presso l'Interaction Design Institute di Ivrea, istituto fondato da Olivetti e Telecom Italia, le schede Arduino sono state definite delle “piattaforme di prototipazione elettronica open-source”, in quanto attraverso la loro interfaccia USB possono essere direttamente connesse a un qualunque elaboratore, consentendo la realizzazione di molteplici dispositivi in grado di interagire via software con quest'ultimo, dispositivi che spaziano dai semplici sensori ad applicazioni molto più complesse.

 COME FUNZIONA IL SISTEMA
Il sistema Paraimpu è fondamentalmente articolato su tre elementi, elementi che una volta combinati insieme consentono di realizzare molteplici configurazioni: Sensori, Attuatori e Connessioni. I primi due rappresentano le due grandi categorie di oggetti gestibili dal sistema: i Sensori, cioè gli oggetti che forniscono in output delle informazioni e gli Attuatori che, invece, sulla base dei dati ricevuti in input, svolgono un qualche compito. Le Connessioni, infine, rappresentano lo strumento di raccordo tra i precedenti oggetti. Sia i Sensori sia gli Attuatori possono essere di tipo software (servizi, applicazioni, ecc.) oppure hardware (rilevatori, motori, luci, elettrodomestici, ecc.). Quindi, riepilogando quanto appena detto, un Sensore è un qualcosa in grado di generare dei dati (una realizzazione Arduino, un sensore di temperatura, una applicazione web, ecc.), mentre, specularmente, un Attuatore, sulla base dei dati ricevuti in ingresso è in grado di compiere una certa operazione che, anche in questo caso, a seconda del tipo di Attuatore, può ricondurre a qualcosa di virtuale (una email, un messaggio in Twitter, ecc.) oppure reale (l'accensione di un condizionatore o di una luce, l'attivazione di un allarme, ecc.). L'elemento Connessioni assolve all'importante compito di connettere tra loro Sensori e Attuatori, dando vita a un flusso di informazioni gestibile dal sistema mediante specifici strumenti di filtro e mapping: si tratta di espressioni in formato Javascript che, nel primo caso, consentono di filtrare i dati che giungono dai Sensori (imponendo, per esempio, che questi arrivino al sistema solo al superamento di un determinato valore di soglia) mentre, nel secondo caso, permettono di definire delle condizioni legate all'output del Sensore, condizioni che, quando soddisfatte (true), inviano determinate informazioni all'Attuatore; il mapping riveste un'importante funzione all'interno del sistema, in quanto realizza una trasformazione sui dati che, de facto, rende possibile la connessione tra oggetti anche molto differenti. Questo tipo di scenario concretizza quello che in informatica viene definito con il termine mash-up, cioè una applicazione web ibrida in grado di operare dinamicamente con informazioni e/o contenuti provenienti da più fonti. Come mostrato nella successiva Figura 3, il sistema viene reso disponibile agli utenti per mezzo di una interfaccia web molto intuitiva, un ampio workspace suddiviso in cinque aree denominate: "Friends", "Sensors/Actuators palette", "Sensors", "Actuators" e "Your connections".

 
Figura 3 - Interfaccia web di Paraimpu

 La prima di queste aree (Friends) mostra gli utenti Paraimpu che sono anche "amici" in Twitter: ciò perchè, come vedremo in seguito, l'accesso al sistema avviene utilizzando un account Twitter, in quanto Paraimpu si avavle del protocollo di autenticazione Oauth (Open Authorization, un protocollo che permette alle applicazioni di chiamare in modo sicuro e autorizzato dei servizi resi disponibili da un sistema esterno). Di questi utenti è possibile visualizzarne il profilo, oltre alle risorse eventualmente condivise su Paraimpu: riguardo a quest'ultimo aspetto, se non vengono esplicitamente impiegate delle politiche restrittive, gli oggetti condivisi (Sensori e Attuatori) sono resi immediatamente disponibili all'intera comunità. La seconda area, quella definita "Sensors/Actuators palette",  è a sua volta suddivisa in due sottoaree dedicate, rispettivamente, ai Sensori e agli Attuatori (servizi e dispositivi fisici)  già disponibili per gli utenti, aree dalle quali, mediante le voci "Add new Sensor" e "Add new Actuator", è possibile avviare il processo di creazione di nuovi oggetti del rispettivo tipo (Tabella 1):  quest'ultima opzione è tipicamente adoperata sia per definire un oggetto indisponibile nella palette, sia per conseguire un maggiore livello di dettaglio nella gestione, sebbene questo, comunque, vada a discapito della semplicità di utilizzo che deriva dall'impiego di oggetti già definiti nella palette (Arduino, Facebook, Twitter, ecc.). La selezione di una categoria generica di oggetti mostrerà all'utente un finestra di dialogo nella quale sarà possibile inserire tutte le informazioni di dettaglio. Una volta selezionati (o creati) e inseriti nel proprio workspace, Sensori e Attuatori potranno essere liberamente connessi tra loro per realizzare le applicazioni desiderate. 

Icona
Descrizione
Sensore generico: consente di avviare la realizzazione di un nuovo Sensore
Attuatore generico: consente di avviare la realizzazione di un nuovo Attuatore

Tabella 1- Oggetti generici disponibili

 L'area centrale dell'interfaccia è quella dove vengono visualizzati tutti gli oggetti pronti all'uso: Sensori e Attuatori precedentemente definiti mediante le funzionalità dell'area "Sensors/Actuators palette", oppure direttamente selezionati tra quelli già disponibili nel sistema; il termine bookmarked identifica gli oggetti condivisi da altri utenti "amici" che sono stati importati nel proprio workspace al fine di poterli impiegare: in questo caso l'oggetto continua ad appartenere al suo creatore. Nell'estrema destra del workspace  è presente la lista di tutte le Connessioni già create tra Sensori e Attuatori, connessioni che sarà possibile configurare nel dettaglio (filtri e mapping) mediante un'apposita pagina del sistema. L'impiego di un Sensore, così come quello di  un Attuatore,  è regolato dalla politica con la quale esso è sato reso disponibile nel sistema dal suo creatore, politica che può essere di tipo Public, Private o Moderated, dove, nell'ultimo caso, l'aggiunta di un oggetto implica l'invio di una notifica al suo proprietario, che potrà concedere o meno l'autorizzazione all'impiego. Politica, nome e descrizione dell'oggetto saranno visibili al di sotto dell'icona che lo rappresenta, icona che apparirà nel proprio workspace non appena l'oggetto viene definito o selezionato e dalla quale sarà possibile accedere alle relative informazioni di dettaglio; per ritornare al proprio workspace sarà sufficiente utilizzare il link "Home" presente sul lato sinistro della finestra.

 PARAIMPU IN PRATICA
Vedremo adesso, in modo molto più dettagliato, come è possibile mettere in pratica quanto appena visto al fine di realizzare una reale applicazione basata sull'infrastruttura Paraimpu. Sebbene questo progetto si trovi attualmente nella fase "alpha", chi volesse utilizzarlo già da subito può richiedere di divenire un alpha-user seguendo la procedura che verrà descritta in seguito: come anticipato in precedenza, l'autenticazione avverrà attraverso il proprio account Twitter, ragione per cui è indispensabile possederne uno. A tal proposito è opportuno sottolineare come i futuri sviluppi del sistema Paraimpu siano strettamente connessi anche all'apporto degli utenti che sperimentano/utilizzano il sistema, utenti che, infatti, vengono esplicitamente invitati dagli sviluppatori a segnalare eventuali bug riscontrati e a inviare ogni suggerimento o critica che ritengono utile al miglioramento del sistema. Nei successivi riquadri vengono cronologicamente riepilogate le operazioni da compiere per realizzare un'applicazione pratica attraverso l'interfaccia offerta da Paraimpu, applicazione che, per essere certi della disponibilità degli oggetti citati, è quella riportata nella guida di base del sistema: essa ha lo scopo di connettere un sensore anemometrico collocato fisicamente a "Mount Washington" negli USA con un attuatore di tipo Twitter, questo al fine di misurare ogni trenta minuti la velocità del vento in quel luogo e inviare questa informazione mediante Twitter; quel che si desidera realizzare è un sistema che al variare della velocità del vento invii degli opportuni messaggi  Twitter e, nella fattispecie, invii il messaggio "Vento debole" se la velocità è compresa tra 0 e 50 Km/h, "Vento forte" se questa è tra 51 e 100 Km/h, "Vento molto forte" quando tra 101 e 200 Km/h e, infine, "Vento fortissimo" se questa risulta superiore a 200 Km/h, riportando nel messaggio anche il valore rilevato dal Sensore. Si tratta ovviamente di una applicazione minimale con valenza perlopiù didattica, anche se, comunque, essa consente la comprensione dei meccanismi che regolano il funzionamento del sistema. 

Nota: la scelta di Mount Washington non è casuale, in quanto questa cima di quasi 2000 metri nel nord-est degli Stati Uniti è ben nota nel mondo per la grande instabilità del suo clima ma, soprattutto, del suo vento che, nel 1934, ha raggiunto la velocità record di 372 Km/h.

01 - REGISTRARSI NEL SISTEMA
Per poter utilizzare il sistema, occorre connettersi al sito del progetto Paraimpu (http://paraimpu.crs4.it), chiedendo di diventare un utente Alpha tramite l'invio di una email  all'indirizzo di posta elettronica riportato nella pagina "Contact" (paraimpu@crs4.it): in tale occasione ci verranno richieste alcune informazioni come, per esempio, il nostro username Twitter.

 

 02 - AGGIUNGERE UN SENSORE
Una volta ricevuta l'email di conferma, che di fatto ci consentirà di accedere mediante il nostro account Twitter, la prima operazione da compiere sarà quella di selezionare l'icona "Mount Wash" dalla palette dei "Sensors", in modo da aggiungere tale Sensore nel nostro workspace, consentendoci di accedere immediatamente ai dati da questo forniti.

 

 

03 - AGGIUNGERE  UN ATTUATORE
Adesso è la volta di selezionare l'Attuatore "Twitter" dall'elenco degli oggetti disponibili: operazione che una volta compiuta ci redirezionerà sul sito di Twitter al fine di poter concedere i necessari permessi nel nostro account; una volta terminato, ci ritroveremo nuovamente nel nostro workspace.  

 

04 - CONNETTERE GLI OGGETTI
Connettiamo a questo punto il Sensore con l'Attuatore, selezionando dal menù visibile stazionando sul riquadro del Sensore la piccola freccia "follow" e scegliendo, nella successiva finestra, Twitter come Attuatore (assicuriamoci che questo risulti evidenziato); una volta confermata l'operazione con il pulsante "Connect", la connessione sarà immediatamente visibile nell'area "Connections" anche se risulterà ancora non attiva, bensì nello stato "stopped".

 

  

05 - DEFINIRE I CRITERI
L'ultima operazione da compiere consisterà nella definizione dei criteri che regoleranno il funzionamento del sistema: per fare questo stazioniamo sull'icona della connessione creata e selezioniamo "Manage" dal suo menù: accederemo alla pagina "Connection Details", dalla quale sarà possibile definire filtri e mapping. 

  

AVVIARE IL SISTEMA
Nel nostro caso non è necessario configurare alcun filtro, in quanto i dati trasmessi dal Sensore devono giungere integralmente al sistema, dati che, nello specifico, saranno fruibili attraverso la lettura del valore assunto da una variabile denominata "M_Washington_Wind; per quel che concerne il mapping, invece, dopo aver selezionato la voce "Add mapping", inseriremo le seguente stringa nel riquadro di sinistra:

 M_Washington_Wind >=0 && M_Washington_Wind <=50.

 Mentre nel riquadro di destra scriveremo quanto segue:

 Vento debole: <%M_Washington_Wind%> Km/h

 Come è facile intuire, le precedenti istruzioni faranno in modo che l'Attuatore invii un messaggio non appena la velocità del vento rilevata è compresa tra 0 e 50 Km/h, estremi compresi: la parte  racchiusa tra parentesi angolari verrà sostituita a run-time dalla velocità rilevata dal Sensore (da sottolineare come all'interno delle parentesi sia possibile impiegare qualunque espressione JavaScript). Per completare il processo di configurazione, occorrerà ripetere l'operazione appena compiuta in relazione ai rimanenti 3 intervalli di valori presi in considerazione, abbinando a ciascuno il relativo messaggio e utilizzando ogni volta il pulsante "Add mapping". Per terminare il processo utilizzeremo il pulsante "Save Connection Configuration": la configurazione è stata adesso creata e salvata ed è possibile avviare il sistema selezionando la voce "Activate" dal menù contestuale visibile soffermandosi sul riquadro della connessione.

 

CONCLUSIONI
La verifica del corretto funzionamento di quanto realizzato è possibile dalla propria pagina di Twitter, dove giungeranno i messaggi inviati dal sistema: a tal proposito, nel caso si desideri adoperare l'attuatore Twitter in altre occasioni, è utile osservare come la lunghezza massima delle stringhe di testo che costituiranno i messaggi sia limitata a 130 caratteri, in quanto dal limite di Twitter (140 caratteri) è necessario sottrarre i 10 caratteri della stringa " @paraimpu" (il primo è uno spazio),  automaticamente aggiunta dal sistema in ogni messaggio per caratterizzarne l'origine. La curiosa applicazione qui realizzata potrà essere, ovviamente, sostituita con qualcosa di più pratico, connettendo tra loro, per esempio, uno qualunque degli Attuatori disponibili con un Sensore di tipo "Arduino Ethernet Source", un oggetto capace di interfacciarsi con le realizzazioni elettroniche basate sulle schede "Arduino Diecimila" e "Arduino Uno" e generare in output dei dati in formato JSON (JavaScript Object Notation, un semplice formato testuale comunemente adoperato per lo scambio di dati). Le potenzialità insite in un sistema come Paraimpu sono teoricamente illimitate, sebbene direttamente proporzionali al numero di Sensori e Attuatori disponibili: da semplici realizzazioni come quella appena descritta, fino ad applicazioni caratterizzate da un'alta valenza sociale ed economica come, per esempio, quelle nelle quali si condivide della costosa strumentazione da laboratorio in ambito ricerca. 

Nota: dopo la stesura del presente articolo sono state apportate delle modifiche al sito di riferimento del progetto Paraimpu, per cui alcune informazioni fornite potrebbero leggermente differire.

Ritorna all'indice dei tutorial Index


 
Roberto Saia  -  All Rights Reserved