Top Banner
M2M for Java Developers MQTT with Eclipse Paho
87

Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Sep 09, 2014

Download

Technology

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

M2M for Java DevelopersMQTT with Eclipse Paho

Page 2: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Dominik Obermaier@dobermai

excited about M2Mloves OSS

passionateArchitect & Maker Co-Founder and

CTO at dc-square helps standardizing

MQTT at OASISHiveMQ architect

Page 3: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

M2M?

Page 4: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

TECHNOLOGY THAT SUPPORTS WIRED

OR WIRELESS COMMUNICATION

BETWEEN DEVICES

Page 5: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Why should

we care?

Page 6: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 7: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 8: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 9: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 10: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 11: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Which protocol

?

Page 12: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

HTTP?Request / Response

Verbose

Polling instead of Push

No quality of service

How to get notified if clients die?

Stateless

Page 13: Eclipse Democamps 2013 - M2M for Java Developers with MQTT
Page 14: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Why MQTT?✓ Simple

✓ Efficient

✓ Publish / Subscribe

✓ Quality of Service Levels

✓ Last Will and Testament

✓ Designed for unreliable networks

Page 15: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 16: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Google Trends

Page 17: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

1999 2010 2013 2014

MQTT inventedby IBM and

Arcom (Eurotech)royalty free OASIS TC

formedMQTT becomes Standard

History

Page 18: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Publish / Subscribe

Page 19: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

Page 20: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT TopicsMQTT/is/awesome MQTT/is/fantastic

Bacon/is/awesome

MQTT/looks/fantasticMQTT/looks/fantastic

Page 21: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 22: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 23: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 24: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 25: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 26: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 27: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 28: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 29: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 30: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 31: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 32: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 33: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 34: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 35: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 36: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 37: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 38: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 39: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 40: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 41: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 42: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 43: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 44: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 45: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 46: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 47: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Topic Level Wilcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 48: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 49: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 50: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 51: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 52: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 53: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 54: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 55: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 56: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 57: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 58: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 59: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 60: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 61: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 62: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 63: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 64: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 65: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 66: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

MQTT Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 67: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

Page 68: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

Page 69: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

Page 70: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

Page 71: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

Page 72: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

Page 73: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

+ others

Page 74: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Broker Implementations

+ othersExtensive list of brokers available at http://mqtt.org/wiki/doku.php/brokers

Page 75: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

OK, got it.

How to start

hacking?

Page 76: Eclipse Democamps 2013 - M2M for Java Developers with MQTT
Page 77: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 78: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 79: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Java!

Page 80: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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

Page 81: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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);

}

Page 82: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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")));

}}

Page 83: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

DEMO!

Page 84: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Other Eclipse M2M Projects

Page 85: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

Other Eclipse M2M Projects

+ others

Page 86: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

THANKYOU!

Page 87: Eclipse Democamps 2013 - M2M for Java Developers with MQTT

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