![Page 1: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/1.jpg)
PUB / SUB for the masses
An Introduction to MQTT
#IotCon Workshop
![Page 2: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/2.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/3.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/4.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/5.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/6.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/7.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/8.jpg)
Einführung in MQTTÜberblick und wichtigste
Features und Eigenschaften
![Page 9: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/9.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/10.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/11.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/12.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/13.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/14.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/15.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/16.jpg)
Was ist Publish / Subscribe Messaging?
![Page 17: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/17.jpg)
17
Pub / Sub
MQTT - PUB / SUB
![Page 18: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/18.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/19.jpg)
Topic Matching Beispiele
![Page 20: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/20.jpg)
20
deathstar
superlaser
greenhouse
status
usages
humidity
temp
/ /
MQTT - MQTT TOPICS
![Page 21: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/21.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/22.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/23.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/24.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/25.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/26.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/27.jpg)
Überblick über das MQTT Ökosystem
MQTT Clients und Broker
![Page 28: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/28.jpg)
MQTT Client BibliothekenÜberblick über die populärsten Alternativen
![Page 29: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/29.jpg)
Java
![Page 30: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/30.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/31.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/32.jpg)
Javascript
![Page 33: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/33.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/34.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/35.jpg)
C
![Page 36: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/36.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/37.jpg)
Sonstige
![Page 38: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/38.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/39.jpg)
MQTT Client AppsÜberblick über die gängigsten Tools
![Page 40: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/40.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/41.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/42.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/43.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/44.jpg)
MQTT BrokerAlternativen für das “Herzstück” von MQTT
![Page 45: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/45.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/46.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/47.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/48.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/49.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/50.jpg)
Hands-on MQTTTesten und “Spielen” mit
MQTT
![Page 51: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/51.jpg)
Übung 1: Quality of Service Levels
![Page 52: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/52.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/53.jpg)
Showtime! Ausprobieren mit einem Tool der Wahl
![Page 54: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/54.jpg)
Übung 2: Retained Messages
![Page 55: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/55.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/56.jpg)
Showtime! Ausprobieren mit einem Tool der Wahl
![Page 57: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/57.jpg)
Übung 3: Last Will and Testament
![Page 58: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/58.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/59.jpg)
Showtime! Ausprobieren mit einem Tool der Wahl
![Page 60: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/60.jpg)
Übung 4: Persistent Session
![Page 61: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/61.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/62.jpg)
Showtime! Ausprobieren mit einem Tool der Wahl
![Page 63: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/63.jpg)
Entwicklung eines MQTT Todesstern
SimulatorsMQTT mit Java und
Eclipse Paho
![Page 64: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/64.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/65.jpg)
65
DEATHSTAR - GIT
![Page 66: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/66.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/67.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/68.jpg)
Todesstern?!?!?
![Page 69: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/69.jpg)
69
DEATHSTAR - ANATOMY
![Page 70: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/70.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/71.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/72.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/73.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/74.jpg)
Übung 1: Deathstar Reactor Alert
![Page 75: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/75.jpg)
75
git checkout deathstar-start
Checkout
DEATHSTAR - GIT
![Page 76: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/76.jpg)
Implementierung
![Page 77: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/77.jpg)
Übung 2: Superlaser
![Page 78: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/78.jpg)
MQTT Workshop
![Page 79: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/79.jpg)
79
git checkout superlaser-start
Checkout
DEATHSTAR - GIT
![Page 80: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/80.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/81.jpg)
Implementierung
![Page 82: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/82.jpg)
Übung 3: Update Frequenz ändern
![Page 83: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/83.jpg)
83
git checkout frequency-start
Checkout
DEATHSTAR - GIT
![Page 84: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/84.jpg)
Implementierung
![Page 85: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/85.jpg)
Übung 4: Imperial Bath Greenhouse
![Page 86: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/86.jpg)
86
git checkout greenhouse-start
Checkout
DEATHSTAR - GIT
![Page 87: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/87.jpg)
Implementierung
![Page 88: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/88.jpg)
Übung 5: Statusanzeige
![Page 89: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/89.jpg)
89
git checkout status-start
Checkout
DEATHSTAR - GIT
![Page 90: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/90.jpg)
Implementierung
![Page 91: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/91.jpg)
Entwicklung einer MQTT Todesstern
KontrollAppMQTT over Websockets
![Page 92: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/92.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/93.jpg)
Demonstration
![Page 94: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/94.jpg)
94
MQTT Over Websockets
DASHBOARD - WEBSOCKETS
![Page 95: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/95.jpg)
Übung 1: Deathstar Reactor Alert
![Page 96: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/96.jpg)
96
git checkout db-start
Checkout
DASHBOARD - GIT
![Page 97: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/97.jpg)
Implementierung
![Page 98: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/98.jpg)
Übung 2: Superlaser
![Page 99: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/99.jpg)
99
git checkout db-superlaser-start
Checkout
DASHBOARD - GIT
![Page 100: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/100.jpg)
Implementierung
![Page 101: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/101.jpg)
Übung 3: Imperial Greenhouse
![Page 102: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/102.jpg)
102
git checkout db-greenhouse-start
Checkout
DASHBOARD - GIT
![Page 103: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/103.jpg)
Implementierung
![Page 104: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/104.jpg)
Übung 4: Update Frequenz ändern
![Page 105: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/105.jpg)
105
git checkout db-frequency-start
Checkout
DASHBOARD - GIT
![Page 106: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/106.jpg)
Implementierung
![Page 107: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/107.jpg)
Übung 5: Statusanzeige
![Page 108: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/108.jpg)
108
git checkout db-status-start
Checkout
DASHBOARD - GIT
![Page 109: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/109.jpg)
Implementierung
![Page 110: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/110.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/111.jpg)
Q & A
![Page 112: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/112.jpg)
Danke!@dobermai
@goetzchr
![Page 113: Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/113.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/114.jpg)
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]](https://reader037.vdocument.in/reader037/viewer/2022103015/54bad2874a7959f6428b457d/html5/thumbnails/115.jpg)
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