iX 8/2018
S. 118
Wissen
IoT-Tools
Aufmacherbild

Ordnung in den IoT-Dschungel bringen

Alles sauber sortiert

Das Internet of Things hat inzwischen zahlreiche Frameworks, Cloud-Anwendungen, generische Plattformen und Entwicklungswerkzeuge hervorgebracht. Dieser Artikel schafft Übersicht im Java-IoT-Umfeld.

Die Digitalisierung des gesamten Lebens prägt die derzeitige Diskussion nicht nur in der Informationstechnik, sondern auch in der Gesellschaft. Durch das Vernetzen aller möglichen Geräte entstehen neue Geschäftsmodelle, diffuse Ängste bei den Menschen und vor allem massenweise technische Komponenten und sogenannte Standards, die das Ganze irgendwie handhabbar machen sollen. Den Durchblick kann man hier schnell mal verlieren.

Software-Backend und -Frontend: Für jedes Protokoll existieren Frameworks im Backend. ETL (Extract, Transform, Load) und Analyse lassen sich durch Cloud-Dienste bewerkstelligen, im Frontend erledigen JavaScript-Frameworks die Arbeit (Abb. 1).
Geräte- und Datenübertragungsstandards: IoT-Geräte arbeiten mit verschiedenen Betriebssystemen zusammen, auf denen in unterschiedlichen Sprachen programmierte IoT-Frameworks laufen (Abb. 2).

Einige der zahllosen Bausteine dienen der Anbindung an die Cloud, andere sind reine Message-Broker, bei wieder anderen handelt es sich um Anwendungsplattformen oder für IoT ausgelegte DevOps-Programme. Das heißt, die verschiedenen Komponenten sind unterschiedlichen Architekturschichten zuzuordnen. Hier hilft eine von den Autoren erstellte Referenzarchitektur weiter (siehe Abbildung 1 und 2). Sie soll Programmierern und Architekten den Überblick über das gesamte Spektrum der Entwicklung von IoT-Anwendungen geben. Eine umfangreiche Linkliste zu den hier vorgestellten Techniken findet man unter ix.de/ix1808118.

Übertragungsstandards

Neben WLAN gibt es weitere Übertragungsstandards: ZigBee ist eine (den IEEE-802.15.4-Standard um eine Netzwerk- und Anwendungsschicht erweiternde) Spezifikation für Drahtlosnetze, die beispielsweise in der Gebäudeautomation, in Sensornetzwerken oder in der Lichttechnik eingesetzt wird. Obwohl der Schwerpunkt auf Netzen mit kurzen Reichweiten liegt, sind auch solche von mehreren Kilometern möglich. Bluetooth ist ein Industriestandard (IEEE 802.15.1) für die Datenübertragung zwischen Geräten über kurze Distanz.

Weiterhin gibt es die WiMAX/IEEE-802.16-Standards, die etwa vom IoT-Serviceanbieter Sigfox und der LoRa Alliance verwendet werden, sowie Mobilfunkstandards wie LTE. Die Mobilfunkbranche schien lange Zeit kein Interesse an industriellen Funk-IoT-Anwendungen zu haben, jedoch hat das 3GPP (3rd Generation Partnership Project – die weltweite Kooperation von Standardisierungsgremien für den Mobilfunkbereich – erstmals Derivate wie NB-IoT speziell für die Machine-to-Machine-Funkkommunikation (M2M) standardisiert. NB-IoT steht für Narrowband IoT und ist ein neuer IoT-Funkstandard, der zum Beispiel im Bereich Smart Metering für Gas- und Wasserzähler eingesetzt wird.

MQTT ist das seit 2011 verfügbare IoT-Standardprotokoll, betreut von der unabhängigen Organization for the Advancement of Structured Information Standards (OASIS). Es ist effizient, skalierbar (bis zu mehreren Hunderttausend Clients pro Server), hat kaum Overhead, setzt das Publish-Subscribe-Pattern sowie echte Push-Kommunikation um und ist für M2M-Anwendungsfälle konzipiert. MQTT ist für das Übertragen von Nachrichten über unzuverlässige (etwa mobile) Netzwerke und für den Einsatz auf Geräten mit wenig Speicher und Rechenleistung ausgelegt. Es findet sowohl in der Automobilindustrie (Connected Cars) und im Energiesektor als auch in der Gebäudeautomation Anwendung. Seit 2016 ist MQTT ISO-Standard (ISO/IEC 20922). Eine praktische Anwendung findet man im Kasten „IoT-Anwendung mit MQTT und AWS-Cloud“.

AMQP steht für Advanced Message Queuing Protocol und ist ein offener Standard, der ein binäres Netzwerkprotokoll auf Anwendungsebene etabliert. Es wickelt die Kommunikation zwischen Client und Message-Broker beziehungsweise zwischen verschiedenen Message-Brokern ab. AMQP-fähige Message-Broker sind zum Beispiel RabbitMQ, Apache ActiveMQ, Apache Qpid, SwiftMQ, Microsoft Azure Service Bus und Red Hat Enterprise MRG.

XMPP steht für Extensible Messaging and Presence Protocol, hieß früher Jabber und ist ein XML-Kommunikationsprotokoll (häufig von Instant Messengern verwendet), das aufgrund des durch XML verursachten großen Overheads im IoT-Bereich selten eingesetzt wird. Es ist sogar umgekehrt – selbst Facebook nutzt nun anstelle von XMPP das IoT-Protokoll MQTT für den Chat.

CoAP (Constrained Application Protocol) basiert auf UDP und wird oft als das „HTTP für IoT“ bezeichnet. Es implementiert das Request-Response-Pattern – das grundlegende und am weitesten verbreitete Client-Service-Interaktionsmuster – und ist effizienter als HTTP, da das Protokoll inklusive aller Header binär vorliegt. REST-APIs sind mit CoAP einfach umsetzbar und es existieren sogar HTTP-/CoAP-Proxies. Weil CoAP auf UDP basiert, kann ein Client keine bidirektionale stehende Verbindung (wie etwa im Falle von TCP) initiieren. Da jedoch CoAP in der Praxis primär für Wireless Sensor Networks verwendet wird, ist das kein Problem, denn hierbei spielen NATs (Network Address Translation) im Gegensatz zur Kommunikation über das Internet meist keine Rolle.

HTTP, das Urgestein unter den Protokollen, bleibt für Request-Response-IoT-Kommunikation – vor allem im Zusammenspiel mit HTTP RESTful APIs – immer noch die erste Wahl. Aufgrund des großen Protokoll-Overheads ist es für Anwendungen, bei denen die Menge der übertragenen Daten relevant ist (etwa wenn mobile Netzwerke im Spiel sind), eher ungeeignet. Weiterhin erlaubt zwar das Request-Response-Pattern eine 1-zu-1-, jedoch nicht eine 1-zu-n-Kommunikation. Deshalb eignet sich HTTP nicht, wenn eine Nachricht an viele Empfänger gleichzeitig versendet werden soll.

OPC UA (Unified Architecture) ist ein industrielles M2M-Kommunikationsprotokoll, das Maschinendaten (Regelgrößen, Messwerte, Parameter) transportieren und maschinenlesbar semantisch beschreiben kann. Es ist ein De-facto-Standard im Automatisierungsbereich und für Industrie 4.0 beziehungsweise für das Industrial Internet of Things (IIoT) gesetzt. OPC UA basiert auf AMQP und hat den sicheren, verlässlichen, hersteller- und plattformneutralen Austausch von Automatisierungsdaten zum Ziel. Es glänzt in Supervisory-Control-and-Data-Acquisition-Systemen (SCADA) und gilt als schwergewichtigeres MQTT. Allerdings wird OPC UA mit Publisher-Subscriber-Mechanismen per UDP und TSN (Time-Sensitive Networking) erweitert. TSN ist ein neuer Standard in der industriellen Kommunikationstechnik, dessen Entwicklung vor allem von der Automobilindustrie vorangetrieben wird. Das zuständige Team gehört zur IEEE-802.1-Arbeitsgruppe.

LWM2M ist ein von der Open Mobile Alliance (OMA) entworfenes Nachrichtenprotokoll zum Verwalten von Geräten. Es basiert auf CoAP und definiert Schnittstellen für das Bootstrapping, die Geräteerkennung und die Registrierung sowie für das Gerätemanagement. Es unterstützt die Parametrisierung und Überwachung der Geräte ebenso wie das Update der Firmware. LWM2M dient der Kommunikation zwischen LWM2M-Server und -Client. Der LWM2M-Server kann ein Knoten in einem privaten oder öffentlichen Netz sein, der Client in einem Gerät eingebettet sein.

Kommunikationswerkzeuge