eclipse democamps 2013 - m2m for java developers with mqtt

87
M2M for Java Developers MQTT with Eclipse Paho

Upload: dominik-obermaier

Post on 09-Sep-2014

16 views

Category:

Technology


0 download

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

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