SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
Messaging im IoT
mit MQTT
Copyright and all intellectual property belongs to Brockhaus Group 1
Einleitung
Message Queuing Telemetry Protocol
Quality of Service
Last Will Testament und Retained Message
Protokollvergleiche, eine Auswahl
… http und REST?
… STOMP
.... JMS
... AMQP
... OPC
MQTT Implementierungen
Anwendungsbeispiel
Einleitung
Im Internet der Dinge werden Objekte intelligent und können über das Internet untereinander
Informationen austauschen. Ziel des Internet der Dinge ist es, die virtuelle mit der realen Welt zu
vereinen. Grundlage dafür ist die Entwicklung der ​RFID-Technologie​, durch die Waren und Geräte
nicht nur eine eigene Identität in Form eines Codes erhalten, sondern auch Zustände erfassen und
Aktionen ausführen können.
Der Begriff geht zurück auf das Auto-ID Center am
Massachusetts Institute of Technology (MIT), das
im Jahr 1999 erstmalig eine firmenübergreifende
RFID-Infrastruktur entwarf. Kevin Ashton, der
Mitgründer und damalige Leiter des Auto-ID
Center, verwendete in einem Vortrag als Erster die
Formulierung „Internet of Things“. Nach Ashtons
Vision sollten Computer fähig sein, unabhängig
vom Menschen Informationen beschaffen zu
können. Computer müssten die reale Welt
begreifen – ohne von Menschen bedient zu werden.
Sodann würden uns viele Verluste und Kosten
erspart bleiben. Denn menschliche Kapazitäten
seien begrenzt: Wir hätten nur begrenzt Zeit und arbeiteten zu ungenau. Über ein Jahrzehnt später
gilt es nun, diese Grundidee auf möglichst viele Objekte und Alltagsgegenstände auszuweiten .1
1
http://www.internet-der-dinge.de/de/wasistdasinternetderdinge.html
Copyright and all intellectual property belongs to Brockhaus Group 2
Message Queuing Telemetry Protocol
MQTT ist ein Protokoll, welches für die ​M2M Kommunikation​(hier synonym zum ‘Internet der Dinge’
behandelt) entwickelt wurde und der Übermittlung von ​Telemetriedaten​dient. Bei der Entwicklung
wurden explizit Netzwerke mit niedriger Bandbreite, hoher Latenz und hoher Unzuverlässigkeit
berücksichtigt. MQTT ist eine ​OASIS​Standard. Facebook benutzt MQTT als Protokoll für seinen
Messenger​.
Als Eigenschaften sind hervorzuheben :2
● Die Implementierung muss einfach sein, um auch Geräte mit eingeschränkten Ressourcen
damit zu vernetzen.
● Es muss unterschiedliche Servicequalitäten bei der Datenübertragung geben, damit die
Übertragung auch in instabilen Netzen gewährleistet wird.
● Die Übertragung muss einfach und effizient die zur Verfügung stehende Bandbreite nutzen.
● Da bei Wiederaufnahme abgebrochener Verbindungen oft Metainformationen erneut gesendet
werden, wäre es von Vorteil, diese serverseitig zu speichern (Session-awareness).
● Das Protokoll sollte unterschiedliche Datentypen übertragen können und nicht auf eine
bestimmte Struktur festgelegt sein (datenagnostisch).
MQTT basiert auf dem ​Observer Pattern
(Publish/Subscribe); hier kommunizieren
also nicht Clients untereinander
(Peer-to-Peer) sondern ein zentraler Broker
vermittelt die Nachrichten an alle
Interessenten. Dieses erfolgt über das
Abonnieren (subscribe) sogenannter Topics
oder das Senden (publish) von Nachrichten an
entsprechende Topics. Im Falle von MQTT
sind diese Topics hierarchisch organisiert. Eine weitere interessante Präsentation mit Vergleichen
findet sich ​hier​.
Quality of Service
Ein weitere Besonderheit ist die Möglichkeit der Definition der Servicequalität. Die Zusicherung variiert
von ‘keine Garantie’ (Level 0) über die, dass die Nachricht mindestens einmal ankommt (Level 1), bis
hin zur Garantie, dass die Nachricht genau einmal ankommt (Level 2). Der Unterschied zwischen Level
1 und 2 liegt darin, dass es bei Level 1 passieren kann, dass eine Nachricht öfter einen Client erreicht.
Je nach Anwendungsfall sollte der passende Level gewählt werden. Je höher der Level, desto höher ist
die benötigte Bandbreite ​,
.3 4
2
​heise: http://www.heise.de/developer/artikel/MQTT-Protokoll-fuer-das-Internet-der-Dinge-2168152.html
3
heise: http://www.heise.de/developer/artikel/MQTT-Protokoll-fuer-das-Internet-der-Dinge-2168152.html
4
https://www.eclipse.org/paho/files/mqttdoc/Cclient/qos.html
Copyright and all intellectual property belongs to Brockhaus Group 3
Last Will Testament und Retained Message
Wenn Subscriber die Verbindung verlieren, ist es von Interesse, zu erfahren, ob überhaupt ein
Publisher verbunden ist oder welches der letzte Wert war. Jeder Publisher kann beim Verbinden eine
Nachricht mit seinem ‘letzten Willen’ an den Broker schicken; fällt der Publisher aus, dann sendet der
Broker die entsprechende Nachricht.
Eine Nachricht, die als ​Retained Message​gekennzeichnet ist, wird an alle neuen Subscriber
automatisch gesendet (es lässt sich für jedes Topic nur eine Nachricht speichern). Nachrichten, die so
gekennzeichnet wurden können hilfreich sein, einem Subscriber die letzte Nachricht zukommen zu
lassen ohne ihn auf eine neue Nachricht vom Publisher warten zu lassen (quasi: letzter bekannter
Wert).
MQTT Implementierungen
Für MQTT Broker existieren eine Reihe freier Implementierungen,
exemplarisch seien ​HiveMQ​, ​Mosquitto​und ​Moquette​genannt. Eine
Sonderrolle nehmen ​RabbitMQ​und ​ActiveMQ​ein; beide Produkte
beherrschen mehrere Protokolle, unter anderem auch MQTT.
Als JDK für die Entwicklung von MQTT Clients soll ​paho​der eclipse Foundation genannt werden.
Auch ohne einen der genannten Broker zu installieren existieren frei verfügbare, ‘öffentliche’ Broker.
Alle Code-Beispiele finden sich unter:
https://github.com/brockhaus-gruppe/mqtt-example
Anwendungsbeispiel
Innerhalb des Beispieles soll ein NFC Tag mittels mobilem Endgerät mit der
Nummer eines Produktionsauftrags beschrieben werden. Diese Tag soll -
zusammen mit der MAC Adresse des Senders - nachfolgend an einem ​NFC-Reader
ausgelesen werden und die Nummer mittels
MQTT übermittelt werden.
Das zweifelsohne nicht das Massendatenbeispiel -
es soll hier auch nur die technische Machbarkeit dargestellt werden.
Als Hardware wird ein Raspberry Pi inkl. eines NFC Readers
gewählt; die NFC Tags gibt es überall zu erwerben.
Obwohl Java ohne Probleme auf einem Raspberry Pi installiert
werden kann und obwohl der ​GPIO Bus​auch mittels
entsprechender Bibliotheken (bspw. ​pi4j​) genutzt werden kann, ist
man hier mit Python besser bedient (der hier genutzte NFC Reader
unterstützt nur Python und C). Grundsätzlich kann man direkt aus
Python mittels paho eine Verbindung zum Broker aufbauen (dieses ist ​hier​beschrieben).
Alternativ kann man auch von Python mit Java kommunizieren, hierzu existieren in Python
verschiedene Wege. Entweder man nutzt das ​subprocess​Modul oder man kommuniziert über ​Sockets​.
Copyright and all intellectual property belongs to Brockhaus Group 4
Aus architektonischer Sicht wurde ein ‘Kern’ (hier die ​Java Klasse​) gibt, dessen Aufgabe das
Versenden der ​Nachrichten​mittels MQTT ist unabhängig davon, wie die Nachrichten übermittelt
wurden. Wird über Sockets kommuniziert, dann ruft eine entsprechende ​Wrapper-Klasse​diesen ‘Kern’
auf. gleiches gilt im wesentlichen bei der Kommunikation mittels subprocess Modul, ​hier​wird der
InputStream seitens Python aufgerufen.
Auf der Python-Seite wurden zwei Testtreiber implementiert die es gestatten, den Java-Prozess auch
ohne Raspberry Pi und NFC Reader aufzurufen. Hier die Testtreiber für ​Sockets​und für das
subprocess-Modul​.
Der Mitbewerb (eine Auswahl)
Die nachfolgenden Vergleiche können nur rudimentärer Natur sein und erheben keinen Anspruch auf
Vollständigkeit. Im Grunde genommen dreht es sich lediglich um die Dastellung des
“Wettbewerbsumfeldes“, konkrete Implementierungsempfehlungen sind hiermit nicht verknüpft.
Sofern weiterführende Informationen bekannt sind, sind diese genannt.
… http (und REST, CoAP)?
Zu vermuten wäre, dass http-basierte REST-Ansätze der ‘natürliche’ Ansatz für die Integration wären.
Eine ​Präsentation​von Microsoft wurden die folgenden Zahlen für das Senden und Empfangen über das
Mobilfunknetz (3G) von jeweils 1024 Nachrichten zu je einem Byte jeweils über http(s) und MQTT
entnommen:
HTTPS MQTT
Senden: Nachrichten / Stunde 1.708 160.287
Empfangen: Nachrichten / Stunde 1.926 21.685
Senden: Akku % / Stunde 18.43 % 16.13 %
Empfangen Akku % / Stunde 18.79 % 17.80 %
Die Zahlen stimmen ein wenig nachdenklich, anzumerken ist jedoch auch, dass hier eine (notwendige)
Verschlüsselung sicherlich Zeit beansprucht. Auch ist bei diesem Vergleich der Blickwinkel stark
eingeschränkt, da ​CoAP​als Erweiterung nicht in Betracht gezogen wurde.
Es soll nicht unerwähnt bleiben, dass bspw. ​Bosch​stark auf diesen Ansatz (CoAP) setzt ...
… STOMP
STOMP​ist ein textbasiertes Protokoll für die Pub/Sub-Kommunikation und kommt dem HTTP-Protokoll
am nächsten. Die Ziele bei der Entwicklung waren ein möglichst simples und interoperables Protokoll
zu haben. Der Overhead ist vergleichbar mit http.
.... JMS
Zweifelsohne ist JMS eine der am meisten benutzten Messaging Technologien. JMS ist Teil der Java
Enterprise Plattform und Gegenstand der entsprechenden Spezifikation (JSR 914). JMS erlaubt Punkt
Copyright and all intellectual property belongs to Brockhaus Group 5
zu Punkt sowie Publish / Subscribe Kommunikation. Es gibt wesentliche Einschränkungen bei der JMS
Kommunikation, zum einen die Einschränkung auf Java, zum anderen das Fehlen der Standardisierung
der Nachrichten. Diese ‘Lücke’ macht es problematisch Nachrichten zwischen unterschiedlichen
Implementierungen auszutauschen. JMS ist eine Technologie die auf das enterprise Messaging zielt,
nicht auf embedded Devices mit ihren Limitierungen.
... AMQP
Das ​AMQP​(Advanced Message Queueing Protocol) ist gleich MQTT ein OASIS Standard aber
hinsichtlich des Funktionsumfanges deutlich umfangreicher (wobei Last Will und Retained Message
nicht unterstützt werden). Generell werden folgende Aspekte bei der Benutzung genannt:
● MQTT als ein primär für embedded Devices entwickeltes Protokoll, optimiert für große
Anzahlen gleichzeitig verbundener Publisher und Subscriber (jedoch weniger für lange
persistierte Nachrichten). MQTT unterstützt keine Transaktionen und hat keine Security
Features stanrdmäßig implementiert.
● AMQP als die asynchrone Erweiterung zum http Protokoll, Fokus liegt hier auf dem
Enterprise-Messaging, nicht auf der Restriktion hinsichtlich der Hardware.
Weitere Detailinformationen finden sich ​hier​.
... und OPC?
Ein Vergleich zwischen Äpfeln und Birnen, es handelt sich hier eher um einen konzeptionellen
Vergleich. Der Kernunterschied zwischen OPC und MQTT ist der Blickwinkel. MQTT bietet Lösungen für
die Herausforderungen von niedriger Bandbreite mit hoher Latenz und lässt den Rest flexibel
erweiterbar. OPC-UA liefert bereits Domainwissen durch ein hierarchisches Objektmodell
out-of-the-box.
Eine weiterreichende Darstellung zu den Unterschieden zwischen MQTT und OPC findet sich ​hier​.
Copyright and all intellectual property belongs to Brockhaus Group 6
Links:
http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.ht
ml
http://www.prismtech.com/sites/default/files/documents/Messaging-Comparison-Whitepaper-July201
4.pdf
http://www.slideshare.net/paolopat/internet-ofthingsprotocolswar
Copyright and all intellectual property belongs to Brockhaus Group 7

