© Kolpakova Daria/shutterstock.com
Entwicklung eines Azure-IoT-Edge-Moduls in C#

Mit wenig Aufwand zum eigenen Modul


Edge-Computing-Szenarien benötigen teils mehr Leistung, als etwa ein Raspberry Pi liefern kann. In diesen Fällen kann Serverhardware genutzt werden, beispielsweise in Form des Microsoft-Diensts Azure IoT Edge Runtime in Kombination mit dem Azure IoT Hub. In diesem Artikel zeigen wir, wie diese Services genutzt werden können und welche Vorteile sie bieten.

Edge Computing beschreibt die dezentrale Datenverarbeitung am Rande des Netzwerks (der sogenannten Edge). Durch den Einsatz von Edge Computing können Daten an Ort und Stelle verarbeitet werden. Dieses Muster findet auch im Internet der Dinge (IoT) Anwendung. Der Unterschied zu ehemaligen reinen On-Premises-Lösungen liegt darin, dass diese Geräte in der Regel anders dimensioniert sind bzw. besser auf den Einsatz abgestimmt werden. So ist es beispielsweise empfehlenswert, Daten auf der Edge zu aggregieren oder aufzubereiten, bevor sie an andere Systeme oder die Cloud übertragen werden. Ein klassischer Anwendungsfall ist das Auswerten von Datenströmen und Ableiten von Erkenntnissen anhand von Machine Learning. Das kann mit den nahezu endlosen Kapazitäten in der Cloud trainiert werden, während das Auswerten anhand des trainierten Models auf der Edge nahe an den Geräten stattfindet.

Die Minimalanforderung an ein Edge-Gerät ist ein Raspberry Pi. Für Szenarien, die mehr Leistung benötigen, kann aber auch Serverhardware eingesetzt werden. Doch wie können nun eigene Funktionalitäten auf ein solches Edge-Gerät gebracht werden? Genau das soll anhand von Azure IoT Edge [1] gezeigt werden, mit dem Ziel, schnell und einfach zu einer funktionierenden Lösung zu kommen.

Azure IoT Edge

Um Edge Computing auf IoT-Geräten zu realisieren, werden diverse On- und Offlinedienste benötigt, wie z. B. eine Edge-Laufzeitumgebung zum Verwalten eigener Anwendungen, ein Message Broker zum Versenden von Nachrichten und vieles mehr. Durch das Zusammenspiel der On- und Offlinedienste kann die Konnektivität zwischen IoT-Geräten und der Cloud sichergestellt werden. Sofern die eigene Rolle dabei die Auslieferung von Software in den Mittelpunkt stellt, ist es empfehlenswert, auf ein geeignetes Framework bzw. einer Sammlung von Diensten aufzusetzen. Solche Frameworks gibt es von verschiedenen Anbietern (u. a. Amazon, Microsoft und Google). Nachfolgend sollen die wichtigsten Komponenten in Azure IoT Edge von Microsoft vorgestellt werden. Die wichtigsten Gründe für die Entscheidung zugunsten der Microsoft-Lösung sind die umfangreichen Funktionalitäten des IoT Hubs und das Konzept der Erweiterbarkeit durch eigene Module auf Basis der Open Container Initiative [2] inklusive Remoteverwaltung der Deployments.

Die wohl wichtigste Komponente ist daher der IoT Hub [3]. Dieser Azure Service ist mehr als nur ein Message Broker, denn er deckt auch andere Themen ab, wie z. B. die Zertifikatsverwaltung von Geräten für die Authentifizierung, das Ausrollen von eigenen Edge-Modulen aus der Cloud und die Geräteverwaltung von Edge-Geräten. Welche Nachrichten an welches Modul oder an weitere Cloud-Services gesendet werden sollen, kann über die integrierte Routingfunktionalität [4] konfiguriert werden. Durch Message Enrichment [5] können die Nachrichten in der Cloud einheitlich aufbereitet werden, z. B. durch das Hinzufügen eines eindeutigen Schlüssels für Kunden.

Durch die Integration mit anderen Azure-Diensten wie dem Azure Event Hub oder Azure Functions stehen zahlreiche weitere Wege zur Verfügung, um auf Nachrichten zu reagieren und diese selbstständig weiter zu verarbeiten. Sie können je nach Anwendungszweck fast beliebig kombiniert werden, um Daten aufzubereiten, zu analysieren und zu persistieren.

Die Auswahl eines geeigneten Edge-Geräts ist im Microsoft-Umfeld nicht schwer. Es gibt einen Katalog, der von Microsoft zertifizierte Sensoren und Edge-Geräte verschiedener Hersteller beinhaltet [6]. Die dort erhältlichen Geräte sind auf Kompatibilität mit der Azure-Cloud oder mit Azure IoT Edge getestet. Grundsätzlich muss aber kein solches Gerät verwendet werden. Es können eigene Geräte mit Linux oder Windows-IoT-Betriebssystem [7] mit der Edge-Laufzeitumgebung ausgestattet werden.

Das bringt auch gleich die nächste wichtige Komponente ins Spiel. Die IoT-Edge-Laufzeitumgebung wird auf dem IoT-Edge-Gerät installiert und stellt die Verbindung mit dem IoT Hub her. Durch die aufgebaute Verbindung ist es nun möglich, dass das Edge-Gerät mit dem IoT Hub bidirektional kommuniziert und dadurch z. B. Nachrichten verschickt [4], auf Device Twins zugegriffen [8] oder Nachrichten vom IoT Hub an das Edge-Gerät gesendet werden können [9].

Der Austausch von Nachrichten zwischen dem Edge-Gerät und der Cloud muss gesichert erfolgen. Deshalb wird von der Laufzeitumgebung die Gerätesicherheit [10] auf einem Basislevel adressiert. So wird grundsätzlich eine verschlüsselte Verbindung mit dem IoT Hub aufgebaut, um Nachrichten und andere Informationen zu übertragen.

Eine Edge-Applikation muss im Azure-IoT-Edge-Kontext als Container erstellt werden, um sie als IoT-Edge-Modul auf Geräten auszuführen. Die größten Vorteile dabei sind, dass die Container isoliert voneinander ausgeführt werden, und die Unterstützung verschiedener Betriebssysteme gekapselt im Container ist. Dabei kommt jede Containerlösung in Frage, die mit der Open Container Initiative kompatibel ist. Für Produktivszenarien wird allerdings nur die Open-Source-Lösung Moby Engine [11] unterstützt. Die Moby Engine ist ein Open-Source-Framework von Docker, um Container in eigene Lösungen zu integrieren. Die Laufzeitumgebung integriert dabei die Moby Engine und stellt einen Dienst auf Betriebssystemebene zur Verfügung, um Container zu verwalten. Die komplette Laufzeitumgebung sowie die Kernmodule Edge Agent und Edge Hub stehen als Open-Source-Projekte auf GitHub zur Verfügung. Der Edge Agent verarbeitet dabei Deployments des IoT Hubs und ins...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang