SlideShare a Scribd company logo
1 of 115
Download to read offline
PUB / SUB for the masses 
An Introduction to MQTT 
#IotCon Workshop
2 
EINFÜHRUNG - VORSTELLUNG 
Christian Götz Dominik Obermaier 
CEO @ dc-square CTO @ dc-square 
@goetzchr @dobermai
Beginn Q&A 
3 
EINFÜHRUNG - AGENDA 
Kurze Einführung 
in MQTT 
Entwicklung einer 
MQTT Webapplication 
MQTT über Websockets 
      
Ü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
Wie entwickle ich einen 
MQTT Client in Java? 
Was ist “MQTT over 
Websockets?” 
Wie funktioniert MQTT 
für Webseiten? 
Umsetzung verschiedener 
MQTT Patterns 
4 
EINFÜHRUNG - LERNZIELE 
 Was ist MQTT? 
Was werden wir bei 
diesem Workshop 
lernen? 
Warum nicht immer HTTP? 
MQTT Broker? 
MQTT Clients? 
Wie funktioniert MQTT im Detail? 
Wie baue ich einen 
Software-Deathstar ;-)
5 
EINFÜHRUNG - ANWENDUNGSFALL 
Unser Anwendungsfall: Deathstar Simulalator 
Implementierung eines MQTT Todesstern Simulators und eines Web-Dashboards 
zur Anzeige von Daten und Steuerung des Simulators
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
7 
EINFÜHRUNG - BENÖTIGTE SOFTWARE 
Wer benötigt noch diese Software?
 
Einführung in MQTT 
Überblick und wichtigste 
Features und Eigenschaften
9 
Herausforderungen im IoT 
Unzuverlässige Netzwerke 
Skalierbarkeit 
Bidirektionale Kommunikation 
Constrained Devices 
Security 
Push Messaging 
MQTT - HERAUSFORDERUNGEN
10 
MQTT - IOT PROTOKOLL ANFORDERUNGEN 
Anforderungen an ein IoT Protokoll 
Bandbreiteneffizient 
Skalierbar 
Standardisiert 
Offen 
Datenagnostisch 
Sowohl für schwache Hardware 
als auch Server geeignet
11 
Sehr verbreitet 
Request / Response 
Seit 1991 verbreitet 
Dokumentenzentriert 
HTTP? 
MQTT - HTTP?
12 
Warum nicht immer HTTP? 
Viel Overhead 
Polling statt Push 
Kein Quality of Service 
Stateless 
Wie merken wir, dass 
ein Client offline ist? 
MQTT - HTTP?
13 
MQTT - MESSAGING FÜR DAS INTERNET DER DINGE 
MQTT - Messaging für das Internet der Dinge 
 Einfach 
 Publish / Subscribe 
 Binär 
 
Messaging Protokoll  
Minimaler Overhead  
Datenagnostisch 
14 
Anwendungsfälle 
Push statt Pull 
Zuverlässigkeit auch bei 
unzuverlässigen Netzwerken 
Constrained Devices 
Geringe Bandbreite und 
hohe Latenz 
Enterprise -> Mobile 
MQTT - ANWENDUNGSFÄLLE
15 
3 QoS Stufen 
Retained Messages 
Topic Wildcards 
Last Will and Testament 
Persistent Sessions 
Heartbeats 
Features 
MQTT - FEATURES
Was ist Publish / Subscribe Messaging?
17 
Pub / Sub 
MQTT - PUB / SUB
18 
MQTT Topics 
Hierarchisch 
Wildcards (+ und #) 
Queuing (QoS > 0) 
Sehr Leichtgewichtig 
Dynamisch 
MQTT - MQTT TOPICS
Topic Matching Beispiele
20 
deathstar 
superlaser 
greenhouse 
status 
usages 
humidity 
temp 
/ / 
MQTT - MQTT TOPICS
Deathstar superlaser status: deathstar/superlaser/status 
21 
deathstar 
superlaser 
greenhouse 
status 
usages 
humidity 
temp 
/ / 
MQTT - MQTT TOPICS
22 
All Data from Greenhouse: deathstar/greenhouse/# 
deathstar 
superlaser 
greenhouse 
status 
usages 
humidity 
temp 
/ / 
MQTT - MQTT TOPICS
23 
All Data from deathstar: deathstar/# 
deathstar 
superlaser 
greenhouse 
status 
usages 
humidity 
temp 
/ / 
MQTT - MQTT TOPICS
Username / Password 
Payload Verschlüsselung 
TLS 
Client Certificate Authentication 
Permissions 
24 
MQTT Security 
MQTT - MQTT SECURITY
25 
MQTT - Historische Entwicklung 
MQTT - GESCHICHTE 
Arlen Nipper (Arcom) & 
Andy Stanford-Clark (IBM) 
entwickeln MQTT 
freie 
Verfügbarkeit 
OASIS TC MQTT 3.1.1 Release 
1999 2010 2013 2014
26 
MQTT 3.1.1 Verbesserungen zu MQTT 3.1 
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 - MQTT 3.1.1
 
Überblick über das 
MQTT Ökosystem 
MQTT Clients und Broker
MQTT Client Bibliotheken 
Überblick über die populärsten Alternativen 

 Java
30 
Eclipse Paho 
Open Source 
“Referenzimplementierung” 
Aktive Community 
Sync und Async API 
Lauffähig auf JavaME 
CLIENTS - PAHO
31 
Fusesource MQTT Client 
Open Source 
3 API Styles 
Sehr performant 
Basiert auf HawtIO 
Verfügbar in Maven Central 
CLIENTS - FUSESOURCE
 Javascript
33 
Eclipse Paho 
Open Source 
“Referenzimplementierung” 
Basierend auf Websockets 
Sehr gut dokumentiert 
keine Abhängigkeiten 
CLIENTS - PAHO
34 
Open Source 
Node.js Bibliothek 
Verfügbar in npm 
MQTT.js 
CLIENTS - MQTT.JS
 C
Open Source 
“Referenzimplementierung” 
Auch für C++ verfügbar 
Verfügbar für POSIX / Windows 
und Embedded 
36 
Eclipse Paho 
CLIENTS - PAHO
 Sonstige
38 
Sonstige Clients 
Paho (Python, Go, Lua) 
M2Mqtt (C#) 
ruby-mqtt (Ruby) 
Arduino Client 
MQTTKit (Objective C) 
Mosquitto-PHP (PHP) 
CLIENTS - SONSTIGES
MQTT Client Apps 
Überblick über die gängigsten Tools 

40 
Mosquitto_Pub / Mosquitto_Sub 
Kommandozeilentool 
Sehr viele Features 
Debug Modus 
Einbettbar (libmosquitto) 
CLIENTS - MOSQUITTO
Betriebssystemunabhängig 
Benötigt aktivierte Websockets 
Publish / Subscribe 
Real-Time Updates 
41 
HiveMQ Web Client 
CLIENTS - HIVEMQ WEB CLIENT
42 
JavaFX 
Mit nativen Wrapper für alle 
gängigen Betriebssysteme 
Scripting Support 
Broker Status ($SYS) Support 
MQTT.fx 
CLIENTS - MQTT.FX
43 
Sonstige Applikationen 
MQTTLens (Browser) 
MQTTSpy (JavaFX) 
MyMQTT (Android) 
MQTT Inspector (iOS) 
viele andere 
CLIENTS - SONSTIGES
MQTT Broker 
Alternativen für das “Herzstück” von MQTT 

45 
Open Source 
Ideal für Constrained Devices 
Unterstützt Bridging 
In C implementiert 
Mosquitto 
BROKER - MOSQUITTO
46 
Open Source 
Node.js Broker 
Einbettbar 
Unterstützt nicht alle 
MQTT Features 
Mosca 
BROKER - MOSCA
47 
Open Source 
In Erlang implementiert 
MQTT Adapter 
Unterstützt nicht alle 
MQTT Features 
RabbitMQ 
BROKER - RABBITMQ
High Performance MQTT Broker 
Nativer Websockets Support 
Open Source Plugin System 
Unterstützt Bridging 
Clustering 
Skaliert > 100.000 Connections 
48 
HiveMQ 
BROKER - HIVEMQ
49 
BROKER - ÜBERSICHT 
MQTT Broker Übersicht Source: https://github.com/mqtt/mqtt.github.io/wiki/Server%20support 
QoS 0 QoS 1 QoS 2 Bridge SSL Cluster Websockets 
Plugin 
System 
mosquitto ✔ ✔ ✔ ✔ ✔ X X ✔ 
Mosca ✔ ✔ X ? ? ? ✔ X 
RabbitMQ ✔ ✔ X X ✔ ? ? ? 
HiveMQ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ 
ActiveMQ ✔ ✔ ✔ ? ? ? ✔ ? 
RSMB ✔ ✔ ✔ ✔ X X X ? 
moquette ✔ ✔ X ? ? X X X
Hands-on MQTT 
Testen und “Spielen” mit 
MQTT 

Übung 1: Quality of Service Levels
52 
QoS 0 At most once delivery 
QoS 1 At least once delivery 
QoS 2 Exactly once delivery 
ÜBUNGEN - QOS
Showtime! 
Ausprobieren mit einem Tool der Wahl
Übung 2: Retained Messages
55 
Retained Messages 
“Last Known Good Value” 
Die letzte Nachricht wird 
vom Broker gespeichert 
Client entscheidet ob eine 
Nachricht retained wird 
Clients bekommen retained 
message nach Subscribe 
ÜBUNGEN - RETAINED MESSAGES
Showtime! 
Ausprobieren mit einem Tool der Wahl
Übung 3: Last Will and Testament
58 
Last Will and Testament 
Client definiert LWT 
Broker schickt diese 
Nachricht nach Client “Tod”. 
Echter Push 
Nützlich um on / off 
verlässlich zu implementieren 
ÜBUNGEN - LWT
Showtime! 
Ausprobieren mit einem Tool der Wahl
Übung 4: Persistent Session
Broker speichert Client Session 
Client entscheidet ob er eine 
persistent Session haben möchte 
Queuing für QoS > 0 
61 
Persistent Session 
B 
ÜBUNGEN - PERSISTENT SESSION 
Connect 
Subscribe 
device/+/status 
device/12/status: „1“ 
1st 
B 
Re-Connect 
device/12/status: „1“ 
2nd
Showtime! 
Ausprobieren mit einem Tool der Wahl
Entwicklung eines 
MQTT Todesstern 
Simulators 
MQTT mit Java und 
Eclipse Paho 

64 
Deathstar 
Simulator 
Dashboard 
Deathstar Simulator 
Implementiert in Java 
Dashboard 
Web Application 
MQTT Broker 
HiveMQ 
DEATHSTAR - GIT
65 
DEATHSTAR - GIT
1. Git installieren 
2. Übungen können als Tag 
ausgechekt werden 
3. Git Kommandos werden vor jeder 
Übung gezeigt 
66 
Git 
DEATHSTAR - GIT
67 
Initiales Klonen des Repositories 
DEATHSTAR - GIT 
git clone git@github.com:dc-square/ ->! 
introduction-to-mqtt-workshop.git
Todesstern?!?!?
69 
DEATHSTAR - ANATOMY
70 
Features 
• Alarmierung wenn Eindringlinge 
dem Reaktor zu nahe kommen 
• Abfeuern des Superlasers 
• Fernsteuerung der Meldefrequenz 
• Temperaturanzeige des Imperialen 
Gewächshauses 
• Melden des Status (Online / Offline) 
DEATHSTAR - FEATURES
71 
DEATHSTAR - PAHO 
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();
72 
DEATHSTAR - PAHO 
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);
73 
DEATHSTAR - PAHO 
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("#");
Übung 1: Deathstar Reactor Alert
75 
Checkout 
DEATHSTAR - GIT 
git checkout deathstar-start
Implementierung
Übung 2: Superlaser
MQTT Workshop
79 
Checkout 
DEATHSTAR - GIT 
git checkout superlaser-start
80 
Was ist zu tun? 
DEATHSTAR - SUPERLASER 
Subscriben auf deathstar/superlaser/status 
Laser abfeuern 
Status wieder auf deaktiviert setzen
Implementierung
Übung 3: Update Frequenz ändern
83 
Checkout 
DEATHSTAR - GIT 
git checkout frequency-start
Implementierung
Übung 4: Imperial Bath Greenhouse
86 
Checkout 
DEATHSTAR - GIT 
git checkout greenhouse-start
Implementierung
Übung 5: Statusanzeige
89 
Checkout 
DEATHSTAR - GIT 
git checkout status-start
Implementierung
 
Entwicklung einer 
MQTT Todesstern 
KontrollApp 
MQTT over Websockets
92 
Features 
• Alarmierung wenn Eindringlinge 
dem Reaktor zu nahe kommen 
• Abfeuern des Superlasers 
• Fernsteuerung der Meldefrequenz 
• Temperaturanzeige des Imperialen 
Gewächshauses 
• Anzeigen des Status (Online / Offline) 
DASHBOARD - FEATURES
Demonstration
94 
DASHBOARD - WEBSOCKETS 
MQTT Over Websockets
Übung 1: Deathstar Reactor Alert
96 
Checkout 
DASHBOARD - GIT 
git checkout db-start
Implementierung
Übung 2: Superlaser
99 
Checkout 
DASHBOARD - GIT 
git checkout db-superlaser-start
Implementierung
Übung 3: Imperial Greenhouse
102 
Checkout 
DASHBOARD - GIT 
git checkout db-greenhouse-start
Implementierung
Übung 4: Update Frequenz ändern
105 
Checkout 
DASHBOARD - GIT 
git checkout db-frequency-start
Implementierung
Übung 5: Statusanzeige
108 
Checkout 
DASHBOARD - GIT 
git checkout db-status-start
Implementierung
HIVEMQ - PAY-AS-YOU-GO 
http://www.hivemq.com/iot-con-special-2014/ 110
Q & A
Danke! 
@dobermai 
@goetzchr
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
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
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

More Related Content

What's hot

MQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object API
Michael Koster
 
08 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 24
08 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 2408 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 24
08 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 24
legasu zemene
 

What's hot (20)

Sips must die, die, die - about TLS usage in the SIP protocol
Sips must die, die, die - about TLS usage in the SIP protocolSips must die, die, die - about TLS usage in the SIP protocol
Sips must die, die, die - about TLS usage in the SIP protocol
 
TRex Realistic Traffic Generator - Stateless support
TRex  Realistic Traffic Generator  - Stateless support TRex  Realistic Traffic Generator  - Stateless support
TRex Realistic Traffic Generator - Stateless support
 
MQTT Deep Dive Workshop [GERMAN]
MQTT Deep Dive Workshop [GERMAN]MQTT Deep Dive Workshop [GERMAN]
MQTT Deep Dive Workshop [GERMAN]
 
Module 1-Application Layer
Module 1-Application Layer Module 1-Application Layer
Module 1-Application Layer
 
How to Build a Custom Plugin in Rundeck
How to Build a Custom Plugin in RundeckHow to Build a Custom Plugin in Rundeck
How to Build a Custom Plugin in Rundeck
 
SIP security in IP telephony
SIP security in IP telephonySIP security in IP telephony
SIP security in IP telephony
 
Introduction MQTT in English
Introduction MQTT in EnglishIntroduction MQTT in English
Introduction MQTT in English
 
NGINX Installation and Tuning
NGINX Installation and TuningNGINX Installation and Tuning
NGINX Installation and Tuning
 
Improving hyperconverged performance
Improving hyperconverged performanceImproving hyperconverged performance
Improving hyperconverged performance
 
SIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingSIPREC RTPEngine Media Forking
SIPREC RTPEngine Media Forking
 
Pub/Sub Messaging
Pub/Sub MessagingPub/Sub Messaging
Pub/Sub Messaging
 
NGINX High-performance Caching
NGINX High-performance CachingNGINX High-performance Caching
NGINX High-performance Caching
 
TS31103 ISIM introduction
TS31103 ISIM introductionTS31103 ISIM introduction
TS31103 ISIM introduction
 
Original N-Channel Mosfet JCS12N65ST JCS12N65 12N65 12A 650V TO-252 New JILIN...
Original N-Channel Mosfet JCS12N65ST JCS12N65 12N65 12A 650V TO-252 New JILIN...Original N-Channel Mosfet JCS12N65ST JCS12N65 12N65 12A 650V TO-252 New JILIN...
Original N-Channel Mosfet JCS12N65ST JCS12N65 12N65 12A 650V TO-252 New JILIN...
 
MQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object API
 
MQTT
MQTTMQTT
MQTT
 
IMS presentation
IMS presentationIMS presentation
IMS presentation
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streaming
 
Session Border Controllers - Top 10 FAQ
Session Border Controllers - Top 10 FAQSession Border Controllers - Top 10 FAQ
Session Border Controllers - Top 10 FAQ
 
08 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 24
08 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 2408 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 24
08 ip oc304 2_e1_1 zxr10 m6000 bgp configuration 24
 

Viewers also liked

Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
Dominik Obermaier
 
Intro to logarithms (rev1)
Intro to logarithms (rev1)Intro to logarithms (rev1)
Intro to logarithms (rev1)
Inez Hofner
 

Viewers also liked (20)

Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
 
Software Defined networking (SDN)
Software Defined networking (SDN)Software Defined networking (SDN)
Software Defined networking (SDN)
 
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
 
An introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the massesAn introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the masses
 
IoT at Google Scale
IoT at Google ScaleIoT at Google Scale
IoT at Google Scale
 
IoT NY - Google Cloud Services for IoT
IoT NY - Google Cloud Services for IoTIoT NY - Google Cloud Services for IoT
IoT NY - Google Cloud Services for IoT
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of Things
 
Messaging im Internet of Things: MQTT
Messaging im Internet of Things: MQTTMessaging im Internet of Things: MQTT
Messaging im Internet of Things: MQTT
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
 
Why transync mqtt gps tracker
Why transync mqtt gps trackerWhy transync mqtt gps tracker
Why transync mqtt gps tracker
 
APD book 32 copy
APD book 32 copyAPD book 32 copy
APD book 32 copy
 
Google Spanner
Google SpannerGoogle Spanner
Google Spanner
 
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
Bringing M2M to the web with Paho: Connecting Java Devices and online dashboa...
 
Web Services: Dje - Sot
Web Services: Dje - Sot Web Services: Dje - Sot
Web Services: Dje - Sot
 
Intro to logarithms (rev1)
Intro to logarithms (rev1)Intro to logarithms (rev1)
Intro to logarithms (rev1)
 
Building a multi protocol broker for the internet of things using nodejs
Building a multi protocol broker for the internet of things using nodejsBuilding a multi protocol broker for the internet of things using nodejs
Building a multi protocol broker for the internet of things using nodejs
 
Google Cloud Monitoring
Google Cloud MonitoringGoogle Cloud Monitoring
Google Cloud Monitoring
 
Evolimi i Gjuhëve Programuese -Lënda:Informatika e Biznesit
Evolimi i Gjuhëve Programuese -Lënda:Informatika e BiznesitEvolimi i Gjuhëve Programuese -Lënda:Informatika e Biznesit
Evolimi i Gjuhëve Programuese -Lënda:Informatika e Biznesit
 
Spanner
SpannerSpanner
Spanner
 
7 rregullat e suksesit nga Bill Gates
7 rregullat e suksesit nga Bill Gates7 rregullat e suksesit nga Bill Gates
7 rregullat e suksesit nga Bill Gates
 

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

Drahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittDrahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen Schritt
Falk Hartmann
 

Similar to Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN] (20)

Citrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx NetworkingCitrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx Networking
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
OSCamp Kubernetes 2024 | Confidential Containers – Sensible Daten und Privats...
OSCamp Kubernetes 2024 | Confidential Containers – Sensible Daten und Privats...OSCamp Kubernetes 2024 | Confidential Containers – Sensible Daten und Privats...
OSCamp Kubernetes 2024 | Confidential Containers – Sensible Daten und Privats...
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-Marathon
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
 
TechTalkThursday 27.10.2016: Redundante Linux Failover Cluster
TechTalkThursday 27.10.2016: Redundante Linux Failover ClusterTechTalkThursday 27.10.2016: Redundante Linux Failover Cluster
TechTalkThursday 27.10.2016: Redundante Linux Failover Cluster
 
Stackstorm – Event driven Automation
Stackstorm – Event driven AutomationStackstorm – Event driven Automation
Stackstorm – Event driven Automation
 
Drahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittDrahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen Schritt
 
Die beliebtesten kvm switches
Die beliebtesten kvm switchesDie beliebtesten kvm switches
Die beliebtesten kvm switches
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 
Crouzet Automation - em4 Ethernet Broschüre, deutsche Fassung
Crouzet Automation - em4 Ethernet Broschüre, deutsche FassungCrouzet Automation - em4 Ethernet Broschüre, deutsche Fassung
Crouzet Automation - em4 Ethernet Broschüre, deutsche Fassung
 
