Christian Götz & Dominik Obermaier | dc-square 
! 
! 
Bau deine eigene IoT Cloud
Wer sind wir? 
CHRISTIAN GÖTZ 
@goetzchr 
DOMINIK OBERMAIER 
@dobermai 
Christian Götz / Dominik Obermaier - Bau dir deine...
dc-square 
V 
p 
HiveMQ IoT Beratung 
s 
Workshops & Schulung 
HiveMQ Plugin Entwicklung 
Christian Götz / Dominik Obermai...
Ziel des Workshops 
Architektur einer IoT Plattform 
Implementieren eines Prototypen 
Christian Götz / Dominik Obermaier -...
Endergebnis 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Entwicklungumgebung 
Was jeder installiert haben sollte 
% 
• Java JDK 7 
• Java IDE (IntelliJ, Eclipse, Netbeans, vi, …) ...
GIT Repository 
clone 
https://github.com/dc-square/ 
build-your-own-iot-cloud-workshop 
oder 
USB-Stick 
Christian Götz /...
IoT Cloud Platform 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Internet der Dinge 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Technologie die Geräte über Kabel 
oder Drahtlos vernetzt 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT C...
IoT Cloud Platform 
Komponenten 
Data Storage 
Datenbank mit historische Daten 
N Device Management 
Configure, Update Fir...
IoT Cloud Platform 
Komponenten, die wir heute benutzen 
Data Storage 
MySQL Datenbank mit REST API 
N Device Management 
...
Eclipse Paho, 
HTTP 
Geräte 
3 
! 
GOAL 
IoT Platform 
Prototyp 
Technologien 
Prototyp 
HiveMQ 
MQTT Broker 
Dropwizard 
...
Eclipse Paho, 
HTTP 
Geräte 
Technologien 
Geräte 
Wetterstationen liefern Live Daten per Push (MQTT) 
➡ Simula6on der WeN...
HiveMQ 
MQTT Broker 
Technologien 
HiveMQ 
Austausch von Daten zwischen Geräten 
Persistieren der Daten in die Datenbank 
...
Dropwizard 
REST API 
Technologien 
Dropwizard 
Historische Daten zur Verfügung stellen 
eingehende POST Requests an HiveM...
HTML/JS 
Web App 
Technologien 
Webapp 
Anzeige von Live Daten über MQTT 
Anzeige von historischen Daten über REST API 
Ch...
Teil 1: Geräte 
MQTT, HTTP 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
HTTP 
Protokoll 
des 
Internets 
GET, POST, 
PUT, DELETE 
Request/ 
Response 
Server/ 
Client 
Fakten 
HTTP 
Christian Göt...
HTTP 
Vorteile/Nachteile 
W Bekannt und Bewährt 
Polling X 
nicht bidirektional X 
Header ist verbose X 
Keine Garantien X...
MQTT 
Kurzübersicht 
Einfach 
Connect, Publish, Subscribe, Unsubscribe, 
Disconnect 
Messaging Protokoll 
Austausch von Na...
MQTT History 
Timeline 
1999 
Entwickelt 
IBM/Arccom 
2013 
Eclipse IoT (M2M) 
2011 
MQTT released 
royalty free 
b 
2015 ...
MQTT - Topics 
1 
iotcloud/device1 
Feature 
einfacher Topic 
2 
iotcloud/device1/temp 
einfacher Topic 
3 
iotcloud/+/tem...
MQTT - Quality of Service 
genau einmal QoS 2 
Feature 
zumindest einmal QoS 1 
Sicherheit, dass die Nachricht ankommt 
be...
MQTT - LWT 
Feature 
Device 1 HiveMQ 
1 
connect 
LWT 
Topic: iotcloud/device1/status 
Message: offline 
2 
connack 
ok 
3...
MQTT - Retained Msg 
Feature 
Device 1 HiveMQ 
1 
publish 
Device 2 HiveMQ 
1 
subscribe 
2 
publish 
Message 
Topic: iotc...
MQTT over Websockets 
Feature 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
MQTT Broker 
Kurzübersicht 
Herzstück von MQTT 
Versenden der Nachrichten an Clients 
Benutzt nur Topics 
Topics sind dyna...
MQTT GUI Tools 
MQTT.fx 0.0.7 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
http://www.jensd.de/wordpress/?p=1423 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail /...
MQTT GUI Tools 
MQTT spy 0.0.6 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / websit...
Timeline 
https://code.google.com/p/mqtt-spy/ 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github ...
MQTT CMD Tools 
mosquitto_pub/_sub 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / we...
Mosquitto Clients 
Publish/Subscribe 
$ mosquitto_pub -h broker.mqttdashboard.com 
-t iotcloud/test -m “test” -q 1 
! 
htt...
MQTT Libraries 
Eclipse Paho 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Open Source 
“Reference Implementation” 
Many languages: Java, Javascript, 
Lua, C, C++, Go, Python 
Active Community 
JS ...
MQTT Libraries 
FuseSource MQTT Client 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail ...
Open Source 
3 API Styles 
Automatic Reconnect 
Maven Central 
Less active Community 
Christian Götz / Dominik Obermaier -...
MQTT + HiveMQ 
Hands-on 
Ü3 
Ü2 
Ü1 MQTT ausprobieren 
Datenbankparameter * Alle 30s veröffentlichen wie viele 
2 
HiveMQ ...
Übung 1 
MQTT ausprobieren 
STEPS 
HiveMQ starten Unix: /bin/run.sh 
Win: run.bat starten 
Websocket Client mqtt-websocket...
Übung 2 
Simulator benutzen und Daten von Gerät 2 empfangen 
STEPS 
HiveMQ starten Unix: /bin/run.sh 
Win: run.bat starten...
Teil 2: MQTT Broker 
HiveMQ 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
MQTT Broker 
Hochskalierbarer MQTT Broker 
> 100.000 Verbindungen 
Offenes Plugin System 
Einhängen von benutzerdefinierte...
Plugin System 
Hands-on 
Inject everything! 
Steigert die Testbarkeit! 
Callback bekannt machen 
Callback muss hier regist...
Plugin Callbacks 
Einhängen von benutzerdefinierter Logik 
Security 
MQTT Message 
Others 
Broker Events 
MQTT Lowlevel 
1...
• HiveMQ SPI 
Plugin Entwicklung 
Tools für den Entwickler 
• Vorraussetzung um entwickeln zu können 
• Maven Plugin 
• Pl...
HiveMQ 
MQTT Broker 
Technologien 
HiveMQ 
Austausch von Daten zwischen Geräten 
Persistieren der Daten in die Datenbank 
...
Übung 3 
Plugin mit HiveMQ starten 
STEPS 
hivemq-­‐plugin hivemq-plugin in Java IDE öffnen 
HiveMQ Pfad Ordner von HiveMQ...
Übung 4 
Benutzerdefinierte Logik für Publish 
STEPS 
hivemq-­‐plugin hivemq-plugin in Java IDE öffnen 
HiveMQ Pfad Ordner...
Übung 5 
Schreiben in die Datenbank 
STEPS 
hivemq-­‐plugin hivemq-plugin in Java IDE öffnen 
HiveMQ Pfad Ordner von HiveM...
Verbesserungen 
HiveMQ Plugin 
• Connection Pool für Datenbankverbindung 
• JDBC in extra Thread 
• ORM-Framework einsetze...
Teil 3: REST API 
Dropwizard 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Dropwizard 
REST API 
Technologien 
Dropwizard 
Historische Daten zur Verfügung stellen 
eingehende POST Requests an HiveM...
REST Ressourcen 
IoTCloud 
/sensor-data GET Alle Werte 
Aktueller Wert POST /sensor-data/{device1} 
/sensor-data/{device1}...
Dropwizard 
Kurzübersicht 
“Produktiv einsatzbereite, hochskalierbare REST API” 
Ausgerichtet auf den einfachen Betrieb 
M...
Technologien 
Dropwizard 
Jersey 
Jackson 
HTTP REST JSON 
powered by 
metrics 
Christian Götz / Dominik Obermaier - Bau d...
Getting Started 
Dropwizard 
Configuration 
yaml 
+ class 
Ressourcen 
classes 
Starten 
server config.yml 
Christian Götz...
Übung 6 
Erstes Dropwizard Projekt 
STEPS 
Projekt öffnen rest-api in Java IDE öffnen 
Projekt ausführen Run Configuration...
Übung 7 
GET /sensor-data 
STEPS 
Projekt öffnen rest-api in Java IDE öffnen 
Datenbank Datenbank anlegen mit create.sql 
...
Übung 8 
JDBI statt JDBC 
STEPS 
Projekt öffnen rest-api in Java IDE öffnen 
KonfiguraMon Datenbankparameter in iotcloud.y...
Verbesserungen 
HiveMQ Plugin 
• Caching einbauen 
• Datenbankverbindung mit ConnectionPool 
• ORM Framework einsetzen (JD...
Teil4: WebUI 
Erster Test für die IoT Cloud 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / ...
WebUI 
HiveMQ Plugin 
Live Daten über MQTT 
Historische Daten über REST 
Christian Götz / Dominik Obermaier - Bau dir dein...
Übung 9 
WebUI Ausliefern 
STEPS 
Projekt öffnen rest-api in Java IDE öffnen 
Assetbundle Assetbundle konfigurieren 
Versi...
Zusammenfassung 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
IoT Cloud Platform 
Komponenten 
Data Storage 
Datenbank mit historische Daten 
N Device Management 
Configure, Update Fir...
Ausblick 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Mehr Protokolle 
CoAP, XMPP, … 
Skalierbarkeit, 
Verfügbarkeit 
HiveMQ und Dropwizard sind 
skalierbar 
Welche Herausforde...
Danke! 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
IoT Con HiveMQ Special 
http://www.hivemq.com/iot-con-special-2014/ 
Christian Götz / Dominik Obermaier - Bau dir deine ei...
Nächste SlideShare
Wird geladen in …5
×

Build your own IoT Cloud! [GER]

1.573 Aufrufe

Veröffentlicht am

Durch die Vielzahl offener Hardwareplatformen ist es heutzutage ein Leichtes, eigene Geräte für Anwendungen im Internet der Dinge zu bauen. Die meisten Gadgets haben mit einem Arduino- oder Raspberry Pi-Prototyp begonnen, bevor sie eigene Geräte fertigen ließen. Genauso einfach wie das Erstellen von Hardware-Prototypen ist das Bauen einer eigenen IoT Cloud Platform für die Kommunikation mit den Geräten und der Darstellung der verarbeiteten Daten für den Endbenutzer.

In diesem Power-Workshop werden dies alle Teilnehmer selbst ausprobieren können, da es das Ziel ist, eine Platform zu bauen, die Sensordaten empfangen, diese persistieren und für die Anzeige im Webbrowser aufbereiten kann. Dabei sollen sowohl

Live-Daten von den Sensoren, als auch historische Daten über verschiedene gängige IoT-Protokolle im Webbrowser ankommen. Der Workshop besteht aus einer kurzen Einführung in die Thematik und einer möglichen Architektur einer IoT-Cloud, gefolgt von einem praktischen Teil. Der zweite Teil stützt sich sehr stark auf Java-Technologien von daher wäre es wünschenswert, wenn jeder Teilnehmer einen Laptop mit installiertem Java JDK dabei hätte und zumindestens Java Grundkenntnisse mitbringen würde.

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.573
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
37
Aktionen
Geteilt
0
Downloads
36
Kommentare
0
Gefällt mir
4
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Build your own IoT Cloud! [GER]

  1. 1. Christian Götz & Dominik Obermaier | dc-square ! ! Bau deine eigene IoT Cloud
  2. 2. Wer sind wir? CHRISTIAN GÖTZ @goetzchr DOMINIK OBERMAIER @dobermai Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  3. 3. dc-square V p HiveMQ IoT Beratung s Workshops & Schulung HiveMQ Plugin Entwicklung Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  4. 4. Ziel des Workshops Architektur einer IoT Plattform Implementieren eines Prototypen Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  5. 5. Endergebnis Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  6. 6. Entwicklungumgebung Was jeder installiert haben sollte % • Java JDK 7 • Java IDE (IntelliJ, Eclipse, Netbeans, vi, …) • GIT • Maven • HiveMQ 2.0.2 • MySQL Datenbank • MySQL Datenbankviewer • Aktueller Webbrowser % % % % % % % Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  7. 7. GIT Repository clone https://github.com/dc-square/ build-your-own-iot-cloud-workshop oder USB-Stick Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  8. 8. IoT Cloud Platform Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  9. 9. Internet der Dinge Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  10. 10. Technologie die Geräte über Kabel oder Drahtlos vernetzt Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  11. 11. IoT Cloud Platform Komponenten Data Storage Datenbank mit historische Daten N Device Management Configure, Update Firmware, Monitor, Sta6s6cs t ( Administration & Betrieb Web UI, Einfache Bedienung U G Live Daten von Sensoren J HTTP, MQTT, CoAP, … Identity Management User, Devices Security Transportsicherheit, Authen6fizierung, Autorisierung y IoT Cloud Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  12. 12. IoT Cloud Platform Komponenten, die wir heute benutzen Data Storage MySQL Datenbank mit REST API N Device Management Configure, Update Firmware, Monitor, Sta6s6cs t ( Administration & Betrieb Web UI, Einfache Bedienung G Live Daten von Sensoren J HTTP und MQTT Identity Management User, Devices Security Transportsicherheit, Authen6fizierung, Autorisierung y IoT Cloud U Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  13. 13. Eclipse Paho, HTTP Geräte 3 ! GOAL IoT Platform Prototyp Technologien Prototyp HiveMQ MQTT Broker Dropwizard REST API HTML/JS Web App Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  14. 14. Eclipse Paho, HTTP Geräte Technologien Geräte Wetterstationen liefern Live Daten per Push (MQTT) ➡ Simula6on der WeNersta6onen mit Eclipse Paho manche Geräte liefern Daten per HTTP Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  15. 15. HiveMQ MQTT Broker Technologien HiveMQ Austausch von Daten zwischen Geräten Persistieren der Daten in die Datenbank Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  16. 16. Dropwizard REST API Technologien Dropwizard Historische Daten zur Verfügung stellen eingehende POST Requests an HiveMQ weiterleiten Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  17. 17. HTML/JS Web App Technologien Webapp Anzeige von Live Daten über MQTT Anzeige von historischen Daten über REST API Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  18. 18. Teil 1: Geräte MQTT, HTTP Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  19. 19. HTTP Protokoll des Internets GET, POST, PUT, DELETE Request/ Response Server/ Client Fakten HTTP Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  20. 20. HTTP Vorteile/Nachteile W Bekannt und Bewährt Polling X nicht bidirektional X Header ist verbose X Keine Garantien X Stateless X Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  21. 21. MQTT Kurzübersicht Einfach Connect, Publish, Subscribe, Unsubscribe, Disconnect Messaging Protokoll Austausch von Nachrichten, teilweise Queuing basiert auf TCP Port 1883 Publish/Subscribe Clients abonnieren auf Topics auf denen andere Clients Nachrichten veröffentlichen Minimaler Overhead teilweise nur 2 Byte Ausgelegt für unstabile Netze individuelle Garan6en möglich für jede Nachricht Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  22. 22. MQTT History Timeline 1999 Entwickelt IBM/Arccom 2013 Eclipse IoT (M2M) 2011 MQTT released royalty free b 2015 2014 OASIS Standard Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  23. 23. MQTT - Topics 1 iotcloud/device1 Feature einfacher Topic 2 iotcloud/device1/temp einfacher Topic 3 iotcloud/+/temp Single Wildcard 4 iotcloud/# Multi-level Wildcard Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  24. 24. MQTT - Quality of Service genau einmal QoS 2 Feature zumindest einmal QoS 1 Sicherheit, dass die Nachricht ankommt bestenfalls einmal QoS 0 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  25. 25. MQTT - LWT Feature Device 1 HiveMQ 1 connect LWT Topic: iotcloud/device1/status Message: offline 2 connack ok 3 publish Message Topic: iotcloud/device1/status Message: offline 4 offline LWT Message Topic: iotcloud/device1/status Message: offline Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  26. 26. MQTT - Retained Msg Feature Device 1 HiveMQ 1 publish Device 2 HiveMQ 1 subscribe 2 publish Message Topic: iotcloud/device1/temp Message: 23,45 Message Topic: iotcloud/+/temp Ohne Retained 0-5s Message Topic: iotcloud/device1/temp Message: 23.45 5s Mit Retained sofort! Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  27. 27. MQTT over Websockets Feature Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  28. 28. MQTT Broker Kurzübersicht Herzstück von MQTT Versenden der Nachrichten an Clients Benutzt nur Topics Topics sind dynamisch Benutzerdefinierte Funktionen MQTT Broker Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  29. 29. MQTT GUI Tools MQTT.fx 0.0.7 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  30. 30. http://www.jensd.de/wordpress/?p=1423 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  31. 31. MQTT GUI Tools MQTT spy 0.0.6 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  32. 32. Timeline https://code.google.com/p/mqtt-spy/ Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  33. 33. MQTT CMD Tools mosquitto_pub/_sub Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  34. 34. Mosquitto Clients Publish/Subscribe $ mosquitto_pub -h broker.mqttdashboard.com -t iotcloud/test -m “test” -q 1 ! http://mosquitto.org/man/mosquitto_pub-1.html — ! $ mosquitto_sub -h broker.mqttdashboard.com -t iotcloud/test ! http://mosquitto.org/man/mosquitto_sub-1.html Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  35. 35. MQTT Libraries Eclipse Paho Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  36. 36. Open Source “Reference Implementation” Many languages: Java, Javascript, Lua, C, C++, Go, Python Active Community JS Library uses MQTT over Websockets Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  37. 37. MQTT Libraries FuseSource MQTT Client Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  38. 38. Open Source 3 API Styles Automatic Reconnect Maven Central Less active Community Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  39. 39. MQTT + HiveMQ Hands-on Ü3 Ü2 Ü1 MQTT ausprobieren Datenbankparameter * Alle 30s veröffentlichen wie viele 2 HiveMQ Beispielplugin code/0.2 Subscribe auf Simulator code/0.1 3 Ü4 Ü5 4 Reagieren auf einen Publish code/0.3 1 code/0.1 Einträge in der Datenbank sind 5 Publish in Datenbank code/0.4 * Property File für Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  40. 40. Übung 1 MQTT ausprobieren STEPS HiveMQ starten Unix: /bin/run.sh Win: run.bat starten Websocket Client mqtt-websocket-client/index.html öffnen Verbinden Verbinden Erfolgreich wenn HiveMQ ClientId ausgibt Subscribe Subscribe zu einfachem Topic Subscribe zu Wildcard Topic Publish Publish von Nachrichten auf verschiedenen Topics Version 0.1 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  41. 41. Übung 2 Simulator benutzen und Daten von Gerät 2 empfangen STEPS HiveMQ starten Unix: /bin/run.sh Win: run.bat starten Simulator starten simulator in Java IDE öffnen Version Ausführen 0.1 von DeviceSimulator Websocket Client mqtt-websocket-client/index.html öffnen Verbinden Verbinden Erfolgreich wenn HiveMQ ClientId ausgibt Subscribe Herausfinden auf welchem Topic Gerät 2 schickt Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  42. 42. Teil 2: MQTT Broker HiveMQ Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  43. 43. MQTT Broker Hochskalierbarer MQTT Broker > 100.000 Verbindungen Offenes Plugin System Einhängen von benutzerdefinierter Logik, Integra6on in bestehende Systeme Cloud ready Amazon Web Service, Microso` Azure, Own Datacenter Implementiert den MQTT Standard Gleichzei6ges Verbinden von MQTT Clients der Version 3.1.1 und 3.1 möglich Sicherheit TLS Verschlüsselung, X.509 Zer6fikate, Benutzerdefinierte und feingranulare Authen6fizierung und Autorisierung Einfache Benutzung und Betrieb $SYS Topics, Ausführliche Dokumenta6on, Monitoring über JMX und Graphite Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  44. 44. Plugin System Hands-on Inject everything! Steigert die Testbarkeit! Callback bekannt machen Callback muss hier registriert werden, ansonsten wird er nicht ausgeführt Don’t block in a Plugin. Never. Andere Threads benutzen Apache Configuration Support Einfach Config Files erstellen und automa6sch nachladen Dependency Injection Callback Registry Don’t block Configuration Files Plugin System Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  45. 45. Plugin Callbacks Einhängen von benutzerdefinierter Logik Security MQTT Message Others Broker Events MQTT Lowlevel 1 2 3 4 5 Client Connect, Client Publish/Subscribe, After Login, Connect, Publish, Subscribe, Unsubscribe, Disconnect Scheduled Start, Stop, Statistiken aktualisiert PubAck, PubRel, PubComb, Ping, … Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  46. 46. • HiveMQ SPI Plugin Entwicklung Tools für den Entwickler • Vorraussetzung um entwickeln zu können • Maven Plugin • Plugin mit HiveMQ starten • Debuggen im Server/Client Modus • Assembly Plugin • Erstellung eines auslieferbaren Archiv • JavaDoc Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  47. 47. HiveMQ MQTT Broker Technologien HiveMQ Austausch von Daten zwischen Geräten Persistieren der Daten in die Datenbank Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  48. 48. Übung 3 Plugin mit HiveMQ starten STEPS hivemq-­‐plugin hivemq-plugin in Java IDE öffnen HiveMQ Pfad Ordner von HiveMQ in pom.xml setzen HiveMQ starten HiveMQ mit Plugin über Maven package starten Profil RunWithHiveMQ aktivieren Version 0.2 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  49. 49. Übung 4 Benutzerdefinierte Logik für Publish STEPS hivemq-­‐plugin hivemq-plugin in Java IDE öffnen HiveMQ Pfad Ordner von HiveMQ in pom.xml setzen OnPublish Ausgabe auf der Console von ClientId, Topic und Nachricht HiveMQ starten HiveMQ mit Plugin über Maven package starten Profil RunWithHiveMQ aktivieren Version 0.3 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  50. 50. Übung 5 Schreiben in die Datenbank STEPS hivemq-­‐plugin hivemq-plugin in Java IDE öffnen HiveMQ Pfad Ordner von HiveMQ in pom.xml setzen OnStart Datenbankverbindung aufbauen OnPublish ClientId und Payload in Datenbank schreiben HiveMQ starten HiveMQ mit Plugin über Maven package starten Profil RunWithHiveMQ aktivieren Version 0.4 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  51. 51. Verbesserungen HiveMQ Plugin • Connection Pool für Datenbankverbindung • JDBC in extra Thread • ORM-Framework einsetzen • Authentifizierung und Autorisierung der Clients • Transportverschlüsselung über TLS Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  52. 52. Teil 3: REST API Dropwizard Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  53. 53. Dropwizard REST API Technologien Dropwizard Historische Daten zur Verfügung stellen eingehende POST Requests an HiveMQ weiterleiten Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  54. 54. REST Ressourcen IoTCloud /sensor-data GET Alle Werte Aktueller Wert POST /sensor-data/{device1} /sensor-data/{device1} GET Alle Werte des jeweiligen Geräts parameterisiert Format: JSON Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  55. 55. Dropwizard Kurzübersicht “Produktiv einsatzbereite, hochskalierbare REST API” Ausgerichtet auf den einfachen Betrieb Modulbasiert mit vielen mitgelieferten Modulen Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  56. 56. Technologien Dropwizard Jersey Jackson HTTP REST JSON powered by metrics Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  57. 57. Getting Started Dropwizard Configuration yaml + class Ressourcen classes Starten server config.yml Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  58. 58. Übung 6 Erstes Dropwizard Projekt STEPS Projekt öffnen rest-api in Java IDE öffnen Projekt ausführen Run Configuration IoTCloudApplication server iotcloud.yml Version 0.5 HelloWorld HelloWorld Ressource im Webbrowser aufrufen Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  59. 59. Übung 7 GET /sensor-data STEPS Projekt öffnen rest-api in Java IDE öffnen Datenbank Datenbank anlegen mit create.sql Beispieldaten importieren exmple-data.sql Version 0.6 Vorbereiten SensorDataItem POJO anlegen Datenbankverbindung herstellen (JDBC) Ressource Daten aus Datenbank holen Zurückgeben einer Liste von SensorDataItems Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  60. 60. Übung 8 JDBI statt JDBC STEPS Projekt öffnen rest-api in Java IDE öffnen KonfiguraMon Datenbankparameter in iotcloud.yml Version 0.6 Vorbereiten JDBI initialisieren Mapper Ressource Interface DAO mit SQL Query schreiben Zurückgeben einer Liste von SensorDataItems Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  61. 61. Verbesserungen HiveMQ Plugin • Caching einbauen • Datenbankverbindung mit ConnectionPool • ORM Framework einsetzen (JDBI, Hibernate) • Authentifizierung, Autorisierung • Mehrere Ressourcen • Transportverschlüsselung mit TLS Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  62. 62. Teil4: WebUI Erster Test für die IoT Cloud Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  63. 63. WebUI HiveMQ Plugin Live Daten über MQTT Historische Daten über REST Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  64. 64. Übung 9 WebUI Ausliefern STEPS Projekt öffnen rest-api in Java IDE öffnen Assetbundle Assetbundle konfigurieren Version 0.7 webapp webapp in asset Ordner kopieren Dropwizard starten und localhost:8080/asset öffnen Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  65. 65. Zusammenfassung Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  66. 66. IoT Cloud Platform Komponenten Data Storage Datenbank mit historische Daten N Device Management Configure, Update Firmware, Monitor, Sta6s6cs t ( Administration & Betrieb Web UI, Einfache Bedienung U G Live Daten von Sensoren J HTTP, MQTT, CoAP, … Identity Management User, Devices Security Transportsicherheit, Authen6fizierung, Autorisierung y IoT Cloud Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  67. 67. Ausblick Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  68. 68. Mehr Protokolle CoAP, XMPP, … Skalierbarkeit, Verfügbarkeit HiveMQ und Dropwizard sind skalierbar Welche Herausforderungen sind noch zu lösen? Security Authen6fizierung, Autorisierung Device Management Überwachen der Geräte Christian Götz Götz// Dominik Dominik Obermaier Obermaier - - Bau Bau dir dir deine deine eigene IoT Cloud Cloud github / mail / website
  69. 69. Danke! Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  70. 70. IoT Con HiveMQ Special http://www.hivemq.com/iot-con-special-2014/ Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website

×