SlideShare a Scribd company logo
BUILDING
THE INTERNET OF THINGS
WITH ECLIPSE IOT
Benjamin Cabé, Eclipse Foundation
@kartben
"Kortrijk Begijnhof and Our Lady's" by Michael O'Donnabhain
M2M?
IoT?
❝Technology that supports
wired or wireless
communication
between devices
Building the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetup
http://www.flickr.com/photos/brunauto/5687363705
fragmentation
lock-in
http://www.flickr.com/photos/photosightfaces/8152791780/
http://www.flickr.com/photos/90514086@N00/952121271/ http://www.flickr.com/photos/cyberslayer/952121271
complexity
Building the Internet of Things with Eclipse IoT - IoTBE meetup
Protocols
Tools
Frameworks
Services
 Hand	
  by	
  Castor	
  &	
  Pollux	
  from	
  The	
  Noun	
  Project	
  
AT FIRST THEY WERE THREE…
 Hand	
  by	
  Castor	
  &	
  Pollux	
  from	
  The	
  Noun	
  Project	
  
AT FIRST THEY WERE THREE…
 Hand	
  by	
  Castor	
  &	
  Pollux	
  from	
  The	
  Noun	
  Project	
  
AT FIRST THEY WERE THREE…
 Hand	
  by	
  Castor	
  &	
  Pollux	
  from	
  The	
  Noun	
  Project	
  
AT FIRST THEY WERE THREE…
Paho provides client implementations
of the MQTT protocol.
Mihini is an embedded Lua runtime
providing HW abstraction and other
services.
Koneki provides tools for embedded
Lua developers.
Eclipse SCADA is a complete Java/
OSGi-based SCADA system
(communication, monitoring, GUI, …)
Kura is a Java/OSGi-based M2M
container for gateways. Has support
for Modbus, CANbus, MQTT, …
Mosquitto is a lightweight server
implementation of the MQTT and
MQTT-SN protocols, written in C.
Ponte bridges M2M/IoT (MQTT,
CoAP) protocols to the Web. 
SmartHome provides a complete set
of services for home automation
gateways.
OM2M implements the ETSI M2M
standard.

(code pending)
Californium is an implementation
of the CoAP protocol written in
Java. Includes DTLS for security.

Wakaama is an implementation of
LWM2M written in C.
Krikkit is a rules system for
programming edge devices just like
you’d configure a router
Wakaama
Krikkit
(code pending)
(code pending)
(code pending)
Concierge is a lightweight
implementation of OSGi Core R5.
Your project?
J
Concierge
We need to talk! ;-)
I often get asked…
WHAT IS ZE BEST
LANGUAGE FOR
IOT?!?
I often get asked…
ANSWER: It depends! J
For embedded systems…	
  
Codevs.Configuration
Constrained micro-controllers vs. Smart gateways
C
 Javascript
 Lua
 Java/OSGi
ANSWER: It depends! J
Infrastructurevs.App.development
Communication enablement vs. Information systems
On the server side…	
  
C
 Javascript
 Java/OSGi
BUILDING BLOCKS FOR IOT
BUILDING BLOCKS FOR IOT
… for building what?
 Cloud	
  by	
  Andrew	
  Lynne	
  from	
  The	
  Noun	
  Project	
  
	
  Thermometer	
  by	
  Lemon	
  Liu	
  from	
  The	
  Noun	
  Project	
  
	
  Fluorescent	
  Light	
  Bulb	
  by	
  Dmitriy	
  Lagunov	
  from	
  The	
  Noun	
  Project	
  
	
  Water	
  by	
  Gilad	
  Fried	
  from	
  The	
  Noun	
  Project	
  
MQTT Network
Mosquitto broker
Building… SENSOR NETWORKS
Building the Internet of Things with Eclipse IoT - IoTBE meetup
MQTT?
MQTT?
M is for Messaging… (mmmmaybe!) 
Q is not for Queue ☺︎
Publish/Subscribe protocol
Lightweight (bandwidth, battery, …)
21.3
21.3
MQTT history
•  … it’s not new!
•  Invented in 1999 (Andy Stanford-
Clark, Arlen Nipper)
•  Royalty-free since 2010
•  Being standardized at OASIS since
2013
Neat MQTT features
•  Wildcards
•  Quality of Service
•  Last Will & Testament
•  Retained Messages
MQTT Features | Wildcards
• The number sign (#) is a wildcard character
that matches any number of levels within a
topic.
• The plus sign (+) is a wildcard character
that matches only one topic level
Examples
mygreenhouse/sensors/#
+/sensors/temperature
MQTT Features | QoS
•  QoS flag allows to control the level of
assurance for delivery you want when
publishing a message to the broker
MQTT Features | QoS 0
•  QoS flag allows to control the level of
assurance for delivery you want when
publishing a message to the broker
•  A message published with QoS=0 will
be received at most once (“fire &
forget”) by subscribed clients
MQTT Features | QoS 1
•  QoS flag allows to control the level of
assurance for delivery you want when
publishing a message to the broker
•  A message published with QoS=1 will
be received at least once
(acknowledged delivery) by subscribed
clients
MQTT Features | QoS 2
•  QoS flag allows to control the level of
assurance for delivery you want when
publishing a message to the broker
•  A message published with QoS=2 will
be received exactly once (assured
delivery) by subscribed clients
MQTT Features | Last Will & Testament
•  IoT devices can come & go on the
network quite often and in a very
unpredictable way
•  Last Will & Testament allows to notify
interested parties to an abnormal
disconnection of a client
•  The Last Will & Testament (if any) is
part of the initial connection message
MQTT Features | Retained messages
•  The Retained flag allows a published
message to be stored on the broker, so
as possible receivers can subscribe
later and still receive the message
Real world example… and demo!
21.3
21.3
Is the MQTT API that simple?
Is the MQTT API that simple?
MqttClient mqttClient = new MqttClient

	 	 	 	(

	 	 	 	 "tcp://iot.eclipse.org:1883",

	 	 	 	 MqttClient.generateClientId()

	 	 	 	);	
	
mqttClient.setCallback(…);	
mqttClient.connect();	
mqttClient.subscribe("myGreenhouse/#");	
	
// the rest of your app
Is the MQTT API that simple?
mqttClient.setCallback(new MqttCallback() {	
	@Override	
	public void messageArrived(String topic, 

	 	 	 	 	 	 	 	 	 	 	MqttMessage message)
	 	 	throws Exception {	
	 	// process received message

	 	// e.g. display temperature value	
	}	
	// ...	
});	
Callback code:
Data viz. w/ MQTT over Websockets
•  Rickshaw is a JavaScript toolkit for
creating interactive time series graphs
•  It’s built on top of d3.js
•  MQTT over Websockets makes it very
easy to feed data into Rickshaw
datasets… perfect for IoT!
– More at http://code.shutterstock.com/rickshaw,
lots of examples to get started
 Cloud	
  by	
  Andrew	
  Lynne	
  from	
  The	
  Noun	
  Project	
  
	
  Thermometer	
  by	
  Lemon	
  Liu	
  from	
  The	
  Noun	
  Project	
  
	
  Fluorescent	
  Light	
  Bulb	
  by	
  Dmitriy	
  Lagunov	
  from	
  The	
  Noun	
  Project	
  
	
  Water	
  by	
  Gilad	
  Fried	
  from	
  The	
  Noun	
  Project	
  
MQTT Network
Ponte broker
CoAP Network
Building… SENSOR NETWORKS (2)
CoAP: Constrained Application Protocol
•  Internet Eng. Task Force standard for
the Internet of Things.
•  Started in 2010!
•  Draft-18 is the final one.
Co: Constrained
•  Simple to encode: targets 8 bits MCU.
•  UDP based, targets low power IP
networks.
•  Two level of QoS: confirmable message
or not.
•  Simple observation mechanism.
CoAP: RESTful things!
•  REST paradigm for things:
– URI: coap://hostname/lamps/12/status
•  HTTP like verbs:
– GET for reads
– POST, PUT, DELETE for mutation
– … but in a compact binary datagram.
Co: Constrained
.0 1 2 3
.0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T | TKL | Code | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1| Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
CoAP: Discoverability
GET coap://hostname/.well-known/core
à Provides a list of all
supported resources!
CoAP: Security
•  DTLS (TLS on UDP Datagrams)
•  Pre-shared key or not
•  DTLS is not really light :(
Device management
Secure, monitor, manage fleet of
deployed devices.
•  Configure the device.
•  Update the firmware (and maybe the
app)
•  Monitor and gather connectivity
statistics
Lightweight M2M
•  A new Open Mobile Alliance standard
•  An OMA-DM successor for M2M
targets
Lightweight M2M: CoAP
•  Built on top of CoAP:
•  Really lighter than OMA-DM or
TRS-069.
LWM2M features
•  Firmware upgrades (in band or thru
HTTP)
•  Device monitoring and configuration
•  Server provisioning (bootstraping)
LWM2M SMS
•  SMS can be used for waking-up the
device.
•  Or for any GET/POST/PUT!
LWM2M: standard objects
– Device
– Server
– Connectivity monitoring
– Connectivity statistics
– Location
– Firmware
The objects have a numerical identifier
(saves bytes…)
LWM2M the URLs
URLs:
/{object}/{instance}/{resource

Ex: 
/6/0 à whole position object (binary TLV)




x 
/6/0/2 
à only the altitude value
DEMO
•  Copper, a Firefox plug-in for CoAP
•  Eclipse Wakaama, a LWM2M client
•  Leshan, a LWM2M server
 Cloud	
  by	
  Andrew	
  Lynne	
  from	
  The	
  Noun	
  Project	
  
	
  Thermometer	
  by	
  Lemon	
  Liu	
  from	
  The	
  Noun	
  Project	
  
	
  Fluorescent	
  Light	
  Bulb	
  by	
  Dmitriy	
  Lagunov	
  from	
  The	
  Noun	
  Project	
  
	
  Water	
  by	
  Gilad	
  Fried	
  from	
  The	
  Noun	
  Project	
  
CoAP Network
LWM2M server
(e.g. Leshan)
wakaama
wakaama
wakaama
Building… DEVICE MANAGEMENT
battery level
avail. memory
…
firmware
reboot
…
Android UI
X10
Serial
 …
Bluetooth
Building… HOME AUTOMATION
In a nutshell
•  MQTT is a very versatile protocol for
building your IoT solution from the
ground up. You should try it!
•  Eclipse IoT has lots of projects, from
basic building blocks to more complete
solutions
•  We have cool Java projects… among
many others! J
Join us at EclipseCon France!
http://eclipsecon.org/france2014
http://iot.eclipse.org
http://iot.eclipse.org 

<benjamin@eclipse.org>
@kartben 
Thanks! Questions?

More Related Content

PDF
What's new at Eclipse IoT - EclipseCon 2014
PDF
M2M, IoT, Device management: one protocol to rule them all? - EclipseCon 2014
PDF
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
PDF
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
PDF
Open-source IoT cookbook
PDF
Building the Internet of Things with Eclipse IoT - JavaLand 2014
PPTX
OMA LwM2M Workshop - Friedhelm Rodermund, OMA LwM2M in the IoT Space
PPTX
CoAP Course for m2m and Internet of Things scenarios
What's new at Eclipse IoT - EclipseCon 2014
M2M, IoT, Device management: one protocol to rule them all? - EclipseCon 2014
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Open-source IoT cookbook
Building the Internet of Things with Eclipse IoT - JavaLand 2014
OMA LwM2M Workshop - Friedhelm Rodermund, OMA LwM2M in the IoT Space
CoAP Course for m2m and Internet of Things scenarios

What's hot (20)

PDF
Project Proposal: Internet of Things uxing XMPP
PPTX
CoAP - Web Protocol for IoT
PDF
Low Latency Mobile Messaging using MQTT
PDF
Introduction MQTT in English
PPTX
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
PDF
Push! - MQTT for the Internet of Things
PDF
JAX 2014 - M2M for Java Developers with MQTT
PDF
IoT Seminar (Jan. 2016) - (7) joaquin prado - oma developer toolkit
PDF
[http://1PU.SH] Building Wireless Sensor Networks with MQTT-SN, RaspberryPi a...
PDF
Messaging for IoT
PDF
An IOT gateway Architecture using an MQTT bundle transport & LTP Convergence ...
PPTX
Container Networking Meetup March 31 2016
PDF
Hands on with CoAP and Californium
PPTX
OMA LwM2M Workshop - Matthias Kovatsch, OMA LwM2M DevKit
PDF
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
PDF
How do Things talk? IoT Application Protocols 101
PPTX
Cloud Networking - Leaving the Physical Behind - Omer Anson - OpenStack Day I...
PDF
MQTT in the Internet of Things | Loop by Litmus Automation
PDF
Interconnecting Neutron and Network Operators' BGP VPNs
PDF
JavaZone 2016 : MQTT and CoAP for the Java Developer
Project Proposal: Internet of Things uxing XMPP
CoAP - Web Protocol for IoT
Low Latency Mobile Messaging using MQTT
Introduction MQTT in English
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
Push! - MQTT for the Internet of Things
JAX 2014 - M2M for Java Developers with MQTT
IoT Seminar (Jan. 2016) - (7) joaquin prado - oma developer toolkit
[http://1PU.SH] Building Wireless Sensor Networks with MQTT-SN, RaspberryPi a...
Messaging for IoT
An IOT gateway Architecture using an MQTT bundle transport & LTP Convergence ...
Container Networking Meetup March 31 2016
Hands on with CoAP and Californium
OMA LwM2M Workshop - Matthias Kovatsch, OMA LwM2M DevKit
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
How do Things talk? IoT Application Protocols 101
Cloud Networking - Leaving the Physical Behind - Omer Anson - OpenStack Day I...
MQTT in the Internet of Things | Loop by Litmus Automation
Interconnecting Neutron and Network Operators' BGP VPNs
JavaZone 2016 : MQTT and CoAP for the Java Developer
Ad

Viewers also liked (8)

PDF
Why Data, Code and Mobile converge in the Open Cloud
PDF
Scaling MQTT With Apache Kafka
PDF
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
PDF
On Digital Transformation - 10 Observations
PDF
The Internet of Things: Are Organizations Ready For A Multi-Trillion Dollar P...
PDF
Eclipse OM2M: Standardized M2M service platform
PDF
Iot Service Layer Evolution
PPTX
IoT Developer Survey 2015
Why Data, Code and Mobile converge in the Open Cloud
Scaling MQTT With Apache Kafka
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
On Digital Transformation - 10 Observations
The Internet of Things: Are Organizations Ready For A Multi-Trillion Dollar P...
Eclipse OM2M: Standardized M2M service platform
Iot Service Layer Evolution
IoT Developer Survey 2015
Ad

Similar to Building the Internet of Things with Eclipse IoT - IoTBE meetup (20)

ODP
Using open source for IoT
PDF
Using Eclipse and Lua for the Internet of Things with Eclipse Koneki, Mihini ...
PDF
Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
PDF
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
PDF
Developer Day 2014 - 6 - open source iot - eclipse foundation
PDF
Open source building blocks for the Internet of Things - Jfokus 2013
PPTX
Securing the Internet of Things
PDF
The Considerations for Internet of Things @ 2017
PDF
Securing IoT Applications
PDF
Open Source Internet of Things 101 – EclipseCon 2016
PDF
DevCon 5 (July 2013) - WebSockets
PDF
Building the Internet of Things with open source and Eclipse IoT projects (Be...
PPTX
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
PDF
Node home automation with Node.js and MQTT
PPTX
Geef Industry 4.0 een boost
PDF
Overview of Eclipse IoT projects - IoT Day Grenoble
PDF
Industrial IoT Mayhem? Java IoT Gateways to the Rescue
PDF
Interoute VDC: Education from the cloud
PPTX
Intro to Project Calico: a pure layer 3 approach to scale-out networking
PDF
Securing Millions of Devices
Using open source for IoT
Using Eclipse and Lua for the Internet of Things with Eclipse Koneki, Mihini ...
Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Developer Day 2014 - 6 - open source iot - eclipse foundation
Open source building blocks for the Internet of Things - Jfokus 2013
Securing the Internet of Things
The Considerations for Internet of Things @ 2017
Securing IoT Applications
Open Source Internet of Things 101 – EclipseCon 2016
DevCon 5 (July 2013) - WebSockets
Building the Internet of Things with open source and Eclipse IoT projects (Be...
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
Node home automation with Node.js and MQTT
Geef Industry 4.0 een boost
Overview of Eclipse IoT projects - IoT Day Grenoble
Industrial IoT Mayhem? Java IoT Gateways to the Rescue
Interoute VDC: Education from the cloud
Intro to Project Calico: a pure layer 3 approach to scale-out networking
Securing Millions of Devices

More from Benjamin Cabé (20)

PDF
IoT Developer Survey 2018
PDF
Open Source for Industry 4.0 – Open IoT Summit NA 2018
PDF
JVM-Con 2017 – Java and IoT, will it blend?
PDF
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
PPTX
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
PDF
On making standards organizations & open source communities work hand in hand
PDF
Building the IoT - Coding Serbia 2015
PDF
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
PDF
Manage all the things, small and big, with open source LwM2M implementations ...
PDF
End-to-end IoT solutions with Java and the Eclipse IoT stack
PDF
End-to-end IoT solutions with Java and Eclipse IoT
PDF
Open (source) API for the Internet of Things - APIdays 2013
PDF
A guided tour of Eclipse M2M - EclipseCon Europe 2013
PDF
Leveraging Android for the Internet of Things with Eclipse M2M
PDF
Open Source building blocks for the IoT/M2M market - M2M Innovation World Con...
PDF
Open source Tools and Frameworks for M2M - Sierra Wireless Developer Days
PDF
Using Eclipse and Lua for the Internet of Things - JAX2013
PDF
JAX2013 Keynote - When open-source enables the Internet of Things
PDF
Building an open community: feedback from the M2M trenches - EclipseCon 2013
PDF
How an OSS foundation can help execute your governance
IoT Developer Survey 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018
JVM-Con 2017 – Java and IoT, will it blend?
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
On making standards organizations & open source communities work hand in hand
Building the IoT - Coding Serbia 2015
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Manage all the things, small and big, with open source LwM2M implementations ...
End-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and Eclipse IoT
Open (source) API for the Internet of Things - APIdays 2013
A guided tour of Eclipse M2M - EclipseCon Europe 2013
Leveraging Android for the Internet of Things with Eclipse M2M
Open Source building blocks for the IoT/M2M market - M2M Innovation World Con...
Open source Tools and Frameworks for M2M - Sierra Wireless Developer Days
Using Eclipse and Lua for the Internet of Things - JAX2013
JAX2013 Keynote - When open-source enables the Internet of Things
Building an open community: feedback from the M2M trenches - EclipseCon 2013
How an OSS foundation can help execute your governance

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Cloud computing and distributed systems.
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Approach and Philosophy of On baking technology
PDF
KodekX | Application Modernization Development
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Modernizing your data center with Dell and AMD
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Cloud computing and distributed systems.
Per capita expenditure prediction using model stacking based on satellite ima...
Machine learning based COVID-19 study performance prediction
Chapter 3 Spatial Domain Image Processing.pdf
Electronic commerce courselecture one. Pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Unlocking AI with Model Context Protocol (MCP)
Understanding_Digital_Forensics_Presentation.pptx
Encapsulation_ Review paper, used for researhc scholars
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Approach and Philosophy of On baking technology
KodekX | Application Modernization Development
NewMind AI Weekly Chronicles - August'25 Week I
Modernizing your data center with Dell and AMD
Diabetes mellitus diagnosis method based random forest with bat algorithm
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?

Building the Internet of Things with Eclipse IoT - IoTBE meetup

  • 1. BUILDING THE INTERNET OF THINGS WITH ECLIPSE IOT Benjamin Cabé, Eclipse Foundation @kartben "Kortrijk Begijnhof and Our Lady's" by Michael O'Donnabhain
  • 3. ❝Technology that supports wired or wireless communication between devices
  • 13.  Hand  by  Castor  &  Pollux  from  The  Noun  Project   AT FIRST THEY WERE THREE…
  • 14.  Hand  by  Castor  &  Pollux  from  The  Noun  Project   AT FIRST THEY WERE THREE…
  • 15.  Hand  by  Castor  &  Pollux  from  The  Noun  Project   AT FIRST THEY WERE THREE…
  • 16.  Hand  by  Castor  &  Pollux  from  The  Noun  Project   AT FIRST THEY WERE THREE…
  • 17. Paho provides client implementations of the MQTT protocol. Mihini is an embedded Lua runtime providing HW abstraction and other services. Koneki provides tools for embedded Lua developers.
  • 18. Eclipse SCADA is a complete Java/ OSGi-based SCADA system (communication, monitoring, GUI, …) Kura is a Java/OSGi-based M2M container for gateways. Has support for Modbus, CANbus, MQTT, … Mosquitto is a lightweight server implementation of the MQTT and MQTT-SN protocols, written in C.
  • 19. Ponte bridges M2M/IoT (MQTT, CoAP) protocols to the Web. SmartHome provides a complete set of services for home automation gateways. OM2M implements the ETSI M2M standard. (code pending)
  • 20. Californium is an implementation of the CoAP protocol written in Java. Includes DTLS for security. Wakaama is an implementation of LWM2M written in C. Krikkit is a rules system for programming edge devices just like you’d configure a router Wakaama Krikkit (code pending) (code pending) (code pending)
  • 21. Concierge is a lightweight implementation of OSGi Core R5. Your project? J Concierge We need to talk! ;-)
  • 22. I often get asked…
  • 23. WHAT IS ZE BEST LANGUAGE FOR IOT?!? I often get asked…
  • 24. ANSWER: It depends! J For embedded systems…   Codevs.Configuration Constrained micro-controllers vs. Smart gateways C Javascript Lua Java/OSGi
  • 25. ANSWER: It depends! J Infrastructurevs.App.development Communication enablement vs. Information systems On the server side…   C Javascript Java/OSGi
  • 27. BUILDING BLOCKS FOR IOT … for building what?
  • 28.  Cloud  by  Andrew  Lynne  from  The  Noun  Project    Thermometer  by  Lemon  Liu  from  The  Noun  Project    Fluorescent  Light  Bulb  by  Dmitriy  Lagunov  from  The  Noun  Project    Water  by  Gilad  Fried  from  The  Noun  Project   MQTT Network Mosquitto broker Building… SENSOR NETWORKS
  • 30. MQTT?
  • 31. MQTT? M is for Messaging… (mmmmaybe!) Q is not for Queue ☺︎ Publish/Subscribe protocol Lightweight (bandwidth, battery, …)
  • 33. MQTT history •  … it’s not new! •  Invented in 1999 (Andy Stanford- Clark, Arlen Nipper) •  Royalty-free since 2010 •  Being standardized at OASIS since 2013
  • 34. Neat MQTT features •  Wildcards •  Quality of Service •  Last Will & Testament •  Retained Messages
  • 35. MQTT Features | Wildcards • The number sign (#) is a wildcard character that matches any number of levels within a topic. • The plus sign (+) is a wildcard character that matches only one topic level Examples mygreenhouse/sensors/# +/sensors/temperature
  • 36. MQTT Features | QoS •  QoS flag allows to control the level of assurance for delivery you want when publishing a message to the broker
  • 37. MQTT Features | QoS 0 •  QoS flag allows to control the level of assurance for delivery you want when publishing a message to the broker •  A message published with QoS=0 will be received at most once (“fire & forget”) by subscribed clients
  • 38. MQTT Features | QoS 1 •  QoS flag allows to control the level of assurance for delivery you want when publishing a message to the broker •  A message published with QoS=1 will be received at least once (acknowledged delivery) by subscribed clients
  • 39. MQTT Features | QoS 2 •  QoS flag allows to control the level of assurance for delivery you want when publishing a message to the broker •  A message published with QoS=2 will be received exactly once (assured delivery) by subscribed clients
  • 40. MQTT Features | Last Will & Testament •  IoT devices can come & go on the network quite often and in a very unpredictable way •  Last Will & Testament allows to notify interested parties to an abnormal disconnection of a client •  The Last Will & Testament (if any) is part of the initial connection message
  • 41. MQTT Features | Retained messages •  The Retained flag allows a published message to be stored on the broker, so as possible receivers can subscribe later and still receive the message
  • 44. Is the MQTT API that simple?
  • 45. Is the MQTT API that simple? MqttClient mqttClient = new MqttClient
 (
 "tcp://iot.eclipse.org:1883",
 MqttClient.generateClientId()
 ); mqttClient.setCallback(…); mqttClient.connect(); mqttClient.subscribe("myGreenhouse/#"); // the rest of your app
  • 46. Is the MQTT API that simple? mqttClient.setCallback(new MqttCallback() { @Override public void messageArrived(String topic, 
 MqttMessage message) throws Exception { // process received message
 // e.g. display temperature value } // ... }); Callback code:
  • 47. Data viz. w/ MQTT over Websockets •  Rickshaw is a JavaScript toolkit for creating interactive time series graphs •  It’s built on top of d3.js •  MQTT over Websockets makes it very easy to feed data into Rickshaw datasets… perfect for IoT! – More at http://code.shutterstock.com/rickshaw, lots of examples to get started
  • 48.  Cloud  by  Andrew  Lynne  from  The  Noun  Project    Thermometer  by  Lemon  Liu  from  The  Noun  Project    Fluorescent  Light  Bulb  by  Dmitriy  Lagunov  from  The  Noun  Project    Water  by  Gilad  Fried  from  The  Noun  Project   MQTT Network Ponte broker CoAP Network Building… SENSOR NETWORKS (2)
  • 49. CoAP: Constrained Application Protocol •  Internet Eng. Task Force standard for the Internet of Things. •  Started in 2010! •  Draft-18 is the final one.
  • 50. Co: Constrained •  Simple to encode: targets 8 bits MCU. •  UDP based, targets low power IP networks. •  Two level of QoS: confirmable message or not. •  Simple observation mechanism.
  • 51. CoAP: RESTful things! •  REST paradigm for things: – URI: coap://hostname/lamps/12/status •  HTTP like verbs: – GET for reads – POST, PUT, DELETE for mutation – … but in a compact binary datagram.
  • 52. Co: Constrained .0 1 2 3 .0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ver| T | TKL | Code | Message ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Token (if any, TKL bytes) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options (if any) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1 1 1 1 1 1 1 1| Payload (if any) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 54. CoAP: Security •  DTLS (TLS on UDP Datagrams) •  Pre-shared key or not •  DTLS is not really light :(
  • 55. Device management Secure, monitor, manage fleet of deployed devices. •  Configure the device. •  Update the firmware (and maybe the app) •  Monitor and gather connectivity statistics
  • 56. Lightweight M2M •  A new Open Mobile Alliance standard •  An OMA-DM successor for M2M targets
  • 57. Lightweight M2M: CoAP •  Built on top of CoAP: •  Really lighter than OMA-DM or TRS-069.
  • 58. LWM2M features •  Firmware upgrades (in band or thru HTTP) •  Device monitoring and configuration •  Server provisioning (bootstraping)
  • 59. LWM2M SMS •  SMS can be used for waking-up the device. •  Or for any GET/POST/PUT!
  • 60. LWM2M: standard objects – Device – Server – Connectivity monitoring – Connectivity statistics – Location – Firmware The objects have a numerical identifier (saves bytes…)
  • 61. LWM2M the URLs URLs: /{object}/{instance}/{resource Ex: /6/0 à whole position object (binary TLV) x /6/0/2 à only the altitude value
  • 62. DEMO •  Copper, a Firefox plug-in for CoAP •  Eclipse Wakaama, a LWM2M client •  Leshan, a LWM2M server
  • 63.  Cloud  by  Andrew  Lynne  from  The  Noun  Project    Thermometer  by  Lemon  Liu  from  The  Noun  Project    Fluorescent  Light  Bulb  by  Dmitriy  Lagunov  from  The  Noun  Project    Water  by  Gilad  Fried  from  The  Noun  Project   CoAP Network LWM2M server (e.g. Leshan) wakaama wakaama wakaama Building… DEVICE MANAGEMENT battery level avail. memory … firmware reboot …
  • 65. In a nutshell •  MQTT is a very versatile protocol for building your IoT solution from the ground up. You should try it! •  Eclipse IoT has lots of projects, from basic building blocks to more complete solutions •  We have cool Java projects… among many others! J
  • 66. Join us at EclipseCon France! http://eclipsecon.org/france2014