Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
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:
- Senden von Geräte-zu-Cloud-Nachrichten.
- Erhalte direkte Methoden, die speziell auf seine Identität abzielen.
- Verfüge über einen Modulzwilling, der sich von dem Gerätezwilling und den anderen Modulzwillingen dieses Geräts unterscheidet und isoliert ist.
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
ModuleClientder 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
ModuleClientKlasse. - Um diesen Ausgabeendpunkt an IoT Hub zu senden, richten Sie eine Route im modul
edgeHubIhres 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.