47
@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014 © EVRYTHNG | 2014 COMMERCIAL AND CONFIDENTIAL @EVRYTHNG | evrythng.com Web Thing Model Towards a Lightweight Standard to Make Things talk Web W3C WoT Interest Group Meeting, 20.05.2015 Dom Guinard CTO & Co-founder, EVRYTHNG Vlad Trifa R&D Lead and Co-founder, EVRYTHNG

Towards a Lightweight Standard to Make Things talk Web

Embed Size (px)

Citation preview

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

© EVRYTHNG | 2014 COMMERCIAL AND CONFIDENTIAL

@EVRYTHNG | evrythng.com  

Web Thing Model Towards a Lightweight Standard to Make Things talk Web

W3C WoT Interest Group Meeting, 20.05.2015

Dom Guinard CTO & Co-founder, EVRYTHNG Vlad Trifa R&D Lead and Co-founder, EVRYTHNG

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

1. THE IOT & THE WOT

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

What is the Internet of Things?

The Internet of Things is a science primarily focusing on creating the

most complex ways of turning lights on and off.

“ “

[@domguinard]

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

+

Before

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

After

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

What is the Web of Things?

The Web of Things is about bringing order in the IoT chaos by

using Web good practices

“ “ [@domguinard]

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

WoT Web

Web

Web

Web

Web

Web

Internet Of Things Web Of Things

ZigBee

Bluetooth

X10

Bacnet

enOcean

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Web of Things

Internet of Things

How do we connect things to the Internet?

How do we connect applications & things?

Applications? §  OSI Layer 7 + §  HTTP, REST,

JSON §  Social nets,

semantics §  Mashups

Networking? §  OSI Layer 4 – §  IPv6lowpan,

EPC, WiFi, BLE Zigbee / 800.15.04

“Uniquely identifiable objects and their virtual representations in an Internet-like structure” §  Auto-ID Labs (K.

Ashton, S. Sarma, F. Mattern) ~ 1999

“Application architecture for physical objects” §  D. Guinard, D.

Raggett, V. Trifa, E. Wilde ~ 2007 http://bit.ly/wot-pub

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

§  Simplifying Application Development in the Internet of Things

[flickr.com/photos/docman]  

Our mission: “Bridging the gap between Things and Web”

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Social Web Real-time Web

Semantic Web Programmable Web

Mashups Rest APIs

JSONWeb Services

WebSockets

Web HooksPush Notifications

Facebook Twitter

OAuth

Microdata

RDFaschema.org

Link Headers

RSS/ATOM

The Web of Things

JSON-LD

DelegatedAuthentication

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

http://bit.ly/wot-phd http://webofthings.org/publications

Initial Web of Things Architecture Framework

Things

Level 4Compose

Node-red

Clickscript

Mashups

Applications

Level 3Share

Social WoT

SSL/TLS

OAuth

ACLDelegated

Authentication

Level 2Find

Link Header

Hateoas

Microdata

Linked Data

JSON-LDREST Crawler

JSONHTML

HTTPNetwork Discovery

Web search

URI / URLLevel 1Access

REST API

Gateways

Web Hooks WebSockets

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

TOWARDS A WOT STANDARD

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Output of experiences / feedback

+ +

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

BACK TO 2007-2009

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014 http://webofthings.org/publications

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

GET  

GET,  PUT  

GET,  DELETE  

Resource  Design  

Representa0on  Design  

Interface  Design  

Implementa0on  Strategy  

h<p://<DOMAIN>:<PORT>/genericNodes  /temperature  /sensors  /node1  

h<p://<DOMAIN>:<PORT>/genericNodes  

Source: http://bit.ly/wot-phd

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

REFERENCE IMPLEMENTATION

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Root URL ofRaspberry Pi

devices.webofthings.io/pi

actuators/actuators

LEDs/leds

LED #/{led#}

sensors/sensors

light sensor/light

temperature sensor/temperature

buttons/buttons

acceleration/accel

gyroscope/tilt

/x

/y

/z

/x

/y

/z

/1

/2

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

DEVICES.WEBOFTHINGS.IO

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

OK? Why do we need a standard?

§  Web of Things != Internet of Things §  Web is a very good step in the right direction but

§  Web APIs have also created thousands of semi-isolated silos

§  Need for a simple set of rules §  Protocol (REST with JSON over HTTP) §  Resource models (what is in the JSON) §  Support for extensions (semantics, social, etc.)

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Goal of the proposal in a nutshell

1.  Blueprints on how to implement APIs for Web Things (REST, HTTP, JSON, etc.)

2.  Standard resources and data-model for the representations

3.  Reference implementation of a compliant gateway

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

What would this help for?

§  Blueprints = no brainer = faster implementation for companies §  Avoid some horrible options (like WS-* on devices)

§  Automatic generation of User Interfaces including 100% Web-based UIs

