l Web degli oggetti (Web of Things) è una prospettiva di sviluppo di Internet in cui oggetti fisici interagiscono con altri oggetti e persone attraverso la Rete. Le applicazioni di questa tecnologia sono notevoli e riguardano la domotica avanzata, l'automazione industriale, l'infomobililtà, il monitoraggio energetico ed ambientale, l'e-health, le installazioni artistiche e ludiche. Paraimpu è un social tool ideato per permettere agli utenti della Rete di connettere, condividere, usare e far interagire oggetti, servizi e dispositivi in modo da dar vita ad applicazioni personalizzate.
1. Internet / Web of Things
+
Antonio Pintus Andrea Piras Davide Carboni
Seminari CRS4, percorso E
Cagliari, 14 giugno 2012
Antonio Pintus - pintux@crs4.it Davide Carboni - dcarboni@crs4.it Andrea Piras - piras@crs4.it 1
2. Diretta Twitter
• Twittate con hash
#paraimpu
2
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
3. Internet / Web of Things
A che punto siamo?
3
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
4. Evoluzione Internet / Web
IoT, qualsiasi cosa
PC, server, documenti, è connessa
hypertext, hyperlink
... Web 2.0,
partecipativo,
social
... cellulari, motori di
ricerca, notebook
4
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
5. Internet/Web of Things
Ph. Shaun Wood, http://www.flickr.com/people/mrwoodnz/
5
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
6. Smart-objects: Whithings
http://www.withings.com/
6
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
7. Smart-objects
http://www.nike.com/plus/products/training/
7
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
8. Smart-objects: Karotz
http://store.karotz.com
8
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
9. Arduino
Smart-objects: Micro-controllers
openPicus Flyport
Arduino
Sensori
9
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
12. Smart-Objects vari...
Smart-TV
Monitoring
Consumo energia
12
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
13. Previsioni
• nel 2020 gli oggetti connessi saranno 50 miliardi (Cisco)
http://www.flickr.com/photos/erwlas/
• sensori, attuatori, cellulari, smart cities, giocattoli, case,
elettrodomestici, sistemi di monitoraggio ambientale,
automotive, eHealth, ...
http://www.flickr.com/photos/bigpinkcookie
http://www.flickr.com/photos/erwlas/ http://www.flickr.com/photos/mike_lambert http://www.flickr.com/photos/daviddehoey
13
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
14. EU Teaser: the Pillbox
http://youtu.be/RTdRUwl9JsA
14
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
15. EU Teaser: the Pillbox
http://youtu.be/RTdRUwl9JsA
14
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
16. EU Teaser: Traffic
http://youtu.be/lkIXHzcU5XA
15
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
17. EU Teaser: Traffic
http://youtu.be/lkIXHzcU5XA
15
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
18. Problematiche
• una enorme quantità di “cose” anche molto diverse tra loro:
oggetti fisici e virtuali
• come connetterli al Web in maniera semplice?
• come comporli per creare applicazioni in maniera semplificata?
• come realizzare agevolmente dei mashup misti, includendo oggetti
fisici e virtuali come servizi online e social network?
• come gestire l’elevato grado di eterogeneità dei dati, linguaggi e
protocolli?
16
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
19. Il “passato”
• Ovviamente furono proposte diverse tecnologie e protocolli:
– Jini, UPnP, ...
– JXTA
– Web services: SOAP, WSDL , ...
– Soluzioni basate direttamente su TCP / UDP
17
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
20. parte #1
la nostra
“vision”
Ph. http://www.flickr.com/photos/salendron/
18
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
21. “ The Web of Things
is more than
Things on the Web ”
19
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
22. Vision /1
#1: connettere gli oggetti deve essere
semplice
- semplici da mettere in
rete
- semplici da configurare
- semplici da gestire
Ph. Nigel Marshall, http://www.flickr.com/photos/nige_mar/
20
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
23. Vision /2
• #2: non solo oggetti fisici ma anche “virtuali”
– social network, siti Web, feed, APIs, App, ...
21
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
24. Internet/Web of Things
Ph. Mike http://www.flickr.com/photos/zebble
22
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
25. Vision /3
#3: comporre gli oggetti deve essere
semplice
- mashup misti: interconnettere
mondo fisico + mondo Web
- meccanismi di trasformazione / filtro
dei dati
Ph. John Thurm, http://www.flickr.com/photos/thurm
23
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
26. Vision: aspetti Social /1
#4: i social network esistenti sono visti come
oggetti (virtuali)
- Facebook, Foursquare, Twitter, ...
Ph. Nigel Marshall, http://www.flickr.com/photos/nige_mar/
24
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
27. Vision: aspetti social /2
Ph. Ryan Roberts http://www.flickr.com/photos/ryanr
#5: condividere gli oggetti con le altre persone!
25
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
28. Condividere gli oggetti
• vogliamo poter condividere i nostri oggetti con le altre persone
– condividere i dati
– condividere le funzionalità
• lasciare che le altre persone usino i nostri oggetti nelle loro
applicazioni
• non lontano dal concetto di “collaborative consumption” definito
dagli autori del libro What’s mine is yours*
* What's Mine Is Yours: The Rise of Collaborative Consumption, Rachel Botsman and Roo Rogers . Harperbusiness,
http://www.collaborativeconsumption.com/
26
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
29. Come?
• Non abbiamo bisogno di nuovi o
“oscuri” protocolli per connettere gli
oggetti
• Abbiamo il Web!
• i protocolli e i formati del Web come
lingua franca per (inter-)connetterli
• HTTP ( + JSON, XML, ...) --> REST
27
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
31. Il modello: 4 astrazioni di base
- Oggetti:
- Sensori
- Attuatori
- Connessioni
Ph. Windell Oskay http://www.flickr.com/photos/oskay/265899865/
29
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
32. Sensori
- Qualsiasi Oggetto capace di
produrre dati
- comunica attraverso HTTP
- anemometri, termometri,
Arduino, ...
- Twitter, Foursquare, API, altri servizi
Web, software app, ...
Ph. Windell Oskay http://www.flickr.com/photos/oskay/
30
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
33. Attuatori
- Qualsiasi Oggetto capace di
ricevere dati e compiere un’azione
- comunica attraverso HTTP
- Illuminazione, Arduino, motori
passo-passo, Karotz, ...
- Twitter, Facebook, Processing, altre
applicazioni Web e non...
Ph. Dieter Drescher http://www.flickr.com/photos/cosmosfan
31
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
34. Connessioni
- tra due Oggetti
- un Sensore come sorgente
- un Attuatore come destinazione
- configurabili:
- filtering dei dati
- trasformazione dei dati
Ph. supermaryan http://www.flickr.com/photos/33975256@N06/
32
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
35. Filtri e trasformazioni: perchè?
eterogeneità degli oggetti e dei dati
personalizzazione
0xAB12CD
?
Il latte è terminato!
12,10,9,H,L
0,1, ON, OFF
33
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
36. Motore di Regole
Regole espresse in linguaggio JavaScript
definite dagli utenti
34
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
37. In sintesi
“ a cloud-based operating system for the Internet of Things ”
35
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
38. (alcuni) Esperimenti
http://www.flickr.com/photos/melitron
36
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
39. T light
http://youtu.be/6LuutBhG9nU
37
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
40. T light
http://youtu.be/6LuutBhG9nU
37
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
41. Ambient Assisted Living
http://youtu.be/LqqwyJV1iao
38
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
42. Ambient Assisted Living
http://youtu.be/LqqwyJV1iao
38
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
43. Jardimpu
- Giardinaggio sociale con Paraimpu, by Alberto Serra (@albeserra)
- http://jardimpu.blogspot.it
- Monitoring su Twitter: @jardimpu
39
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
44. part #2
Scelte Architetturali
e di Design
Ph. Jaime Silva, http://www.flickr.com/photos/20792787@N00/
40
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
45. Problema: scalabilità
– Cosa succede quando il numero degli utenti cresce?
– Cosa succede quando migliaia di oggetti vengono
aggiunti?
– Cosa succede quando migliaia di dati in (quasi) real-
time devono essere gestiti?
– Il sistema deve essere scalabile “by-design”!
41
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
46. Problemi e stili architetturali
Web-based Architecture
WS-* or REST
Web server
Load balancing
Scalabilità orizzontale
problema C10K
Database
?
Nuovi Sensori/Attuatori
Ph. MrFaber, http://www.flickr.com/photos/mrfaber
42
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
47. WS-* o REST?
• per molti oggetti un WS-* stack è troppo complesso/
pesante: WSDL, SOAP over HTTP, ...
• spesso, abbiamo a che fare con piccoli (limitati) oggetti
fisici digitali
• Abbiamo scelto REST come stile architetturale
» Oggetti, connessioni, dati, utenti, ... , sono
risorse REST
43
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
48. RESTful Resources
http://paraimpu.crs4.it/service/e57faedb-5823-453e-8ff1-74a74e5...
http://paraimpu.crs4.it/user/a98d4e77-9774-4fa9-b35b-b1e12cc0...
HTTP
GET PUT POST DELETE
{"category": "arduino_usb_source", "servicetype": "src",
"description": "an Arduino USB sensor", "date_modified": "2012-04-13
17:24:32.157177", "uri": "/service/b58faedb-5823-453e-8ff1-74a74...",
"owner": "/user/b91b4e99-9764-4fa9-b35b-a1...", "token": "f03e5d9e-
a5b1-4a4a-b91d-...", "link": "http://paraimpu.crs4.it/service/
f57faedb-5823-765e-6bb6-74a...", "mode": "push", "policy": "PRIVATE",
"date_created": "2012-04-13 17:24:32.157177", "shortname": "ardusb",
"content-type": "application/json", "icon": "/static/images/
arduino_usb_source_icon.png"}
44
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
49. Database: SQL o NoSQL?
• Considerando:
• dati molto eterogenei --> flessibilità del DB schema
• richiesta scalabilità del DB su un sistema distribuito
• partizionamento dei dati e gestione delle repliche
• Abbiamo scelto un database NoSQL:
• no schema prefissato, no tabelle, no relazioni
• efficienti read-write concorrenti, scalabilità, auto-sharding
• formato nativo dei dati in JSON-like (BSON)
45
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
50. Web server, Web front-end
• sistema interamente Web-based
• problema C10K: 10,000 connessioni HTTP aperte
simultaneamente (client)
• Scalabilità orizzontale: aggiungere nuove istanze del server
quando richiesto
• Bilanciamento del carico
46
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
51. Le connessioni
• connessioni basate su code di dati
• trasformazione dei dati eseguita da processi di sistema
47
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
52. Filtri sui dati
• un Filtro è una espressione booleana valutata su
un dato proveniente da un sensore
–espressa in JavaScript
» sensor > 12
» sensor.field == ‘H’
» sensor.data >20 && sensor.type == ‘temp’
» ...
48
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
53. Trasformazione dati: mapping
• i Mapping sono coppie di espressioni: (cond, repl)
• cond : espressione booleana valutata su dati
provenienti da un sensore (come per i filtri)
• repl : espressione che produce/trasforma un dato
da inoltrare all’ attuatore quando cond è vera
49
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
54. Mapping, esempi
Sensor data CONDITION REPLACE Actuator data
type type
numeric sensor > 30 <% sensor * 3.14 / 100 %> numeric
Summer is coming, temperature is:
numeric sensor > 25 text
<% sensor %> °C
Data is <% sensor.data %>
JSON sensor.data > 30 text
and type is <% sensor.type %>
<?xml version="1.0" encoding="UTF-8"?>
sensor.A0 > 30 && <value>
JSON XML
sensor.A5 <= 10 <% sensor.A0 * 100 %>
</value>
50
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
55. Principali tecnologie
• back-end scritto principalmente in Python
• piccola parte in Java
• Web stack basato su Tornado Web server
• NoSQL DBMS (MongoDB)
• HTML + jQuery
51
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
56. • > 600 utenti world-wide
• nuovo progetto EU finanziato sulle
Smart Cities, basato su Paraimpu:
CityScripts http://paraimpu.crs4.it
twitter: @paraimpu
FB: facebook.com/paraimpu
YouTube: youtube.com/paraimpu
52
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
57. Contacts
• Antonio Pintus, pintux@crs4.it, Twitter: @apintux
• Davide Carboni, dcarboni@crs4.it
• Andrea Piras, piras@crs4.it
• http://paraimpu.crs4.it/team
• LBS group @ CRS4: http://geoweb.crs4.it/
• CRS4 Home Page: http://www.crs4.it
53
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
58. next:
DEMO
54
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it
59. Q&A
GRAZIE!
55
Antonio Pintus, Davide Carboni, Andrea Piras http://paraimpu.crs4.it