Weitere ähnliche Inhalte

Andere mochten auch

Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSimen Sommerfeldt
 
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
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsBryan Boyd
 
MQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message QueueingMQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message QueueingPeter R. Egli
 
8 Claves de Liderazgo del Monje que Vendió su Ferrari
8 Claves de Liderazgo del Monje que Vendió su Ferrari8 Claves de Liderazgo del Monje que Vendió su Ferrari
8 Claves de Liderazgo del Monje que Vendió su Ferrariyalitzauribe
 
Studeo Musterlösung Simplex Algorithmus
Studeo Musterlösung Simplex AlgorithmusStudeo Musterlösung Simplex Algorithmus
Studeo Musterlösung Simplex AlgorithmusSilvio Gerlach
 
Sistemas operativos-linux
Sistemas operativos-linuxSistemas operativos-linux
Sistemas operativos-linuxRafael Moreno
 

Andere mochten auch (20)

Why transync mqtt gps tracker
Why transync mqtt gps trackerWhy transync mqtt gps tracker
Why transync mqtt gps tracker
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-RED
 
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
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of Things
 
MQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message QueueingMQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message Queueing
 
PLC Basic
PLC BasicPLC Basic
PLC Basic
 
Presentation yehp crm
Presentation yehp crmPresentation yehp crm
Presentation yehp crm
 
CUERDOS ADOPTADOS POR LOS MAGISTRADOS DE LAS SECCIONES CIVILES DE LA AUDIENCI...
CUERDOS ADOPTADOS POR LOS MAGISTRADOS DE LAS SECCIONES CIVILES DE LA AUDIENCI...CUERDOS ADOPTADOS POR LOS MAGISTRADOS DE LAS SECCIONES CIVILES DE LA AUDIENCI...
CUERDOS ADOPTADOS POR LOS MAGISTRADOS DE LAS SECCIONES CIVILES DE LA AUDIENCI...
 
5. servicio civil ciudadano
5.  servicio civil ciudadano5.  servicio civil ciudadano
5. servicio civil ciudadano
 
Version colloque
Version colloqueVersion colloque
Version colloque
 
8 Claves de Liderazgo del Monje que Vendió su Ferrari
8 Claves de Liderazgo del Monje que Vendió su Ferrari8 Claves de Liderazgo del Monje que Vendió su Ferrari
8 Claves de Liderazgo del Monje que Vendió su Ferrari
 
Studeo Musterlösung Simplex Algorithmus
Studeo Musterlösung Simplex AlgorithmusStudeo Musterlösung Simplex Algorithmus
Studeo Musterlösung Simplex Algorithmus
 
L'Itinérant Espace Pro
L'Itinérant Espace ProL'Itinérant Espace Pro
L'Itinérant Espace Pro
 
Janvier 2015 - Les Smoothies du Cube
Janvier 2015 - Les Smoothies du CubeJanvier 2015 - Les Smoothies du Cube
Janvier 2015 - Les Smoothies du Cube
 
Spaun
SpaunSpaun
Spaun
 
Icecrypt
IcecryptIcecrypt
Icecrypt
 
Dragonsat
DragonsatDragonsat
Dragonsat
 
Pagina educativa
Pagina educativaPagina educativa
Pagina educativa
 
Sistemas operativos-linux
Sistemas operativos-linuxSistemas operativos-linux
Sistemas operativos-linux
 
Boiingsat
BoiingsatBoiingsat
Boiingsat
 

Ähnlich wie Messaging im Internet of Things: MQTT

Lotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AGLotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AGWünsch AG
 
Übersicht über die IoT Plattform im Freifunk SL-FL
Übersicht über die IoT Plattform im Freifunk SL-FLÜbersicht über die IoT Plattform im Freifunk SL-FL
Übersicht über die IoT Plattform im Freifunk SL-FLFrank Radzio
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...
Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...
Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...Hans Pich
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Bernd Zuther
 
Das Internet ist dezentral. Und andere gefährliche Mythen
Das Internet ist dezentral. Und andere gefährliche MythenDas Internet ist dezentral. Und andere gefährliche Mythen
Das Internet ist dezentral. Und andere gefährliche MythenSebastian Deterding
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPChristian Guenther
 
'Industrie 4.0' Security
'Industrie 4.0' Security 'Industrie 4.0' Security
'Industrie 4.0' Security Erwin Hoffmann
 
Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX storminator
 
Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16
Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16
Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16Boris Adryan
 
Praxismodul Abschlussdiskussion.pptx
Praxismodul Abschlussdiskussion.pptxPraxismodul Abschlussdiskussion.pptx
Praxismodul Abschlussdiskussion.pptxKendriKx
 
Dateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud ComputingDateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud ComputingLothar Wieske
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Jürg Stuker
 

Ähnlich wie Messaging im Internet of Things: MQTT (20)

Lotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AGLotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AG
 
Übersicht über die IoT Plattform im Freifunk SL-FL
Übersicht über die IoT Plattform im Freifunk SL-FLÜbersicht über die IoT Plattform im Freifunk SL-FL
Übersicht über die IoT Plattform im Freifunk SL-FL
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Zeitreihen in Apache Cassandra
Zeitreihen in Apache CassandraZeitreihen in Apache Cassandra
Zeitreihen in Apache Cassandra
 
