Paraimpu: a social tool for the Web of Things

[Today’s guest contributor, Antonio Pintus, is an Expert Technologist/Researcher and works for the Location and Sensor based Services team at CRS4 (Center for Advanced Studies, Research and Development in Sardinia). His main activities and skills are in design and development of network distributed software systems and Web based systems, in particular adopting and experimenting the Service-oriented Computing (SOC), Service-oriented Architecture (SOA) and Resource-oriented Architecture (ROA) paradigms. Currently he is working in the field of Internet of Things (IoT) and Web of things (WoT) and he is one of the inventors and developers of Paraimpu (you can find a Paraimpu’s blog here also), a social tool for the WoT.

Antonio is author and co-author of several publications and scientific papers presented in national and international conferences and he dedicates his leisure time, with passion, to photography: here his flickr stream, check it out!
Italian translation of the piece is available here.
]

During the last year, me and my work group at CRS4, we have faced some research themes around the so called Web of Things, where daily used objects, but smart enough to be connected to the Web and able to communicate using the HTTP protocol, become first-class citizens of the Web, playing the same role as the users, Web sites and services.

Thanks to our past research experiences on the Service Oriented Architecture (SOA), Web service technologies and their orchestrations, we started with experimenting the Web of Things related themes through the adoption of SOA tecnologies: WSDL, SOAP and WS-BPEL. This works led us to release a set of interesting publications and a prototype: Hyperpipes.

In Hyperpipes, every object is physically labelled with a Visual Tag; these, that like QR codes can be printed on paper, visually encode information – URLs, short texts, etc… – in graphical signs and elements. In a latter moment, information available on tags is decoded by simply acquiring a mobile phone camera snapshot.

Thanks to Hyperpipes, a user is able to discover and identify labelled objects and to connect their functionalities establishing a link (a data flow) between two of them. For example, it is possible to connect a Webcam “snapshot” functionality with a Display “display image” one. The connection is created, executed and maintained by a WS-BPEL engine running on a dedicated system server.

As a results of that experience we also went to think about some aspects and issues. First of all, from a technical point of view, often the WS-* protocols stack is too heavy – taking into account the limiting processing power of some of them – to be ported and executed directly by the Things.

For example, it couldn’t be trivial to code a WS-* stack for an Arduino board: think about memory limitations…or simply consider that several other objects don’t even embed a Web server.

Consequently, the WS-* stack complexity could be excessive in some application contexts compared to the real requirements.

Moreover, must be taken into account the need to have a dedicated server with a running WS-BPEL engine for the dynamic composition and execution at run-time of the business processes representing the connections between the Things.

Paraimpu, the idea

Starting from the previous conclusion, we had the idea to study and design a scalable architecture, mainly adopting a REST style. We believe that a REST-based architectural style better fits with the integration of objects and Web-based services following a “Mashup” model; moreover, a great number of the available Web APIs (for example, Twitter or Facebook APIs) are REST-based, whereas analogue APIs based on SOAP Web services are rarely provided.

Then, on this new architecture we’ve shaped the idea of an “extended” social Web of Things in which interact not only Web enabled physical smart objects, like Arduino boards, but also virtual objects on the Web, like Web services, social networks and so on…

Based on this first requirement we split Things in two categories: sensors and actuators, which are, together with that of connection, the set of basic concepts on which Paraimpu is based.

A sensor is a generic Thing that produces data, for example a thermometer or an anemometry connected to an Arduino board, but also Foursquare providing check-ins;

An actuator is a generic Thing able to consume data and to perform a particular action, such as to activate a device, for example an X10-based controller, a digital photo frame, a Chumby, but also Twitter or Facebook with status updates.

As said, the third fundamental concept is the connection between Things. A connection always involves a sensor and an actuator: it establishes a data flow between them and each connection can be configured by data filtering and mappings. A filter is a condition that must be true in order to have the data produced by a sensor forwarded to the connected actuator (for example: “if temperature>30”), whereas a mapping is a conditional transformation expression of the data (for example: “if temperature>30” then transform data to “It has started to be hot”).

Thanks to these defined abstractions, Paraimpu allows to create mashups composed of real HTTP-enabled objects and devices and Web services, social networks, applications, virtually every entity in the Web, in a user-friendly way and, above all, in a social and collaborative manner.

Why we need a social Web of Things

Paraimpu is a social tool, it allows to share knowledge and information with the members of your social sphere: you can share your knowledge by sharing an object, even a complex one, that you built so then the other users can use it in building their connections; for example, I could share my Chumby device or may Arduino-based display, allowing my friends to send me messages. Paraimpu also allows to share information, because: if the shared objects produces data, then, this data can be socially used also by other people.

Basically, Paraimpu offers the possibility to keep our owned object private, but also to share them with friends or with other Paraimpu users: in this way, users can use those shared objects in order to create real social mashups.

For every object added to the system, a user can set a particular sharing policy; for example: assigning to a Thing the “public” policy means that the object will be available for sharing with all the Paraimpu users which are friends of the particular user; or, if the assigned policy is “open”, then the object will be shareable with all the other Paraimpu users, friends or not.

Selecting a user it is possible to obtain a list of all objects she made available for sharing. Thus, it is possible to bookmark them: creating a bookmark corresponds in adding the object to the list of the owned Things, without changing its owner, but making it available to be used in estabilishing the user’s connections.

Just to make a clear example: if I’ve bought and connected a thermometer which measures the temperacture in my balcony, then in my city, why can’t be able to share this information with friends or other users who needs the same information, forcing them to buy, configure and duplicate in the system an analogue object?

In this sense, Paraimpu, is not far from the concept of “Collaborative Consumption”, coined by the authors of the book titled “What’s mine is yours: The Rise of Collaborative Consumption”, where it is defined as:

”traditional sharing, bartering, lending, trading, renting, gifting, and swapping redefined through technology and peer communities – that is transforming business, consumerism, and the way we live.”

Paraimpu vs. The others

Recently, several Web of Things and, more generally, Internet of Things systems and applications appeared in the Web scene. Noteworthy and belonging to the latter category is, for example, Pachube, with strong data logging properties. Another category apart, more oriented toward the concept of connections and data flows between Web objects and services, is that of visual languages, like Yahoo Pipes.

In our vision, Paraimpu is not an antagonist of such systems, instead it can exactly be positioned into the intersection between them, being able to communicate with them and trying to simplify as more as possible their use making data and things sharing really social.

For example: it is already possible to add a Pachube data stream creating in Paraimpu a Pachube Sensor and connecting this to Facebook, without facing the relative complexity of Yahoo Pipes

Our system is based on a modular and extensible architecture and we are working on the implementation of specialized sensors and actuators in order to include the most used and known objects and services available, along with APIs and so on. At the moment, just to list some, we have connected to Paraimpu: Facebook, Pachube, Twitter, Foursquare, Google Map, Google Calendar, Arduino, etc…

Paraimpu is in alpha version!

Currently, Paraimpu is in alpha version and it is available online at URL: http://paraimpu.crs4.it.

Anyone interested in becoming an alpha user can contact us sending an email message to address specified on the http://paraimpu.crs4.it/contact page.

After the user logins, what is shown basically is a workspace, where is possible to find: a palette of available things, through which is possible to add new sensors and actuators; a list of added or bookmarked things; the list of all the connections available and a friends list, as shown in the picture.

Alpha users’ feedback is basically important to us: it allows us to constantly improve every module of the system and to enrich the list of features we have in our roadmap.

From domotics to environmental monitoring, from playful applications to surveillance and alarm systems, Paraimpu can contribute to the implementation of newly discovered scenarios: it is social by design and the native integration with existing systems and social networks allows it to become a valuable integration hub between heterogeneous systems, objects and services in the Web.

The Web of Things is more than Things in the Web.

 

You should follow me on twitter here.

And, if you liked the post, please, tweet this!

 

Italian translation follows.

Paraimpu: un social tool per il Web of Things

[Antonio Pintus lavora come Expert Technologist/Researcher nel gruppo Location and Sensor based Services presso il CRS4 (Centro di Ricerca, Sviluppo e Studi Superiori in Sardegna). I suoi interessi principali riguardano le architetture software distribuite in rete e sistemi Web-based, in particolar modo utilizzando i paradigmi della Service Oriented Architecture (SOA) e della Resource Oriented Architecture (ROA). Al momento Antonio si occupa di tematiche relative all’ Internet of Things (IoT) e al Web of Things (WoT) ed è uno degli ideatori e sviluppatori di Paraimpu (qui il Blog), un social tool per il WoT.

Antonio è autore e co-autore di diverse pubblicazioni scientifiche presentate in conferenze nazionali ed internazionali e nel tempo libero coltiva la passione per la fotografia, qui il suo flickr stream, date un occhiata!]

Nell’arco dell’ultimo anno, io e il mio gruppo di lavoro al CRS4, ci siamo dedicati ad affrontare alcuni temi di ricerca relativi al cosidetto Web of Things, nel quale oggetti di quotidiano uso, ma smart abbastanza da essere connessi in rete e capaci di “parlare” HTTP, divengono first-class citizen del Web, alla pari degli utenti, dei siti e dei servizi Web in generale.

Grazie alle nostre passate esperienze con la Service Oriented Architecture (SOA), i Web service e l’orchestrazione dei servizi, abbiamo iniziato ad esplorare l’idea di sperimentare il Web of Things attraverso l’utilizzo delle tecnologie proprie di quel mondo: WSDL, SOAP e WS-BPEL. Questa esperienza di ricerca ha dato alla luce diverse pubblicazioni e un prototipo: Hyperpipes.

In Hyperpipes ogni oggetto è fisicamente etichettato con un Visual Tag; questi, come i QR code, possono essere stampati su carta e in pratica codificano visualmente con l’ausilio di elementi grafici, una informazione: un breve testo o un URL, per esempio. Mediante un apposito software, i tag possono poi essere successivamente decodificati semplicemente acquisendo la loro immagine con, per esempio, la fotocamera di uno smartphone.

Grazie ad Hyperpipes un utente è in grado di scoprire e identificare oggetti etichettati con Visual Tag e connettere le loro funzionalità stabilendo un collegamento, ovvero un flusso di dati, tra due funzionalità che gli oggetti offrono. Per esempio, è possibile connettere la funzionalità di “snapshot” di una webcam alla funzionalità di “visualizza immagine” di un display. Questa connessione viene realizzata, eseguita e mantenuta da un WS-BPEL engine su server dedicato.

I risultati ottenuti grazie a questa esperienza ci hanno fatto riflettere su alcuni aspetti. In primis, da un punto di vista puramente tecnico, lo stack dei protocolli WS-* spesso si rivela troppo pesante da far “girare” direttamente sulle Things, considerando anche la potenza di calcolo di questi device, talvolta limitata. Per esempio, codificare uno stack WS-* su un Arduino presenta diversi problemi, in primis di memoria, oppure, semplicemente, alcuni oggetti non dispongono di un Web server embedded.

In seconda battuta la complessità di tale stack, in alcuni contesti applicativi, può rivelarsi decisamente eccessiva rispetto alle reali necessità.

In ultima analisi, va considerata l’esigenza di avere un BPEL-engine in esecuzione su un server per la composizione dinamica ed esecuzione a run-time dei processi rappresentanti le connessioni tra gli oggetti.

Paraimpu, l’idea

Partendo anche da queste riflessioni, siamo giunti dunque all’idea di studiare e progettare una architettura scalabile, questa volta REST-based. Crediamo che questo stile architetturale si presti meglio alla realizzazione di integrazioni di servizi Web-based basati sul modello “Mashup”, inoltre grossa parte delle API oggi disponibili sul Web (si vedano Twitter o Facebook, per esempio) sono basate proprio su questo stile, mentre difettano API analoghe basate su Web service di tipo SOAP.

Su questa nuova architettura abbiamo poi immaginato un social Web of Things “allargato”, nel quale interagiscono non solo smart-objects fisici, come le arduino board, ma anche oggetti virtuali, residenti sulla rete, come servizi Web, social network, ecc…

Fatta questa prima considerazione abbiamo suddiviso gli oggetti, le Thing, in due grandi categorie: sensori e attuatori, che rappresentano, insieme a quello di connessione, l’insieme di base degli oggetti che compongono Paraimpu.

Un sensore è una qualsiasi Thing capace di produrre un dato, per esempio un termometro o un anemometro connessi ad Arduino, ma anche Foursquare, che produce la posizione dell’utente; un attuatore è una qualsiasi Thing capace di consumare un dato, compiere un azione o attivare qualcosa, per esempio un controller X10, una cornice digitale, un Chumby, ma anche Twitter o Facebook e i relativi status update di un utente.

Il terzo concetto è, come detto, quello di connessione tra Thing. Una connessione coinvolge sempre un sensore e un attuatore: realizza di fatto un flusso di dati tra essi ed ogni connessione può essere configurata impostando dei filtri e dei mapping sui dati stessi. Un filtro è una condizione che deve essere verificata affinché il dato prodotto da un sensore venga inoltrato all’attuatore connesso (per esempio: “se la temperatura>30”), mentre un mapping è una espressione di trasformazione condizionata dello stesso dato (per esempio: “se la temperatura>30” allora trasforma il dato in “Cominicia a far caldo”).

Grazie alle astrazioni definite, Paraimpu permette di creare dei veri e propri mashup che coinvolgono oggetti reali HTTP-enabled e servizi Web, social network, applicazioni: ogni elemento del web, il tutto in maniera user-friendly e, soprattutto, sociale, comunitaria.

Perchè l’esigenza di un social Web of Things

Paraimpu è un social tool, principalmente perchè consente di condividere conoscenza e informazioni con i componenti della nostra sfera sociale. Ci permette infatti di condividere conoscenza: se un utente sviluppa e condivide un oggetto anche complesso, allora gli altri utenti possono usarlo nelle loro connessioni, per esempio potrei condividere il mio Chumby o il mio display basato su Arduino, per permettere agli amici di inviarmi dei messaggi; o informazioni: se l’oggetto condiviso produce dei dati, allora questi dati possono essere socialmente fruiti anche dalle altre persone.

Paraimpu, oltre ad offrire la possibilità di mantenere i propri oggetti privati, permette infatti di condividerli con gli amici o con gli altri utenti del sistema: in questo modo gli utenti potranno utilizzare gli oggetti condivisi per creare dei veri e propri social mashup. In pratica, per ogni suo oggetto aggiunto nel sistema, l’utente può specificare una policy di condivisione: per esempio, assegnando ad un oggetto la policy “public” allora questo sarà disponibile per la condivisione con tutti gli amici del particolare utente in Paraimpu; oppure, se la policy assegnata è “open”, allora l’oggetto sarà condivisibile con tutti gli utenti, quindi non solo con gli amici. Selezionando un utente sarà quindi possibile vedere l’elenco degli oggetti che questo ha reso disponibili per la condivisione e si potrà creare un “bookmark” per ciascuno di essi; creare un bookmark di un oggetto, sostanzialmente significa aggiungerlo tra i propri oggetti, pur non acquisendone il possesso, e poterlo utilizzare nelle proprie connessioni.

Per fare un esempio più chiaro: se ho comprato un termometro che misura la temperatura nella mia terrazza, quindi nella mia città, perchè non dovrei poter condividere questa informazione con gli amici o con gli altri utenti che necessitano di questa costringendo loro a comprare, configurare e di fatto duplicare nel sistema un oggetto equivalente?

