MQTT - Communication in the Internet of Things

  • View
    1.027

  • Download
    6

  • Category

    Internet

Preview:

DESCRIPTION

Das Internet der Dinge (IoT) und Maschine-zu-Maschine Kommunikation (M2M) ist momentan in aller Munde. Studien zeigen das es bis 2020 50 Milliarden Geräte sein werden, die über das Internet miteinander kommunizieren und jede Sekunde kommen 80 neue Geräte hinzu. Momentan dominierende Protokolle wie HTTP/REST sind nur bedingt geeignet, um die Anforderungen abzudecken. Herausforderungen sind zum Beispiel das Senden von Nachrichten von einem Gerät zu vielen, Skalierung der Anzahl an Geräte, Push Notifications und Sicherstellung der korrekten Übermittlung. Das Publish/Subscribe-Protokoll MQTT erfüllt diese Anforderungen und wurde für mobile Geräte entwickelt. Es wird beispielsweise von Facebook für den Messenger eingesetzt. Dieser Vortrag gibt eine Einführung in MQTT sowie die Implementierung Eclipse Paho und zeigt anhand von Beispielquellcode und einer Livedemo, welche Probleme man damit lösen kann. - See more at: http://www.developer-week.de/History/2014/Programm/Veranstaltung/(event)/14178#sthash.ioXw2aoi.dpuf

Citation preview

#dwx14

1

MQTT

Christian Götz, dc-square

- Kommunikation im Internet der Dinge

Hi, I’m Christian Götz

author & speakerbuilding solutions

CEO & co-founder

developer@goetzchr

IoT?

GPSGPS

GPSGPS

GPSGPS

GPS

Detected: Traffic Jam!

GPS

GPS

GPS

THINGS?

Consumer Goods

Industry Machines

objects in our everyday life

logistics has a lot of things...

Internet of Things?

Technology that connects Devices

over wired or wireless communication

why should I care ?

6,5 per person

DEVICES outnumber people

0,0

15,0

30,0

45,0

60,0

2003 2010 2015 2020

50,0

25,0

12,5

0,5

6,0

19,5

33,0

46,5

60,0

2003 2010 2015 2020

7,67,36,86,3

250 new every sec

http://blogs.cisco.com/news/cisco-connections-counter/

http://www.cisco.com/web/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf

2020in billions

people

devices

finally a use case for IPv6 ;)

Open Hardware is everywhere

simple

accessible

affordable

How do things talk?

17

HTTP/REST

used since 1991

widely known and adapted

request/response

point 2 point

HTTP 2.0 - still work in progress

Challenges

Constrained devices

Bi-directional

Scalability

Unreliable Networks

Push Messaging

Security

IoTHTTP

IoT challenges

CoAPConstrained Application Protocol? HTTP

MQTT is a good fit

I’ll tell you why

Messaging Protocolsimple

on top of TCP

Pub/Subbinary

minimal overheaddata-agnostic

unreliable networks

Subscribe

Publish

Temperaturfühler MQTT-Broker

Laptop

Mobiles Endgerät

publish: “21°C“publish: “21°C“

publish: “21°C“

subscribe

subscribe

1999 2010 2013 2014

Arlen Nipper & Andy Stanford-Clark

invent MQTTroyalty free OASIS TC

formedMQTT becomes Standard

MQTT history

London

BigBen

London Eye

people

temp

people

temp

/

/

/

MQTT topics 101

/ /

London

BigBen

London Eye

people

temp

people

temp

/

/

/

The temperature of Big Ben London/BigBen/temp

MQTT topics 101

/ /

London

BigBen

London Eye

people

temp

people

temp

/

/

All temperature values London/+/temp

/

MQTT topics 101

/ /

London

BigBen

London Eye

people

temp

people

temp

/

/

All from the London Eye London/LondonEye/#

/

MQTT topics 101

/ /

London

BigBen

London Eye

people

temp

people

temp

/

