Suche
Messaging im Internet der Dinge

Eclipse Paho und MQTT

Andy Piper

2014 sollte das Jahr sein, in dem das Internet der Dinge – auch bekannt als „M2M“ oder „Internet of Everything“ – explosionsartig ins öffentliche Bewusstsein tritt. Der folgende Beitrag basiert auf einem Vortrag bei der JAX London und beleuchtet die jüngsten Entwicklungen auf diesem Gebiet.

Zu Beginn meines JAX-London-Vortrags sprach ich über Paho, M2M und MQTT. Was ist Paho? Was bedeutet das? Es ist ein komisches Wort. Was meine ich mit M2M (Machine to Machine) und was ist dieses MQTT? Und selbstverständlich konzentrierte ich mich in dem Vortrag auf Java. Wie also funktioniert das alles in Java?

Kurz gefasst: Paho ist ein Teil der Eclipse M2M Working Group und der zugehörigen Projektgruppe (Abb. 1 zeigt Paho-Beispielcode).

Abb. 1: Paho-Beispielcode

Abb. 1: Paho-Beispielcode

Es gibt immer mehr Eclipse-Projekte in diesem Bereich. Über einige habe ich in meiner Präsentation gesprochen. Paho ist ein Wort aus der Maori-Sprache, das „verteilen“ oder „senden“ bedeutet. Es geht hier um ein Broadcast-Messaging-Protokoll für das Internet der Dinge.

Und was ist das Internet der Dinge? Die Idee, dass es noch viel, viel mehr vernetzte Geräte gibt als heute – oft sehr leichtgewichtig und klein, mobil … und mit völlig anderen Anforderungen in Sachen Konnektivität – Mobilfunknetze können ja aus verschiedenen Gründen unzuverlässig sein. Das Internet der Dinge führt also Daten zusammen, die, wenn man mit dem Internet verbunden ist, auf interessante und innovative Weise verwendet werden können.

Was das Ausmaß dessen angeht, gibt es verschiedene Prognosen. Buchstäblich im Monatsrhythmus werden Studien von bestimmten Firmen veröffentlicht, in denen steht: „Milliarden von Geräten werden online sein“ – bis 2020, 2050 oder bis zu irgendeinem anderen Jahr. Auf der Vortragsfolie, die ich dazu verwende (Abb. 2), ist dagegen noch nicht mal eine konkrete Zahl zu sehen. Die Aussage ist einfach: Es wird ein enormes, ja exponentielles Wachstum geben.

Abb. 2: Immer mehr IoT-Projekte

Abb. 2: Immer mehr IoT-Projekte

Internet der Dinge – das interessiert uns. Es wird manchmal auch „M2M“ genannt, weil wir nicht nur Geräte miteinander vernetzen und Menschen Zugang zu den von ihnen produzierten Daten verschaffen, sondern weil wir auch dafür sorgen, dass Maschinen auf Ihresgleichen reagieren. Wenn mein Wettersensor also besonders kalte Temperaturen misst, sollte sich meine Zentralheizung autonom und automatisch daran anpassen. Daran müssen noch nicht einmal Menschen beteiligt sein. Es könnten einfach Maschinen miteinander interagieren.

MQTT

MQTT wurde 1999 im Rahmen einer Kooperation während einer IBM-Versammlung erfunden, von Andy Stanford-Clark und Arlen Nipper, der zu jener Zeit für Arcom arbeitete, einer Firma, die Industrieanlagen baut. Die beiden entwickelten MQTT gemeinsam, und IBM verwendete es zehn Jahre lang in den eigenen Produkten. Es wurde an große Industriekonzerne verkauft, die u. a. Ölpipelines überwachen wollten. Solche Ölpipelines sind ziemlich interessante Umgebungen.

Wenn man zehn, fünfzehn Jahre zurückdenkt, erinnert man sich, dass es damals keine Breitbandverbindungen gab. Es gab wahrscheinlich Satellitenverbindungen oder sehr langsame Mobilfunkverbindungen, die sehr teuer waren. Die Firmen, die diese Systeme verwenden, mussten sehr hohe Gebühren an die Netzwerkbetreiber entrichten, und das für sehr geringe Datenmengen.

Nipper und Stanford-Clark überlegten sich also eine Möglichkeit, Daten auf äußerst effiziente Art und Weise zu übertragen, mit geringer Bandbreite und unter Berücksichtigung der Tatsache, dass es in diesen Netzwerken oft Unterbrechungen gab. Bei einer Satellitenverbindung kam es z. B. vor, dass ein Sonnenfleck explodierte und die Verbindung für eine Weile lahmlegte. Man wollte aber erreichen, dass das System als Ganzes noch funktioniert. Deswegen wurde MQTT erfunden.

Zwölf Jahre später tat sich IBM mit anderen Firmen zusammen und übergab diese Technologie an die Eclipse Foundation. Dort wurde es ein M2M-Projekt. Dieses Jahr einigte man sich darauf, die Spezifikation an ein Standardgremium namens OASIS zu übergeben.

Bis vor Kurzem dachten sich viele noch: „Ach ja, irgendein IBM-Protokoll, das man anpassen kann“. Und jetzt wurde es an ein Gremium für offene Standards übergeben, was natürlich großartig ist. Denn damit sind Entwickler und andere Firmen, die zu der Entwicklung beitragen, auf der sicheren Seite.

In Abbildung 3 ist eine Liste an Einsatzgebieten für das Protokoll zu sehen. Eines davon, über das viel gesprochen wird, ist Facebook. Dort verwendet man es für den Facebook Messenger, weil es wenig Energie und wenig Bandbreite braucht. Es kommt aber auch in vielen anderen Bereichen zum Einsatz. In meinem Vortrag habe ich mich auf die Tatsache konzentriert, dass MQTT die Menge der übermittelten Daten minimiert – und das Anliegen, mit einer Vielzahl an kleinen, eingebetteten Geräten mit geringer Energiekapazität und schlechter Netzwerkqualität zu kommunizieren.

Abb. 3: Bereiche, in denen MQTT eingesetzt wird

Abb. 3: Bereiche, in denen MQTT eingesetzt wird

Broker

Die Folie, die die Konzepte und Topologien der Technologie zeigt (Abb. 4), ist relativ wichtig, weil sich in der Mitte der Broker befindet, mit dem man sich verbindet, um Daten zu versenden und zu beziehen. Und dann gibt es da noch die Geräte. Damit kann alles gemeint sein – von Mobiltelefonen und einzelnen Sensoren bis hin zu Laptops oder großen Servern.

Abb. 4: Konzepte und Topologien

Abb. 4: Konzepte und Topologien

Alles, worauf eine Anwendung laufen und MQTT verwenden kann, um sich mit diesen Brokern zu verbinden. Der Broker ist keineswegs ein Central Point of Failure, weil man mehrere davon miteinander vernetzen und dann alle Informationen teilen kann.

Der Broker ist also der Schlüssel zur gesamten Topologie. Alles muss mit ihm verbunden sein. Bis zu diesem Jahr gab es keinen guten Java-Broker. Ein Grund war, dass wir uns meist darauf konzentrierten, den Broker auf den Endgeräten nutzen zu können, in sehr eingeschränkten Umgebungen. Anderswo kam zwar Java ME zum Einsatz, aber Mosquitto, ein sehr bekannter Open-Source-Broker ist in C geschrieben und kompiliert zu sehr kleinen Binaries. Das ist der Weg, der in Sachen Broker-Entwicklung beschritten werden sollte.

Abb. 5: Eclipse-M2M-Projekte

Abb. 5: Eclipse-M2M-Projekte

Letztes Jahr hat eine Reihe von Start-ups MQTT-Unterstützung hinzugefügt. Hintergrund ist, dass Protokolle wie AMQP nicht gut auf kleinere Geräte herunterskalieren. ActiveMQ und RabbitMQ stellen nun entsprechenden Support für ihre vorhandenen Implementierungen zur Verfügung.

Java-MQTT-Implementierungen

Es sind auch zwei wirklich interessante Java-Implementierungen entstanden, die auf MQTT abzielen: Die eine nennt sich Moquette. Ich bin nicht sicher, wie weit diese ist, aber der Entwickler, der daran arbeitet, ist sehr aktiv und interessiert.

Außerdem gibt es HiveMQ, ein kommerzielles Produkt. Eine kostenlose Testversion ist erhältlich, und man kann damit eine Geschäftslösung für das Internet der Dinge entwickeln. Als ich auf der JAX London sprach, waren die HiveMQ-Entwickler Dominik Obermaier und Christian Götz gerade auf der EclipseCon Europe, wo ich normalerweise auch immer bin. Sie haben mich also gewissermaßen dort vertreten, was MQTT betrifft. Sie sind sehr aktiv in der Community, achten sehr auf Interoperabilität, was ein großes Thema ist. Denn wir haben zwar einen Standard und eine Spezifikation, viele Features sind aber nicht komplett implementiert worden, z. B. Sicherheit, WebSocket und andere Dinge. Die EclipseCon plant daher, auf der EclipseCon North America einen MQTT Interoperability Day zu veranstalten, zu dem unterschiedliche Hersteller und Leute, die Broker und Clients bauen, kommen können, wenn sie Lust haben, um gemeinsam zu testen, ob das Zusammenspiel der Komponenten funktioniert. Ich habe auf jeden Fall vor, dort zu sein, besonders, um andere Communitymitglieder zu treffen. Wenn man sich die M2M-Einreichungen für die EclipseCon im März ansieht: Da lässt sich wirklich aus dem Vollen schöpfen. Um ehrlich zu sein: Ich habe zwar eingereicht, aber ich bin fast sicher, dass mein Talk nicht angenommen wird, weil es einfach so viele großartige Talkeinreichungen zu MQTT und M2M gibt. Im M2M-Bereich gibt es mittlerweile so viele Projekte, dass sie sich um einen Platz auf der Konferenzagenda streiten müssen.

Obwohl es einen ganzen Tag speziell zu M2M geben wird, möchte jeder über alles reden. Zu jedem Projekt gibt es drei oder vier Einreichungen, was sich hier nachvollziehen lässt. Es gibt darunter sehr interessante Projekte, z. B. mit Google Glass und 3-D-Druckern. Es wird langsam richtig interessant, wenn man sich überlegt, wie man diese Dinge zusammen verwenden kann. Ein Communitymitglied, Justin Ribeiro, hat vor einiger Zeit Prototypen für das Gesundheitswesen erstellt, mit denen man die Körpertemperatur eines Patienten über MQTT zu Google Glass übertragen kann. MQTT läuft dann nicht direkt auf Glass, da dieses sein eigenes Protokoll verwendet. Es wird aber überbrückt, was auch immer wichtiger wird.

Topics

Topics sind ein weiteres Konzept. Wenn ich zum Beispiel Aktienpreise versenden würde, wäre das Topic „Aktie“. Die nächstwichtige Eigenschaft könnte der Firmenname sein, z. B. IBM, Cisco oder Microsoft, dann könnte die Währung eine Rolle spielen. Man gibt also an: Aktie/IBM/USD und abonniert damit die Benachrichtigungen des jeweiligen Levels. Man kann also sagen: „Ich möchte etwas über alle Aktien weltweit in allen Währungen erfahren.“ Oder: „Ich möchte nur IBM-Aktien in allen Währungen abonnieren.“ Die Verwendung dieser Daten ist also sehr flexibel. Man kann das System auf den eigenen Bedarf zuschneiden.

