Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Preview:

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 efficient

Citation preview

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

Recommended