/

All messages #

/

MQTT topics 101

/ /

Push instead of Poll

Minimal Bandwidth is important

Unreliable networks

Constrained devices

Low Latency

MQTT use cases

Quality of Service

Retained Messages Last Will and Testament

Persistent Sessions Heartbeats

Topic Wildcards

MQTT features

MQTT features Quality of Services

QoS 1

QoS 2

QoS 0B

B

B

MQTT features Last Will and Testament

BConnect

LWT

device123/status: „offline“

Bdropped

device123/status: „offline“

MQTT features w/o Retained Messages

Bdevice1/temp: „23,0“

device1

every 5 min

device2

device1/temp: „23,0“

Delay <= 5min

MQTT features Retained Messages

Bdevice1/temp: „23,0“ R

device1

every 5 min

device2

device1/temp: „23,0“ R

No Delay!

stores msg per topic

MQTT features Persistent Sessions

BConnect

Subscribedevice/+/status

device/12/status: „1“

1st

BRe-Connect

device/12/status: „1“2nd

MQTT-SN Overview

Gateway MQTT-Broker

MQTT-SN MQTT / -SN

• UDP instead of TCP • Topic is just an ID (Preregister/Register) • Sleeping Clients • Different types of Gateways • Discovery Mechanisms

Devices

B

MQTT over Websockets

MQTT Security

Protocol

Username/Password

Transport

TLS, client certificate authentification

Broker

fine-grained authentication, 3rd party integration

Broker implementations

MQTT Broker Mosquitto

Open Source

Ideal for constraint devices Supports Bridging

Written in C

MQTT Broker HiveMQ

High performance broker

Open Plugin System for Java Clustering

Bridging Scalable to > 100.000 connections

Native Websocket support

MQTT Broker

+ othershttp://mqtt.org/wiki/doku.php/brokers

MQTT Broker Public Broker

www.mqttdashboard.com

Real World Use Cases

MQTT real world usage

https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/

10150259350998920

Getting started

MQTT Implementation

Open Source

“Reference Implementation”

Many languages: Java, Javascript, Lua, C, C++, Go, Python

Active Community

JS Library uses MQTT over Websockets

Paho facts

MqttClient client = new MqttClient( "tcp://localhost:1883", //URI "publisher", //Client ID new MemoryPersistence()); //Persistence

Paho Init Connection

MqttClient client = new MqttClient(...); !MqttConnectOptions connOptions = new MqttConnectOptions(); !connOptions.setKeepAliveInterval(120); connOptions.setWill("my/status", "offline".getBytes(), 2, true); connOptions.setCleanSession(false); connOptions.setUserName("user"); connOptions.setPassword(„pass".toCharArray()); !client.connect(connOptions);

Paho Init Connection

!!client.publish("my/topic/123",//topic "Hello!".getBytes(), //message

1, //QoS false); //retained !!

client.disconnect();

Paho Synchronous API

final MqttClient client = new MqttClient(...); client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) {} !@Override public void messageArrived(String topic, MqttMessage message)throws Exception { System.out.println(new String(message.getPayload())); } !@Override public void deliveryComplete(IMqttDeliveryToken token) {} }); !client.connect(); client.subscribe("#");

Paho Synchronous API

MqttAsyncClient client = new MqttAsyncClient(...); client.connect(null, new IMqttActionListener() { @Override public void onSuccess(IMqttToken asyncActionToken) { try { client.publish(...); } catch (MqttException e) {}

} @Override public void onFailure(IMqttToken asyncActionToken, Throwable exception) {} }); !client.disconnect();

Paho Asynchronous API

MQTT Implementation

http://m2mqtt.wordpress.com/download/

MQTT Library for .NET

It’s ShowtimeDemo

Demo from device to the web with MQTT

https://github.com/dc-square/mqtt-with-paho-eclipsecon2013

available on

Demo Under the hood

Danke! Thanks!

@goetzchr

Recommended