Message queue in Magento 2
Message queue in Magento 2Message queue in Magento 2
Message queue in Magento 2
 
Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...
Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...
Automatisierte Übergabe von COTI-Übersetzungspaketen in den Plunet BusinessMa...
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
Cloud-Native ohne Vendor Lock-in mit Kubernetes
Cloud-Native ohne Vendor Lock-in mit KubernetesCloud-Native ohne Vendor Lock-in mit Kubernetes
Cloud-Native ohne Vendor Lock-in mit Kubernetes
 
Webtechnologien - Technische Anforderungen an Informationssysteme
Webtechnologien - Technische Anforderungen an InformationssystemeWebtechnologien - Technische Anforderungen an Informationssysteme
Webtechnologien - Technische Anforderungen an Informationssysteme
 
Das Internet ist dezentral. Und andere gefährliche Mythen
Das Internet ist dezentral. Und andere gefährliche MythenDas Internet ist dezentral. Und andere gefährliche Mythen
Das Internet ist dezentral. Und andere gefährliche Mythen
 
Blockchain & Insurance
Blockchain & InsuranceBlockchain & Insurance
Blockchain & Insurance
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
 
Openshift
OpenshiftOpenshift
Openshift
 
'Industrie 4.0' Security
'Industrie 4.0' Security 'Industrie 4.0' Security
'Industrie 4.0' Security
 
Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX
 
VIT 1-2014
VIT 1-2014VIT 1-2014
VIT 1-2014
 
Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16
Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16
Plattformen für das Internet der Dinge, solutions.hamburg, 05.09.16
 
Praxismodul Abschlussdiskussion.pptx
Praxismodul Abschlussdiskussion.pptxPraxismodul Abschlussdiskussion.pptx
Praxismodul Abschlussdiskussion.pptx
 
Dateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud ComputingDateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud Computing
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
 

Mehr von Brockhaus Consulting GmbH

Industrie 40 Symposium an der RFH Köln 7.7.2016
Industrie 40 Symposium an der RFH Köln 7.7.2016 Industrie 40 Symposium an der RFH Köln 7.7.2016
Industrie 40 Symposium an der RFH Köln 7.7.2016 Brockhaus Consulting GmbH
 
Java EE Pattern: Entity Control Boundary Pattern and Java EE
Java EE Pattern: Entity Control Boundary Pattern and Java EEJava EE Pattern: Entity Control Boundary Pattern and Java EE
Java EE Pattern: Entity Control Boundary Pattern and Java EEBrockhaus Consulting GmbH
 
Certification isec 2012 program committee (bohnen, matthias) 2
Certification isec 2012 program committee (bohnen, matthias) 2Certification isec 2012 program committee (bohnen, matthias) 2
Certification isec 2012 program committee (bohnen, matthias) 2Brockhaus Consulting GmbH
 

Mehr von Brockhaus Consulting GmbH (20)

Industrie 40 Symposium an der RFH Köln 7.7.2016
Industrie 40 Symposium an der RFH Köln 7.7.2016 Industrie 40 Symposium an der RFH Köln 7.7.2016
Industrie 40 Symposium an der RFH Köln 7.7.2016
 
M2M infrastructure using Docker
M2M infrastructure using DockerM2M infrastructure using Docker
M2M infrastructure using Docker
 
Arquillian in a nutshell
Arquillian in a nutshellArquillian in a nutshell
Arquillian in a nutshell
 
Big Data and Business Intelligence
Big Data and Business IntelligenceBig Data and Business Intelligence
Big Data and Business Intelligence
 
OPC -Connectivity using Java
OPC -Connectivity using JavaOPC -Connectivity using Java
OPC -Connectivity using Java
 
Intro 2 Machine Learning
Intro 2 Machine LearningIntro 2 Machine Learning
Intro 2 Machine Learning
 
Industrie 4.0: Symposium an der RFH Köln
Industrie 4.0: Symposium an der RFH KölnIndustrie 4.0: Symposium an der RFH Köln
Industrie 4.0: Symposium an der RFH Köln
 
Java EE Pattern: Infrastructure
Java EE Pattern: InfrastructureJava EE Pattern: Infrastructure
Java EE Pattern: Infrastructure
 
Java EE Pattern: The Entity Layer
Java EE Pattern: The Entity LayerJava EE Pattern: The Entity Layer
Java EE Pattern: The Entity Layer
 
Java EE Pattern: The Control Layer
Java EE Pattern: The Control LayerJava EE Pattern: The Control Layer
Java EE Pattern: The Control Layer
 
Java EE Pattern: The Boundary Layer
Java EE Pattern: The Boundary LayerJava EE Pattern: The Boundary Layer
Java EE Pattern: The Boundary Layer
 
