Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

115
PUB / SUB for the masses An Introduction to MQTT #IotCon Workshop

description

Sprechen Sie MQTT? Dieser Workshop zeigt, was es mit dem schlanken und leichtgewichtigen IoT Protokoll auf sich hat und warum es sich zu einem Standardprotokoll für das Internet of Things etabliert hat. Lernen Sie, warum Pub/Sub für das Internet of Things skaliert und warum HTTP nicht der Weisheit letzter Schluss für alle IoT-Kommunikation ist. Neben einigen Live-Demos sowie einer Einführung in die Funktionsweise des schlanken Publish/Subscribe-Protokolls bekommen Sie Einblick in das junge und sehr aktive Ökosystem rund um MQTT. Am Ende des Workshops wird ein Java basierter MQTT Todesstern Simulator inklusive Dashboard mit "MQTT over websocket" support entstehen.

Transcript of Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Page 1: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

PUB / SUB for the masses

An Introduction to MQTT

#IotCon Workshop

Page 2: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

2

EINFÜHRUNG - VORSTELLUNG

Christian Götz Dominik Obermaier

CEO @ dc-square CTO @ dc-square

@dobermai@goetzchr

Page 3: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

3

EINFÜHRUNG - AGENDA

Kurze Einführung in MQTT

Überblick über das MQTT Ökosystem

MQTT Clients & Broker

Hands-on MQTT Testen und “Spielen” mit MQTT

Zusammenfassung & Ausblick Ende

Entwicklung eines MQTT Simulators Mit Java und Paho

Entwicklung einer MQTT Webapplication

MQTT über Websockets

Q&ABeginn

Page 4: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

4

EINFÜHRUNG - LERNZIELE

Was werden wir bei diesem Workshop

lernen?

Was ist MQTT?

Warum nicht immer HTTP?

MQTT Broker?

MQTT Clients?

Wie funktioniert MQTT im Detail?Wie baue ich einen Software-Deathstar ;-)

Umsetzung verschiedener MQTT Patterns

Wie funktioniert MQTT für Webseiten?

Was ist “MQTT over Websockets?”

Wie entwickle ich einen MQTT Client in Java?

Page 5: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

5

EINFÜHRUNG - ANWENDUNGSFALL

Unser Anwendungsfall: Deathstar SimulalatorImplementierung eines MQTT Todesstern Simulators und eines Web-Dashboards

zur Anzeige von Daten und Steuerung des Simulators

Page 6: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

6

EINFÜHRUNG - BENÖTIGTE SOFTWARE

Benötigte Software

HiveMQ MQTT Broker

MQTT Client !

MQTT.fx mosqutto Tools

HiveMQ Web Client

IDE / Editor !

IntellIj IDEA Eclipse

Netbeans vi

Git

Page 7: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

7

Wer benötigt noch diese Software?

EINFÜHRUNG - BENÖTIGTE SOFTWARE

Page 8: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Einführung in MQTTÜberblick und wichtigste

Features und Eigenschaften

Page 9: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

9

Unzuverlässige Netzwerke

Skalierbarkeit

Bidirektionale Kommunikation

Constrained Devices

Security

Push Messaging

Herausforderungen im IoT

MQTT - HERAUSFORDERUNGEN

Page 10: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

10

Bandbreiteneffizient

Skalierbar

Standardisiert

Offen

Datenagnostisch

Sowohl für schwache Hardware

als auch Server geeignet

Anforderungen an ein IoT Protokoll

MQTT - IOT PROTOKOLL ANFORDERUNGEN

Page 11: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

11

Sehr verbreitet

Request / Response

Seit 1991 verbreitet

Dokumentenzentriert

HTTP?

MQTT - HTTP?

Page 12: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

12

Viel Overhead

Polling statt Push

Kein Quality of Service

Stateless

Wie merken wir, dass ein Client offline ist?

Warum nicht immer HTTP?

MQTT - HTTP?

Page 13: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

13

MQTT - Messaging für das Internet der Dinge

Einfach

Publish / Subscribe

Binär

Messaging Protokoll