Eine weitere Sache, die der Erwähnung bedarf, ist die weite Verbreitung. Noch vor dem OASIS-Verfahren ist die Spezifikation schon eine ganze Weile lizenzfrei erhältlich. Das hat allseits großes Interesse geweckt, weswegen es in vielen unterschiedlichen Umfeldern verwendet wird. Es gibt Arduino-, Ruby-, Python- und PHP-Implementierungen. Man kann es quasi überall verwenden.

Ich habe seit fünf Jahren mit dem Internet of Things zu tun, sowohl bei als auch nach IBM, und aus meiner Sicht hat sich hier in den letzten 18 Monaten, besonders im letzten Jahr, viel bewegt, was teilweise mit dem OASIS-Prozess zu tun hat. Die Zahl der Unternehmen, die sich als „Interested Parties“ der OASIS-Spezifikation eingetragen haben, beeindruckt. Das zeigt, dass vielen Menschen klar wird, wie problematisch Konnektivität in diesem Bereich ist und dass es hier ein gutes Protokoll braucht.

Diese Woche war ich auf der Devoxx und fand es beeindruckend, dass bei dem Internet of Things Hackathon ausschließlich MQTT benutzt wurde, weil es von allen als Standard in puncto Konnektivität akzeptiert wird. Es ist gleichermaßen aufregend, weil ich mich früher dafür einsetzen und dafür werben musste, und mittlerweile nutzt es einfach jeder.

Eine einheitliche Definition von „M2M“

Müssen wir uns in den nächsten Jahren wirklich auf eine Definition des Begriffs „M2M“ einigen? Eine interessante Frage. Bei Eclipse haben wir darüber diskutiert, ob wir „M2M“ weiter verwenden sollen oder zu „Internet of Things“ übergehen. Es gibt eine weitere Bezeichnung, die Cisco meist verwendet, „Internet of Everything“. In jeder LinkedIn-Gruppe zu diesem Thema gibt es darüber eine Riesendiskussion.

Machine to Machine impliziert, dass weder das Internet noch Menschen daran beteiligt sind. Auch „Internet der Dinge“ lässt die beteiligten Menschen außen vor. Dabei existiert das alles nur, weil es Menschen Informationen zugänglich macht. Das ist die Existenzberechtigung für das Internet. Und zumindest Letzteres steckt in dem Begriff.

Selbst wenn all diese Maschinen Daten austauschen können, was nützt uns das? Wenn diese Daten nicht intelligent gesteuert und verknüpft und entsprechende Entscheidungen getroffen werden – und das erfordert nun einmal menschlichen Einsatz – ist das wertlos. Bei Eclipse denken wir darüber nach, auf „Internet of Things“ umzusteigen, weil sich der Begriff immer mehr durchsetzt. Er ist bekannt, und jeder scheint zu wissen, wofür er steht. Es ist zwar noch nicht sicher, würde mich aber nicht überraschen, wenn der Begriff irgendwann auf der entsprechenden Eclipse-Seite auftauchen würde.

Aus dem Englischen von Diana Kupfer.

Aufmacherbild: Flat messages Vectors von Shutterstock / Urheberrecht: Re66y

Geschrieben von
Andy Piper
Andy Piper ist Developer Advocate bei der PaaS-Plattform Cloud Foundry. Online hat er sich als sozialer Brückenbauer verdient gemacht, der ein breites Spektrum an Interessens- und Technologiefeldern in sich vereint. Er war von Beginn an am Paho-Projekt beteiligt, was zunächst durch seine frühere Rolle als Fürsprecher von MQTT bei IBM und als Mitverantwortlicher für die Communitywebsite mqtt.org bedingt war. Andy hat ein leidenschaftliches Interesse an kleinen und großen Mobilgeräten, Cloud, dem Internet of Things und Technologien mit Arduino-Bezug. Er arbeitet bei Pivotal.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: