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 Websocket...
Wie entwickle ich einen 
MQTT Client in Java? 
Was ist “MQTT over 
Websockets?” 
Wie funktioniert MQTT 
für Webseiten? 
Um...
5 
EINFÜHRUNG - ANWENDUNGSFALL 
Unser Anwendungsfall: Deathstar Simulalator 
Implementierung eines MQTT Todesstern Simulat...
6 
EINFÜHRUNG - BENÖTIGTE SOFTWARE 
Benötigte Software 
HiveMQ 
MQTT Broker 
MQTT Client 
! 
MQTT.fx 
mosqutto Tools 
Hive...
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 
...
10 
MQTT - IOT PROTOKOLL ANFORDERUNGEN 
Anforderungen an ein IoT Protokoll 
Bandbreiteneffizient 
Skalierbar 
Standardisie...
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 
...
13 
MQTT - MESSAGING FÜR DAS INTERNET DER DINGE 
MQTT - Messaging für das Internet der Dinge 
 Einfach 
 Publish / Subsc...
14 
Anwendungsfälle 
Push statt Pull 
Zuverlässigkeit auch bei 
unzuverlässigen Netzwerken 
Constrained Devices 
Geringe B...
15 
3 QoS Stufen 
Retained Messages 
Topic Wildcards 
Last Will and Testament 
Persistent Sessions 
Heartbeats 
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 ...
22 
All Data from Greenhouse: deathstar/greenhouse/# 
deathstar 
superlaser 
greenhouse 
status 
usages 
humidity 
temp 
/...
23 
All Data from deathstar: deathstar/# 
deathstar 
superlaser 
greenhouse 
status 
usages 
humidity 
temp 
/ / 
MQTT - M...
Username / Password 
Payload Verschlüsselung 
TLS 
Client Certificate Authentication 
Permissions 
24 
MQTT Security 
MQTT...
25 
MQTT - Historische Entwicklung 
MQTT - GESCHICHTE 
Arlen Nipper (Arcom) & 
Andy Stanford-Clark (IBM) 
entwickeln MQTT ...
26 
MQTT 3.1.1 Verbesserungen zu MQTT 3.1 
1. Weitgehend abwärtskompatibel 
2. Effizientere Header 
3. Client-ID Längenres...
 
Ü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 
CLIE...
31 
Fusesource MQTT Client 
Open Source 
3 API Styles 
Sehr performant 
Basiert auf HawtIO 
Verfügbar in Maven Central 
CL...
 Javascript
33 
Eclipse Paho 
Open Source 
“Referenzimplementierung” 
Basierend auf Websockets 
Sehr gut dokumentiert 
keine Abhängigk...
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 P...
 Sonstige
38 
Sonstige Clients 
Paho (Python, Go, Lua) 
M2Mqtt (C#) 
ruby-mqtt (Ruby) 
Arduino Client 
MQTTKit (Objective C) 
Mosqui...
MQTT Client Apps 
Überblick über die gängigsten Tools 

40 
Mosquitto_Pub / Mosquitto_Sub 
Kommandozeilentool 
Sehr viele Features 
Debug Modus 
Einbettbar (libmosquitto) 
CLIENT...
Betriebssystemunabhängig 
Benötigt aktivierte Websockets 
Publish / Subscribe 
Real-Time Updates 
41 
HiveMQ Web Client 
C...
42 
JavaFX 
Mit nativen Wrapper für alle 
gängigen Betriebssysteme 
Scripting Support 
Broker Status ($SYS) Support 
MQTT....
43 
Sonstige Applikationen 
MQTTLens (Browser) 
MQTTSpy (JavaFX) 
MyMQTT (Android) 
MQTT Inspector (iOS) 
viele andere 
CL...
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 
Ska...
49 
BROKER - ÜBERSICHT 
MQTT Broker Übersicht Source: https://github.com/mqtt/mqtt.github.io/wiki/Server%20support 
QoS 0 ...
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 e...
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ützli...
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 
...
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 
...
65 
DEATHSTAR - GIT
1. Git installieren 
2. Übungen können als Tag 
ausgechekt werden 
3. Git Kommandos werden vor jeder 
Übung gezeigt 
66 
G...
67 
Initiales Klonen des Repositories 
DEATHSTAR - GIT 
git clone git@github.com:dc-square/ ->! 
introduction-to-mqtt-work...
Todesstern?!?!?
69 
DEATHSTAR - ANATOMY
70 
Features 
• Alarmierung wenn Eindringlinge 
dem Reaktor zu nahe kommen 
• Abfeuern des Superlasers 
• Fernsteuerung de...
71 
DEATHSTAR - PAHO 
MqttClient client = new MqttClient( 
"tcp://localhost:1883", //URI 
"publisher", //Client ID 
new Me...
72 
DEATHSTAR - PAHO 
MqttClient client = new MqttClient( 
"tcp://localhost:1883", //URI 
"publisher", //Client ID 
new Me...
73 
DEATHSTAR - PAHO 
final MqttClient client = new MqttClient(...); 
client.setCallback(new MqttCallback() { 
@Override 
...
Ü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...
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 de...
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....
114 
OUR TEAM - HELLO YOU! 
Credits II (all Images under Creative Commons) 
‣ “Hardcore Stormies Hit The Gym” by W_Minshul...
115 
OUR TEAM - HELLO YOU! 
Credits III (all Images under Creative Commons) 
‣ “move to the new deathstar” by Nerd herdr: ...
Nächste SlideShare
Wird geladen in …5
×

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

3.707 Aufrufe

Veröffentlicht am

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

Am Ende des Workshops wird ein Java basierter MQTT Todesstern Simulator inklusive Dashboard mit "MQTT over websocket" support entstehen.

Veröffentlicht in: Technologie
0 Kommentare
4 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.707
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1.022
Aktionen
Geteilt
0
Downloads
50
Kommentare
0
Gefällt mir
4
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

  1. 1. PUB / SUB for the masses An Introduction to MQTT #IotCon Workshop
  2. 2. 2 EINFÜHRUNG - VORSTELLUNG Christian Götz Dominik Obermaier CEO @ dc-square CTO @ dc-square @goetzchr @dobermai
  3. 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. 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. 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. 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. 7 EINFÜHRUNG - BENÖTIGTE SOFTWARE Wer benötigt noch diese Software?
  8. 8.  Einführung in MQTT Überblick und wichtigste Features und Eigenschaften
  9. 9. 9 Herausforderungen im IoT Unzuverlässige Netzwerke Skalierbarkeit Bidirektionale Kommunikation Constrained Devices Security Push Messaging MQTT - HERAUSFORDERUNGEN
  10. 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. 11 Sehr verbreitet Request / Response Seit 1991 verbreitet Dokumentenzentriert HTTP? MQTT - HTTP?
  12. 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. 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. 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. 15 3 QoS Stufen Retained Messages Topic Wildcards Last Will and Testament Persistent Sessions Heartbeats Features MQTT - FEATURES
  16. 16. Was ist Publish / Subscribe Messaging?
  17. 17. 17 Pub / Sub MQTT - PUB / SUB
  18. 18. 18 MQTT Topics Hierarchisch Wildcards (+ und #) Queuing (QoS > 0) Sehr Leichtgewichtig Dynamisch MQTT - MQTT TOPICS
  19. 19. Topic Matching Beispiele
  20. 20. 20 deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  21. 21. Deathstar superlaser status: deathstar/superlaser/status 21 deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  22. 22. 22 All Data from Greenhouse: deathstar/greenhouse/# deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  23. 23. 23 All Data from deathstar: deathstar/# deathstar superlaser greenhouse status usages humidity temp / / MQTT - MQTT TOPICS
  24. 24. Username / Password Payload Verschlüsselung TLS Client Certificate Authentication Permissions 24 MQTT Security MQTT - MQTT SECURITY
  25. 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. 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. 27.  Überblick über das MQTT Ökosystem MQTT Clients und Broker
  28. 28. MQTT Client Bibliotheken Überblick über die populärsten Alternativen 
  29. 29.  Java
  30. 30. 30 Eclipse Paho Open Source “Referenzimplementierung” Aktive Community Sync und Async API Lauffähig auf JavaME CLIENTS - PAHO
  31. 31. 31 Fusesource MQTT Client Open Source 3 API Styles Sehr performant Basiert auf HawtIO Verfügbar in Maven Central CLIENTS - FUSESOURCE
  32. 32.  Javascript
  33. 33. 33 Eclipse Paho Open Source “Referenzimplementierung” Basierend auf Websockets Sehr gut dokumentiert keine Abhängigkeiten CLIENTS - PAHO
  34. 34. 34 Open Source Node.js Bibliothek Verfügbar in npm MQTT.js CLIENTS - MQTT.JS
  35. 35.  C
  36. 36. Open Source “Referenzimplementierung” Auch für C++ verfügbar Verfügbar für POSIX / Windows und Embedded 36 Eclipse Paho CLIENTS - PAHO
  37. 37.  Sonstige
  38. 38. 38 Sonstige Clients Paho (Python, Go, Lua) M2Mqtt (C#) ruby-mqtt (Ruby) Arduino Client MQTTKit (Objective C) Mosquitto-PHP (PHP) CLIENTS - SONSTIGES
  39. 39. MQTT Client Apps Überblick über die gängigsten Tools 
  40. 40. 40 Mosquitto_Pub / Mosquitto_Sub Kommandozeilentool Sehr viele Features Debug Modus Einbettbar (libmosquitto) CLIENTS - MOSQUITTO
  41. 41. Betriebssystemunabhängig Benötigt aktivierte Websockets Publish / Subscribe Real-Time Updates 41 HiveMQ Web Client CLIENTS - HIVEMQ WEB CLIENT
  42. 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. 43 Sonstige Applikationen MQTTLens (Browser) MQTTSpy (JavaFX) MyMQTT (Android) MQTT Inspector (iOS) viele andere CLIENTS - SONSTIGES
  44. 44. MQTT Broker Alternativen für das “Herzstück” von MQTT 
  45. 45. 45 Open Source Ideal für Constrained Devices Unterstützt Bridging In C implementiert Mosquitto BROKER - MOSQUITTO
  46. 46. 46 Open Source Node.js Broker Einbettbar Unterstützt nicht alle MQTT Features Mosca BROKER - MOSCA
  47. 47. 47 Open Source In Erlang implementiert MQTT Adapter Unterstützt nicht alle MQTT Features RabbitMQ BROKER - RABBITMQ
  48. 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. 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. 50. Hands-on MQTT Testen und “Spielen” mit MQTT 
  51. 51. Übung 1: Quality of Service Levels
  52. 52. 52 QoS 0 At most once delivery QoS 1 At least once delivery QoS 2 Exactly once delivery ÜBUNGEN - QOS
  53. 53. Showtime! Ausprobieren mit einem Tool der Wahl
  54. 54. Übung 2: Retained Messages
  55. 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. 56. Showtime! Ausprobieren mit einem Tool der Wahl
  57. 57. Übung 3: Last Will and Testament
  58. 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. 59. Showtime! Ausprobieren mit einem Tool der Wahl
  60. 60. Übung 4: Persistent Session
  61. 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. 62. Showtime! Ausprobieren mit einem Tool der Wahl
  63. 63. Entwicklung eines MQTT Todesstern Simulators MQTT mit Java und Eclipse Paho 
  64. 64. 64 Deathstar Simulator Dashboard Deathstar Simulator Implementiert in Java Dashboard Web Application MQTT Broker HiveMQ DEATHSTAR - GIT
  65. 65. 65 DEATHSTAR - GIT
  66. 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. 67 Initiales Klonen des Repositories DEATHSTAR - GIT git clone git@github.com:dc-square/ ->! introduction-to-mqtt-workshop.git
  68. 68. Todesstern?!?!?
  69. 69. 69 DEATHSTAR - ANATOMY
  70. 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. 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. 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. 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. 74. Übung 1: Deathstar Reactor Alert
  75. 75. 75 Checkout DEATHSTAR - GIT git checkout deathstar-start
  76. 76. Implementierung
  77. 77. Übung 2: Superlaser
  78. 78. MQTT Workshop
  79. 79. 79 Checkout DEATHSTAR - GIT git checkout superlaser-start
  80. 80. 80 Was ist zu tun? DEATHSTAR - SUPERLASER Subscriben auf deathstar/superlaser/status Laser abfeuern Status wieder auf deaktiviert setzen
  81. 81. Implementierung
  82. 82. Übung 3: Update Frequenz ändern
  83. 83. 83 Checkout DEATHSTAR - GIT git checkout frequency-start
  84. 84. Implementierung
  85. 85. Übung 4: Imperial Bath Greenhouse
  86. 86. 86 Checkout DEATHSTAR - GIT git checkout greenhouse-start
  87. 87. Implementierung
  88. 88. Übung 5: Statusanzeige
  89. 89. 89 Checkout DEATHSTAR - GIT git checkout status-start
  90. 90. Implementierung
  91. 91.  Entwicklung einer MQTT Todesstern KontrollApp MQTT over Websockets
  92. 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
  93. 93. Demonstration
  94. 94. 94 DASHBOARD - WEBSOCKETS MQTT Over Websockets
  95. 95. Übung 1: Deathstar Reactor Alert
  96. 96. 96 Checkout DASHBOARD - GIT git checkout db-start
  97. 97. Implementierung
  98. 98. Übung 2: Superlaser
  99. 99. 99 Checkout DASHBOARD - GIT git checkout db-superlaser-start
  100. 100. Implementierung
  101. 101. Übung 3: Imperial Greenhouse
  102. 102. 102 Checkout DASHBOARD - GIT git checkout db-greenhouse-start
  103. 103. Implementierung
  104. 104. Übung 4: Update Frequenz ändern
  105. 105. 105 Checkout DASHBOARD - GIT git checkout db-frequency-start
  106. 106. Implementierung
  107. 107. Übung 5: Statusanzeige
  108. 108. 108 Checkout DASHBOARD - GIT git checkout db-status-start
  109. 109. Implementierung
  110. 110. HIVEMQ - PAY-AS-YOU-GO http://www.hivemq.com/iot-con-special-2014/ 110
  111. 111. Q & A
  112. 112. Danke! @dobermai @goetzchr
  113. 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. 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. 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

×