eclipse democamps 2013 - m2m for java developers with mqtt
DESCRIPTION
I gave this talk at Eclipse Democamp Munich and Stuttgart. This presentation explains the benefits of MQTT, why HTTP isn't enough for the Internet of Things and Machine-to-Machine communication. Last but not least it shows how to use the Eclipse Paho Java library for efficientTRANSCRIPT
M2M for Java DevelopersMQTT with Eclipse Paho
Dominik Obermaier@dobermai
excited about M2Mloves OSS
passionateArchitect & Maker Co-Founder and
CTO at dc-square helps standardizing
MQTT at OASISHiveMQ architect
M2M?
TECHNOLOGY THAT SUPPORTS WIRED
OR WIRELESS COMMUNICATION
BETWEEN DEVICES
Why should
we care?
2010 2015 2020
~6.909.000.000 ~7.302.000.000 ~7.675.000.000
~12.500.000.000 ~25.000.000.000 ~50.000.000.000
[1]Source: http://www.un.org/esa/population/publications/wpp2008/wpp2008_highlights.pdf
[1]
[2]Source: http://share.cisco.com/internet-of-things.html
[2]
“Things” in the Internet
0
12,500,000,000
25,000,000,000
37,500,000,000
50,000,000,000
2010 2015 2020
People Things
“Things” in the Internet
0
12,500,000,000
25,000,000,000
37,500,000,000
50,000,000,000
2010 2015 2020
People Things
“Things” in the Internet
1.8x
0
12,500,000,000
25,000,000,000
37,500,000,000
50,000,000,000
2010 2015 2020
People Things
“Things” in the Internet
1.8x
3.4x
0
12,500,000,000
25,000,000,000
37,500,000,000
50,000,000,000
2010 2015 2020
People Things
“Things” in the Internet
1.8x
3.4x
6.5x
Which protocol
?
HTTP?Request / Response
Verbose
Polling instead of Push
No quality of service
How to get notified if clients die?
Stateless
Why MQTT?✓ Simple
✓ Efficient
✓ Publish / Subscribe
✓ Quality of Service Levels
✓ Last Will and Testament
✓ Designed for unreliable networks
Why MQTT?✓ Simple
✓ Efficient
✓ Publish / Subscribe
✓ Quality of Service Levels
✓ Last Will and Testament
✓ Designed for unreliable networksK Wireless? Yep, then it probably is unreliable
Google Trends
1999 2010 2013 2014
MQTT inventedby IBM and
Arcom (Eurotech)royalty free OASIS TC
formedMQTT becomes Standard
History
Publish / Subscribe
MQTT Topics
MQTT TopicsMQTT/is/awesome MQTT/is/fantastic
Bacon/is/awesome
MQTT/looks/fantasticMQTT/looks/fantastic
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
MQTT/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
MQTT/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
MQTT/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
MQTT/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
MQTT/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
MQTT/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
Bacon/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
Bacon/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
Bacon/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
Bacon/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
Bacon/is/awesome
MQTT Topics
MQTT Bacon
is
awesome
looks
fantastic
Bacon/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/awesome
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Topic Level Wilcard
MQTT Bacon
is
awesome
looks
fantastic
+/is/+
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
MQTT/#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
MQTT Wildcard
MQTT Bacon
is
awesome
looks
fantastic
#
Broker Implementations
Broker Implementations
Broker Implementations
Broker Implementations
Broker Implementations
Broker Implementations
Broker Implementations
+ others
Broker Implementations
+ othersExtensive list of brokers available at http://mqtt.org/wiki/doku.php/brokers
OK, got it.
How to start
hacking?
What is Paho?
✓ Scalable Open Source Implementations of M2M standard protocols
✓ Focus on MQTT
✓ Implementations in Java, Javascript, Lua, C, C++ and Python
✓ Eclipse Incubator
What is Paho?
✓ Scalable Open Source Implementations of M2M standard protocols
✓ Focus on MQTT
✓ Implementations in Java, Javascript, Lua, C, C++ and Python
✓ Eclipse Incubator
KRead: What is Paho at the moment
Java!
11/2011 03/2012 04/201311/2012 08/2013
contribution of IBM announced at EclipseCon Europe
first versionin GIT
Releasev0.1
Releasev0.2
Releasev0.4.0
Paho - Java
Code! public void start() throws Exception { final String clientId = "democamp_sub";
final MqttClient mqttClient = new MqttClient(BROKER_URL, clientId, new MemoryPersistence());
mqttClient.setCallback(new SubscribeCallback(mqttClient));
mqttClient.connect();
mqttClient.subscribe(TOPIC_SUBSCRIPTION, QUALITY_OF_SERVICE_LEVEL);
}
Moar Code!public class SubscribeCallback implements MqttCallback {
@Override public void connectionLost(Throwable cause) {}
@Override public void deliveryComplete(MqttDeliveryToken token) {}
@Override public void messageArrived(MqttTopic topic,
MqttMessage message) throws Exception {
System.out.println( "Message arrived. Topic: "
topic.getName() + ", QoS: " + message.getQos() + ", message: " + new String(message.getPayload(),Charset.forName("UTF-8")));
}}
DEMO!
Other Eclipse M2M Projects
Other Eclipse M2M Projects
+ others
THANKYOU!
Credits
✓ Pictures licensed from different people from 500px.com and depositphotos.com
✓ MQTT Logo by http://www.mqtt.org
✓ Paho Logo from http://wiki.eclipse.org/Paho/Branding