Unter dem Begriff Eclipse IoT fasst die Eclipse Foundation satte 26 Open-Source-Projekte zusammen, mit denen Entwickler das Internet der Dinge orchestrieren. Sie decken vom Smart Home bis zur Industrie-Anwendung eine Fülle von Einsatzgebieten ab, Entwickler dürfen sich einzelne Rosinen herauspicken.
Beim Internet of Things verbinden sich Haushaltsgeräte, Glühbirnen, Temperatursensoren und andere kleine Geräte sowohl untereinander als auch mit dem Internet. Dank der intelligenten Vernetzung lässt sich in der Mittagspause kurz die Temperatur im heimischen Gewächshaus kontrollieren. Kommunizierende Gegenstände helfen zudem unter dem Schlagwort Industrie 4.0 bei der Automatisierung und Optimierung von Fertigungsprozessen.
Den Datenaustausch regeln dabei mittlerweile zahlreiche Protokolle und Standards. So liefert der Temperatursensor seine Daten beispielsweise über das MQTT-Protokoll ab, während OMA Lightweight M2M für das Gerätemanagement zuständig ist.
Damit sich Programmierer nicht langwierig mit den Details der ganzen Standards befassen müssen, setzt die Eclipse Foundation gleich ein großes Ensemble an hilfreichen Bibliotheken und Softwarekomponenten in Szene [1]. So kümmert sich die Bibliothek Paho (siehe Tabelle 1) um den Datenaustausch über das MQTT-Protokoll. Entwickler verbreiten so mit wenigen Zeilen Programmcode die im Gewächshaus gemessenen Temperaturen im Netzwerk. Sämtliche Projekte der Eclipse Foundation stehen unter einer Open-Source-Lizenz und lassen sich somit kostenfrei nutzen.
| Name | Aufgabe | URL |
|---|---|---|
| Eclipse 4diac | Prozesssteuerung in der Industrie gemäß IEC 61499 | http://www.eclipse.org/4diac/ |
| Eclipse Agail | Modulares Software- und Hardware-Gateway-Framework | http://agile-iot.eu |
| Eclipse Californium | Implementierung des Constrained Application Protocol (Coap) in Java | https://www.eclipse.org/californium/ |
| Eclipse Concierge | Implementierung der OSGi Core Specification R5 | https://www.eclipse.org/concierge/ |
| Eclipse Cyclone DDS | Implementierung des OMG Data Distribution Service (DDS) | http://projects.eclipse.org/projects/iot.cyclonedds |
| Eclipse Ditto | Management digitaler Zwillinge | https://www.eclipse.org/ditto/ |
| Eclipse Edje | High-Level-Java-API, das Zugriff auf die Hardware eines Microcontrollers bietet und somit als Hardware Abstraction Layer (HAL) fungiert | http://projects.eclipse.org/projects/iot.edje |
| Eclipse Hawkbit | Managementtools, um Software-Updates auszurollen | http://projects.eclipse.org/projects/iot.hawkbit |
| Eclipse Hono | Bietet eine einheitliche Schnittstelle zur Kommunikation mit zahlreichen IoT-Geräten | https://www.eclipse.org/hono/ |
| Eclipse IO-Fog | Universelle Laufzeitumgebung für Microservices | http://projects.eclipse.org/projects/iot.iofog |
| Eclipse Kapua | Modulare IoT-Cloud-Plattform, bildet die Basis für Clouddienste, die dann die angelieferten Daten auswerten | https://www.eclipse.org/kapua/ |
| Eclipse Kura | Middleware und Application Container gemäß OSGi für Gateway-Dienste, verwandelt einen Raspberry Pi in ein Gateway | https://www.eclipse.org/kura/ |
| Eclipse Leshan | OMA Lightweight M2M Server und Client | https://eclipse.org/leshan/ |
| Eclipse Milo | Implementierung der OPC Unified Architecture | http://projects.eclipse.org/projects/iot.milo |
| Eclipse Mosquitto | MQTT-Broker | https://projects.eclipse.org/projects/technology.mosquitto |
| Eclipse Neoscada | Framework zum Erzeugen von Industrial Control Systems (ICS) | http://www.eclipse.org/eclipsescada/index.html |
| Eclipse OM2M | IoT Cloud Platform für die Telekommunikationsindustrie auf Basis der One-M2M-Spezifikation | http://www.eclipse.org/om2m/ |
| Eclipse Paho | Implementierung des MQTT-Protokolls | http://www.eclipse.org/paho/ |
| Eclipse Paho Incubator | Inkubator-Projekt für Paho, in dem Paho-Entwickler neue Ideen ausprobieren können | http://projects.eclipse.org/projects/iot.paho.incubator |
| Eclipse Ponte | Ponte vermittelt und konvertiert zwischen verschiedenen Protokollen und Datenformaten – beispielsweise lassen sich Daten via MQTT entgegennehmen und dann via Coap weiterleiten | http://www.eclipse.org/ponte/ |
| Eclipse Smarthome | Middleware und Application Container gemäß OSGi, Fokus auf Home Automation | https://www.eclipse.org/smarthome/ |
| Eclipse Tinydtls | Implementierung des DTLS-Protokolls | http://projects.eclipse.org/projects/iot.tinydtls |
| Eclipse Unide | Implementierung eines schlanken Production-Performance-Management-Protokolls | http://www.eclipse.org/unide/ |
| Eclipse Wakaama | Implementierung des OMA-LWM2M-Standard | http://projects.eclipse.org/projects/iot.wakaama |
| Eclipse Vorto | Generieren und Austauschen von Device Information Models | http://www.eclipse.org/vorto/ |
| Eclipse Whiskers | Implementierung des OGC Sensorthings API in Form eines Javascript-Clients und eines schlanken Servers | http://projects.eclipse.org/projects/iot.whiskers |
Hoch gestapelt
Um in der Projektflut nicht den Überblick zu verlieren, unterteilt die Eclipse Foundation eine typische Internet-der-Dinge-Anwendung in drei zentrale Bestandteile (Abbildung 1). Die Grundlage bilden stets Sensoren und Aktoren. Dazu zählen beispielsweise Temperaturfühler, kleine Motoren oder intelligente Leuchtmittel. Diese Geräte fasst die Eclipse Foundation unter dem Begriff Constrained Devices zusammen.

Abbildung 1: Nach den Vorstellungen der Eclipse Foundation aggregieren Gateways die Daten von mehreren Sensoren und leiten sie in die Cloud weiter. Dort bereiten andere Programme sie auf und stellen sie den eigentlichen Anwendungen zur Verfügung.
Die von ihnen generierten Rohdaten sammelt anschließend ein so genanntes Gateway ein. Ein solches würde beispielsweise die Temperatur- und Feuchtigkeitswerte von den entsprechenden Sensoren aus dem Gewächshaus abholen. Diese Daten schiebt das Gateway danach in die IoT-Cloud.
Die in der Wolke laufenden Dienste verarbeiten die Daten weiter, analysieren sie oder erstellen auf ihrer Basis Statistiken. Um beim Beispiel des Gewächshauses zu bleiben: Hier könnte eine entsprechende Cloudanwendung die angelieferten Temperaturen in ein Diagramm eintragen und den voraussichtlichen Wasserbedarf der Pflanzen ermitteln.
Auf die Cloud greifen dann wiederum konkrete Anwendungen zu. Dazu zählt etwa eine Smartphone-App, die ihren User alarmiert, wenn im Gewächshaus die Temperatur bedrohlich steigt. Das ganze Verfahren funktioniert auch in der umgekehrten Richtung: Die Cloud könnte Anweisungen an das Gateway schicken und es damit veranlassen die Dachfenster des Gewächshauses zu öffnen. Das Gateway sendet dann seinerseits entsprechende Steuerdaten an die passenden Aktoren. Gateways koordinieren somit auch die Zusammenarbeit der einzelnen IoT-Geräte.
Die Constrained Devices, die Gateways und die IoT-Cloud bestehen jeweils aus Komponenten, die sich gegenseitig unterstützen beziehungsweise ergänzen. So laufen zum Beispiel auf einigen Constrained Devices kleine Echtzeitbetriebssysteme mit einer Mini-Anwendung, die die eigentliche Hardware ansteuert.
In der Sprechweise der Eclipse Foundation gibt es somit für Constrained Devices, die Gateways und die IoT-Cloud jeweils einen eigenen Stack aus Software-Komponenten. Das funktioniert ganz ähnlich wie beim klassischen LAMP-Stack, in dem Linux, der Apache Webserver, die MySQL-Datenbank und PHP zusammenarbeiten.
Von Sammlern …
Die Sensoren und Aktoren interagieren also mit der realen Welt und übernehmen dabei meist eine ganz spezielle und zugleich klar umrissene Aufgabe. Es handelt sich um batteriebetriebene Temperaturfühler, Lichtschalter und Glühbirnen, die mit besonders wenig Strom auskommen müssen. In den intelligenten Geräten stecken zudem häufig Microcontroller mit begrenzter Rechenleistung.
Sofern das Constrained Device ein Embedded- oder Echtzeitbetriebssystem benötigt, empfiehlt die Eclipse Foundation etablierte Open-Source-Systeme wie Contiki-NG [2], Riot [3], Free RTOS [4], Zephyr [5] oder Apache Mynewt [6]. Den Zugriff auf die eigentliche Hardware vereinfacht ein darauf aufsetzender Hardware Abstraction Layer (HAL). Über ihn lassen sich etwa die Sensoren bequem auslesen. Einen solchen HAL stellt das Eclipse-Projekt Edje bereit. Es offeriert ein API, über das Anwendungen direkt auf die Hardwarefeatures von Mikrocontrollern zugreifen – wie etwa die GPIO-Kontakte eines Raspberry Pi.
Eine weitere Komponente leitet die ausgelesenen Sensordaten über das Netzwerk weiter. Dies geschieht meist drahtlos via Bluetooth, Z-Wave, MQTT, Coap oder ähnliche Protokolle. Unterstützung erhalten Entwickler über die Eclipse-Projekte Wakaama und Paho. Letztgenanntes stellt eine Bibliothek zur Verfügung, mit der Entwickler die Daten komfortabel über das MQTT-Protokoll im Netzwerk verschicken. Analog dazu implementiert Eclipse Wakaama den OMA-LWM2M-Standard.
Eine vierte Komponente auf dem Constrained Device ist für das Remote Management zuständig. Sie erlaubt etwa ein Upgrade der Firmware oder das Abfragen des Batteriestands. Auch hier springt Eclipse Wakaama ein.
… und Jägern
Gateways treten in zwei Varianten auf: Zum einen als speziell für diese Aufgabe abgestellte Hardwaregeräte, etwa ein entsprechend eingerichteter Raspberry Pi. Zum anderen sind Gateways in andere, größere Systems integriert. Letzteres ist etwa bei einer Wetterstation, einer großen Produktionsanlage oder in einem intelligenten Auto der Fall.
In der Praxis kommen häufig mehrere Gateways zum Einsatz, die sich dann jeweils um einen Teil der IoT-Geräte kümmern. So könnte beispielsweise ein Gateway die Überwachung des Gewächshauses übernehmen, während sich ein zweites der Licht- und Heizungssteuerung verschreibt.
Intelligente Türsteher
Gateways sind intelligenter und leistungsfähiger als die Constrained Devices. Den Unterbau bildet meist ein bekanntes Betriebssystem wie Linux oder Windows. Um die Kommunikation mit den IoT-Geräten und der Cloud kümmert sich im Gateway eine eigene Komponente. Sie muss zahlreiche Protokolle beherrschen, etwa Bluetooth und Ethernet. Über eine weitere Komponente lässt sich das Gateway (fern-)warten und so etwa kontrolliert ausschalten.
Um Netzwerkausfälle oder Störungen zu kompensieren, müssen die Gateways die von den Sensoren eingesammelten Daten (zwischen-)speichern. Dies ermöglicht gleichzeitig die Analyse der Sensordaten direkt auf dem Gateway.
Die Eclipse Foundation betreut gleich drei Projekte, die jeweils alle genannten Komponenten enthalten. Besonders bekannt dürfte Kura sein (Abbildung 2), dessen Einsatzgebiet die Eclipse Foundation vor allem auf Einplatinen-Computern wie dem Raspberry Pi sieht. Das modular aufgebaute Kura passen Java-Entwickler schnell an die eigenen Bedürfnisse an. Dazu programmieren sie einen kleinen Dienst, der zum Beispiel die Temperatursensoren ausliest und die Daten an Kura weiterleitet.

Abbildung 2: Eclipse Kura lässt sich über die mitgelieferte Webanwendung bequem administrieren und überwachen. Kura unterstützt alle drei Bestandteile einer zentralen Internet-der-Dinge-Anwendung.
Im Kern stellt Kura für Java-Entwickler einen Application Container bereit, der dem OSGi-Standard folgt. Kura bietet zudem zahlreiche APIs an, die dem Entwickler vor allem die Kommunikation sowohl mit der Hardware als auch dem Netzwerk erleichtern. So greift Kura auf RS-485 oder GPIO-Schnittstellen zu, kommuniziert über den Can-Bus und stellt eine Verbindung via WLAN oder Ethernet her. Dank der integrierten MQTT-Unterstützung können auf dem Gateway laufende Anwendungen transparent mit der Cloud kommunizieren.
Auf der Grundlage des MQTT-Protokolls ermöglicht Eclipse Kura zudem ein Remote Management. Aus der Ferne lässt sich unter anderem die auf dem Gateway laufende Software steuern.
Das ebenfalls für Gateways gedachte Eclipse Smarthome läuft unter Linux, Windows und OS X. Genau wie Kura stellt auch dieses Projekt einen Application Container gemäß OSGi-Spezifikation bereit. Wie der Projektname jedoch bereits dezent andeutet, konzentriert sich Eclipse Smarthome auf das intelligente Wohnhaus.
Die Middleware unterstützt viele Geräte aus dem Home-Automation-Bereich, darunter die intelligenten Hue-Lampen von Philips oder Sonos-Geräte. Ziel ist vor allem der Aufbau und Betrieb eines “Intranet of Things”. Smarthome bietet einen internen Event-Bus, an den bei Bedarf auch externe Systeme via SSE oder MQTT andocken. Über vorgegebene Regeln lassen sich Vorgänge zudem automatisieren. Die Konfiguration von Smarthome erfolgt über entsprechende APIs. Enthalten ist außerdem eine Infrastruktur, um Firmware-Updates auf die angeschlossenen Geräte zu übertragen.
Das dritte Gateway-Projekt im Eclipse-Universum richtet sich schließlich an Unternehmen: Eclipse 4diac stellt eine Open-Source-Infrastruktur für verteilte industrielle Prozess-Mess- und Steuerungssysteme bereit. 4diac folgt dabei dem bekannten Standard IEC 61499.
Stark bewölkt
Die vom Gateway gesammelten Daten wandern dann weiter in eine Cloud, die als Basis etwa Open Shift, AWS oder eine andere Datacenter-Lösung verwendet. Dort warten Dienste und Anwendungen, die alle von den Gateways angelieferten Daten verarbeiten und bei Bedarf an andere Anwendungen weiterleiten. Dabei muss die IoT-Cloud eine variable und vor allem wachsende Anzahl von Geräten bedienen.
Als Grundbaustein für eine IoT-Cloud dient Eclipse Kapua: Diese modular aufgebaute Plattform bietet alle zur Verwaltung der Gateways und Smart Edge Devices notwendigen Dienste an.
Für die Telekommunikationsindustrie empfiehlt sich wiederum Eclipse OM2M, das dem One-M2M-Standard folgt. Das Projekt bietet eine horizontale Common Service Entity (CSE), die sowohl als M2M-Server, als Gateway oder Device auftreten kann.
Die in der Cloud laufenden Dienste müssen in der Lage sein, die über verschiedene Protokolle und in unterschiedlichen Datenformaten angelieferten Informationen zu verarbeiten und bei Bedarf für andere Anwendungen zu normalisieren. Hier springt Eclipse Hono in die Bresche: Das Projekt stellt ein API bereit, über das sich Geräte in vielen Protokollen ansprechen lassen. Ergänzend liefert Eclipse Mosquitto einen leichtgewichtigen MQTT-Server, der sich vor allem für eingebettete Geräte und Systeme mit niedrigem Energiebedarf eignet.
Bitte registrieren!
Beim Management der zahlreichen angebundenen IoT-Geräte hilft nach Vorstellung der Eclipse Foundation eine so genannte Device Registry, in der sich alle derzeit angeschlossenen Sensoren, Aktoren und Gateways registrieren. Eine solche bringt Eclipse Kapua bereits standardmäßig mit. Dieses Verzeichnis hilft gleichzeitig dabei, Software-Updates auszurollen. Letzteres kann wiederum über die Software-Tools aus dem Eclipse-Projekt Hawkbit erfolgen.
Ergänzend liefert Eclipse Leshan eine Implementierung des OMA-LWM2M Device-Management-Protokolls.
Mit Eclipse Ditto lassen sich so genannte digitale Zwillinge (Digital Twins) von IoT-Geräten verwalten. Dabei handelt es sich um in Software nachgebaute, virtuelle Abbilder realer Geräte. Dies nutzt vor allem die Industrie, wenn die virtuelle Variante einer Maschine mit ihrem realen Gegenstück auch Daten austauscht.
Die angelieferten Daten müssen in einem entsprechend flexiblen und großen Datenspeicher landen. Die dort geparkten Informationen analysiert und konsolidiert dann die Cloudanwendung. Dafür verweist die Foundation auf etablierte externe Apache-Projekte wie Hadoop, Spark und Storm. Für die Datenvisualisierung empfiehlt die Eclipse Foundation ihr eigenes Projekt Eclipse Birt [7], das allerdings nicht Teil von Eclipse IoT ist.
Stille Post
Sensoren, Gateway und Cloud müssen jederzeit sicher miteinander kommunizieren. Beispielsweise dürfen nur autorisierte Gateways einen Sensor anzapfen und Angreifer nicht die Kommunikation des Gateway mit der Cloud belauschen. Hier hilft Eclipse Tinydtls: Entwickler verschlüsseln mit dieser Implementierung des DTLS-Protokolls komfortabel den Datenaustausch.
Eine reibungslose Zusammenarbeit der beteiligten Komponenten ist nur dann garantiert, wenn diese die Daten korrekt interpretieren und analysieren. Dazu sind wiederum gültige Ontologien und Metadaten notwendig. Hier knüpfen zwei Eclipse-Projekte an: Eclipse Whiskers implementiert das OGC-Sensorthings-API, über das sich Geräte und ihre Daten miteinander koppeln lassen. Eclipse Unide wiederum bietet ein Protokoll nebst passender Implementierung für das Production Performance Management (PPM) in der industriellen Produktion.
Abschließend liefert Eclipse Vorto mehrere Tools und Repositories, mit denen Entwickler so genannte Device Information Models erzeugen und verwalten. Diese Modelle beschreiben die Eigenschaften und die Fähigkeiten von IoT-Geräten. Eclipse Vorto kann dann unter anderem halbautomatisch aus den Modellen Code erzeugen, der dazu dient, die Geräte in verschiedene Plattformen zu integrieren. Neben den vorgestellten Projekten betreut die Eclipse Foundation noch viele weitere, deren Aufgaben die Tabelle 1 kompakt zusammenfasst.
Einstiegshürden
Wer mit Eclipse für das Internet of Things entwickeln möchte, muss nicht nur die für seine Zwecke passenden Projekte finden, sondern sich auch noch in jedes separat einarbeiten. Dabei helfen die MQTT-, Coap- und LWM2M-Server. Mit ihnen testen Entwickler schnell die Funktion der entsprechenden Clients.
Die Eclipse-IoT-Website hält zudem Videos, Präsentationen und ein einsames Tutorial bereit. Das zeigt Schritt für Schritt, wie Entwickler mit einem Raspberry Pi, einem Sensor und den Eclipse-Projekten Kura, Paho und Californium ein kleines Gewächshaus überwachen (Abbildung 3). Das Tutorial nutzt jedoch hoffnungslos veraltete Softwarekomponenten, die auf aktuellen Raspbians nicht mehr laufen, etwa das über zwei Jahre alte Kura 1.3.0, während bei Redaktionsschluss bereits Kura 3.1.1 vorlag.

Abbildung 3: Das Tutorial auf der Eclipse-Homepage verwendet einen Sensor und ein LED-Modul von Grove – und leider auch komplett veraltete Software.
Die bereitgestellten Videos und Präsentationen greifen einzelne Aspekte aus dem Eclipse-IoT-Kosmos auf oder geben einen Überblick über die vorhandenen Projekte. Dennoch dürften Eclipse-IoT-Novizen über die teils veraltete und lückenhafte Dokumentation der Projekte stolpern, die häufig eher an eine Referenz erinnern. Sie sollten daher von vornhereein eine längere Einarbeitungszeit einplanen. Da viele der Projekte Java verwenden, helfen Kenntnisse der Sprache und der Buildtools.

Abbildung 4: Der Eclipse-IoT-Kosmos umfasst so viele Unterprojekte, dass es sogar eine eigene Suchfunktion gibt. Die Liste lässt sich auch nach den drei Stacks (Devices, Gateways, Cloud) filtern.
Nicht zuletzt entwickeln sich einige der Projekte nur schleppend. So gab es von Eclipse Milo nur eine Release 0.1.0 aus dem Jahr 2016. Die Mehrheit der Projekte befindet sich zudem im Inkubator-Status und eignet sich noch nicht für den Praxiseinsatz.
Wer sich für ein Projekt interessiert, sollte daher unbedingt einen Blick auf den Entwicklungsstand werfen, den das Projektverzeichnis auf der Eclipse-IoT-Website rechts neben der Projektbeschreibung verrät (Abbildung 4, [8]).
Infos
- Eclipse-IoT-Webseite: https://iot.eclipse.org
- Contiki-NG: https://github.com/contiki-ng
- Riot: https://github.com/RIOT-OS/RIOT
- Free RTOS: https://www.freertos.org
- Zephyr: http://www.eclipse.org/birt/
- Apache-Projekt Mynewt: https://mynewt.apache.org
- Eclipse Birt: http://www.eclipse.org/birt/
- Eclipse-IoT-Projekte im Überblick: https://iot.eclipse.org/projects/