Zeitnahe Reaktion auf Verordnungsänderungen mit Feature Toggles
Zeitnahe Reaktion auf Verordnungsänderungen mit Feature TogglesZeitnahe Reaktion auf Verordnungsänderungen mit Feature Toggles
Zeitnahe Reaktion auf Verordnungsänderungen mit Feature Toggles
 
Build your own IoT Cloud! [GER]
Build your own IoT Cloud! [GER]Build your own IoT Cloud! [GER]
Build your own IoT Cloud! [GER]
 
SSV Predictive Maintenance
SSV Predictive MaintenanceSSV Predictive Maintenance
SSV Predictive Maintenance
 
TYPO3 GitLab CI
TYPO3 GitLab CITYPO3 GitLab CI
TYPO3 GitLab CI
 

More from Dominik Obermaier

Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...
Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...
Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...
Dominik Obermaier
 
Inntroduction to MQTT Sparkplug with HiveMQ and Opto22
Inntroduction to MQTT Sparkplug with HiveMQ and Opto22Inntroduction to MQTT Sparkplug with HiveMQ and Opto22
Inntroduction to MQTT Sparkplug with HiveMQ and Opto22
Dominik Obermaier
 

More from Dominik Obermaier (20)

Kafka Summit 2021 - Why MQTT and Kafka are a match made in heaven
Kafka Summit 2021 - Why MQTT and Kafka are a match made in heavenKafka Summit 2021 - Why MQTT and Kafka are a match made in heaven
Kafka Summit 2021 - Why MQTT and Kafka are a match made in heaven
 
Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...
Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...
Software-Infrastrukturen modernisieren in der Produktion - Digitale Transform...
 
Inntroduction to MQTT Sparkplug with HiveMQ and Opto22
Inntroduction to MQTT Sparkplug with HiveMQ and Opto22Inntroduction to MQTT Sparkplug with HiveMQ and Opto22
Inntroduction to MQTT Sparkplug with HiveMQ and Opto22
 
Building a reliable and scalable IoT platform with MongoDB and HiveMQ
Building a reliable and scalable IoT platform with MongoDB and HiveMQBuilding a reliable and scalable IoT platform with MongoDB and HiveMQ
Building a reliable and scalable IoT platform with MongoDB and HiveMQ
 
Modernizing the Manufacturing Industry with Kafka and MQTT
Modernizing the Manufacturing Industry with Kafka and MQTT Modernizing the Manufacturing Industry with Kafka and MQTT
Modernizing the Manufacturing Industry with Kafka and MQTT
 
HiveMQ Cloud - The Cloud Native IoT Messaging Layer
HiveMQ Cloud - The Cloud Native IoT Messaging LayerHiveMQ Cloud - The Cloud Native IoT Messaging Layer
HiveMQ Cloud - The Cloud Native IoT Messaging Layer
 
MQTT AS A KEY TECHNOLOGY FOR INDUSTRY 4.0 & IIoT
MQTT AS A KEY TECHNOLOGY FOR INDUSTRY 4.0 & IIoT MQTT AS A KEY TECHNOLOGY FOR INDUSTRY 4.0 & IIoT
MQTT AS A KEY TECHNOLOGY FOR INDUSTRY 4.0 & IIoT
 
MQTT 5: Why you need it and potential pitfalls
MQTT 5: Why you need it and potential pitfallsMQTT 5: Why you need it and potential pitfalls
MQTT 5: Why you need it and potential pitfalls
 
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTTHiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
 
A pure Java MQTT Stack for IoT
A pure Java MQTT Stack for IoTA pure Java MQTT Stack for IoT
A pure Java MQTT Stack for IoT
 
