Interoperability
with Standardless IoT
David Janes
@dpjanes
davidjanes@iotdb.org
http://iotdb.org/social/imadeit/
April 2015
I: Introduction
Party 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
• InternetVideo
• 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
@dpjanes
davidjanes@iotdb.org
http://iotdb.org/social/imadeit/

Interoperability with Standardless IoT (Global IoT Day Wien)