Mit dem Azure IOT Hub Device SDK können in C99 oder höher oder C++ geschriebene Anwendungen problemlos mit Azure IoT Hub, Azure IoT Central und Azure IoT Device Provisioning kommunizieren. Dieses Repo enthält den Quellcode für die Bibliotheken, Einrichtungsanweisungen und Beispiele, die Nutzungsszenarien demonstrieren.
Für eingeschränkte Geräte , bei denen der Speicher in Kilobyte und nicht in Megabyte gemessen wird, stehen noch leichtere SDK-Optionen zur Verfügung. Weitere Informationen finden Sie unter „Andere Azure IoT SDKs“.
Allen Azure IoT SDK-Benutzern wird empfohlen, sich über bevorstehende TLS-Zertifikatänderungen für Azure IoT Hub und Device Provisioning Service im Klaren zu sein, die sich auf die Fähigkeit des SDK auswirken, eine Verbindung zu diesen Diensten herzustellen. Im Oktober 2022 werden beide Dienste vom aktuellen Baltimore CyberTrust CA Root zum DigiCert Global G2 CA Root migrieren. Zuvor wird es eine Übergangszeit geben, in der Ihre IoT-Geräte sowohl über die öffentlichen Zertifikate Baltimore als auch Digicert verfügen müssen, die in ihrer Anwendung fest codiert oder auf Ihr WLAN-Modul geflasht sein können, um Verbindungsprobleme zu verhindern.
Geräte mit nur dem öffentlichen Baltimore-Zertifikat verlieren im Oktober 2022 die Möglichkeit, eine Verbindung mit Azure IoT Hub und Device Provisioning Service herzustellen.
Um sich auf diese Änderung vorzubereiten, stellen Sie sicher, dass im TLS-Stack Ihres Geräts diese beiden öffentlichen Root-of-Trust-Zertifikate konfiguriert sind.
Eine ausführlichere Erklärung, warum die IoT-Dienste dies tun, finden Sie in diesem Artikel.
Bitte beachten Sie, dass für eingeschränkte Geräteszenarien wie mbed und Arduino bessere, leichtere SDK-Optionen verfügbar sind. Weitere Informationen finden Sie unter „Andere Azure IoT SDKs“.
Der einfachste Weg, mit den Azure IoT SDKs auf unterstützten Plattformen zu beginnen, ist die Verwendung der folgenden Pakete und Bibliotheken:
Arduino: Geräte-SDK-Bibliothek in der Arduino IDE
Windows: Geräte-SDK auf Vcpkg
iOS: Geräte-SDK auf CocoaPod
iOS-Einschränkungen
Für ein umfassenderes iOS-Erlebnis einschließlich der beiden oben genannten fehlenden Funktionen sehen Sie sich bitte unsere native Swift-Beispielbibliothek an, die auf dem Embedded C SDK basiert.
Für andere Plattformen – einschließlich Linux – müssen Sie das SDK direkt klonen und erstellen. Sie können es auch direkt für die oben genannten Plattformen erstellen.
Für das SDK sind viele Beispiele verfügbar. Weitere Informationen finden Sie hier.
Die API-Referenzdokumentation für die C SDKs finden Sie hier.
Um Azure IoT SDKs in anderen Sprachen zu finden, lesen Sie bitte die Anleitung hier.
Um mehr über die Erstellung von Azure IoT-Anwendungen zu erfahren, können Sie das Azure IoT Dev Center besuchen.
IoT Hub unterstützt mehrere Protokolle, mit denen das Gerät eine Verbindung herstellen kann: MQTT, AMQP und HTTPS. MQTT und AMQP können optional über WebSockets ausgeführt werden. Mit dem Device Client SDK kann das Protokoll zum Zeitpunkt der Verbindungserstellung ausgewählt werden.
Das Device/Module Client SDK ermöglicht optional die Erstellung von IoT-Plug-and-Play-Geräten.
Wenn Sie nicht sicher sind, welches Protokoll Sie verwenden sollen, sollten Sie MQTT oder MQTT-WS verwenden. MQTT benötigt deutlich weniger Ressourcen als AMQP und unterstützt deutlich mehr IoT Hub-Funktionalität als HTTPS. Weder AMQP noch HTTPS können garantieren, dass künftige Device Client SDK-Implementierungen für neue Funktionen wie Azure IoT Plug and Play verfügbar sind.
✔️ Funktion verfügbar ✖️ Funktion geplant, aber nicht unterstützt ➖ keine Unterstützung geplant
Merkmale | mqtt | mqtt-ws | amqp | amqp-ws | https | Beschreibung |
---|---|---|---|---|---|---|
Authentifizierung | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | Verbinden Sie Ihr Gerät sicher mit IoT Hub mit unterstützter Authentifizierung, einschließlich privatem Schlüssel, SASToken, X-509 Self Signed und Certificate Authority (CA) Signed. *IoT Hub unterstützt derzeit nur X-509 CA Signed über AMQP und MQTT. |
Senden Sie eine Device-to-Cloud-Nachricht | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | Senden Sie Geräte-zu-Cloud-Nachrichten (maximal 256 KB) an IoT Hub mit der Option, benutzerdefinierte Eigenschaften hinzuzufügen. IoT Hub unterstützt derzeit nur den Batch-Versand über AMQP und HTTPS. Dieses SDK unterstützt den Batch-Versand über HTTP. * Der Stapelversand über AMQP und AMQP-WS sowie das Hinzufügen von Systemeigenschaften für D2C-Nachrichten sind in Bearbeitung. |
Empfangen Sie Cloud-to-Device-Nachrichten | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | Empfangen Sie Cloud-to-Device-Nachrichten und lesen Sie zugehörige benutzerdefinierte und Systemeigenschaften vom IoT Hub, mit der Option, C2D-Nachrichten zu vervollständigen/ablehnen/abbrechen. *IoT Hub unterstützt die Option zum Vervollständigen/Ablehnen/Abbrechen von C2D-Nachrichten über HTTPS und AMQP derzeit nur. |
Gerätezwillinge | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | IoT Hub speichert einen Gerätezwilling für jedes Gerät, das Sie mit IoT Hub verbinden. Das Gerät kann Vorgänge wie das Abrufen von Zwillings-Tags und das Abonnieren gewünschter Eigenschaften ausführen. *Gemeldete Eigenschaftenversion senden und gewünschte Eigenschaftenversion sind in Bearbeitung. |
Direkte Methoden | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | IoT Hub bietet Ihnen die Möglichkeit, direkte Methoden auf Geräten aus der Cloud aufzurufen. Das SDK unterstützt Handler für methodenspezifische und generische Operationen. |
Laden Sie die Datei in Blob hoch | ➖ | ➖ | ➖ | ➖ | ✔️ | Ein Gerät kann einen Datei-Upload initiieren und benachrichtigt IoT Hub, wenn der Upload abgeschlossen ist. Das Hochladen von Dateien erfordert eine HTTPS-Verbindung, kann jedoch vom Client aus mithilfe eines beliebigen Protokolls für andere Vorgänge initiiert werden. |
Verbindungsstatus und Fehlerberichte | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | Fehlerberichterstattung für IoT Hub-unterstützten Fehlercode. *Dieses SDK unterstützt Fehlerberichte zur Authentifizierung und zu „Gerät nicht gefunden“. |
Wiederholungsrichtlinien | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | Die Wiederholungsrichtlinie für fehlgeschlagene Geräte-zu-Cloud-Nachrichten bietet zwei Optionen: kein Versuch, exponentielles Backoff mit Jitter (Standard). *Benutzerdefinierte Wiederholungsrichtlinie ist in Bearbeitung. |
Geräte, die über eine einzige Verbindung multiplexen | ➖ | ➖ | ✔️ | ✔️ | ✔️ | Es gibt mehr Einschränkungen beim Multiplexen als in dieser Tabelle aufgeführt. Weitere Informationen finden Sie in diesem Dokument. |
Verbindungspooling – Angabe der Anzahl der Verbindungen | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Azure IoT Plug-and-Play-Unterstützung | ✔️ | ✔️ | ➖ | ➖ | ➖ | Möglichkeit zum Erstellen von Azure IoT Plug-and-Play-Geräten. |
Dieses SDK enthält auch einstellbare Optionen und plattformspezifische Funktionen. Eine detaillierte Liste finden Sie in diesem Dokument.
Dieses Repository enthält das Bereitstellungs-Client-SDK für den Device Provisioning Service.
✔️ Funktion verfügbar ✖️ Funktion geplant, aber nicht unterstützt ➖ keine Unterstützung geplant
Merkmale | mqtt | mqtt-ws | amqp | amqp-ws | https | Beschreibung |
---|---|---|---|---|---|---|
Individuelle TPM-Registrierung | ➖ | ➖ | Wir geben die Einstellung der Unterstützung der utpm-c-Bibliothek und der DPS-TPM-Authentifizierungsunterstützung im Azure IoT C-SDK bekannt. Ab Mai 2023 bietet Microsoft keinen Support mehr für diese Bibliothek an. Vorhandene Anwendungen, die diese Bibliothek verwenden, funktionieren weiterhin unverändert. Wir empfehlen dringend, auf die DPS-X509-Authentifizierung mit der tpm2tss OpenSSL Engine umzusteigen. Die Verbindung Ihres Geräts mit dem Device Provisioning Service über die individuelle Registrierung über das Trusted Platform Module funktioniert weiterhin wie gewohnt. In dieser Schnellstartanleitung wird erläutert, wie Sie ein simuliertes Gerät für die individuelle Registrierung bei TPM erstellen. TPM über MQTT wird derzeit vom Device Provisioning Service nicht unterstützt. | |||
X.509-Einzelregistrierung | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Dieses SDK unterstützt die Verbindung Ihres Geräts mit dem Device Provisioning Service über eine individuelle Registrierung mithilfe eines X.509-Blattzertifikats. In dieser Schnellstartanleitung wird beschrieben, wie Sie ein simuliertes Gerät für die individuelle Registrierung bei X.509 erstellen. |
X.509-Registrierungsgruppe | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Dieses SDK unterstützt die Verbindung Ihres Geräts mit dem Device Provisioning Service über eine Registrierungsgruppe mithilfe eines X.509-Stammzertifikats. |
Das IoT Hub-Geräte-SDK für C kann mit einer Vielzahl von Betriebssystemplattformen und Geräten verwendet werden.
Die Mindestanforderungen bestehen darin, dass die Geräteplattform Folgendes unterstützt:
Einzelheiten zur Plattformunterstützung finden Sie in diesem Dokument. Eine umfassende Liste der Betriebssystemplattformen, auf denen die verschiedenen SDKs getestet wurden, finden Sie im Azure Certified for IoT-Gerätekatalog. Beachten Sie, dass Sie die SDKs möglicherweise weiterhin auf Betriebssystemen und Hardwareplattformen verwenden können, die nicht auf dieser Seite aufgeführt sind: Alle SDKs sind Open Source und portabel konzipiert. Wenn Sie Vorschläge, Feedback oder Probleme haben, die Sie melden möchten, lesen Sie die Abschnitte „Beitrag“ und „Unterstützung“ weiter unten.
Die C SDKs und Bibliotheken:
Im Repository finden Sie Anweisungen und Build-Tools zum Kompilieren und Ausführen des Geräte-Client-SDK für C auf Linux-, Windows- und Mikrocontroller-Plattformen (weitere Informationen zum Kompilieren des Geräte-Clients für C finden Sie unter den obigen Links).
Wenn Sie erwägen, das Geräte-Client-SDK für C auf eine neue Plattform zu portieren, lesen Sie den Portierungsleitfaden.
MBED OS
Weitere relevante Hinweise finden Sie weiter unten im Abschnitt „Veraltete Ordner“.
Wenn Sie auf Fehler stoßen, Vorschläge für neue Funktionen haben oder ein aktiver Mitwirkender an diesem Projekt werden möchten, befolgen Sie bitte die Anweisungen in den Beitragsrichtlinien.
/c-utility, /deps, /umqtt, /uamqp
-
Dabei handelt es sich um Git-Submodule, die Code wie Adapter und Protokollimplementierungen enthalten, der mit anderen Projekten geteilt wird.
/build, /build_all
Gate-bezogene Ordner erstellen und einchecken.
/certs
Enthält Zertifikate, die für die Kommunikation mit Azure IoT Hub erforderlich sind.
/doc
Dieser Ordner enthält Anleitungen zur Anwendungsentwicklung und Anweisungen zur Geräteeinrichtung.
/iothub_client
Enthält Azure IoT Hub-Clientkomponenten, die die Rohnachrichtenfunktionen der Bibliothek bereitstellen. Informationen zur Verwendung finden Sie in der API-Dokumentation und in den Beispielen.
/provisioning_client
Dieser Ordner enthält die Clientbibliothek für den Gerätebereitstellungsclient.
/samples
Enthält Beispiele, die komplexere E2E-Szenarien mithilfe des SDK veranschaulichen.
/testtools
Enthält Tools, die zum Testen der Bibliotheken verwendet werden.
/tools
Verschiedene Werkzeuge.
Die folgenden Ordner sind veraltet.
/iothub_service_client
Enthält Bibliotheken, die Interaktionen mit dem IoT Hub-Dienst ermöglichen, um Vorgänge wie das Senden von Nachrichten an Geräte und die Verwaltung der Geräteidentitätsregistrierung durchzuführen.
/provisioning_service_client
Enthält Bibliotheken, die Interaktionen mit dem Device Proviosining-Dienst ermöglichen, um Vorgänge wie das Festlegen von Richtlinien für die Registrierungen durchzuführen.
/serializer
Enthält Bibliotheken, die zusätzlich zur Rohnachrichtenbibliothek Modellierungs- und JSON-Serialisierungsfunktionen bereitstellen.
Das C SDK bietet Releases für neue Funktionen, kritische Fehlerbehebungen und Long Term Support (LTS). Allgemeine Fehlerbehebungen erhalten keine separate Veröffentlichung, sondern sind im LTS-Release enthalten. Die Versionierung folgt der semantischen Versionierung, xyz
oder major.minor.patch
. Jedes Mal, wenn die Version aktualisiert wird, wird sie mit xyz
gekennzeichnet.
Neue Funktionen und kritische Fehlerbehebungen (einschließlich Sicherheitsupdates) werden im Hauptzweig veröffentlicht. Diese Veröffentlichungen werden mit dem Datum im Format yyyy-mm-dd
gekennzeichnet. Durch ein Feature-Release wird die minor
erhöht und die patch
Version auf 0 zurückgesetzt. Bei einer kritischen Fehlerbehebung wird nur die patch
Version erhöht.
Neue LTS-Versionen zweigen von der Hauptversion ab und werden LTS_
gekennzeichnet. Eine neue LTS-Version erbt die Version vom Hauptzweig zum Zeitpunkt der Veröffentlichung. LTS-Zweige erhalten den Namen lts_mm_yyyy
für den Monat und das Jahr, in dem der Zweig erstellt wurde.
Eine aktualisierte LTS-Version wird veröffentlicht, wenn eine kritische Fehlerbehebung (einschließlich Sicherheitsupdates) aus dem Hauptzweig portiert wird. Diese aktualisierten Versionen werden auf die gleiche Weise getaggt, mit Ausnahme einer erhöhten Ref##, z. B. LTS_
. Auch die patch
-Version wird gepusht. Es werden keine neuen Funktionen und keine allgemeinen Fehlerbehebungen in ein LTS-Update portiert.
Unten finden Sie eine Tabelle, die die Zuordnung der LTS-Zweige zu den veröffentlichten Paketen zeigt.
Paket | GitHub-Zweig | LTS-Tag | LTS-Startdatum | Enddatum der Wartung |
---|---|---|---|---|
vcpkg: 12.08.2024 | lts_08_2024 | LTS_08_2024 | 12.08.2024 | 12.08.2025 |
vcpkg: 04.03.2024 | lts_03_2024 | LTS_03_2024 | 04.03.2024 | 04.03.2025 |
„Wartungsenddatum“ bezieht sich auf das Ende des Lebensunterhalts der entsprechenden Version.
Unten finden Sie ein hypothetisches Beispiel für Versionierung und Tagging für das C SDK. minor
unterscheiden sich durch die Farbe.
1.9.0
und die Veröffentlichung trägt das Tag 2020-02-23
.LTS_07_2020
. Der Hauptzweig wechselt auf 1.10.0 und trägt das Tag 1.10.0
.2020-08-02
.1.10.1
gekennzeichnet, und die Veröffentlichung ist mit 2020-09-28
gekennzeichnet. Die kritische Fehlerbehebung wird auf die LTS-Version LTS_07_2020
(und jeden anderen vorhandenen LTS-Zweig) portiert, indem ein Zweig mit dem Namen lts_07_2020_ref02
erstellt wird. Seine Version wird auf 1.9.1 erhöht und mit 1.9.1
und LTS_07_2020_Ref02
gekennzeichnet. Alle Submodule, die Teil der kritischen Fehlerbehebung waren, werden mit LTS_07_2020_Ref02
gekennzeichnet.1.11.0
gekennzeichnet und die Veröffentlichung ist mit 2020-12-14
gekennzeichnet.Dieses Projekt hat den Microsoft Open Source Verhaltenskodex übernommen. Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Microsoft erfasst Leistungs- und Nutzungsinformationen, die zur Bereitstellung und Verbesserung von Microsoft-Produkten und -Diensten sowie zur Verbesserung Ihres Erlebnisses verwendet werden können. Weitere Informationen finden Sie in der Datenschutzerklärung.