Build your own IoT Cloud! [GER]

1.647 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
3 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.647
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
41
Aktionen
Geteilt
0
Downloads
39
Kommentare
0
Gefällt mir
3
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

×