Freigeben über


Entwickeln Sie Ihre eigenen IoT Edge Module

Gilt für:IoT Edge 1,5 Häkchen IoT Edge 1,5

Wichtig

IoT Edge 1.5 LTS ist die unterstützte Version. IoT Edge 1.4 LTS erreichte am 12. November 2024 das Ende des Lebens. Wenn Sie eine frühere Version verwenden, lesen Sie Update IoT Edge.

Azure IoT Edge Module können eine Verbindung mit anderen Azure-Diensten herstellen und zu Ihrer größeren Clouddatenpipeline beitragen. In diesem Artikel wird beschrieben, wie Sie Module entwickeln können, die mit der IoT Edge Runtime und dem IoT Hub kommunizieren und somit den Rest der Azure Cloud.

IoT Edge Laufzeitumgebung

Die IoT Edge Laufzeit stellt die Infrastruktur bereit, um die Funktionalität mehrerer IoT Edge Module zu integrieren und auf IoT Edge Geräten bereitzustellen. Jedes Programm kann als IoT Edge Modul gepackt werden. Um IoT Edge Kommunikations- und Verwaltungsfunktionen vollständig nutzen zu können, kann ein programm, das in einem Modul ausgeführt wird, das Azure IoT Device SDK verwenden, um eine Verbindung mit dem lokalen IoT Edge Hub herzustellen.

Verpacken ihres Programms als IoT Edge Modul

Um Ihr Programm auf einem IoT Edge-Gerät bereitzustellen, müssen Sie es zuerst containern und mit einem Docker-kompatiblen Modul ausführen. IoT Edge verwendet Moby, das Open-Source-Projekt hinter Docker, als Docker-kompatibles Modul. Sie können dieselben Parameter übergeben, die Sie mit Docker an Ihre IoT Edge Module verwenden. Weitere Informationen finden Sie unter Konfigurieren von Erstellungsoptionen für Container in IoT Edge-Modulen.

Verwenden des IoT Edge Hubs

Ein IoT Edge Hub bietet zwei Hauptfunktionen: einen Proxy für IoT Hub und lokale Kommunikation.

Herstellen einer Verbindung mit IoT Edge Hub über ein Modul

Das Herstellen einer Verbindung mit dem lokalen IoT Edge Hub aus einem Modul umfasst die gleichen Verbindungsschritte wie für alle Clients. Weitere Informationen finden Sie unter Verbinden mit dem IoT Edge Hub.

Um IoT Edge Routing über AMQP zu verwenden, können Sie die ModuleClient aus dem Azure IoT SDK verwenden. Erstellen Sie eine ModuleClient Instanz, um Ihr Modul mit dem IoT Edge Hub zu verbinden, der auf dem Gerät ausgeführt wird, ähnlich wie DeviceClient Instanzen IoT-Geräte mit IoT Hub verbinden. Weitere Informationen zur klasse ModuleClient und den zugehörigen Kommunikationsmethoden finden Sie in der API-Referenz für Ihre bevorzugte SDK-Sprache: C#, C, Python, Java oder Node.js.

IoT Hub Grundtypen

IoT Hub sieht eine Modulinstanz ähnlich wie ein Gerät. Folgendes kann eine Modulinstanz:

Derzeit können Module keine Cloud-zu-Gerät-Nachrichten empfangen oder Dateien hochladen.

Beim Schreiben eines Moduls können Sie eine Verbindung mit dem IoT Edge Hub herstellen und IoT Hub Grundtypen wie bei der Verwendung von IoT Hub mit einer Geräteanwendung verwenden. Der einzige Unterschied zwischen IoT Edge Modulen und IoT-Geräteanwendungen besteht darin, dass Sie mit Modulen auf die Modulidentität anstelle der Geräteidentität verweisen müssen.

Nachrichten vom Gerät zur Cloud

Ein IoT Edge-Modul kann Nachrichten über den IoT Edge Hub an die Cloud senden, der als lokaler Broker fungiert und Nachrichten an die Cloud weitergibt. Um die komplexe Verarbeitung von Geräte-zu-Cloud-Nachrichten zu ermöglichen, kann ein IoT Edge Modul Nachrichten abfangen und verarbeiten, die von anderen Modulen oder Geräten an den lokalen IoT Edge Hub gesendet werden. Das modul IoT Edge sendet dann neue Nachrichten mit verarbeiteten Daten. Auf diese Weise können Sie Ketten von IoT Edge Modulen erstellen, um lokale Verarbeitungspipelines zu erstellen.

So senden Sie Telemetrienachrichten über Gerät-zu-Cloud mithilfe von Routen:

  • Verwenden Sie die klasse ModuleClient der Azure IoT SDK. Jedes Modul verfügt über Eingabe- und Ausgabeendpunkte.
  • Verwenden Sie zum Senden von Nachrichten am Ausgabeendpunkt Ihres Moduls eine Methode zum Senden von Nachrichten aus Ihrer ModuleClient Klasse.
  • Um diesen Ausgabeendpunkt an IoT Hub zu senden, richten Sie eine Route im modul edgeHub Ihres Geräts ein.

So verarbeiten Sie Nachrichten mithilfe von Routen:

  • Richten Sie eine Route zum Senden von Nachrichten von einem anderen Endpunkt (Modul oder Gerät) an den Eingabeendpunkt Ihres Moduls ein.
  • Überwachen Sie Nachrichten auf dem Eingabeendpunkt Ihres Moduls. Jedes Mal, wenn eine neue Nachricht zurückkommt, löst die Azure IoT SDK eine Rückruffunktion aus.
  • Verarbeiten Sie Ihre Nachricht mithilfe dieser Rückruffunktion, und senden Sie (optional) neue Nachrichten in Ihrer Modulendpunktwarteschlange.

Hinweis

Weitere Informationen zum Deklarieren einer Route finden Sie unter Learn how to deploy modules and establish routes in IoT Edge.

Zwillinge

Twins sind eines der Grundtypen, die von IoT Hub bereitgestellt werden. Zwillinge sind JSON-Dokumente, die Zustandsinformationen wie Metadaten, Konfiguration und Bedingungen speichern. Jedes Modul oder Gerät verfügt über einen eigenen Zwilling.

  • Verwenden Sie die Methode ModuleClient.getTwin, um einen Modul-Twin mithilfe des Azure IoT SDK abzurufen.
  • Um mithilfe der Azure IoT SDK einen Modul-Twin-Patch zu erhalten, implementieren Sie eine Rückruffunktion, und registrieren Sie sie mithilfe der ModuleClient.moduleTwinCallback-Methode, damit Ihre Rückruffunktion jedes Mal ausgelöst wird, wenn ein Twin-Patch eingeht.

Empfangen Sie direkte Methoden

Um eine direkte Methode mithilfe der Azure IoT SDK zu empfangen, implementieren Sie eine Rückruffunktion, und registrieren Sie sie mithilfe der ModuleClient.methodCallback-Methode, damit ihre Rückruffunktion jedes Mal ausgelöst wird, wenn eine direkte Methode eingeht.

Unterstützung für Sprache und Architektur

IoT Edge unterstützt mehrere Betriebssysteme, Gerätearchitekturen und Entwicklungssprachen, damit Sie das Szenario erstellen können, das Ihren Anforderungen entspricht. Verwenden Sie diesen Abschnitt, um Ihre Optionen für die Entwicklung von benutzerdefinierten IoT Edge Modulen zu verstehen. Weitere Informationen zur Unterstützung und Anforderungen der Tools für jede Sprache finden Sie in Bereiten Sie Ihre Entwicklungs- und Testumgebung für IoT Edge.

Linux

Für alle Sprachen in der folgenden Tabelle unterstützt IoT Edge die Entwicklung für AMD64 und die meisten ARM64 Linux-Container. Er unterstützt auch Debian 11 ARM32-Container.

Programmiersprache Entwicklungstools
C Visual Studio Code
Visual Studio 2019/2022
C# Visual Studio Code
Visual Studio 2019/2022
Java Visual Studio Code
Node.js Visual Studio Code
Python Visual Studio Code

Hinweis

Für die plattformübergreifende Kompilierung, z. B. das Kompilieren eines ARM32-IoT Edge-Moduls auf einem AMD64-Entwicklungscomputer, müssen Sie den Entwicklungscomputer so konfigurieren, dass der Code für die Zielgerätearchitektur kompiliert wird, die dem IoT Edge Modul entspricht. Weitere Informationen zu Zielgerätearchitekturen finden Sie unter Tutorial: Entwickeln von Azure IoT Edge Modulen mit Visual Studio Code.

Windows

Microsoft unterstützt Windows Container nicht mehr. IoT Edge für Linux auf Windows ist die empfohlene Methode, um IoT Edge auf Windows-Geräten auszuführen.

Modulsicherheit

Entwickeln Sie Ihre Module unter Berücksichtigung der Sicherheit. Weitere Informationen zum Sichern Ihrer Module finden Sie unter Docker Engine Security.

Um die Modulsicherheit zu verbessern, deaktiviert IoT Edge standardmäßig einige Containerfeatures. Sie können die Standardwerte überschreiben, um Ihren Modulen bei Bedarf privilegierte Funktionen zur Verfügung zu stellen.

Zulassen von gesteigerten Docker-Berechtigungen

In der Konfigurationsdatei auf einem IoT Edge Gerät steuert ein Parameter mit dem Namen allow_elevated_docker_permissions erhöhte Docker-Berechtigungen. Wenn dieses Kennzeichen auf true festgelegt ist, gewährt es das --privileged Kennzeichen und alle anderen Fähigkeiten, die Sie im CapAdd Feld der Docker HostConfig in den Erstellungsoptionen für einen Container definieren.

Hinweis

Derzeit ist dieses Flag standardmäßig true, was Bereitstellungen privilegierte Berechtigungen gewährt. Legen Sie dieses Kennzeichen auf "false" fest, um die Gerätesicherheit zu verbessern.

Aktivieren von CAP_CHOWN und CAP_SETUID

Die Docker-Funktionen CAP_CHOWN und CAP_SETUID sind standardmäßig deaktiviert. Diese Funktionen können in sichere Dateien auf dem Hostgerät schreiben und möglicherweise Root-Zugriff erhalten.

Wenn Sie diese Funktionen benötigen, aktivieren Sie sie manuell erneut, indem Sie die CapADD in den Container-Erstellungsoptionen verwenden.

Nächste Schritte