Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen...

5
Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java und IoT im Praxiseinsatz – Teil 2: Zutaten Eldar Sultanow Während sich der erste Teil dieser Artikelserie mit den grund- legenden Bausteinen, Übertragungsstandards, Protokollen und Kommunikationsbausteinen befasst, stellen wir im zweiten Teil die Zutaten vor, die IoT-Lösungsentwickler benötigen. Dazu zäh- len Frameworks für die Geräteansteuerung und -integration, Werkzeuge für Modellierung, Entwicklung und Bereitstellung sowie Cloud-Bausteine. Frameworks für Geräteansteuerung und -integration Das Java-Framework openHAB (open Home Automation Bus) führt Gebäudeautomationskomponenten unterschiedlicher Hersteller protokollneutral in einer Plattform zusammen. Von Version zu Ver- sion bringt openHAB neue Bindings für Endgeräte mit, wie zum Beispiel ab Version 2.1 die Anbindung für die Xiaomi Mi Smart Ho- me Suite oder im Bereich der LED-Leuchten die Anbindung für IKEA Trådfri und für weitere LIFX-Lichtquellen [MaGö15, Men17]. Die Plattform steuert den Smart Garden per Einbindung der Mährobo- ter von Gardena und Bosch und öffnet sich über herkömmliches Smart Home hinausgehend auch gegenüber dem öffentlichen Per- sonennahverkehr mit OneBusAway und Folding@home [Men17]. Die technologiespezifischen Bindings kommunizieren intern mit dem openHABCore über den openHAB Event Bus. Die externe Kom- munikation von openHAB mit der Außenwelt erfolgt über einen MQTT-Broker wie zum Beispiel HiveMQ [MaGö15]. OpenHAB bildet den Kern des Projekts Eclipse Smarthome [Schm14, MaGö15] und ist außerdem an den Eclipse IoT Market den Eclipse-Marktplatz für das Internet der Dinge – angebunden, wo Nutzer Anbindungen an Geräte, die nicht in openHAB ent- halten sind, finden. Dies kann zum Beispiel der Fall sein, wenn es keine Open-Source-Implementierung oder passende Lizenzen gibt [Men17]. Es existiert auch ein selbstkonfigurierendes Rasp- berry Pi Setup – ein selbstinstallierendes Betriebssystem für Raspberry Pi – namens openHABian, das von einem SD-Karten- Image startet und automatisch Java, openHAB, Samba und noch einiges mehr, wie zum Beispiel KNXd, installiert. Letzterer ist ein Daemon, der KNX-Pakete zwischen Schnittstellen und Program- men weiterleitet. Durch die Protokoll- und Herstellerneutralität von openHAB können Geräte verbunden werden, obwohl sie unterschiedliche Funkfrequenzen zur Datenübertragung benutzen. OpenHAB ersetzt dann die Steuerzentralen der unterschiedlichen Systeme einzelner Hersteller, indem es Komponenten direkt anbindet und als Vermitt- ler dazwischen fungiert [Art17]. Branchengrößen wie Z-Wave, KNX, Homematic, EnOcean oder Insteon haben sich openHAB gegenüber geöffnet, um eine reibungslose Konnektivität diverser Devices im Smart Home zu unterstützen. Das Eclipse Edje-Projekt steht unter der Apache-Lizenz 2.0 und bietet eine Standard-Hardware-Abstraktion als Java-Programmier- schnittstelle (API) für die Bereitstellung von IoT-Diensten, die die Performanz- und Speicher-Limitationen von Mikrocontroller-ba- sierten Geräte erfüllen. Dieses Java-API ermöglicht den Zugriff auf die von Mikrocontrollern gebotenen Hardwarefeatures wie bei- spielsweise die Allzweckeingabe/-ausgabe (GPIO) oder Universal Asynchronous Receiver Transmitter (UART). Die Edje Device Confi- guration (EDC) bietet als kleinsten gemeinsamen Nenner von Java SE, Java SE Embedded, MicroEJ und Android eine minimale Ausfüh- rungsumgebung für ein Edje-kompatibles Gerät. Sie deckt die Ja- va-Standardpakete java.lang, java.util und java.io ab. Mindestan- forderungen sind ein 32-Bit-Prozessor mit einer Taktfrequenz von 16 MHz, 32 KB RAM und einem 128 KB Flashspeicher. Sonderdruck aus JavaSPEKTRUM 42 JavaSPEKTRUM 3/2018 FACHTHEMA

Transcript of Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen...

Page 1: Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen Programmable-Logic-Controller-Plattform (PLC) für verteilte industrielle Automatisierungs- und Steuerungssysteme.

Frameworks, Werkzeuge und Cloud für IoT-Entwicklung

Java und IoT im Praxiseinsatz – Teil 2: ZutatenEldar Sultanow

Während sich der erste Teil dieser Artikelserie mit den grund-legenden Bausteinen, Übertragungsstandards, Protokollen und Kommunikationsbausteinen befasst, stellen wir im zweiten Teil die Zutaten vor, die IoT-Lösungsentwickler benötigen. Dazu zäh-len Frameworks für die Geräteansteuerung und -integration, Werkzeuge für Modellierung, Entwicklung und Bereitstellung sowie Cloud-Bausteine.

Frameworks für Geräteansteuerung und -integrationDas Java-Framework openHAB (open Home Automation Bus) führt Gebäudeautomationskomponenten unterschiedlicher Hersteller protokollneutral in einer Plattform zusammen. Von Version zu Ver-sion bringt openHAB neue Bindings für Endgeräte mit, wie zum Beispiel ab Version 2.1 die Anbindung für die Xiaomi Mi Smart Ho-me Suite oder im Bereich der LED-Leuchten die Anbindung für IKEA Trådfri und für weitere LIFX-Lichtquellen [MaGö15, Men17]. Die Plattform steuert den Smart Garden per Einbindung der Mährobo-ter von Gardena und Bosch und öffnet sich über herkömmliches Smart Home hinausgehend auch gegenüber dem öffentlichen Per-sonennahverkehr mit OneBusAway und Folding@home [Men17]. Die technologiespezifischen Bindings kommunizieren intern mit dem openHABCore über den openHAB Event Bus. Die externe Kom-munikation von openHAB mit der Außenwelt erfolgt über einen MQTT-Broker wie zum Beispiel HiveMQ [MaGö15].

OpenHAB bildet den Kern des Projekts Eclipse Smarthome [Schm14, MaGö15] und ist außerdem an den Eclipse IoT Market – den Eclipse-Marktplatz für das Internet der Dinge – angebunden, wo Nutzer Anbindungen an Geräte, die nicht in openHAB ent-halten sind, finden. Dies kann zum Beispiel der Fall sein, wenn

es keine Open-Source-Implementierung oder passende Lizenzen gibt [Men17]. Es existiert auch ein selbstkonfigurierendes Rasp-berry Pi Setup – ein selbstinstallierendes Betriebssystem für Rasp berry Pi – namens openHABian, das von einem SD-Karten-Image startet und automatisch Java, openHAB, Samba und noch einiges mehr, wie zum Beispiel KNXd, installiert. Letzterer ist ein Daemon, der KNX-Pakete zwischen Schnittstellen und Program-men weiterleitet.

Durch die Protokoll- und Herstellerneutralität von openHAB können Geräte verbunden werden, obwohl sie unterschiedliche Funkfrequenzen zur Datenübertragung benutzen. OpenHAB ersetzt dann die Steuerzentralen der unterschiedlichen Systeme einzelner Hersteller, indem es Komponenten direkt anbindet und als Vermitt-ler dazwischen fungiert [Art17]. Branchengrößen wie Z-Wave, KNX, Homematic, EnOcean oder Insteon haben sich openHAB gegenüber geöffnet, um eine reibungslose Konnektivität diverser Devices im Smart Home zu unterstützen.

Das Eclipse Edje-Projekt steht unter der Apache-Lizenz 2.0 und bietet eine Standard-Hardware-Abstraktion als Java-Programmier-schnittstelle (API) für die Bereitstellung von IoT-Diensten, die die Performanz- und Speicher-Limitationen von Mikrocontroller-ba-sierten Geräte erfüllen. Dieses Java-API ermöglicht den Zugriff auf die von Mikrocontrollern gebotenen Hardwarefeatures wie bei-spielsweise die Allzweckeingabe/-ausgabe (GPIO) oder Universal Asynchronous Receiver Transmitter (UART). Die Edje Device Confi-guration (EDC) bietet als kleinsten gemeinsamen Nenner von Java SE, Java SE Embedded, MicroEJ und Android eine minimale Ausfüh-rungsumgebung für ein Edje-kompatibles Gerät. Sie deckt die Ja-va-Standardpakete java.lang, java.util und java.io ab. Mindestan-forderungen sind ein 32-Bit-Prozessor mit einer Taktfrequenz von 16 MHz, 32 KB RAM und einem 128 KB Flashspeicher.

Sonderdruck aus JavaSPEKTRUM

42 JavaSPEKTRUM 3/2018

FACHTHEMA

Page 2: Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen Programmable-Logic-Controller-Plattform (PLC) für verteilte industrielle Automatisierungs- und Steuerungssysteme.

Eclipse Ditto bietet die Funktionalität, um den Zustand von digi-talen Zwillingen (Digital Twins) zu verwalten. Ditto bietet Zugang zu den Twins und vermittelt zwischen der physischen Welt und der durch die Digitalen Twins gegebenen digitalen Repräsentation. Kernaspekte sind Device-as-a-Service und damit eine höhere Abs-traktionsebene des Geräts in Form einer Programmierschnittstel-le, welche für die Arbeit mit diesem Gerät verwendet wird. Digitale Zwillinge verfügen über Metadaten wie Kategorie oder Struktur, sie sind zustandsbehaftet beispielsweise unter Berücksichtigung ih-rer geografischen Position oder physikalischer Eigenschaften wie Temperatur und sie besitzen eine Historie von Ereignissen.

Modellierungs-, Entwicklungs- und BereitstellungswerkzeugeBei den im vorausgehenden Abschnitt vorgestellten Frameworks für die Geräteansteuerung und -integration handelt es sich um Bausteine, die vornehmlich im Embedded-Bereich liegen. Im Fol-genden werden die Frameworks für Modellierung, Entwicklung und Bereitstellung erläutert. Beginnen wir mit Eclipse 4diac, einer quelloffenen Programmable-Logic-Controller-Plattform (PLC) für verteilte industrielle Automatisierungs- und Steuerungssysteme. Sie implementiert den Standard IEC 61499 [Str10], der wiederum eine domänenspezifische Modellierungssprache (DSL) für die Ent-wicklung solcher Steuerungssysteme definiert.

Die Plattform umfasst vier Hauptkomponenten: eine Laufzeit-umgebung (RTE), eine Entwicklungsumgebung (IDE), eine Funk-tionsbausteinbibliothek (LIB) und Beispielsystemprojekte (SYS). SYS umfasst sogar eine Implementierung intelligenter elektroni-scher Devices (IED) aus dem Smartgrid-Bereich, die konform zu IEC 61499, dem Modell für verteilte Steuerungssysteme, und zum Stan-dard IEC 61850, dem Übertragungsprotokoll für die Schutz- und Leittechnik in elektrischen Schaltanlagen der Mittel- und Hoch-spannungstechnik zur Energieversorgungssystemautomatisierung, ist.

Eclipse Vorto ist ein Open-Source-Tool für die Erstellung und Verwaltung von technologieneutralen, abstrakten Gerätebeschrei-bungen – sogenannten Informationsmodellen [Schei16]. Vor-to trägt damit zur Standardisierung der Informationsmodelle für IoT-Devices bei. Gerätehersteller können diese Modelle mit Eclipse Vorto mittels eines textbasierten DSL-Editors erstellen, der Auto-vervollständigung, Syntaxhervorhebung und Inhaltshilfe in Form von Codehinweisen bietet. Die Modelle sind Abstraktionen von re-alen Geräten in Bezug auf Status, Attribute und Funktionen. Sie sollen die Kommunikation zwischen diesen Geräten ermöglichen. Die Modellierung erfolgt in der Regel durch die Gerätehersteller selbst.

Entwickelt wird Vorto von Bosch: Im Rahmen der Bosch-Soft-ware-Innovations-(Bosch-SI)-Gruppe wurde ein Meta-Informati-onsmodell samt Eclipse-basiertem Tooling für den Entwurf neuer Informationsmodelle entwickelt. Vorto stellt ein serverseitiges Re-pository bereit – und zwar für die Verwaltung, Freigabe und Wieder-verwendung von diesen und für die kollaborative Arbeit an diesen

Modellen. Diverse Codegeneratoren erzeugen Lösungen für ver-schiedene Umgebungen wie zum Beispiel für Eclipse Smart home, openHAB, OSGi-DAL, Bosch oder Kura. Diese Codegeneratoren wer-den von den Umgebungsanbietern bereitgestellt (s. Abb. 1).

Zusätzlich gibt es noch eine ganze Reihe weiterer Eclipse IoT-Projekte [Mun16]. Einige dieser Projekte umfassen Tools, die in Eclipses Open IoT Stack for Java aufgenommen wurden.

Eclipse hawkBit ist ein DevOps-Werkzeug und damit eine domä-nenunabhängige Backend-Lösung. Es eignet sich insbesondere für das Ausrollen von Software-Updates zu leistungsschwachen Edge-Geräten sowie zu leistungsfähigeren Controller und Gate-ways, die mit IP-basierter Netzwerk-Infrastruktur verbunden sind [haw]. Dieses industrielle Provisionierungssystem baut auf dem Framework Spring Boot auf und kann für jede Cloud-Plattform an-gepasst und dort bereitgestellt werden. Es unterstützt zudem ein flexibles Deployment-Management für den Rollout von Updates auf massenhaft vielen Geräten. Das massenhafte Deployment kann gruppiert werden nach einzelnen separaten Deploymentgruppen einschließlich Notabschaltung und Fortschrittsüberwachung für das gesamte Rollout und für die einzelnen Gruppen.

Papyrus for IoT ist eine Modellierungslösung für IoT, die auf Eclipse Papyrus basiert und Teil des Forschungs- und Entwick-lungsprojektes S3P (Smart, Safe and Secure Software Development and Execution Platform for the Internet of Things) ist. Papyrus for

Dr. Eldar Sultanow ist Architekt bei Capgemini. Seine Schwerpunkte sind moderne Softwarearchitekturen, Digitalisierung und Unternehmensar-chitekturmanagement. Er hat bereits aus verschiedenen seiner Projekte berichtet. E-Mail: [email protected]

Abb. 1: Architektur der Spezifikations- und Entwicklungswerkzeuge

FACHTHEMA

www.javaspektrum.de 43

Page 3: Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen Programmable-Logic-Controller-Plattform (PLC) für verteilte industrielle Automatisierungs- und Steuerungssysteme.

IoT ermöglicht die Spezifikation, das Design, Deployment und das Monitoring von IoT-Systemen und generiert Code für Vortex von Prism tech und für das IoT-Geräte-Betriebssystem von MicroEJ [Mun16, Dhou16].

SensIDL ist ein Open-Source-Entwicklungsframework, das Sen-sor-Entwickler dabei unterstützt, Kommunikationsschnittstellen intelligenter Sensoren zu spezifizieren und umzusetzen. Die Spe-zifikation erfolgt ähnlich wie bei Vorto über eine DSL [Mun16]. SensIDL nutzt die DSL als einheitliche Spezifikationssprache zur Definition der von Sensoren angebotenen Daten, wobei diese Be-schreibung als Basis für eine automatisierte Codegenerierung sowohl für die Sensor- als auch die Empfängerseite dient. Der in Sens IDL integrierte Generator nutzt die Schnittstellendefinition als Eingabe, um eine semantisch angereicherte schnittstellenspe-zifische Programmierschnittstelle zu erzeugen [Groe15].

Reactive Blocks ist ein Werkzeug, das es ermöglicht, mit gra-fischer Modellierung und Codegenerierung Software für IoT-Gate-ways zu entwickeln. Die erzeugte Software basiert auf Java und OSGi. Ergebnis ist ein ausführbares Programm [Mun16].

Node-RED ist ein Open Source-Werkzeug zur grafischen Model-lierung und zur Ausführung von Abläufen in IoT-Anwendungen, die auch Flows genannt werden. Es dient dazu, Geräte, APIs und On-line-Services miteinander zu verknüpfen. Die modellierten Flows werden zur Laufzeit interpretiert. Das Werkzeug basiert komplett auf Node.js [Mun16].

Virtual Developer ist eine auf Eclipse basierende Plattform zur Automatisierung von Programmieraufgaben durch Codegenerato-ren. Sie dient zur Entwicklung von IoT-Anwendungen mittels des MDSD (Model-Driven Software Development) und generiert Code für Sensoren und Aktoren. Zudem verfügt sie über einen Cloud Connector, der Modelle an Server sendet und den generierten Code empfängt.

Resin.io ist eine Container-basierte Plattform, um Code auf IoT-Devices zu entwickeln, zu deployen und zu verwalten. Die Plattform dient dazu, Anwendungen auf massenhaft vielen Gerä-ten wie zum Beispiel Raspberry Pi, Arduino oder Intel NUC zu ent-wickeln und zu deployen.

Frameworks für die IoT-AnwendungsentwicklungBisher wurden Frameworks für die Geräteansteuerung und -inte-gration und auch Modellierungs-, Entwicklungs- sowie Bereit-stellungswerkzeuge betrachtet. Nachfolgend beschreiben wir die Frame works für die IoT-Anwendungsentwicklung.

Eclipse Concierge ist eine leichtgewichtige, für mobile und eingebettete Geräte optimierte Implementierung der OSGi Co-re-Spezifikationen [Hil15]. Damit reiht sich Concierge in die OS-Gi-Frameworks neben Equinox, Apache Felix und Knopflerfish ein. Concierge ist schlank und stellt über eine REST-Schnittstelle das Framework und dessen interne Zustände als Ressourcen bereit. Concierge lässt sich mit Eclipse Smarthome und mit OSGi enRou-te integrieren. Letzteres ist eine Programmierschnittstelle, Tool-chain (bnd, Bndtools, Gradle, Git und Travis) und Distribution zur Konstruktion von OSGi-(Web-)Anwendungen für verschiedene Zie-lumgebungen.

Das Eclipse Hono-Projekt wird von Bosch und Red Hat unter-stützt und bietet eine Plattform für skalierbares Messaging im IoT-Umfeld, wobei eine AMQP-Middleware zwischen Geräte und Backend-Services geschaltet ist [hono, Moh16]. Nicht-AMQP-un-terstützende Geräte verbinden sich mit dem Protokolladapter, der für die Konversion von AMQP und nicht-AMQP verantwortlich

ist. Des Weiteren sammelt und verarbeitet Hono zentral die Tele-metrie-Daten, indem es Geräten ermöglicht, telemetrische Daten an die Messaging-Cloud zu senden, die auf Apache Qpid Dispatch Router basiert. Zudem können Backend-Services telemetrische Daten speichern und Befehle an die Geräte schicken. Der Apa-che Qpid Dispatch Router basiert auf Apache Qpid Proton, einer hochperformanten, leichtgewichtigen Messaging- Bibliothek. Es gibt einen Wrapper um Proton namens Vert.x Proton, der die AM-QP-Integration für Vert.x ermöglicht. Vert.x ist ein im IoT-Umfeld bekanntes sowie anerkanntes Framework für die Entwicklung re-aktiver Anwendungen, das ähnlich wie Node.JS eine ereignisge-triebene, nicht-blockierende, asynchrone Architektur (s. Abb. 2 im 1. Teil [Sul18]) aufweist. Sie ist für Nebenläufigkeit, Hoch-performanz und Skalierbarkeit ausgelegt. Vert.x Proton wird für die Interaktion mit AMQP-basierten Messaging-Systemen als Cli-ents (Sender und Empfänger) verwendet, aber auch für die Ent-wicklung eines Servers. Hono nutzt intern Vert.x Proton-Instan-zen für die Mandantenfähigkeit der mit der Cloud verbundenen Clients.

Eclipse Milo ist eine Implementierung des OPC UA-Standards, der in der Automatisierungsindustrie eine wichtige Rolle spielt. Milo umfasst daher das IIoT-Tooling für die mittels OPC UA defi-nierte Schnittstelle zwischen Clients und Servern. Es umfasst un-ter anderem den Zugriff auf Echtzeitdaten, die Überwachung von Alarmen und Ereignissen sowie den Zugriff auf historische Daten und Datenmodellierung. Typischerweise gliedern sich OPC UA-Frame works in „Stack“ und „SDK“. Der Stack ist die Implementie-rung des Kernkommunikationsprotokolls. Das SDK baut darauf auf und bietet ein einfacheres Anwendungsentwicklungsmodell. Eclip-se Milo stellt sowohl Stack als auch SDK für Client und Server be-reit. Milos Kernkomponente (Core) ist der gemeinsame Code zwi-schen Client und Server.

Californium ist ein auf Backend-Dienste und IoT-Geräte fokus-siertes CoAP-Framework. Der Californium-Kern stellt den zentra-len Rahmen für die Protokollimplementierung zur Verfügung, um IoT-Anwendungen zu entwickeln. Das Teilprojekt Scandium bietet Sicherheit für Californium und ist eine pure Java-Implementierung von Datagram Transport Layer Security (DTLS), dem unter RFC 6347 bekannten und als Standard vorgesehenem Verschlüsselungspro-tokoll. Es dient dazu, die Anwendung mittels Elliptic Curve Cryp-tography (ECC) mit vorinstallierten Schlüsseln, Zertifikaten oder öffentlichen Schlüsseln zu sichern [Cap15].

Actinium ist der App-Server für Californium zur Realisierung von IoT-Mashups. Die JavaScript-basierte Applikation wird über REST-ful Services verfügbar gemacht und kann direkt mit IoT-Geräten über das mitgelieferte CoapRequest Object-API kommunizieren. Das Teilprojekt Connector abstrahiert von den verschiedenen Transport-arten, die CoAP verwenden kann, und bringt grundlegende Funkti-onen mit wie etwa einen UDPConnector oder die Schnittstelle zur Implementierung neuer Connectoren. Das Teilprojekt CoAP Tools beinhaltet Werkzeuge, die unter anderem als Beispiele fungieren, und umfasst auch das Tool CoAPBench. Mit ihm können Entwickler die eigens erstellte (CoAP-basierte) IoT-Anwendung benchmarken. Des Weiteren gehört dazu ein cf-client, um mit den eigenen IoT-Ge-räten über die Kommandozeile interagieren zu können.

Leshan stützt sich auf Californium und legt eine komplet-te Infrastruktur für Java- und LWM2M-basierte IoT-Lösungen vor [Schl14]. Hierzu zählen Bibliotheken für server- und clientseitiges Gerätemanagement, ein Gerätemanagementserver mit Webober-fläche sowie ein Bootstrapping-Server, der für die Sicherheitskon-figuration der angeschlossenen Geräte verantwortlich ist.

44 JavaSPEKTRUM 3/2018

FACHTHEMA

Page 4: Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen Programmable-Logic-Controller-Plattform (PLC) für verteilte industrielle Automatisierungs- und Steuerungssysteme.

Eclipse Kura ist ein OSGi-basierter Container für M2M-Anwen-dungen, der die OSGi- und Java-Standardplattformen um APIs und Services erweitert. Diese sind auf die Bedürfnisse von M2M-An-wendungen zugeschnitten wie beispielsweise I/O Access, Data Ser-vices, Netzwerkkonfiguration und Telemetrie [Schl13]. Kura wird nicht auf Sensoren, sondern auf stärkeren Geräten (z. B. Rasp berry Pi) installiert, die als IoT-Gateway fungieren (Receiver/ingestor und Verteiler). Kura nimmt daher die Rolle eines IoT-Gateways ein. Das bedeutet, dass es zuständig für das Sammeln und Aufnehmen von Nachrichten der IoT-Geräte (Sensoren, Aktoren, …) ist und für das Verarbeiten, Aggregieren und Weiterleiten der Nachrichten. Hierfür ist in Kura die regelbasierte Nachrichten-Routing-Engine Apache Camel verbaut, die für das Orchestrieren der Nachrichten-flüsse verantwortlich ist. Das Verbauen von Camel in Kura ist des-halb sehr vorteilhaft, da Camel bereits 200 OSGi-fähige Connecto-ren enthält, unter anderem für JMS, REST, CoAP, AMQP, MQTT sowie viele andere mehr. Auch verfügt es über eine clientseitige Last-verteilung. Ein Camel OSGi Bundle wird aus Kura heraus gestartet. Kura umfasst zudem eine auf Eclipse basierende Entwicklungsum-gebung, in der die M2M-Anwendungen in Emulatoren entwickelt, dann in ein Target Gateway deployt und schließlich auf die realen Endgeräte im Feld übertragen werden [Schl13].

Eclipse SCADA wird mittlerweile auch als Eclipse NeoSCADA be-zeichnet. Es handelt sich dabei um einen modularen Baukasten einschließlich umfangreicher IDE. Entwickler nutzen diesen ger-ne, um eigene SCADA-Lösungen zu implementieren. Der Baukas-ten umfasst verschiedene Protokolladapter (u. a. für MQTT, REST, JDBC, Modbus, Siemens S7) und Middleware, um Daten von Geräten zu verarbeiten. Hinzu kommen einige Module, um Basisfunktionen eines SCADA-Systems abzudecken, wie zum Beispiel Alarme und Events, sowie die Aufzeichnung historischer Daten. Mit UI-Kompo-nenten können Entwickler HMIs (Human Machine Interface) erstel-len. Zudem enthält der Baukasten ein Konfigurationsframework [RoRe15].

Eclipse OM2M ist eine Open-Source-Service-Plattform für die In-teroperabilität von M2M auf Basis des oneM2M-Standards. OM2M verfolgt einen REST-konformen Ansatz mit offenen Schnittstellen, um die Entwicklung von Diensten und Anwendungen unabhängig vom zugrunde liegenden Netzwerk zu ermöglichen. Die Plattform bietet eine modulare Architektur oberhalb der OSGi-Schicht, die durch Plug-ins erweiterbar ist. Sie unterstützt mehrere Protokoll-bindungen wie HTTP und CoAP. Verschiedene reibungslos zusam-menspielende Proxys ermöglichen eine nahtlose Kommunikation über Standards wie etwa Zigbee.

Eclipse Wakaama ist ähnlich wie Leshan eine LWM2M-Implementie-rung – allerdings für die Client-beziehungsweise Geräteseite. Und es handelt es sich hier nicht um eine Java-Bibliothek, sondern um eine C-Implementierung, die auf POSIX-konformen Systemen portabel ist.

Temboo ist eine Cloud-basierte Plattform mit komplettem Soft-ware-Stack für die Entwicklung von IoT-Anwendungen durch Code-generierung und bietet generierte Codefragmente, die ein Ent-wickler mit Copy & Paste in seinen Programmcode einfügt und dann weiter bearbeitet. Die Codefragmente unterstützen Geräte, APIs, Datenbanken und Onlinedienste, wobei der generierte Code Abhängigkeiten zu den Temboo SDKs hat, die es für verschiedene Programmiersprachen gibt [Mun16].

Eclipse Ponte ist ein M2M-Bridge-Framework für REST-Ent-wicklung. Es dient zur Erstellung einer wiederverwendbaren Lö-sung zum Überbrücken mehrerer M2M-Protokolle nach REST. Das heißt: Entwickler formulieren ein REST-API zum Lesen, Schreiben und Zugreifen auf die Historie von Sensoren, Aktoren oder andere

IoT-Geräte. Außerdem geben Entwickler die MQTT- und/oder Co-AP-Nachrichten über ein REST-API nach außen frei. Sie definieren eine interne Programmierschnittstelle zum einfachen Hinzufügen neuer Protokolle über Plug-ins.

IoT und Cloud-BausteineCloud-Anbieter verfügen sinnvollerweise über IoT-Integrationslö-sungen. So können die massenweise durch Sensoren oder andere Geräte erfassten Daten in die Cloud eingespeist und dort mit sehr starken und skalierbaren Rechenkapazitäten verarbeitet und ana-lysiert werden. So ist AWS IoT von Amazon dafür ausgelegt, Milliar-den von Geräten und Billionen von Nachrichten zuverlässig und si-cher zu verarbeiten und zu AWS-Endpunkten und anderen Geräten weiterzuleiten. AWS IoT umfasst auch einen eigenen MQTT Message Broker sowie einen MQTT Client.

Microsofts Entsprechung dazu ist Azure IoT, wobei ein IoT-Hub als Dienst für die zuverlässige, sichere bidirektionale Kommunika-tion zwischen Millionen von IoT-Geräten und einem Lösungs-Back-end fungiert. Zudem beinhaltet eine IoT-Suite einen Satz mit vor-konfigurierten Lösungen für die Implementierung vollständiger IoT-Szenarien, wobei jede vorkonfigurierte Lösung eine vollständi-ge End-to-End-Implementierung darstellt, die simulierte oder phy-sische (Telemetriedaten-generierende) IoT-Geräte umfasst. Dies schließt auch die Remoteüberwachung des Gerätestatus, Predic-tive Maintenance und Connected Factory zur Verbindung mit und Überwachung von Industrieanlagen ein.

IBM Bluemix ist der dritte große Player auf diesem Feld. In Kom-bination mit den Watson IoT-Services ermöglicht er einen einfa-chen, leistungsfähigen Anwendungszugriff auf IoT-Geräte und -Daten. Entwickler können so Analyseanwendungen, Visualisie-rungs-Dashboards und mobile IoT-Apps schnell erstellen. Darüber hinaus profitieren sie von IoT-Anwendungen, die Einblicke in die Unternehmensanwendungen geben.

IoT in der Private CloudUnternehmen können aber auch eine komplett eigene, Cloud-ba-sierte Hochleistungsinfrastruktur aufbauen. Entsprechende Frame works beziehungsweise mögliche Kombinationen aus den Frameworks gibt es auch hierfür. So lässt sich etwa die Red Hat OpenShift Container Platform – eine auf Docker und Kubernetes basierende PaaS-Lösung – im eigenen Rechenzentrum installie-ren und betreiben. OpenShift Origin ist die quelloffene Commu-nity Edition der PaaS, die auch als Upstream-Community-Pro-jekt bezeichnet wird. Sie wird in der OpenShift Container Platform und auch in OpenShift Online sowie OpenShift Dedicated verwen-det. Das hochperformante Messaging-System EnMasse, ebenfalls Open Source, läuft wiederum auf OpenShift Origin und unter-stützt sowohl Publish-/Subscribe- als auch Request-/Respon-se-Patterns.

EnMasse basiert auf dem nicht-blockierenden Nachrichtenser-ver ActiveMQ Artemis, dem inoffiziell als ActiveMQ 6 gehandel-ten Nachfolger der aktuellen Version ActiveMQ 5, und dem Qpid Dispatch Router. Er unterstützt daher die Protokolle AMQP sowie MQTT – aktuell allerdings über den Ansatz einer AMQP-MQTT-Brü-cke. Diese Konstellation ist nur ein Beispiel für eine mögliche, auf einer Private Cloud basierenden IoT-Architektur. Es bestehen selbstredend weitere Möglichkeiten, zum Beispiel Lösungen auf Basis von Cloud Foundry und RabbitMQ oder auf DC/OS und Mos-quitto.

FACHTHEMA

www.javaspektrum.de 45

Page 5: Frameworks, Werkzeuge und Cloud für IoT-Entwicklung Java ... · quelloffenen Programmable-Logic-Controller-Plattform (PLC) für verteilte industrielle Automatisierungs- und Steuerungssysteme.

Anbindung an Cognitive ServicesWie eine Anbindung an Cognitive Services funktioniert, zeigt das Beispiel der Java-basierten Plattform openHAB. Wir haben bereits skizziert, dass openHAB von Version zu Version neue Anbindungen (auch Bindings genannt) für Endgeräte mitbringt wie zum Beispiel für Philips Hue, ZigBee-basierte Miele@home Geräte oder Sam-sung-TV-Geräte. Unter Anbindung versteht man die Integration von Geräten und Systemen in openHAB, die dort innerhalb des Sys-tems nutzbar sind.

Aber auch umgekehrt funktioniert die Einbindung, beispiels-weise kann durch das Philips Hue Add-on bei einem Amazon Echo eine Philips Hue Bridge imitiert werden, sodass über den Sprachas-sistenten Befehle in die openHAB-Welt gelangen. Zudem besteht die Möglichkeit, über das HomeKit Add-on in die sonst so abge-schirmte Systemwelt von Apple einzudringen. Dadurch lassen sich die an openHAB angedockten Geräte auch über das Apple HomeKit nutzen.

Mit myopenHAB existiert ein kostenloser openHAB Cloud-Ser-vice als Ergänzung zur Hausautomationssoftware. Damit kann die IoT-Lösung neben dem Remote-Zugriff auf das eigene System auch Push-Nachrichten an Mobile Apps versenden. Noch in Bearbeitung ist gerade ein openHAB Skill für den Amazon Echo, das zukünf-tig den Umweg über das Philips Hue Add-on überflüssig macht [Art17]. Ähnliches gilt für Cortana als Smart Home Hub. Microsoft entwickelt einen Home Hub (Microsofts Smart Home Software für Windows 10), der sich neben den bisher größten Lösungen wie Amazon Echo, Google Home und Apples HomeKit einreiht. Das Be-sondere an Home Hub ist, dass keine spezifische Hardware mehr nötig ist und stattdessen Home Hub jedes Windows 10-Gerät zur Steuerungszentrale eines Smart Homes werden lässt [Wen16].

FazitDurch das enorme Wachstum im Bereich IoT ist es für viele Ent-wickler und IT-Projektleiter nur noch schwer möglich, die Baustei-ne, die wie Pilze aus dem Boden sprießen, einzuordnen. Daher ha-ben wir in diesem Artikel die Bausteine – Protokolle, Standards, Frameworks und Tools – erläutert und gezeigt, wofür und wie sie zu verwenden sind. Mit den heutigen Lösungen können Entwickler kleine isoliert verwendbare IoT-Anwendungen bis hin zu großen IoT-Lösungen bauen, die ganz oder teilweise in der Cloud laufen. Aktuell zeigt sich, dass sich die Eclipse-Welt im IoT-Umfeld sehr stark gemacht hat. Bei vielen Eclipse-IoT-Projekten, die alle ja be-kanntermaßen quelloffen sind, sind namhafte Industrievertreter wie Bosch oder SAP beteiligt. Dabei setzt sich das Prinzip der Of-fenheit gegenüber Propriätarität (Geschlossenheit) durch.

Literatur und Links[Art17] M. Artmann, openHAB 2.1 - Neues Level für die Smart-Home-Steuerung, 9.9.2017, https://www.homeandsmart.de/openhab-2-smart-home-software-open-source[Cap15] A. Capossele, V. Cervo, G. De Cicco, Ch. Petrioli, Security as a CoAP resource: an optimized DTLS implementation for the IoT, 2015, http://senseslab.di.uniroma1.it/administrator/components/com_jresearch/files/publications/Security_as_a_CoAP_resource_an.pdf[Dhou16] S. Dhouib u.a., Papyrus for IoT – A Modeling Solution for IoT, IDO2016, s.a. https://ido2016.sciencesconf.org/122755/document

[Groe15] H. Groenda, Ch. Rathfelder, E. Taspolatoglu, SensIDL: Ein Werkzeug zur Vereinfachung der Schnittstellenimplementierung intelligenter Sensoren, in: Online Themenspecial OBJEKTspektrum, 2015, https://www.sigs-datacom.de/uploads/tx_dmjournals/Groenda_Rathfelder_Taspolatoglu_OTS_IoT_2015.pdf[haw] https://projects.eclipse.org/proposals/hawkbit[hono] https://projects.eclipse.org/projects/iot.hono[Hil15] J. Hiller, Eclipse Concierge – Fit für das IoT? OSGi für eingebettete Systeme im Internet der Dinge, in: Eclipse Magazin 2.15[MaGö15] M. Mann, Ch. Götz, Smart Home in Action mit openHAB und MQTT, in: Eclipse Magazin 2.15[Men17] R. Menge-Sonnentag, Smart Home: openHAB 2.1 kann auf Eclipse IoT Market zugreifen, Heise Developer, 28.6.2017, https://www.heise.de/developer/meldung/Smart-Home-openHAB-2-1-kann-auf-Eclipse-IoT-Market-zugreifen-3757723.html[Moh16] D. Mohilo, Eclipse Weekly: Neon M7, Andmore-Update und das neue Projekt Eclipse Hono, 11.5.2016, https://jaxenter.de/eclipse-weekly-neon-m7-andmore-update-und-das-neue-projekt-eclipse-hono-40055[Mun16] M. Munzert, Industrielle IoT-Lösungen mit Eclipse IoT und modellgetriebener Entwicklung, in: Informatik Aktuell, 31.5.2016, http://www.informatik-aktuell.de/entwicklung/methoden/industrielle-iot-loesungen-mit-eclipse-iot-und-mdsd.html[RoRe15] J. Rose, J. Reimann, Ein Tutorial zum IoT-Projekt bei Eclipse: Eclipse SCADA Tutorial, 3.3.2015, https://jaxenter.de/eclipse-scada-tutorial-teil-1-15166[Schei16] J. Scheib, J. Laverman, M. Wagner, O. Weinmann, Eclipse Vorto: Interoperabilität für das IoT, in: Eclipse Magazin 3.16, s.a. https://jaxenter.de/eclipse-vorto-interoperabilitaet-fuer-das-iot-39913[Schl13] H. Schlosser, Eclipse Kura: Das Internet der Dinge auf OSGi, 25.7.2013, https://jaxenter.de/eclipse-kura-das-internet-der-dinge-auf-osgi-2889[Schl14] H. Schlosser, Neues IoT-Projekt vorgeschlagen: Eclipse Leshan, 12.9.2014, https://jaxenter.de/neues-iot-projekt-vorgeschlagen-eclipse-leshan-639[Schm14] J. Schmidt, Eclipse SmartHome soll Fragmentierung im Smart-Home-Bereich verhindern, Heise Developer, 17.6.2014, https://www.heise.de/developer/meldung/Eclipse-SmartHome-soll-Fragmentierung-im-Smart-Home-Bereich-verhindern-2225118.html[Str10] Th. I. Strasser, A. Zoitl, G. Ebenhofer, 4DIAC: Ein Open Source Framework für verteilte industrielle Automatisierungs- und Steuerungssysteme, in: GI Jahrestagung (1) 2010, S. 435-440, s. a. http://subs.emis.de/LNI/Proceedings/Proceedings175/article5896.html[Sul18] E. Sultanow, Java und IoT im Praxiseinsatz – Teil 1: Wegweiser, in: JavaSPEKTRUM, 3/2018[Wen16] M. Wendel, Sprachassistent Cortana als Smart Home Hub? Home Hub: Microsofts Smart Home Software für Windows 10, 6.12.2016, https://www.homeandsmart.de/home-hub-microsofts-smart-home-software-fuer-windows-10

46 JavaSPEKTRUM 3/2018

FACHTHEMA