Java EE Pattern: Entity Control Boundary Pattern and Java EE
Java EE Pattern: Entity Control Boundary Pattern and Java EEJava EE Pattern: Entity Control Boundary Pattern and Java EE
Java EE Pattern: Entity Control Boundary Pattern and Java EE
 
Industry 4.0
Industry 4.0Industry 4.0
Industry 4.0
 
Big Data in Production Environments
Big Data in Production EnvironmentsBig Data in Production Environments
Big Data in Production Environments
 
BRO 110: Reference Architecture
BRO 110: Reference ArchitectureBRO 110: Reference Architecture
BRO 110: Reference Architecture
 
Architekturbewertung
ArchitekturbewertungArchitekturbewertung
Architekturbewertung
 
Bro110 5 1_software_architecture
Bro110 5 1_software_architectureBro110 5 1_software_architecture
Bro110 5 1_software_architecture
 
Work shop worldbank
Work shop worldbankWork shop worldbank
Work shop worldbank
 
Certification isec 2012 program committee (bohnen, matthias) 2
Certification isec 2012 program committee (bohnen, matthias) 2Certification isec 2012 program committee (bohnen, matthias) 2
Certification isec 2012 program committee (bohnen, matthias) 2
 
Java flyer final_2014
Java flyer final_2014Java flyer final_2014
Java flyer final_2014
 

Messaging im Internet of Things: MQTT

  • 1. Messaging im IoT mit MQTT Copyright and all intellectual property belongs to Brockhaus Group 1
  • 2. Einleitung Message Queuing Telemetry Protocol Quality of Service Last Will Testament und Retained Message Protokollvergleiche, eine Auswahl … http und REST? … STOMP .... JMS ... AMQP ... OPC MQTT Implementierungen Anwendungsbeispiel Einleitung Im Internet der Dinge werden Objekte intelligent und können über das Internet untereinander Informationen austauschen. Ziel des Internet der Dinge ist es, die virtuelle mit der realen Welt zu vereinen. Grundlage dafür ist die Entwicklung der ​RFID-Technologie​, durch die Waren und Geräte nicht nur eine eigene Identität in Form eines Codes erhalten, sondern auch Zustände erfassen und Aktionen ausführen können. Der Begriff geht zurück auf das Auto-ID Center am Massachusetts Institute of Technology (MIT), das im Jahr 1999 erstmalig eine firmenübergreifende RFID-Infrastruktur entwarf. Kevin Ashton, der Mitgründer und damalige Leiter des Auto-ID Center, verwendete in einem Vortrag als Erster die Formulierung „Internet of Things“. Nach Ashtons Vision sollten Computer fähig sein, unabhängig vom Menschen Informationen beschaffen zu können. Computer müssten die reale Welt begreifen – ohne von Menschen bedient zu werden. Sodann würden uns viele Verluste und Kosten erspart bleiben. Denn menschliche Kapazitäten seien begrenzt: Wir hätten nur begrenzt Zeit und arbeiteten zu ungenau. Über ein Jahrzehnt später gilt es nun, diese Grundidee auf möglichst viele Objekte und Alltagsgegenstände auszuweiten .1 1 http://www.internet-der-dinge.de/de/wasistdasinternetderdinge.html Copyright and all intellectual property belongs to Brockhaus Group 2
  • 3. Message Queuing Telemetry Protocol MQTT ist ein Protokoll, welches für die ​M2M Kommunikation​(hier synonym zum ‘Internet der Dinge’ behandelt) entwickelt wurde und der Übermittlung von ​Telemetriedaten​dient. Bei der Entwicklung wurden explizit Netzwerke mit niedriger Bandbreite, hoher Latenz und hoher Unzuverlässigkeit berücksichtigt. MQTT ist eine ​OASIS​Standard. Facebook benutzt MQTT als Protokoll für seinen Messenger​. Als Eigenschaften sind hervorzuheben :2 ● Die Implementierung muss einfach sein, um auch Geräte mit eingeschränkten Ressourcen damit zu vernetzen. ● Es muss unterschiedliche Servicequalitäten bei der Datenübertragung geben, damit die Übertragung auch in instabilen Netzen gewährleistet wird. ● Die Übertragung muss einfach und effizient die zur Verfügung stehende Bandbreite nutzen. ● Da bei Wiederaufnahme abgebrochener Verbindungen oft Metainformationen erneut gesendet werden, wäre es von Vorteil, diese serverseitig zu speichern (Session-awareness). ● Das Protokoll sollte unterschiedliche Datentypen übertragen können und nicht auf eine bestimmte Struktur festgelegt sein (datenagnostisch). MQTT basiert auf dem ​Observer Pattern (Publish/Subscribe); hier kommunizieren also nicht Clients untereinander (Peer-to-Peer) sondern ein zentraler Broker vermittelt die Nachrichten an alle Interessenten. Dieses erfolgt über das Abonnieren (subscribe) sogenannter Topics oder das Senden (publish) von Nachrichten an entsprechende Topics. Im Falle von MQTT sind diese Topics hierarchisch organisiert. Eine weitere interessante Präsentation mit Vergleichen findet sich ​hier​. Quality of Service Ein weitere Besonderheit ist die Möglichkeit der Definition der Servicequalität. Die Zusicherung variiert von ‘keine Garantie’ (Level 0) über die, dass die Nachricht mindestens einmal ankommt (Level 1), bis hin zur Garantie, dass die Nachricht genau einmal ankommt (Level 2). Der Unterschied zwischen Level 1 und 2 liegt darin, dass es bei Level 1 passieren kann, dass eine Nachricht öfter einen Client erreicht. Je nach Anwendungsfall sollte der passende Level gewählt werden. Je höher der Level, desto höher ist die benötigte Bandbreite ​, .3 4 2 ​heise: http://www.heise.de/developer/artikel/MQTT-Protokoll-fuer-das-Internet-der-Dinge-2168152.html 3 heise: http://www.heise.de/developer/artikel/MQTT-Protokoll-fuer-das-Internet-der-Dinge-2168152.html 4 https://www.eclipse.org/paho/files/mqttdoc/Cclient/qos.html Copyright and all intellectual property belongs to Brockhaus Group 3
  • 4. Last Will Testament und Retained Message Wenn Subscriber die Verbindung verlieren, ist es von Interesse, zu erfahren, ob überhaupt ein Publisher verbunden ist oder welches der letzte Wert war. Jeder Publisher kann beim Verbinden eine Nachricht mit seinem ‘letzten Willen’ an den Broker schicken; fällt der Publisher aus, dann sendet der Broker die entsprechende Nachricht. Eine Nachricht, die als ​Retained Message​gekennzeichnet ist, wird an alle neuen Subscriber automatisch gesendet (es lässt sich für jedes Topic nur eine Nachricht speichern). Nachrichten, die so gekennzeichnet wurden können hilfreich sein, einem Subscriber die letzte Nachricht zukommen zu lassen ohne ihn auf eine neue Nachricht vom Publisher warten zu lassen (quasi: letzter bekannter Wert). MQTT Implementierungen Für MQTT Broker existieren eine Reihe freier Implementierungen, exemplarisch seien ​HiveMQ​, ​Mosquitto​und ​Moquette​genannt. Eine Sonderrolle nehmen ​RabbitMQ​und ​ActiveMQ​ein; beide Produkte beherrschen mehrere Protokolle, unter anderem auch MQTT. Als JDK für die Entwicklung von MQTT Clients soll ​paho​der eclipse Foundation genannt werden. Auch ohne einen der genannten Broker zu installieren existieren frei verfügbare, ‘öffentliche’ Broker. Alle Code-Beispiele finden sich unter: https://github.com/brockhaus-gruppe/mqtt-example Anwendungsbeispiel Innerhalb des Beispieles soll ein NFC Tag mittels mobilem Endgerät mit der Nummer eines Produktionsauftrags beschrieben werden. Diese Tag soll - zusammen mit der MAC Adresse des Senders - nachfolgend an einem ​NFC-Reader ausgelesen werden und die Nummer mittels MQTT übermittelt werden. Das zweifelsohne nicht das Massendatenbeispiel - es soll hier auch nur die technische Machbarkeit dargestellt werden. Als Hardware wird ein Raspberry Pi inkl. eines NFC Readers gewählt; die NFC Tags gibt es überall zu erwerben. Obwohl Java ohne Probleme auf einem Raspberry Pi installiert werden kann und obwohl der ​GPIO Bus​auch mittels entsprechender Bibliotheken (bspw. ​pi4j​) genutzt werden kann, ist man hier mit Python besser bedient (der hier genutzte NFC Reader unterstützt nur Python und C). Grundsätzlich kann man direkt aus Python mittels paho eine Verbindung zum Broker aufbauen (dieses ist ​hier​beschrieben). Alternativ kann man auch von Python mit Java kommunizieren, hierzu existieren in Python verschiedene Wege. Entweder man nutzt das ​subprocess​Modul oder man kommuniziert über ​Sockets​. Copyright and all intellectual property belongs to Brockhaus Group 4
  • 5. Aus architektonischer Sicht wurde ein ‘Kern’ (hier die ​Java Klasse​) gibt, dessen Aufgabe das Versenden der ​Nachrichten​mittels MQTT ist unabhängig davon, wie die Nachrichten übermittelt wurden. Wird über Sockets kommuniziert, dann ruft eine entsprechende ​Wrapper-Klasse​diesen ‘Kern’ auf. gleiches gilt im wesentlichen bei der Kommunikation mittels subprocess Modul, ​hier​wird der InputStream seitens Python aufgerufen. Auf der Python-Seite wurden zwei Testtreiber implementiert die es gestatten, den Java-Prozess auch ohne Raspberry Pi und NFC Reader aufzurufen. Hier die Testtreiber für ​Sockets​und für das subprocess-Modul​. Der Mitbewerb (eine Auswahl) Die nachfolgenden Vergleiche können nur rudimentärer Natur sein und erheben keinen Anspruch auf Vollständigkeit. Im Grunde genommen dreht es sich lediglich um die Dastellung des “Wettbewerbsumfeldes“, konkrete Implementierungsempfehlungen sind hiermit nicht verknüpft. Sofern weiterführende Informationen bekannt sind, sind diese genannt. … http (und REST, CoAP)? Zu vermuten wäre, dass http-basierte REST-Ansätze der ‘natürliche’ Ansatz für die Integration wären. Eine ​Präsentation​von Microsoft wurden die folgenden Zahlen für das Senden und Empfangen über das Mobilfunknetz (3G) von jeweils 1024 Nachrichten zu je einem Byte jeweils über http(s) und MQTT entnommen: HTTPS MQTT Senden: Nachrichten / Stunde 1.708 160.287 Empfangen: Nachrichten / Stunde 1.926 21.685 Senden: Akku % / Stunde 18.43 % 16.13 % Empfangen Akku % / Stunde 18.79 % 17.80 % Die Zahlen stimmen ein wenig nachdenklich, anzumerken ist jedoch auch, dass hier eine (notwendige) Verschlüsselung sicherlich Zeit beansprucht. Auch ist bei diesem Vergleich der Blickwinkel stark eingeschränkt, da ​CoAP​als Erweiterung nicht in Betracht gezogen wurde. Es soll nicht unerwähnt bleiben, dass bspw. ​Bosch​stark auf diesen Ansatz (CoAP) setzt ... … STOMP STOMP​ist ein textbasiertes Protokoll für die Pub/Sub-Kommunikation und kommt dem HTTP-Protokoll am nächsten. Die Ziele bei der Entwicklung waren ein möglichst simples und interoperables Protokoll zu haben. Der Overhead ist vergleichbar mit http. .... JMS Zweifelsohne ist JMS eine der am meisten benutzten Messaging Technologien. JMS ist Teil der Java Enterprise Plattform und Gegenstand der entsprechenden Spezifikation (JSR 914). JMS erlaubt Punkt Copyright and all intellectual property belongs to Brockhaus Group 5
  • 6. zu Punkt sowie Publish / Subscribe Kommunikation. Es gibt wesentliche Einschränkungen bei der JMS Kommunikation, zum einen die Einschränkung auf Java, zum anderen das Fehlen der Standardisierung der Nachrichten. Diese ‘Lücke’ macht es problematisch Nachrichten zwischen unterschiedlichen Implementierungen auszutauschen. JMS ist eine Technologie die auf das enterprise Messaging zielt, nicht auf embedded Devices mit ihren Limitierungen. ... AMQP Das ​AMQP​(Advanced Message Queueing Protocol) ist gleich MQTT ein OASIS Standard aber hinsichtlich des Funktionsumfanges deutlich umfangreicher (wobei Last Will und Retained Message nicht unterstützt werden). Generell werden folgende Aspekte bei der Benutzung genannt: ● MQTT als ein primär für embedded Devices entwickeltes Protokoll, optimiert für große Anzahlen gleichzeitig verbundener Publisher und Subscriber (jedoch weniger für lange persistierte Nachrichten). MQTT unterstützt keine Transaktionen und hat keine Security Features stanrdmäßig implementiert. ● AMQP als die asynchrone Erweiterung zum http Protokoll, Fokus liegt hier auf dem Enterprise-Messaging, nicht auf der Restriktion hinsichtlich der Hardware. Weitere Detailinformationen finden sich ​hier​. ... und OPC? Ein Vergleich zwischen Äpfeln und Birnen, es handelt sich hier eher um einen konzeptionellen Vergleich. Der Kernunterschied zwischen OPC und MQTT ist der Blickwinkel. MQTT bietet Lösungen für die Herausforderungen von niedriger Bandbreite mit hoher Latenz und lässt den Rest flexibel erweiterbar. OPC-UA liefert bereits Domainwissen durch ein hierarchisches Objektmodell out-of-the-box. Eine weiterreichende Darstellung zu den Unterschieden zwischen MQTT und OPC findet sich ​hier​. Copyright and all intellectual property belongs to Brockhaus Group 6