Lightweight and scalable IoT Architectures with MQTT
Lightweight and scalable IoT Architectures with MQTTLightweight and scalable IoT Architectures with MQTT
Lightweight and scalable IoT Architectures with MQTT
 
Lightweight and scalable IoT Messaging with MQTT
Lightweight and scalable IoT Messaging with MQTTLightweight and scalable IoT Messaging with MQTT
Lightweight and scalable IoT Messaging with MQTT
 
In search of the perfect IoT Stack - Scalable IoT Architectures with MQTT
In search of the perfect IoT Stack - Scalable IoT Architectures with MQTTIn search of the perfect IoT Stack - Scalable IoT Architectures with MQTT
In search of the perfect IoT Stack - Scalable IoT Architectures with MQTT
 
MQTT 5 - What's New?
MQTT 5 - What's New?MQTT 5 - What's New?
MQTT 5 - What's New?
 
Scaling MQTT - Webinar with Elastic Beam
Scaling MQTT - Webinar with Elastic BeamScaling MQTT - Webinar with Elastic Beam
Scaling MQTT - Webinar with Elastic Beam
 
Securing MQTT - BuildingIoT 2016 slides
Securing MQTT - BuildingIoT 2016 slidesSecuring MQTT - BuildingIoT 2016 slides
Securing MQTT - BuildingIoT 2016 slides
 
JAX 2014 - M2M for Java Developers with MQTT
JAX 2014 - M2M for Java Developers with MQTTJAX 2014 - M2M for Java Developers with MQTT
JAX 2014 - M2M for Java Developers with MQTT
 
Push! - MQTT for the Internet of Things
Push! - MQTT for the Internet of ThingsPush! - MQTT for the Internet of Things
Push! - MQTT for the Internet of Things
 
Eclipse Democamps 2013 - M2M for Java Developers with MQTT
Eclipse Democamps 2013 - M2M for Java Developers with MQTTEclipse Democamps 2013 - M2M for Java Developers with MQTT
Eclipse Democamps 2013 - M2M for Java Developers with MQTT
 
