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

Transcript
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