Building Blocks for the Internet of Things @ Home

Post on 27-Jan-2015

105 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Thoughts on how Internet Standards - HTTP, TCP/IP, WiFi, Bonjour - can be used in conjunction with Semantic Web technologies to create the Internet of Things. The emphasis of this document is the home / LAN, hence "The Intranet of Things", but the broad themes are universally applicable. Things that are up in the air are marked in read. Everything IMO. Also see http://iotdb.org - a work in progress.

Transcript

Building Blocks of The Internet of Things

@ Home

Wednesday, 17 July, 13

IMO

David Janes@dpjanes

davidjanes@davidjanes.comhttp://imadeit.davidjanes.com/

July 2013

Wednesday, 17 July, 13

AKA “The Intranet of Things”

Wednesday, 17 July, 13

Important!

The Internet of Machinesis just

The Internet with Machines!

Wednesday, 17 July, 13

The Building Blocks of the Internet @ Home?• Wi-Fi

• TCP/IP

• URLs / DNS

• HTTP

• HTML / JS / CSS

• JSON / XML

Wednesday, 17 July, 13

The same tech enables The Intranet of Things

... more or less ...

Wednesday, 17 July, 13

What are the issues?

• Communication

• Discovery

• Control

• Interoperability

• Security

Wednesday, 17 July, 13

Communications

Wednesday, 17 July, 13

Communications

• How will things talk to things?

• How will we talk to things?

Wednesday, 17 July, 13

Protocols

• Wi-Fi

• TCP/IP

• HTTP

• JSON / XML ... for things to things

• HTML ... for us to things

• Bluetooth Low Energy (special case)

Wednesday, 17 July, 13

Bluetooth Low Energy

• Ships in all modern iOS devices

• Ships in many new Androids

• 30m range (50m claimed)

• Coin-cell-sized devices

Wednesday, 17 July, 13

BLE purpose

• for small sensors and devices

• for personal area networks

• for health stuff ... scales, heart-rate monitors, etc.

Wednesday, 17 July, 13

BLE use

• Think of it as “invisible wires”

• Will be controlled...

• directly by mobile devices

• indirectly through hubs

Wednesday, 17 July, 13

Discovery

Wednesday, 17 July, 13

“Google for my home”

• find what’s available...

• ... and what can I do with it?

Wednesday, 17 July, 13

Bonjour

• Lightweight Service Discovery

• Standard needed for specifying how to find IoT services / APIs

Wednesday, 17 July, 13

Control

Wednesday, 17 July, 13

APIs

• IoT devices are controlled by APIs

• URLs ... from Bonjour Discovery

• HTTP

• JSON

Wednesday, 17 July, 13

REST

• URLs describe things ... not actions

• /api/light-2 ✓

• /api/light-2/off ✗

• Stateless

• ... lots of other stuff ...

Wednesday, 17 July, 13

HATEOAS

• Always explicitly use URLs ... not numbers or special codes

• “devices” : [ “/api/light-1”, “/api/light-2” ] ✓

• “devices” : [ 1, 2 ] ✗

Wednesday, 17 July, 13

JSON

GET /api/devices{ "devices" : [ "/api/light-1", "/api/light-2" ]}

Wednesday, 17 July, 13

JSON

GET /api/light-1{ "on" : true, "brightness" : 0.5, "color" : "#FFFFFF"}

Wednesday, 17 July, 13

JSON

PUT /api/light-1{ "on" : false}

Wednesday, 17 July, 13

Interoperability

Wednesday, 17 July, 13

Can...

• devices easily talk to each other?

• devices be controlled from one UI?

• “novel” devices be effortlessly introduced?

Wednesday, 17 July, 13

Standards?

• Fine grained / line level ... not on

• Everyone always does their own thing

Wednesday, 17 July, 13

But we’re almost there!

• Our standards stack gets us a long way

• i.e. Wi-Fi, HTTP, REST, HATEOAS, JSON

• We just need one last bit of translation

Wednesday, 17 July, 13

The Semantic Web

• A kind of wide-open database, use what you need, infinitely extendable

• Everything described by URLs

Wednesday, 17 July, 13

schema.org

• Vocabulary for describing things and products (and more)

• e.g. this is a Toshiba 42” Flatscreen TV

Wednesday, 17 July, 13

iotdb.org

• A work in progress!

• Vocabulary for describing how to control IoT things

• e.g. this is a light, this can be turned on and off, this has a brightness control, this has a color

Wednesday, 17 July, 13

JSON-LD

• Links JSON documents to the Semantic Web

• Too clumsy / difficult for the IoT

• Developers are not likely to adopt ...

• ... but the technique is perfect

Wednesday, 17 July, 13

The Rosetta Stone

• Add a single definition term to APIs{

"@iot" : "/definitions/light", "on" : true, "brightness" : 0.5, "color" : "#FFFFFF" }

• Defines every term in the API semantically with well-known definitions

• Another work in progress!

Wednesday, 17 July, 13

Security

Wednesday, 17 July, 13

We Can’t...

• Hide the devices / APIs

• Make everyone log into every device

• Get this wrong!

Wednesday, 17 July, 13

Considerations

• Some attributes can be read by everyone but only set by a few ... e.g. temperature

• Current implementations are bad

• AirPlay: wide open

• UPnP: broken

Wednesday, 17 July, 13

Wide open

• Sorry, I’ve got nothing

• This can’t be half-baked

Wednesday, 17 July, 13

Device Limitations

Wednesday, 17 July, 13

Not that smart

• We need information outside the device

• e.g. Belkin WeMo: I can be on, I can be off

• There’s so much more we need to know!

Wednesday, 17 July, 13

What is it really?

• Consider the WeMo

• connected to a table lamp

• connected to a space heater

• It doesn’t know!

• Same interface, effectively / collectively a very different device

Wednesday, 17 July, 13

Where is it?

• Is it in the kitchen? in the living room?

• Both? ... e.g. a door open sensor

• Many? ... e.g. a HVAC subsystem

Wednesday, 17 July, 13

Wide open

• Assume there’s data that needs to be “outside” the device

• But we don’t want to “go to the Internet” to control our house!

• Open problem

Wednesday, 17 July, 13

Get in touch!

David Janes@dpjanes

davidjanes@davidjanes.comhttp://imadeit.davidjanes.com/

Wednesday, 17 July, 13

top related