m2m for java developers: mqtt with eclipse paho - eclipsecon europe 2013
DESCRIPTION
Talk from the EclipseCon 2013. Mobile devices like smartphones and tablet computers became an integral part of our modern world and single-board computers like Raspberry Pi are cheaper today than at any time before. Simple and open Machine-to-Machine (M2M) protocols like MQTT enable these devices to communicate in an efficient manner, even in scenarios with unreliable und instable networks. This talk shows how Eclipse Paho - an Eclipse umbrella project for M2M protocols - can be utilized for professional and personal projects to build efficient and scalable solutions for (mobile) devices.TRANSCRIPT
M2M for Java DevelopersMQTT with Eclipse Paho
Dominik Obermaier@dobermai
excited about M2Mloves OSS
passionateArchitect & Maker Co-Founder and
CTO at dc-square
likes Open Source Hardware
Dominik Obermaier@dobermai
excited about M2Mloves OSS
passionateArchitect & Maker Co-Founder and
CTO at dc-square
likes Open Source HardwareK Who not?!?
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
Things?
Another revolution?
Screenshot Taken from Oracle JavaOne Strategic Keynote 2013
IoT
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
Publish / Subscribe
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
Noooo! Sounds like programming in C!
Java!
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
Code! public void start() throws Exception { final String clientId = "eclipsecon_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✓ Scared Cat Picture by http://www.flickr.com/photos/
dat-pics/
✓ Thanks Vincent Le Moign for the awesome Icon Set
✓ Rest of pictures licensed from different people from 500px.com
✓ MQTT Logo by http://www.mqtt.org
✓ Paho Logo from http://wiki.eclipse.org/Paho/Branding