M2M for Java Developers: MQTT with Eclipse Paho - Eclipsecon Europe 2013
M2M for Java Developers: MQTT with Eclipse Paho - Eclipsecon Europe 2013M2M for Java Developers: MQTT with Eclipse Paho - Eclipsecon Europe 2013
M2M for Java Developers: MQTT with Eclipse Paho - Eclipsecon Europe 2013
 

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

  • 1. PUB / SUB for the masses An Introduction to MQTT #IotCon Workshop
  • 2. 2 EINFÜHRUNG - VORSTELLUNG Christian Götz Dominik Obermaier CEO @ dc-square CTO @ dc-square @goetzchr @dobermai
  • 3. Beginn Q&A 3 EINFÜHRUNG - AGENDA Kurze Einführung in MQTT Entwicklung einer MQTT Webapplication MQTT über Websockets       Ü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
  • 4. Wie entwickle ich einen MQTT Client in Java? Was ist “MQTT over Websockets?” Wie funktioniert MQTT für Webseiten? Umsetzung verschiedener MQTT Patterns 4 EINFÜHRUNG - LERNZIELE  Was ist MQTT? Was werden wir bei diesem Workshop lernen? Warum nicht immer HTTP? MQTT Broker? MQTT Clients? Wie funktioniert MQTT im Detail? Wie baue ich einen Software-Deathstar ;-)
  • 5. 5 EINFÜHRUNG - ANWENDUNGSFALL Unser Anwendungsfall: Deathstar Simulalator Implementierung eines MQTT Todesstern Simulators und eines Web-Dashboards zur Anzeige von Daten und Steuerung des Simulators
  • 6. 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
  • 7. 7 EINFÜHRUNG - BENÖTIGTE SOFTWARE Wer benötigt noch diese Software?
  • 8.  Einführung in MQTT Überblick und wichtigste Features und Eigenschaften
  • 9. 9 Herausforderungen im IoT Unzuverlässige Netzwerke Skalierbarkeit Bidirektionale Kommunikation Constrained Devices Security Push Messaging MQTT - HERAUSFORDERUNGEN
  • 10. 10 MQTT - IOT PROTOKOLL ANFORDERUNGEN Anforderungen an ein IoT Protokoll Bandbreiteneffizient Skalierbar Standardisiert Offen Datenagnostisch Sowohl für schwache Hardware als auch Server geeignet
  • 11. 11 Sehr verbreitet Request / Response Seit 1991 verbreitet Dokumentenzentriert HTTP? MQTT - HTTP?
  • 12. 12 Warum nicht immer HTTP? Viel Overhead Polling statt Push Kein Quality of Service Stateless Wie merken wir, dass ein Client offline ist? MQTT - HTTP?
  • 13. 13 MQTT - MESSAGING FÜR DAS INTERNET DER DINGE MQTT - Messaging für das Internet der Dinge  Einfach  Publish / Subscribe  Binär  Messaging Protokoll  Minimaler Overhead  Datenagnostisch 
  • 14. 14 Anwendungsfälle Push statt Pull Zuverlässigkeit auch bei unzuverlässigen Netzwerken Constrained Devices Geringe Bandbreite und hohe Latenz Enterprise -> Mobile MQTT - ANWENDUNGSFÄLLE
  • 15. 15 3 QoS Stufen Retained Messages Topic Wildcards Last Will and Testament Persistent Sessions Heartbeats Features MQTT - FEATURES
  • 16. Was ist Publish / Subscribe Messaging?
  • 17. 17 Pub / Sub MQTT - PUB / SUB
  • 18. 18 MQTT Topics Hierarchisch Wildcards (+ und #) Queuing (QoS > 0) Sehr Leichtgewichtig Dynamisch MQTT - MQTT TOPICS
  • 20. 20 deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  • 21. Deathstar superlaser status: deathstar/superlaser/status 21 deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  • 22. 22 All Data from Greenhouse: deathstar/greenhouse/# deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  • 23. 23 All Data from deathstar: deathstar/# deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  • 24. Username / Password Payload Verschlüsselung TLS Client Certificate Authentication Permissions 24 MQTT Security MQTT - MQTT SECURITY
  • 25. 25 MQTT - Historische Entwicklung MQTT - GESCHICHTE Arlen Nipper (Arcom) & Andy Stanford-Clark (IBM) entwickeln MQTT freie Verfügbarkeit OASIS TC MQTT 3.1.1 Release 1999 2010 2013 2014
  • 26. 26 MQTT 3.1.1 Verbesserungen zu MQTT 3.1 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 - MQTT 3.1.1
  • 27.  Überblick über das MQTT Ökosystem MQTT Clients und Broker
  • 28. MQTT Client Bibliotheken Überblick über die populärsten Alternativen 
  • 30. 30 Eclipse Paho Open Source “Referenzimplementierung” Aktive Community Sync und Async API Lauffähig auf JavaME CLIENTS - PAHO
  • 31. 31 Fusesource MQTT Client Open Source 3 API Styles Sehr performant Basiert auf HawtIO Verfügbar in Maven Central CLIENTS - FUSESOURCE
  • 33. 33 Eclipse Paho Open Source “Referenzimplementierung” Basierend auf Websockets Sehr gut dokumentiert keine Abhängigkeiten CLIENTS - PAHO
  • 34. 34 Open Source Node.js Bibliothek Verfügbar in npm MQTT.js CLIENTS - MQTT.JS
  • 35.  C
  • 36. Open Source “Referenzimplementierung” Auch für C++ verfügbar Verfügbar für POSIX / Windows und Embedded 36 Eclipse Paho CLIENTS - PAHO
  • 38. 38 Sonstige Clients Paho (Python, Go, Lua) M2Mqtt (C#) ruby-mqtt (Ruby) Arduino Client MQTTKit (Objective C) Mosquitto-PHP (PHP) CLIENTS - SONSTIGES
  • 39. MQTT Client Apps Überblick über die gängigsten Tools 
  • 40. 40 Mosquitto_Pub / Mosquitto_Sub Kommandozeilentool Sehr viele Features Debug Modus Einbettbar (libmosquitto) CLIENTS - MOSQUITTO
  • 41. Betriebssystemunabhängig Benötigt aktivierte Websockets Publish / Subscribe Real-Time Updates 41 HiveMQ Web Client CLIENTS - HIVEMQ WEB CLIENT
  • 42. 42 JavaFX Mit nativen Wrapper für alle gängigen Betriebssysteme Scripting Support Broker Status ($SYS) Support MQTT.fx CLIENTS - MQTT.FX
  • 43. 43 Sonstige Applikationen MQTTLens (Browser) MQTTSpy (JavaFX) MyMQTT (Android) MQTT Inspector (iOS) viele andere CLIENTS - SONSTIGES
  • 44. MQTT Broker Alternativen für das “Herzstück” von MQTT 
  • 45. 45 Open Source Ideal für Constrained Devices Unterstützt Bridging In C implementiert Mosquitto BROKER - MOSQUITTO
  • 46. 46 Open Source Node.js Broker Einbettbar Unterstützt nicht alle MQTT Features Mosca BROKER - MOSCA
  • 47. 47 Open Source In Erlang implementiert MQTT Adapter Unterstützt nicht alle MQTT Features RabbitMQ BROKER - RABBITMQ
  • 48. High Performance MQTT Broker Nativer Websockets Support Open Source Plugin System Unterstützt Bridging Clustering Skaliert > 100.000 Connections 48 HiveMQ BROKER - HIVEMQ
  • 49. 49 BROKER - ÜBERSICHT MQTT Broker Übersicht Source: https://github.com/mqtt/mqtt.github.io/wiki/Server%20support QoS 0 QoS 1 QoS 2 Bridge SSL Cluster Websockets Plugin System mosquitto ✔ ✔ ✔ ✔ ✔ X X ✔ Mosca ✔ ✔ X ? ? ? ✔ X RabbitMQ ✔ ✔ X X ✔ ? ? ? HiveMQ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ActiveMQ ✔ ✔ ✔ ? ? ? ✔ ? RSMB ✔ ✔ ✔ ✔ X X X ? moquette ✔ ✔ X ? ? X X X
  • 50. Hands-on MQTT Testen und “Spielen” mit MQTT 
  • 51. Übung 1: Quality of Service Levels
  • 52. 52 QoS 0 At most once delivery QoS 1 At least once delivery QoS 2 Exactly once delivery ÜBUNGEN - QOS
  • 53. Showtime! Ausprobieren mit einem Tool der Wahl
  • 54. Übung 2: Retained Messages
  • 55. 55 Retained Messages “Last Known Good Value” Die letzte Nachricht wird vom Broker gespeichert Client entscheidet ob eine Nachricht retained wird Clients bekommen retained message nach Subscribe ÜBUNGEN - RETAINED MESSAGES
  • 56. Showtime! Ausprobieren mit einem Tool der Wahl
  • 57. Übung 3: Last Will and Testament
  • 58. 58 Last Will and Testament Client definiert LWT Broker schickt diese Nachricht nach Client “Tod”. Echter Push Nützlich um on / off verlässlich zu implementieren ÜBUNGEN - LWT
  • 59. Showtime! Ausprobieren mit einem Tool der Wahl
  • 61. Broker speichert Client Session Client entscheidet ob er eine persistent Session haben möchte Queuing für QoS > 0 61 Persistent Session B ÜBUNGEN - PERSISTENT SESSION Connect Subscribe device/+/status device/12/status: „1“ 1st B Re-Connect device/12/status: „1“ 2nd
  • 62. Showtime! Ausprobieren mit einem Tool der Wahl
  • 63. Entwicklung eines MQTT Todesstern Simulators MQTT mit Java und Eclipse Paho 
  • 64. 64 Deathstar Simulator Dashboard Deathstar Simulator Implementiert in Java Dashboard Web Application MQTT Broker HiveMQ DEATHSTAR - GIT
  • 66. 1. Git installieren 2. Übungen können als Tag ausgechekt werden 3. Git Kommandos werden vor jeder Übung gezeigt 66 Git DEATHSTAR - GIT
  • 67. 67 Initiales Klonen des Repositories DEATHSTAR - GIT git clone git@github.com:dc-square/ ->! introduction-to-mqtt-workshop.git
  • 69. 69 DEATHSTAR - ANATOMY
  • 70. 70 Features • Alarmierung wenn Eindringlinge dem Reaktor zu nahe kommen • Abfeuern des Superlasers • Fernsteuerung der Meldefrequenz • Temperaturanzeige des Imperialen Gewächshauses • Melden des Status (Online / Offline) DEATHSTAR - FEATURES
  • 71. 71 DEATHSTAR - PAHO 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();
  • 72. 72 DEATHSTAR - PAHO 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);
  • 73. 73 DEATHSTAR - PAHO 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("#");
  • 74. Übung 1: Deathstar Reactor Alert
  • 75. 75 Checkout DEATHSTAR - GIT git checkout deathstar-start
  • 79. 79 Checkout DEATHSTAR - GIT git checkout superlaser-start
  • 80. 80 Was ist zu tun? DEATHSTAR - SUPERLASER Subscriben auf deathstar/superlaser/status Laser abfeuern Status wieder auf deaktiviert setzen
  • 82. Übung 3: Update Frequenz ändern
  • 83. 83 Checkout DEATHSTAR - GIT git checkout frequency-start
  • 85. Übung 4: Imperial Bath Greenhouse
  • 86. 86 Checkout DEATHSTAR - GIT git checkout greenhouse-start
  • 89. 89 Checkout DEATHSTAR - GIT git checkout status-start
  • 91.  Entwicklung einer MQTT Todesstern KontrollApp MQTT over Websockets
  • 92. 92 Features • Alarmierung wenn Eindringlinge dem Reaktor zu nahe kommen • Abfeuern des Superlasers • Fernsteuerung der Meldefrequenz • Temperaturanzeige des Imperialen Gewächshauses • Anzeigen des Status (Online / Offline) DASHBOARD - FEATURES
  • 94. 94 DASHBOARD - WEBSOCKETS MQTT Over Websockets
  • 95. Übung 1: Deathstar Reactor Alert
  • 96. 96 Checkout DASHBOARD - GIT git checkout db-start
  • 99. 99 Checkout DASHBOARD - GIT git checkout db-superlaser-start
  • 101. Übung 3: Imperial Greenhouse
  • 102. 102 Checkout DASHBOARD - GIT git checkout db-greenhouse-start
  • 104. Übung 4: Update Frequenz ändern
  • 105. 105 Checkout DASHBOARD - GIT git checkout db-frequency-start
  • 108. 108 Checkout DASHBOARD - GIT git checkout db-status-start
  • 110. HIVEMQ - PAY-AS-YOU-GO http://www.hivemq.com/iot-con-special-2014/ 110
  • 111. Q & A
  • 113. 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
  • 114. 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
  • 115. 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