interoperability with standardless iot (global iot day wien)

42
Interoperability with Standardless IoT

Upload: david-janes

Post on 05-Aug-2015

148 views

Category:

Technology


0 download

TRANSCRIPT

Interoperabilitywith Standardless IoT

David Janes@dpjanes

[email protected]://iotdb.org/social/imadeit/

April 2015

I: IntroductionParty Like It’s 199[0-9]

All Teh Standardz! • Open Interconnect Consortium

• Thread Group

• AllSeen Alliance

• HyperCat Consortium

• Industrial Internet Consortium

• IoT-GSI

• oneM2M

• Open Mobile Alliance

• Internet of Things (IEE)

• IETF

• IPSO Alliance

• W3C Web of Things Community Group

• W3C Semantic Sensor Network

• ITU Joint Coordination Activity on IoT

Commonalities

• Prescriptive - “Here’s how you do this”

• Roach Motel - “Once you go in you can never go out”

• Complicated - Can a N00b pick it up and use it?

XKCD was wrong

Antistandards

• The industry is actively trying to create more standards

• IMO: malice

• “Win the stack”

We’ve Been Here

• Internet Video

• XML

• RPC

• SOAP

What’s wrong now?

• Most IoT Standardization efforts are an attempt to recreate the SOAP mistake

• SOAP is not the way to do things

• But how do we do things?…

II: APIs in 2015

We know how to write APIs

How to Write APIs

• Resources have IDs

• Use JSON (rarely XML)

• Use URIs and HATEOAS

• Use REST

• Use HTTP

Big Problems Solved:

• Format, Documentation, Navigation

• Authentication, Authorization, Encryption, Security

• Create, Update, List, Delete

• Notifications

Are you doing it correctly?

• “Can Joe / Jane Developer pick it up and be using it within 10 minutes”

III: So…

(Here comes the important part)

What is the #IoT?

What is the #IoT?

The IoT is adding APIs to Things

IV: What do Thing APIs Look Like

How to Write Thing APIs

• Resources Things have IDs

• Use JSON (rarely XML)

• Use URIs and HATEOAS

• Use REST

• Use HTTP

• Notifications? MQTT?

ERMAHGERD!So Inefficient

• Don’t prematurely optimize

• JSON: can be packed into Binary

• HTTP: substitute HTTP/2 or CoAP

• + importantly: interoperability

V: Interoperability

(This is what the talk is about, remember!)

How? Design Patterns

• Discovery

• Unique Repeatable IDs for Things

• Update via PUT

• State via GET

• Metadata / Reachability

Discovery

• Statically defined v Dynamic

• May find the same Thing multiple ways

• Things come and go

ID

• Globally Unique ID for all Things

• Many (but not all) Things provide UUIDs

• Many advantages

PUT / PUSH

• Just like REST

• IOTDB provides a “Semantic” Layer

• e.g. volume to 50% means the same on all platforms

GET / PULL State

• Tricky!

• State is usually only known asynchronously

Metadata

• Name

• Product, Manufacturer

• Device

• Reachable

Semantics

{ "on": true, "temperature": 225 }

VI: Not Hypothetical

HomeStar• homestar-ble

• homestar-denon-avr

• homestar-feed

• homestar-firmata

• homestar-hue

• homestar-lg-smart-tv

• homestar-lifx

• homestar-littlebits

• homestar-rest

• homestar-smart-things

• homestar-sonos

• homestar-template

• homestar-tcp

• homestar-wemo

Via Node.JS

iot .connect("DenonAVR") .update({ "on": true, "volume": 0.4 })

Semantically

iot .connect() .with_zone("Basement") .with_facet(":lighting") .set(“:on": false)

Get the code

• github.com/dpjanes

• iotdb-homestar

• homestar-*

Get in touch! David Janes

@[email protected]

http://iotdb.org/social/imadeit/