§  Automatic generation of mashup building blocks §  API to API integrations §  Automatic, spontaneous integration?

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Current proposal in a nutshell

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

1. WEB THINGS INTEGRATION PATTERNS

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Direct Connectivity

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Gateway Proxied Connectivity

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Cloud Proxied Connectivity

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

So what?

§  We should not care about whether it’s a Gateway, a Thing or an IoT/WoT Cloud platform they should use the same blueprints, resources, formats and payloads: §  The Web Thing API

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

2. WEB THINGS REQUIREMENTS

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

SEE: HTTP://WEBOFTHINGS.GITHUB.IO/WOT-COMPOSE/

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

 Level 0 – MUST

§  R0 - WT MUST be an HTTP 1.1 server §  R0 - WT MUST have a root resource accessible via

an HTTP URL §  R0 - WT MUST support GET, POST, PUT, and

DELETE HTTP verbs   §  R0 - WT MUST implement HTTP status codes 200,

400, 500

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Level 0: MUST (2/2)

§  R0 - WT MUST support JSON as default representation

§  R0 - WT MUST support UTF8 encoding for requests and responses

§  R0 - WT MUST support GET on its root URL

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Level 1: SHOULD

§  R1- WT SHOULD use secure HTTP connections (HTTPS )

§  R1 - WT SHOULD support additional HTTP status codes as needed

§  R1 – WT SHOULD have a “doc” link in their root representation

§  R1 - WT SHOULD support the Web Streams Protocol (explained next)

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Level 2: MAY

§  R2 - WT MAY support OPTIONS for each of its resources

§  R2 - WT MAY have a default machine-readable documentation

§  R2 - WT MAY provide additional representation semantic mechanisms (RDF, XML, JSON-LD)

§  R2 - WT MAY offer an HTML interface/representation (UI)

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

3. WEB THINGS MODEL

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

From Web Thing to Extended Web Thing

§  Web Thing §  A Web Thing is a digital representation of a physical object

accessible via a RESTful Web API. A Web Thing conforms to this specification if it follows the statements defined in 5. Web Things requirements.

§  Extended Web Thing §  An Extended Web Thing that also supports the REST API and data

model defined in this specification, thus enabling its automatic inclusion in more complex systems.

§  An Extended Web Thing conforms to this specification if it follows the statements defined in §  Web Things requirements §  Web Things model.

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Entities §  Client

§  A Client refers to any physical or digital entity that can interact with a Web Thing. This can be a mobile application, a Web browser, a proxy, a desktop application, but also another Web Things (e.g., in the case of Machine to Machine communication).

§  Property §  A Property is a variable of a Web Thing. §  Properties represent the internal state of a Web Thing. Clients can subscribe to properties

to receive a notification message when specific conditions are met (e.g. value of one or more properties changed).

§  Action §  An Action is a function offered by a Web Thing. §  A Client invokes a function on a Web Thing which initiates a state transition by sending it

an Action. Examples of Actions are “open” or “close” for a garage door; “enable” or “disable” for a smoke alarm; “check-in” or “scan” for a bottle of soda or a place. The direction of an Action is from the Client to the Web Thing.

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Resources

Provided by: D = Device, G = Gateway, C = Cloud

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Models

§  Can be used in JSON, JSON-LD, HTML, etc. §  Web Link Headers §  See http://webofthings.github.io/wot-compose

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Subscriptions

§  WebHooks §  WebSockets §  Using protocol

upgrade mechanism

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Details & Updates

§  This is work in progress! §  Will be an official W3C submission

§  End of August 2015 §  See the details and up to date version on

§  http://webofthings.github.io/wot-compose/ §  Join the discussion: comment!

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

WHAT’S NEXT?

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Next steps

§  Document now open for comments on: §  http://webofthings.github.io/wot-compose

§  Major protocols integration §  CoAP §  MQTT

§  Need to look at integration points §  Semantic Web (JSON-ld, etc.) §  Social Networks, oAuth, etc. §  Etc.

§  Official W3C Submission end of August 2015

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Links §  http://webofthings.org/publications

§  A number of WoT related publications including the initial 2009 WoT architecture implementation papers, books, PhD theses, etc.

§  http://webofthings.org/wot §  International Web of Things Workshop (yearly, 2010 – now)

§  http://evrythng.com §  First WoT cloud platform, free accounts for developers

§  http://twitter.com/webofthings §  WoT twitter community group

§  https://www.linkedin.com/grp/home?gid=1818463 §  Linkedin WoT group

§  http://www.w3.org/WoT/ §  W3C WoT activities

@ConnectEvrythng © EVRYTHNG Limited | Confidential | 2013 @EVRYTHNG © EVRYTHNG | Confidential | 2014

Thank you

Dominique ‘Dom’ Guinard CTO & Co-founder

[email protected] @domguinard