In questo senso Paraimpu incarna a pieno il concetto di Collaborative Consumption, coniato dagli autori del libro What’s mine is yours: The Rise of Collaborative Consumption che lo definiscono come

”traditional sharing, bartering, lending, trading, renting, gifting, and swapping redefined through technology and peer communities – that is transforming business, consumerism, and the way we live.”

Paraimpu e gli altri

Negli ultimi tempi abbiamo visto nascere diversi sistemi per il Web of Things e l’Internet of Things più in generale: appartenente a quest’ultima categoria e degno di nota è, per esempio Pachube, con spiccate proprietà di data logging. Altra categoria a parte, più orientata al concetto di connessioni e flussi di dati tra oggetti e servizi Web in genere, è quella dei linguaggi visuali come Yahoo Pipes, per esempio.

Nella nostra visione, Paraimpu non si pone in antagonismo a sistemi del genere, piuttosto si colloca esattamente nell’intersezione di questi, potendo di fatto colloquiare con essi, cercando di semplificarne al massimo l’utilizzo e di rendere veramente sociale la condivisione dei dati e degli oggetti. Per esempio, è già possibile aggiungere uno stream di dati proveniente da Pachube mediante un Pachube Sensor in Paraimpu o connettere quest’ultimo a Facebook senza dover affrontare la relativa complessità di Yahoo Pipes.

Ancora, il nostro sistema possiede una architettura modulare ed estendibile e contiamo di realizzare sensori e attuatori specializzati per la maggior parte degli oggetti “noti” presenti sul mercato e per i servizi Web ed API più utilizzate. Al momento, per esempio, sono già presenti ed utilizzabili quelli per Facebook, Pachube, Twitter, Foursquare, Google Map, Google Calendar, ecc…

Siamo in alpha!

Al momento, Paraimpu è in alpha version e disponibile online all’URL: http://paraimpu.crs4.it, chiunque fosse interessato può richiedere di diventare utente alpha inviandoci un email all’indirizzo riportato nella pagina contatti.

Una volta effettuato il login, quello che si presenta all’utente è, fondamentalmente, un workspace, costituito da una palette di Thing disponbili, mediante la quale è possibile aggiungere nuovi sensori ed attuatori; dall’elenco degli oggetti aggiunti o condivisi e delle connessioni realizzate; dalla lista dei contatti, come illustrato nella figura seguente.

Il parere degli alpha user è per noi di fondamentale importanza, in quanto ci permette di migliorare costantemente ed affinare qualsiasi aspetto del sistema nonchè a ricevere ulteriori input che vanno ad aggiungersi alla lista di idee che abbiamo già in mente per il futuro.

Dalla domotica al monitoraggio ambientale, dalle applicazioni ludiche ai sistemi di allarmistica, Paraimpu può contribuire alla realizzazione di scenari prima impensabili: è social by design e l’integrazione nativa e immediata con diversi sistemi e social network esistenti ci permette di ambire a diventare un hub di integrazione tra sistemi, oggetti e servizi Web decisamente eterogenei.

The Web of Things is more than Things in the Web.

Advertisement

About meedabyte

Strategist, Consultant and Collaborative Pathfinder

5 comments

  1. Hi, just wanted to mention, I liked this article.

    It was funny. Keep on posting!

  2. I do not know whether it’s just me or if perhaps everyone else encountering issues with your website. It appears as if some of the written text within your posts are running off the screen. Can someone else please provide feedback and let me know if this is happening to them too? This may be a issue with my browser because I’ve had this happen previously.
    Appreciate it

  3. Hurrah! After all I got a webpage from where I be capable of
    in fact obtain helpful data concerning my study and knowledge.

  4. I have been browsing online more than 4 hours today,
    yet I never found any interesting article like yours. It’s pretty worth enough for me. Personally, if all webmasters and bloggers made good content as you did, the internet will be a lot more useful than ever before.

  5. proper Highly recommended Reading

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: