SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
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 eigene IoT Cloud github / mail / website
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
Ziel des Workshops 
Architektur einer IoT Plattform 
Implementieren eines Prototypen 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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 
• 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
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
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 Cloud github / mail / website
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
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
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
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
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
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
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
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ötz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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
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
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
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
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
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
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
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 dynamisch 
Benutzerdefinierte Funktionen 
MQTT Broker 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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 / website
MQTT GUI Tools 
MQTT spy 0.0.6 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
Timeline 
https://code.google.com/p/mqtt-spy/ 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
MQTT CMD Tools 
mosquitto_pub/_sub 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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
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 Library uses MQTT over 
Websockets 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
MQTT Libraries 
FuseSource MQTT Client 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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
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
Ü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
Ü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
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 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
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
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
• 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
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
Ü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
Ü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
Ü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
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
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 HiveMQ weiterleiten 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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
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
Technologien 
Dropwizard 
Jersey 
Jackson 
HTTP REST JSON 
powered by 
metrics 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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
Ü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
Ü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
Ü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
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
Teil4: WebUI 
Erster Test für die IoT Cloud 
Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
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
Ü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
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 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
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 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
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 eigene IoT Cloud github / mail / website

Weitere ähnliche Inhalte

Andere mochten auch

IoT vs. Industrie Vergleich
IoT vs. Industrie VergleichIoT vs. Industrie Vergleich
IoT vs. Industrie VergleichPlamen Kiradjiev
 
Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...
Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...
Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...Wir sind das Kapital
 
Entrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer Reichert
Entrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer ReichertEntrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer Reichert
Entrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer ReichertWir sind das Kapital
 
KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...
KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...
KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...Deutsches Institut für Marketing
 
ECM - Wo Geht Die Reise hin?
ECM - Wo Geht Die Reise hin?ECM - Wo Geht Die Reise hin?
ECM - Wo Geht Die Reise hin?Guido Schmitz
 
Bedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und Cloud
Bedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und CloudBedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und Cloud
Bedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und CloudOPITZ CONSULTING Deutschland
 
Getting started with MQTT - Virtual IoT Meetup presentation
Getting started with MQTT - Virtual IoT Meetup presentationGetting started with MQTT - Virtual IoT Meetup presentation
Getting started with MQTT - Virtual IoT Meetup presentationChristian Götz
 
Open Source BPM mit BPMN 2.0 und Java
Open Source BPM mit BPMN 2.0 und Java Open Source BPM mit BPMN 2.0 und Java
Open Source BPM mit BPMN 2.0 und Java camunda services GmbH
 
Roadmap - die Einführung eines CMS/ECM
Roadmap - die Einführung eines CMS/ECMRoadmap - die Einführung eines CMS/ECM
Roadmap - die Einführung eines CMS/ECMGeorg Eck
 
Persönlicher Rückblick zur Thingscon 2015
Persönlicher Rückblick zur Thingscon 2015Persönlicher Rückblick zur Thingscon 2015
Persönlicher Rückblick zur Thingscon 2015Mario Leupold
 
UX design, service design and design thinking
UX design, service design and design thinkingUX design, service design and design thinking
UX design, service design and design thinkingSylvain Cottong
 
Crash Course Design Thinking - by @arnoutsmeets
Crash Course Design Thinking - by @arnoutsmeetsCrash Course Design Thinking - by @arnoutsmeets
Crash Course Design Thinking - by @arnoutsmeetsBoard of Innovation
 

Andere mochten auch (20)

IoT vs. Industrie Vergleich
IoT vs. Industrie VergleichIoT vs. Industrie Vergleich
IoT vs. Industrie Vergleich
 
Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...
Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...
Entrepreneurship Summit 2013 in Berlin: Präsentation "Wie Ihr Pitch erfolgrei...
 
Entrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer Reichert
Entrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer ReichertEntrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer Reichert
Entrepreneurship Summit 2013 in Berlin: Präsentation von Anne Kjaer Reichert
 
KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...
KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...
KMT2014: Die erfolgreiche Ergänzung von Online- und Offline-Vertrieb in der T...
 
2011 10-26 begrüßung
2011 10-26 begrüßung2011 10-26 begrüßung
2011 10-26 begrüßung
 
2011 11-21 BPMN_Luzern_JakobFreund
2011 11-21 BPMN_Luzern_JakobFreund2011 11-21 BPMN_Luzern_JakobFreund
2011 11-21 BPMN_Luzern_JakobFreund
 
ECM - Wo Geht Die Reise hin?
ECM - Wo Geht Die Reise hin?ECM - Wo Geht Die Reise hin?
ECM - Wo Geht Die Reise hin?
 
Bedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und Cloud
Bedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und CloudBedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und Cloud
Bedeutung von Integrationsarchitekturen im Zeitalter von Mobile, IoT und Cloud
 
Getting started with MQTT - Virtual IoT Meetup presentation
Getting started with MQTT - Virtual IoT Meetup presentationGetting started with MQTT - Virtual IoT Meetup presentation
Getting started with MQTT - Virtual IoT Meetup presentation
 
Arbeiten mit PowerPoint 2010
Arbeiten mit PowerPoint 2010Arbeiten mit PowerPoint 2010
Arbeiten mit PowerPoint 2010
 
Open Source BPM mit BPMN 2.0 und Java
Open Source BPM mit BPMN 2.0 und Java Open Source BPM mit BPMN 2.0 und Java
Open Source BPM mit BPMN 2.0 und Java
 
Seminar Vertrieb | DIM
Seminar Vertrieb | DIMSeminar Vertrieb | DIM
Seminar Vertrieb | DIM
 
Roadmap - die Einführung eines CMS/ECM
Roadmap - die Einführung eines CMS/ECMRoadmap - die Einführung eines CMS/ECM
Roadmap - die Einführung eines CMS/ECM
 
Die 5 häufigsten Irrtümer zu BPMN
Die 5 häufigsten Irrtümer zu BPMNDie 5 häufigsten Irrtümer zu BPMN
Die 5 häufigsten Irrtümer zu BPMN
 
Persönlicher Rückblick zur Thingscon 2015
Persönlicher Rückblick zur Thingscon 2015Persönlicher Rückblick zur Thingscon 2015
Persönlicher Rückblick zur Thingscon 2015
 
IBM Internet of Things Offerings
IBM Internet of Things OfferingsIBM Internet of Things Offerings
IBM Internet of Things Offerings
 
UX design, service design and design thinking
UX design, service design and design thinkingUX design, service design and design thinking
UX design, service design and design thinking
 
Crash Course Design Thinking - by @arnoutsmeets
Crash Course Design Thinking - by @arnoutsmeetsCrash Course Design Thinking - by @arnoutsmeets
Crash Course Design Thinking - by @arnoutsmeets
 
IOT - UX IS COMING HOME
IOT - UX IS COMING HOMEIOT - UX IS COMING HOME
IOT - UX IS COMING HOME
 
BPM-Software 2009
BPM-Software 2009BPM-Software 2009
BPM-Software 2009
 

Ähnlich wie Build your own IoT Cloud! [GER]

WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsDirk Steinkopf
 
6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group PaderbornMark Lechtermann
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Daniel Fesenmeyer
 
.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12Holger Wendel
 
WTC 2019 – Flutter
WTC 2019 – FlutterWTC 2019 – Flutter
WTC 2019 – Flutterwebconia
 
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtFMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtVerein FM Konferenz
 
Günzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloud
Günzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloudGünzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloud
Günzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloudAndreas Günzel
 
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam AugustinVerein FM Konferenz
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveKlaus Bild
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group PaderbornMark Lechtermann
 
Hochskalierendes Video Tracking
Hochskalierendes Video TrackingHochskalierendes Video Tracking
Hochskalierendes Video TrackingMayflower GmbH
 
Google Wave und die Entwicklung der Kommunikation im Web
Google Wave und die Entwicklung der Kommunikation im WebGoogle Wave und die Entwicklung der Kommunikation im Web
Google Wave und die Entwicklung der Kommunikation im WebHartmut Wöhlbier
 
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVPeter Kraume
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT CoreJens Siebert
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 

Ähnlich wie Build your own IoT Cloud! [GER] (20)

Industry 4.0 in a box
Industry 4.0 in a boxIndustry 4.0 in a box
Industry 4.0 in a box
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-Tools
 
.NET Gadgeteer
.NET Gadgeteer.NET Gadgeteer
.NET Gadgeteer
 
6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn
 
Big Python
Big PythonBig Python
Big Python
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)
 
.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12
 
WTC 2019 – Flutter
WTC 2019 – FlutterWTC 2019 – Flutter
WTC 2019 – Flutter
 
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtFMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
 
Günzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloud
Günzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloudGünzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloud
Günzel/Griesbaum -OpenShift und GitLab: Continuous delivery in der cloud
 
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep Dive
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn
 
G&L Tech News 02/17
G&L Tech News 02/17G&L Tech News 02/17
G&L Tech News 02/17
 
Hochskalierendes Video Tracking
Hochskalierendes Video TrackingHochskalierendes Video Tracking
Hochskalierendes Video Tracking
 
Google Wave und die Entwicklung der Kommunikation im Web
Google Wave und die Entwicklung der Kommunikation im WebGoogle Wave und die Entwicklung der Kommunikation im Web
Google Wave und die Entwicklung der Kommunikation im Web
 
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEV
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 

Mehr von Christian Götz

Best Practices Using MQTT to Connect Millions of IoT Devices
Best Practices Using MQTT  to Connect Millions of IoT DevicesBest Practices Using MQTT  to Connect Millions of IoT Devices
Best Practices Using MQTT to Connect Millions of IoT DevicesChristian Götz
 
Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...
Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...
Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...Christian Götz
 
MQTT 101 - Getting started with the lightweight IoT Protocol
MQTT 101  - Getting started with the lightweight IoT ProtocolMQTT 101  - Getting started with the lightweight IoT Protocol
MQTT 101 - Getting started with the lightweight IoT ProtocolChristian Götz
 
MQTT - Communication in the Internet of Things
MQTT - Communication in the Internet of ThingsMQTT - Communication in the Internet of Things
MQTT - Communication in the Internet of ThingsChristian Götz
 
How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...
How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...
How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...Christian Götz
 
MQTT with Java - a protocol for IoT and M2M communication
MQTT with Java - a protocol for IoT and M2M communicationMQTT with Java - a protocol for IoT and M2M communication
MQTT with Java - a protocol for IoT and M2M communicationChristian Götz
 
MQTT with Eclipse Paho: A protocol for IoT and M2M communication
MQTT with Eclipse Paho: A protocol for IoT and M2M communicationMQTT with Eclipse Paho: A protocol for IoT and M2M communication
MQTT with Eclipse Paho: A protocol for IoT and M2M communicationChristian Götz
 
How do Things talk? IoT Application Protocols 101
How do Things talk? IoT Application Protocols 101How do Things talk? IoT Application Protocols 101
How do Things talk? IoT Application Protocols 101Christian Götz
 

Mehr von Christian Götz (8)

Best Practices Using MQTT to Connect Millions of IoT Devices
Best Practices Using MQTT  to Connect Millions of IoT DevicesBest Practices Using MQTT  to Connect Millions of IoT Devices
Best Practices Using MQTT to Connect Millions of IoT Devices
 
Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...
Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...
Smart Home Live: Intelligent Detection of Fire or a Break-In with MQTT and Op...
 
MQTT 101 - Getting started with the lightweight IoT Protocol
MQTT 101  - Getting started with the lightweight IoT ProtocolMQTT 101  - Getting started with the lightweight IoT Protocol
MQTT 101 - Getting started with the lightweight IoT Protocol
 
MQTT - Communication in the Internet of Things
MQTT - Communication in the Internet of ThingsMQTT - Communication in the Internet of Things
MQTT - Communication in the Internet of Things
 
How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...
How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...
How Do ‘Things’ Talk? - An Overview of the IoT/M2M Protocol Landscape at IoT ...
 
MQTT with Java - a protocol for IoT and M2M communication
MQTT with Java - a protocol for IoT and M2M communicationMQTT with Java - a protocol for IoT and M2M communication
MQTT with Java - a protocol for IoT and M2M communication
 
MQTT with Eclipse Paho: A protocol for IoT and M2M communication
MQTT with Eclipse Paho: A protocol for IoT and M2M communicationMQTT with Eclipse Paho: A protocol for IoT and M2M communication
MQTT with Eclipse Paho: A protocol for IoT and M2M communication
 
How do Things talk? IoT Application Protocols 101
How do Things talk? IoT Application Protocols 101How do Things talk? IoT Application Protocols 101
How do Things talk? IoT Application Protocols 101
 

Build your own IoT Cloud! [GER]

  • 1. Christian Götz & Dominik Obermaier | dc-square ! ! Bau deine eigene IoT Cloud
  • 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. 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. 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. Endergebnis Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. 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. IoT Cloud Platform Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 9. Internet der Dinge Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. 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. 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. 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. 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. 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. 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. 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. Teil 1: Geräte MQTT, HTTP Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. 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. 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. 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. 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. 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. 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. 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. MQTT over Websockets Feature Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. MQTT GUI Tools MQTT.fx 0.0.7 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 30. http://www.jensd.de/wordpress/?p=1423 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 31. MQTT GUI Tools MQTT spy 0.0.6 Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 32. Timeline https://code.google.com/p/mqtt-spy/ Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 33. MQTT CMD Tools mosquitto_pub/_sub Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. MQTT Libraries Eclipse Paho Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. MQTT Libraries FuseSource MQTT Client Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. 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. Ü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. Ü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. Teil 2: MQTT Broker HiveMQ Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. 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. 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. • 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. 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. Ü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. Ü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. Ü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. 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. Teil 3: REST API Dropwizard Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. 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. 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. 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. 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. Ü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. Ü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. Ü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. 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. Teil4: WebUI Erster Test für die IoT Cloud Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. Ü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. Zusammenfassung Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. Ausblick Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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. Danke! Christian Götz / Dominik Obermaier - Bau dir deine eigene IoT Cloud github / mail / website
  • 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