Minimaler Overhead

Datenagnostisch

MQTT - MESSAGING FÜR DAS INTERNET DER DINGE

Page 14: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

14

Push statt Pull

Zuverlässigkeit auch bei unzuverlässigen Netzwerken

Constrained Devices

Geringe Bandbreite und hohe Latenz

Enterprise -> Mobile

Anwendungsfälle

MQTT - ANWENDUNGSFÄLLE

Page 15: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

15

3 QoS Stufen

Retained Messages

Topic Wildcards

Last Will and Testament

Persistent Sessions

Heartbeats

Features

MQTT - FEATURES

Page 16: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Was ist Publish / Subscribe Messaging?

Page 17: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

17

Pub / Sub

MQTT - PUB / SUB

Page 18: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

18

Hierarchisch

Wildcards (+ und #)

Queuing (QoS > 0)

Sehr Leichtgewichtig

Dynamisch

MQTT Topics

MQTT - MQTT TOPICS

Page 19: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Topic Matching Beispiele

Page 20: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

20

deathstar

superlaser

greenhouse

status

usages

humidity

temp

/ /

MQTT - MQTT TOPICS

Page 21: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

21

deathstar

superlaser

greenhouse

status

usages

humidity

temp

/ /

Deathstar superlaser status: deathstar/superlaser/status

MQTT - MQTT TOPICS

Page 22: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

22

deathstar

superlaser

greenhouse

status

usages

humidity

temp

/ /

All Data from Greenhouse: deathstar/greenhouse/#

MQTT - MQTT TOPICS

Page 23: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

23

deathstar

superlaser

greenhouse

status

usages

humidity

temp

/ /

All Data from deathstar: deathstar/#

MQTT - MQTT TOPICS

Page 24: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

24

Username / Password

Payload Verschlüsselung

TLS

Client Certificate Authentication

Permissions

MQTT Security

MQTT - MQTT SECURITY

Page 25: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

25

MQTT - Historische Entwicklung

1999 2010 2013 2014

Arlen Nipper (Arcom) & Andy Stanford-Clark (IBM)

entwickeln MQTTfreie Verfügbarkeit

OASIS TC MQTT 3.1.1 Release

MQTT - GESCHICHTE

Page 26: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

26

1. Weitgehend abwärtskompatibel

2. Effizientere Header

3. Client-ID Längenrestriktion entfernt

4. Connect ohne Client-ID

5. Persistent Present Flag

6. Fehlercode bei Subscriptions

7. Direktes Publishen nach dem Verbinden

8. MQTT over Websockets spezifiziert

9. Alle Strings sind nun UTF-8

10.Protokollname nun offiziell “MQTT”

!

MQTT 3.1.1 Verbesserungen zu MQTT 3.1

MQTT - MQTT 3.1.1

Page 27: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Überblick über das MQTT Ökosystem

MQTT Clients und Broker

Page 28: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

MQTT Client BibliothekenÜberblick über die populärsten Alternativen

Page 29: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Java

Page 30: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

30

Open Source

“Referenzimplementierung”

Aktive Community

Sync und Async API

Lauffähig auf JavaME

Eclipse Paho

CLIENTS - PAHO

Page 31: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

31

Open Source

3 API Styles

Sehr performant

Basiert auf HawtIO

Verfügbar in Maven Central

Fusesource MQTT Client

CLIENTS - FUSESOURCE

Page 32: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Javascript

Page 33: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

33

Open Source

“Referenzimplementierung”

Basierend auf Websockets

Sehr gut dokumentiert

keine Abhängigkeiten

Eclipse Paho

CLIENTS - PAHO

Page 34: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

34

Open Source

Node.js Bibliothek

Verfügbar in npm

MQTT.js

CLIENTS - MQTT.JS

Page 35: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

C

Page 36: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

36

Open Source

“Referenzimplementierung”

Auch für C++ verfügbar

Verfügbar für POSIX / Windowsund Embedded

Eclipse Paho

CLIENTS - PAHO

Page 37: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Sonstige

Page 38: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

38

Paho (Python, Go, Lua)

M2Mqtt (C#)

ruby-mqtt (Ruby)

Arduino Client

MQTTKit (Objective C)

Mosquitto-PHP (PHP)

Sonstige Clients

CLIENTS - SONSTIGES

Page 39: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

MQTT Client AppsÜberblick über die gängigsten Tools

Page 40: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

40

Kommandozeilentool

Sehr viele Features

Debug Modus

Einbettbar (libmosquitto)

Mosquitto_Pub / Mosquitto_Sub

CLIENTS - MOSQUITTO

Page 41: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

41

Betriebssystemunabhängig

Benötigt aktivierte Websockets

Publish / Subscribe

Real-Time Updates

HiveMQ Web Client

CLIENTS - HIVEMQ WEB CLIENT

Page 42: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

42

JavaFX

Mit nativen Wrapper für allegängigen Betriebssysteme

Scripting Support

Broker Status ($SYS) Support

MQTT.fx

CLIENTS - MQTT.FX

Page 43: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

43

MQTTLens (Browser)

MQTTSpy (JavaFX)

MyMQTT (Android)

MQTT Inspector (iOS)

viele andere

Sonstige Applikationen

CLIENTS - SONSTIGES

Page 44: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

MQTT BrokerAlternativen für das “Herzstück” von MQTT

Page 45: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

45

Open Source

Ideal für Constrained Devices

Unterstützt Bridging

In C implementiert

Mosquitto

BROKER - MOSQUITTO

Page 46: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

46

Open Source

Node.js Broker

Einbettbar

Unterstützt nicht alle MQTT Features

Mosca

BROKER - MOSCA

Page 47: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

47

Open Source

In Erlang implementiert

MQTT Adapter

Unterstützt nicht alle MQTT Features

RabbitMQ

BROKER - RABBITMQ

Page 48: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

48

High Performance MQTT Broker

Nativer Websockets Support

Open Source Plugin System

Unterstützt Bridging

Clustering

Skaliert > 100.000 Connections

HiveMQ

BROKER - HIVEMQ

Page 49: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

49

QoS 0 QoS 1 QoS 2 Bridge SSL Cluster WebsocketsPlugin

System

mosquitto ✔ ✔ ✔ ✔ ✔ X X ✔Mosca ✔ ✔ X ? ? ? ✔ X

RabbitMQ ✔ ✔ X X ✔ ? ? ?HiveMQ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

ActiveMQ ✔ ✔ ✔ ? ? ? ✔ ?RSMB ✔ ✔ ✔ ✔ X X X ?

moquette ✔ ✔ X ? ? X X X

MQTT Broker Übersicht Source: https://github.com/mqtt/mqtt.github.io/wiki/Server%20support

BROKER - ÜBERSICHT

Page 50: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Hands-on MQTTTesten und “Spielen” mit

MQTT

Page 51: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 1: Quality of Service Levels

Page 52: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

52

Exactly once deliveryQoS 2

QoS 0 At most once delivery

QoS 1 At least once delivery

ÜBUNGEN - QOS

Page 53: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Showtime! Ausprobieren mit einem Tool der Wahl

Page 54: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 2: Retained Messages

Page 55: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

55

“Last Known Good Value”

Die letzte Nachricht wird vom Broker gespeichert

Client entscheidet ob eine Nachricht retained wird

Clients bekommen retainedmessage nach Subscribe

Retained Messages

ÜBUNGEN - RETAINED MESSAGES

Page 56: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Showtime! Ausprobieren mit einem Tool der Wahl

Page 57: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 3: Last Will and Testament

Page 58: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

58

Client definiert LWT

Broker schickt diese Nachricht nach Client “Tod”.

Echter Push

Nützlich um on / offverlässlich zu implementieren

Last Will and Testament

ÜBUNGEN - LWT

Page 59: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Showtime! Ausprobieren mit einem Tool der Wahl

Page 60: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 4: Persistent Session

Page 61: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

61

Broker speichert Client Session

Client entscheidet ob er einepersistent Session haben möchte

Queuing für QoS > 0

Persistent Session

B

Connect

Subscribedevice/+/status

device/12/status: „1“

1st

BRe-Connect

device/12/status: „1“2nd

ÜBUNGEN - PERSISTENT SESSION

Page 62: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Showtime! Ausprobieren mit einem Tool der Wahl

Page 63: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Entwicklung eines MQTT Todesstern

SimulatorsMQTT mit Java und

Eclipse Paho

Page 64: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

64

Deathstar Simulator

Dashboard

Deathstar Simulator Implementiert in Java

Dashboard Web Application

MQTT Broker HiveMQ

DEATHSTAR - GIT

Page 65: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

65

DEATHSTAR - GIT

Page 66: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

66

1. Git installieren

2. Übungen können als Tag ausgechekt werden

3. Git Kommandos werden vor jederÜbung gezeigt

Git

DEATHSTAR - GIT

Page 67: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

67

git clone [email protected]:dc-square/ ->!introduction-to-mqtt-workshop.git

Initiales Klonen des Repositories

DEATHSTAR - GIT

Page 68: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Todesstern?!?!?

Page 69: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

69

DEATHSTAR - ANATOMY

Page 70: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

70

Features

• Alarmierung wenn Eindringlingedem Reaktor zu nahe kommen

• Abfeuern des Superlasers • Fernsteuerung der Meldefrequenz • Temperaturanzeige des Imperialen

Gewächshauses • Melden des Status (Online / Offline)

DEATHSTAR - FEATURES

Page 71: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

71

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

client.connect(); !

client.publish("the/topic", //topic "message".getBytes(), //message 1, //QoS false); //retained !

client.disconnect();

DEATHSTAR - PAHO

Page 72: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

72

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

MqttConnectOptions connOptions = new MqttConnectOptions();

connOptions.setKeepAliveInterval(120); connOptions.setWill("help/I/died",

new byte[0], 2, true); connOptions.setCleanSession(false); connOptions.setUserName("username"); connOptions.setPassword("passw".toCharArray()); !

client.connect(connOptions);

DEATHSTAR - PAHO

Page 73: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

73

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

DEATHSTAR - PAHO

Page 74: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 1: Deathstar Reactor Alert

Page 75: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

75

git checkout deathstar-start

Checkout

DEATHSTAR - GIT

Page 76: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 77: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 2: Superlaser

Page 78: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

MQTT Workshop

Page 79: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

79

git checkout superlaser-start

Checkout

DEATHSTAR - GIT

Page 80: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

80

Subscriben auf deathstar/superlaser/status

Laser abfeuern

Status wieder auf deaktiviert setzen

Was ist zu tun?

DEATHSTAR - SUPERLASER

Page 81: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 82: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 3: Update Frequenz ändern

Page 83: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

83

git checkout frequency-start

Checkout

DEATHSTAR - GIT

Page 84: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 85: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 4: Imperial Bath Greenhouse

Page 86: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

86

git checkout greenhouse-start

Checkout

DEATHSTAR - GIT

Page 87: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 88: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 5: Statusanzeige

Page 89: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

89

git checkout status-start

Checkout

DEATHSTAR - GIT

Page 90: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 91: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Entwicklung einer MQTT Todesstern

KontrollAppMQTT over Websockets

Page 92: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

92

Features

• Alarmierung wenn Eindringlingedem Reaktor zu nahe kommen

• Abfeuern des Superlasers • Fernsteuerung der Meldefrequenz • Temperaturanzeige des Imperialen

Gewächshauses • Anzeigen des Status (Online / Offline)

DASHBOARD - FEATURES

Page 93: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Demonstration

Page 94: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

94

MQTT Over Websockets

DASHBOARD - WEBSOCKETS

Page 95: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 1: Deathstar Reactor Alert

Page 96: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

96

git checkout db-start

Checkout

DASHBOARD - GIT

Page 97: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 98: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 2: Superlaser

Page 99: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

99

git checkout db-superlaser-start

Checkout

DASHBOARD - GIT

Page 100: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 101: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 3: Imperial Greenhouse

Page 102: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

102

git checkout db-greenhouse-start

Checkout

DASHBOARD - GIT

Page 103: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 104: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 4: Update Frequenz ändern

Page 105: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

105

git checkout db-frequency-start

Checkout

DASHBOARD - GIT

Page 106: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 107: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Übung 5: Statusanzeige

Page 108: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

108

git checkout db-status-start

Checkout

DASHBOARD - GIT

Page 109: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Implementierung

Page 110: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

110http://www.hivemq.com/iot-con-special-2014/

HIVEMQ - PAY-AS-YOU-GO

Page 111: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Q & A

Page 112: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

Danke!@dobermai

@goetzchr

Page 113: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

113

OUR TEAM - HELLO YOU!

Credits (all Images under Creative Commons)

‣ “The Stormtrooper” by leg0fenris: https://flic.kr/p/9beh6M ‣ “Stormtroopers Training: Theory” by Pedro Vezini: https://flic.kr/p/9iCMCB ‣ “Impending Doom (Explored)” by Pascal: https://flic.kr/p/8sjHyA ‣ “Is this Jabba the Hut's son?” by Kristina Alexanderson: https://flic.kr/p/9WDcSx ‣ “#135/366” by Robert McGoldrick: https://flic.kr/p/bXKkBG ‣ “Old droids” by stavos: https://flic.kr/p/jfYxPA ‣ “#23/366 The Plan” by Robert McGoldrick: https://flic.kr/p/bhgZbx ‣ “Day 112” by Pascal: https://flic.kr/p/7jbBvN ‣ “New Navcom” by Jason Ternus: https://flic.kr/p/5zkmHe ‣ “Got the Superman Cape... Let's do this!” by Brian Neudorff: https://flic.kr/p/jmowHw ‣ “"..And The Nominees Are…”" by Predro Vezini: https://flic.kr/p/8wFkyN

Page 114: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

114

OUR TEAM - HELLO YOU!

Credits II (all Images under Creative Commons)

‣ “Hardcore Stormies Hit The Gym” by W_Minshull: https://flic.kr/p/9pbzs7 ‣ “#145/366” by Robert McGoldrick: https://flic.kr/p/c4zqAJ ‣ “Rocking Hard” by W_Minshull: https://flic.kr/p/dB13LP ‣ “Weightlifting” by 713 Avenue: https://flic.kr/p/5cdK3z ‣ “Kaos - Chaos paiting (ii)” by Kristina Alexanderson: https://flic.kr/p/ajcZoo ‣ “Pole Vault” by 713 Avenue: https://flic.kr/p/5eAzQi ‣ “T as in teaching Tech” by Kristina Alexanderson: https://flic.kr/p/cyAA8d ‣ “Escaping the Death Star” by Paulo Valdivieso: https://flic.kr/p/eHQ9kr ‣ “Death Star Prototype”: http://starwars.wikia.com/wiki/File:DSprototype_egvv.jpg ‣ “Luke Skywalker flying his X-Wing, getting ready to blow up the Death Star” by Fredrik Perman: https://flic.kr/p/c3qivy

Page 115: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]

115

OUR TEAM - HELLO YOU!

Credits III (all Images under Creative Commons)

‣ “move to the new deathstar” by Nerd herdr: https://flic.kr/p/oqxYue ‣ “I think it is time we demonstrated the full power of this station” by Fanboy30: https://flic.kr/p/5YYbLK ‣ “Stromtrooper's clone robots” by Jay: https://flic.kr/p/b3mvcX ‣ “Hot Tub” by W_Minshull: https://flic.kr/p/9nMWxp ‣ “Searching for Droids” by Guy Streatfeild: https://flic.kr/p/bAvbWW ‣ “Stormpainter” by Pedro Vezini”: https://flic.kr/p/9SrKQU ‣ “Let The Wookie Hug” by Pedro Vezini: https://flic.kr/p/8ukTZe ‣ “Daisy Squad” by Stéfan: https://flic.kr/p/bD6ANy ‣ “Enjoying the sunset” by Kristina Alexanderson: https://flic.kr/p/avNV2Q