Was Eclipse für das Internet der Dinge zu bieten hat

Eclipse IoT für Dummies

Boris Adryan

@shutterstock/vasabii

Eclipse IoT ist eine Sammlung von Open-Source-Projekten zur Entwicklung von Lösungen für das Internet der Dinge. Zudem ist es eine der aktivsten Arbeitsgruppen in der Eclipse Foundation, die derzeit 25 Projekte umfasst. Wir wollen uns in diesem Artikel einen kleinen Überblick verschaffen.

Wenn Sie neu in Java und kein religiöser Anhänger von Emacs sind, dann stehen die Chancen gut, dass Sie Eclipse als integrierte Entwicklungsumgebung (IDE) verwenden. Doch selbst langjährige Eclipse-Anwender sind sich dem großen Software-Ökosystem, das unter der Flagge der Eclipse Foundation gedeiht, oftmals nicht bewusst. In den vergangenen fast 15 Jahren wurde das Eclipse-Projekt zu einer Stiftung umstrukturiert, die auf eine breite Palette von Software-Projekten in vielen Branchen sprachenunabhängig funktioniert; nicht unähnlich der Apache Foundation, die zu Beginn nur einen Web Server vertrat, doch nun eine Software-Organisation mit einer sehr viel breiteren Projektpalette ist.

Falls Sie in den letzten fünf Jahren keinen Internet-Zugang hatten oder sich unter einem Felsen versteckt hatten – das Internet-of-Things (IoT) ist inzwischen eine allgegenwärtige Bezeichnung für Machine-to-Machine-Kommunikation (M2M) und daraus hervorgehende neue Technologien und Konzepte. Unter der organisatorischen Leitung von Ian Skerrett und Benjamin Cabé ist Eclipse-IoT eine der sieben Working Groups, die sich um vertikale Industrien herum bei Eclipse gebildet haben. Es handelt sich dabei um ein Umbrella-Projekt, das die Bemühungen von Entwicklern koordiniert, die in vielen Unternehmen gleichzeitig arbeiten und ein Interesse an IoT oder M2M haben. Unter den Mitgliedern befinden sich Größen wie IBM, Bosch und Siemens, aber auch kleinere Unternehmen, die in einzelnen Ecken des IoT arbeiten, wie dc-square und die Integrationsplattform openHAB.

iot_1

Die Architektur von IoT-Lösungen kann verwirrend sein, und sich einen Überblick darüber zu verschaffen, wann und wo bestimmte Eclipse-IoT-Projekte hineinpassen, ist keine leichte Aufgabe. Es ist zwar möglich, alle notwendigen Informationen in einer Tabelle auf der Eclipse-Website zu finden, doch vor allem diejenigen, die mit IoT zuvor noch nichts zu tun hatten, können sich leicht zwischen Protokoll-Akronymen wie COAP, MQTT und kryptischen Projektnamen verlieren (fühlt euch angesprochen, „Wakaama“ und „Leshan“…). Im Bezug auf ihre Ökosysteme, Standards und Komponenten kann man über die Nutzung der verschiedenen Projekte von Eclipse IoT allerdings klare Aussagen treffen.

iot_2

Auf der Ökosystem-Ebene wirkt Eclipse-IoT als Bindeglied für Projekte, die vollständige End-to-End-Lösungen entwickeln, angefangen bei Embedded Code auf Mikrocontrollern, um etwa Nachrichten an Broker zu schicken, bis hin zu Backend Software. Vor allem Anwender aus der Industrie schätzen oftmals Paketlösungen, die kein aufwendiges Herumprobieren mit den Komponenten erfordern. Das 4diac Projekt bietet beispielsweise Software-Implementierungen für den IEC 61499-Standard für industrielle Steuerungssysteme. Dazu gehört auch die Laufzeitumgebung, eine IDE mit integrierten vordefinierten Funktionsbausteinen, die in Endverbraucher-Anwendungen verwendet werden kann.

Eine Reihe von konzeptionell verwandten Tools rund um Embedded-IoT sind Vorto, EDJE, Hawkbit und Concierge. Die Vorto GUI ermöglicht die Schaffung von sprachunabhängigen Beschreibungen von Geräten, die über die Vorto-Codegeneratoren bequem in Objekte / Klassen einer beliebigen Programmiersprache übersetzt werden können, solange ein passender Generator existiert. (Eine Beschreibung dieser Funktionsweise ist in diesem kürzlich erschienenen Blog-Post über Vorto nachzulesen). Auf einer sehr abstrakten Ebene könnte ein Programmierer auf „ein Radio“ und „send x bytes“ in ihrem Code verweisen, in einem Interface, das von der EDJE-Hardwareabstraktionsschicht bereit gestellt wird, die sich um die technischen Unterschiede zwischen den verschiedenen Geräten kümmert. Erst einmal entwickelt, kann man den neuen Code per hawkBIT auf eine große Anzahl an Geräten auf einmal verteilen. In diesem Sinne könnte hawkBIT einen an resin.io erinnern, einen „sende Docker Container an alle Embedded-Geräte“ Service, über den ich früher bereits einmal geschrieben habe. Auf dem Gerät selbst fungiert dann das Concierge-System als OSGi-kompatibler Java-Kern, der den Code ausführen kann.

iot_3

Auf der Komponentenebene verdient Eclipse-Kura in der sehr langen Liste von Projekten, die in eigenen IoT-Lösungen eingesetzt werden können, eine besondere Erwähnung. Kura ist ein einfach zu bedienendes Gateway-System, das zwischen Sensorgeräten und dem Backend arbeitet. Traditionell für Demonstrationen auf dem Raspberry Pi verwendet, werden Kura und Pi mittlerweile fast immer zusammen eingesetzt. Etwas komplexer und üblicherweise für Home-Automation-Projekte wie openHAB verantwortlich, wird Eclipse-SmartHome aufgrund des Supports häufig verwendeter Hardware gleichermaßen von Hobbyisten und Profis verwendet.

Während es zwar jederzeit möglich ist, in den jeweiligen Code sämtlicher Eclipse-Projekte zu bohren, muss man sich sowohl auf der Ökosystem- wie auf der Komponentenebene nicht unbedingt mit dem zugrunde liegenden Code beschäftigen. Da Eclipse IoT allerdings ebenfalls wichtige Standards umfasst, sind die Bibliotheken für M2M/IoT-Gerätekommunikation via MQTT, CoAP oder ETSI M2M sehr leistungsstark.

Am Beispiel von MQTT kann man die Mächtigkeit dieser Open-Source-Lösungen sehen. Ursprünglich als „MQ Telemetry Transport“ bekannt, wird das weitverbreitete Publish-Subscribe-IoT-Protokoll verwendet, um Informationen von Geräten zu Gateways und zu Servern zu schicken. Eine Nachricht wird in ein Thema (ähnlich dem Betreff einer E-Mail) und eine Nutzlast (dem Inhalt) geteilt. MQTT setzt auf TCP / IP auf. Während Mosquitto Broker (eine weiterere Eclipse-Komponente) einfach auf den meisten Unix-Systemen installiert werden kann und sich um die Handhabung aller Nachrichten kümmert, muss der Programmierer nur ein paar Zeilen an Syntax auswendig lernen. Beispielsweise kann die Paho Bibliothek genutzt werden, um sich mit dem ‚Broker‘ zu verbinden oder auf bestimmte MQTT-Ereignisse mittels Callback-Funktionen zu reagieren.

Eine minimalistische Response auf der Grundlage Python-Beispiels von Paho ist hier zu sehen:

import paho.mqtt.client as mqtt

# The callback for when the client receives a CONNACK.
def on_connect(client, userdata, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("$TEMPERATURE/#")
    # subscribing to all topics startings with "TEMPERATURE"

# The callback for when a PUBLISH message is received.
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

# MAIN
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("iot.eclipse.org", 1883, 60)
client.loop_forever()

iot_4

Im aktuellen Stadium lässt Eclipse-IoT noch ein Projekt zur Visualisierung und Analyse von IoT-Daten vermissen. Auf der anderen Seite hat Eclipse kürzlich eine Kooperation mit dem Open Analytics Project begonnen. Eine gegenseitige, positive Beeinflussung ist hoffentlich nur eine Frage der Zeit.

Aufmacherbild: Vector illustration of hardware and cloud computingvon Shutterstock / Urheberrecht: vasabii

Geschrieben von
Boris Adryan
Boris Adryan
Dr. Boris Adryan ist ausgebildeter Biologe und hat 15 Jahre damit verbracht, Computer-Tools für die Analyse biologischer Datensätze zu entwickeln. Nach acht Jahren Leitung einer Forschungsgruppe an der Universität von Cambridge (England) konzentriert er sich momentan auf das Unternehmen thingslearn, das sich mit Datenanalyse, maschinellem Lernen und Kontext-Integration für das Internet der Dinge beschäftigt.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: