IoT-Geräteentwicklung
In dieser Übersicht werden die wichtigsten Konzepte für die Entwicklung von Geräten vorgestellt, die eine Verbindung mit einer typischen Azure IoT-Lösung herstellen. Jeder Abschnitt enthält Links zu Inhalten, die weitere Details und Anleitungen enthalten.
Das folgende Diagramm zeigt eine allgemeine Übersicht über die Komponenten in einer typischen IoT-Lösung. Dieser Artikel konzentriert sich auf die Geräte und das Gateway, die im Diagramm dargestellt sind.
In Azure IoT schreibt ein Geräteentwickler den Code, der auf den Geräten in der Lösung ausgeführt werden soll. Dieser Code macht typischerweise Folgendes:
- Stellt eine sichere Verbindung mit einem Cloud-Endpunkt her.
- Sendet Telemetriedaten, die von angefügten Sensoren gesammelt wurden, an die Cloud.
- Verwaltet den Gerätestatus und synchronisiert diesen Status mit der Cloud.
- Antwortet auf Befehle, die aus der Cloud gesendet werden.
- Ermöglicht die Installation von Software-Updates aus der Cloud.
- Ermöglicht es dem Gerät, weiterhin zu funktionieren, während es von der Cloud getrennt ist.
Device types (Gerätetypen)
IoT-Geräte können in zwei allgemeine Kategorien unterteilt werden – Mikrocontroller und Mikroprozessoren:
- Mikrocontroller sind kostengünstiger und einfacher zu verwenden als Mikroprozessoren.
- Ein Mikrocontroller enthält viele Funktionen, z. B. Arbeitsspeicher, Schnittstellen und E/A, direkt auf dem Chip. Ein Mikroprozessor greift auf diese Funktionalität von Komponenten in unterstützenden Chips zu.
- Ein Mikrocontroller verwendet häufig ein Echtzeitbetriebssystem (Real-Time OS, RTOS) oder kein Betriebssystem (Bare Metal) und stellt Echtzeitantworten und hochgradig deterministische Reaktionen auf externe Ereignisse bereit. Auf dem Mikroprozessor wird ein universelles Betriebssystem ausgeführt, z. B. Windows, Linux oder macOS, das eine nicht deterministische Echtzeitantwort bereitstellt. In der Regel ist der Zeitpunkt, zu dem eine Aufgabe abgeschlossen wird, nicht garantiert.
Beispiele für spezialisierte Hardware und Betriebssysteme sind:
Windows für IoT ist eine eingebettete Version von Windows für Mikroprozessoren mit Cloud-Konnektivität, mit der Sie sichere Geräte mit einfacher Bereitstellung und Verwaltung erstellen können.
Eclipse ThreadX ist ein Echtzeitbetriebssystem für IoT- und Edge-Geräte, die von Mikrocontrollern unterstützt werden. Eclipse ThreadX ist für die Unterstützung von stark eingeschränkten Geräten vorgesehen, die mit einem Akku betrieben werden und über weniger als 64 KB Flashspeicher verfügen.
Azure Sphere ist eine sichere, allgemeine Anwendungsplattform mit integrierten Kommunikations- und Sicherheitsfeatures für mit dem Internet verbundene Geräte. Es umfasst einen geschützten, verbundenen Crossover-Mikrocontroller, ein benutzerdefiniertes, allgemeines Linux-basiertes Betriebssystem sowie einen cloudbasierten Sicherheitsdienst, der für kontinuierliche und erneuerbare Sicherheit sorgt.
Grundtypen
Ein Azure IoT-Gerät kann die folgenden Primitiven verwenden, um mit der Cloud zu interagieren:
- Gerät-zu-Cloud-Nachrichten zum Senden von Zeitreihen-Telemetriedaten an die Cloud. Beispielsweise Temperaturdaten, die von einem Sensor erfasst werden, der an das Gerät angeschlossen ist.
- Datei-Uploads für Mediendateien, z. B. erfasste Bilder und Videos. Zeitweilig verbundene Geräte können Telemetrie-Batches senden. Geräte können Uploads komprimieren, um Bandbreite zu sparen.
- Gerätezwillinge zum Freigeben und Synchronisieren von Statusdaten mit der Cloud. Beispielsweise kann ein Gerät den Gerätezwilling verwenden, um den aktuellen Status eines von ihm gesteuerten Ventils an die Cloud zu melden und eine gewünschte Zieltemperatur von der Cloud zu empfangen.
- Digitale Zwillinge zum Darstellen eines Geräts in der digitalen Welt. Beispielsweise kann ein digitaler Zwilling den physischen Standort eines Geräts, seine Funktionen und seine Beziehungen zu anderen Geräten darstellen.
- Direkte Methoden zum Empfangen von Befehlen aus der Cloud. Eine direkte Methode kann Parameter enthalten und eine Antwort zurückgeben. Beispielsweise kann die Cloud eine direkte Methode aufrufen, um den Neustart des Geräts in 30 Sekunden anzufordern.
- Cloud-zu-Gerät-Nachrichten zum Empfangen von unidirektionalen Benachrichtigungen aus der Cloud. Beispielsweise eine Benachrichtigung, dass ein Update zum Herunterladen bereit ist.
Weitere Informationen finden Sie unter Leitfaden zur Gerät-zu-Cloud-Kommunikation und Leitfaden zur Cloud-zu-Gerät-Kommunikation.
Geräte-SDKs
Die Geräte-SDKs bieten allgemeine Abstraktionen, mit denen Sie die Primitiven ohne Kenntnisse der zugrunde liegenden Kommunikationsprotokolle verwenden können. Die Geräte-SDKs handhaben auch die Details zum Herstellen einer sicheren Verbindung mit der Cloud und zur Authentifizierung des Geräts.
Für Mikroprozessorgeräte sind Geräte-SDKs für die folgenden Sprachen verfügbar:
Informationen zu Mikrocontrollergeräten finden Sie unter:
Beispiele und Anleitungen
Alle Geräte-SDKs enthalten Beispiele, die veranschaulichen, wie Sie das SDK verwenden, um eine Verbindung mit der Cloud herzustellen, Telemetriedaten zu senden und die anderen Primitiven zu nutzen.
Die Website für die IoT-Geräteentwicklung enthält Tutorials und Schrittanleitungen, die Ihnen zeigen, wie Sie Code für eine Reihe von Gerätetypen und Szenarien implementieren.
Weitere Beispiele finden Sie im Code-Beispiel-Browser.
Weitere Informationen zum Implementieren von automatischen Verbindungswiederherstellungen mit Endpunkten finden Sie unter Verwalten von Verbindungswiederherstellungen mit Geräten zum Erstellen resilienter Anwendungen.
Geräteentwicklung ohne ein Geräte-SDK
Es wird zwar empfohlen, eines der Geräte-SDKs zu verwenden, es kann jedoch auch Szenarien geben, in denen Sie dies besser nicht tun sollten. In diesen Szenarien muss Ihr Geräte-Code direkt eines der Kommunikationsprotokolle verwenden, die IoT Hub und der Device Provisioning Service (DPS) unterstützen.
Weitere Informationen finden Sie unter
- Direktes Verwenden des Protokolls MQTT (als Gerät)
- Direktes Verwenden des AMQP-Protokolls (als Gerät)
Gerätemodellierung
IoT Plug & Play ermöglicht es Lösungsentwicklern, IoT-Geräte ohne manuelle Konfiguration in ihre Lösungen zu integrieren. Das Herzstück von IoT Plug & Play ist ein Gerätemodell, mit dessen Hilfe ein Gerät einer IoT Plug & Play-fähigen Anwendung (z. B. IoT Central) seine Funktionen verfügbar macht. Dieses Modell ist als ein Satz von Elementen strukturiert, die Folgendes definieren:
- Eigenschaften, die den schreibgeschützten oder schreibbaren Status eines Geräts oder einer anderen Entität darstellen. Beispielsweise kann eine Geräteseriennummer eine schreibgeschützte Eigenschaft sein und die Zieltemperatur eines Thermostats eine schreibbare Eigenschaft.
- Telemetriedaten, d. h. die von einem Gerät ausgegebenen Daten – unabhängig davon, ob es sich bei den Daten um einen regulären Datenstrom von Sensormesswerten, einen gelegentlichen Fehler oder eine Informationsmeldung handelt.
- Befehle, die eine Funktion oder einen Vorgang beschreiben, die bzw. der auf einem Gerät ausgeführt werden kann. Durch einen Befehl kann beispielsweise ein Gateway neu gestartet oder ein Foto mit einer Remotekamera aufgenommen werden.
Sie können diese Elemente in Schnittstellen zur modellübergreifenden Wiederverwendung gruppieren, um die Zusammenarbeit zu vereinfachen und die Entwicklung zu beschleunigen.
Das Modell wird mithilfe der Digital Twins Definition Language (DTDL) angegeben.
Die Verwendung von IoT Plug & Play, Modellierung und DTDL ist optional. Sie können die IoT-Geräte-Primitiven ohne IoT Plug & Play oder Modellierung verwenden. Der Azure Digital Twins-Dienst verwendet auch DTDL-Modelle, um Zwillingsgraphen basierend auf digitalen Modellen von Umgebungen wie Gebäuden oder Fabriken zu erstellen.
Wenn Sie als Geräteentwickler ein IoT Plug & Play-Gerät implementieren, müssen eine Reihe von Konventionen befolgt werden. Diese Konventionen bieten eine Standardmethode zum Implementieren des Gerätemodells im Code mithilfe der in den Geräte-SDKs verfügbaren Primitiven.
Weitere Informationen finden Sie unter:
Containergeräte-Code
Durch die Ausführung von Geräte-Code mithilfe von Containern, z. B. Docker, können Sie Code auf Ihren Geräten bereitstellen, indem Sie die Funktionen der Containerinfrastruktur verwenden. Mit Containern können Sie auch eine Laufzeitumgebung für Ihren Code definieren, in der alle erforderlichen Bibliotheks- und Paketversionen installiert sind. Container erleichtern die Bereitstellung von Updates und das Verwalten des Lebenszyklus Ihrer IoT-Geräte.
Azure IoT Edge führt Geräte-Code in Containern aus. Sie können Azure IoT Edge verwenden, um Code-Module auf Ihren Geräten bereitzustellen. Weitere Informationen finden Sie unter Entwickeln Ihrer eigenen IoT Edge-Module.
Tipp
Azure IoT Edge ermöglicht mehrere Szenarien. Zusätzlich zum Ausführen Ihres IoT-Geräte-Codes in Containern können Sie Azure IoT Edge verwenden, um Azure-Dienste auf Ihren Geräten auszuführen und Bereichs-Gateways zu implementieren. Weitere Informationen finden Sie unter Was ist Azure IoT Edge?
Entwicklungstools
In der folgenden Tabelle sind einige der verfügbaren IoT-Entwicklungs-Tools aufgeführt:
Tool | BESCHREIBUNG |
---|---|
Azure IoT Hub (VS Code-Erweiterung) | Mit dieser VS Code-Erweiterung können Sie Ihre IoT Hub-Ressourcen und Geräte in VS Code verwalten. |
Azure IoT-Explorer | Mit diesem plattformübergreifenden Tool können Sie Ihre IoT Hub-Ressourcen und Geräte über eine Desktop-Anwendung verwalten. |
Azure IoT-Erweiterung für die Azure CLI | Diese CLI-Erweiterung enthält Befehle wie az iot device simulate , az iot device c2d-message und az iot hub monitor-events , mit denen Sie Interaktionen mit Geräten testen können. |
Nächste Schritte
Nachdem Sie nun einen Überblick über die Geräteentwicklung in Azure IoT-Lösungen erhalten haben, werden folgende Schritte empfohlen: