Azure IOT 中心裝置 SDK 允許使用 C99 或更高版本或 C++ 編寫的應用程式與 Azure IoT 中心、Azure IoT Central 以及 Azure IoT 裝置預配輕鬆通訊。此儲存庫包括庫的原始程式碼、設定說明以及演示使用場景的範例。
對於記憶體以千位元組而不是兆位元組為單位的受限設備,甚至還有更輕量級的 SDK 選項可用。請參閱其他 Azure IoT SDK 以了解更多資訊。
建議所有 Azure IoT SDK 使用者註意 Azure IoT 中心和裝置預配服務即將發生的 TLS 憑證更改,這將影響 SDK 連接到這些服務的能力。 2022 年 10 月,這兩項服務將從目前的巴爾的摩 CyberTrust CA 根遷移到 DigiCert Global G2 CA 根。事先會有一個過渡期,您的 IoT 設備必須同時擁有 Baltimore 和 Digicert 公共證書,這些證書可能會硬編碼在其應用程式中或閃存到您的 WiFi 模組上,以防止連接問題。
僅具有巴爾的摩公共憑證的裝置將在 2022 年 10 月失去連接到 Azure IoT 中心和裝置預配服務的能力。
若要準備此更改,請確保您裝置的 TLS 堆疊已配置這兩個公共信任根憑證。
有關物聯網服務為何這樣做的更深入解釋,請參閱本文。
請注意,對於 mbed 和 Arduino 等受限設備場景,有更好、更輕量的 SDK 選項可用。請參閱其他 Azure IoT SDK 以了解更多資訊。
在受支援的平台上開始使用 Azure IoT SDK 的最簡單方法是使用以下套件和程式庫:
Arduino:Arduino IDE 中的設備 SDK 庫
Windows:Vcpkg 上的裝置 SDK
iOS:CocoaPod 上的裝置 SDK
iOS 限制
若要獲得更完整的iOS 體驗(包括上述兩個缺少的功能),請參閱我們基於嵌入式 C SDK 建置的範例本機 Swift 程式庫。
對於其他平台(包括 Linux),您需要直接複製和建置 SDK。您也可以直接為上述平台建立它。
SDK 有許多可用的範例。更多資訊可以在這裡找到。
可以在此處找到 C SDK 的 API 參考文件。
若要尋找其他語言的 Azure IoT SDK,請參閱此處的指南。
要了解有關構建 Azure IoT 應用程式的更多信息,您可以訪問 Azure IoT 開發中心。
IoT Hub 支援裝置連線的多種協定:MQTT、AMQP 和 HTTPS。 MQTT 和 AMQP 可以選擇在 WebSocket 上執行。裝置用戶端 SDK 允許在建立連線時選擇協定。
設備/模組客戶端 SDK 允許建立 IoT 即插即用設備。
如果您不確定要使用哪個協議,您應該使用 MQTT 或 MQTT-WS。 MQTT 所需的資源比 AMQP 少得多,並且支援比 HTTPS 多得多的 IoT 中心功能。 AMQP 和 HTTPS 都無法保證為未來的新功能(例如 Azure IoT 即插即用)提供裝置用戶端 SDK 實作。
✔️ 功能可用 ✖️ 功能計劃但不支援 ➖ 沒有支援計劃
特徵 | MQTT | mqtt-ws | 阿姆奎普 | amqp-ws | https | 描述 |
---|---|---|---|---|---|---|
驗證 | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | 透過支援的身份驗證(包括私鑰、SASToken、X-509 自簽名和憑證授權單位 (CA) 簽署)將您的裝置安全地連接到 IoT 中心。 *IoT Hub 目前僅支援透過 AMQP 和 MQTT 簽署的 X-509 CA。 |
發送裝置到雲端訊息 | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | 將裝置到雲端訊息(最大 256KB)傳送至 IoT 中心,並可選擇新增自訂屬性。 IoT 中心目前僅支援透過 AMQP 和 HTTPS 批次傳送。此SDK支援透過HTTP批量發送。 * 透過 AMQP 和 AMQP-WS 批次傳送,以及在 D2C 訊息上新增系統屬性正在進行中。 |
接收雲端到裝置的訊息 | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | 接收雲端到裝置的訊息並從 IoT 中心讀取關聯的自訂和系統屬性,並可選擇完成/拒絕/放棄 C2D 訊息。 *IoT Hub 目前僅支援透過 HTTPS 和 AMQP 完成/拒絕/放棄 C2D 訊息的選項。 |
設備雙胞胎 | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | IoT 中心為連接到 IoT 中心的每個裝置保留一個裝置孿生。該設備可以執行諸如獲取雙標籤、訂閱所需屬性等操作。 *傳送報告的屬性版本和所需的屬性版本正在進行中。 |
直接法 | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | IoT 中心可讓您從雲端呼叫裝置上的直接方法。 SDK 支援方法特定和通用操作的處理程序。 |
將文件上傳到 Blob | ➖ | ➖ | ➖ | ➖ | ✔️ | 裝置可以啟動文件上傳,並在上傳完成時通知 IoT 中心。文件上傳需要 HTTPS 連接,但可以使用任何協定從客戶端發起進行其他操作。 |
連線狀態和錯誤報告 | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | IoT 中心支援的錯誤代碼的錯誤報告。 *此SDK支援身份驗證和未找到裝置的錯誤報告。 |
重試策略 | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | 不成功的裝置到雲端訊息的重試策略有兩個選項:不嘗試、有抖動的指數退避(預設)。 *自訂重試政策正在進行中。 |
透過單一連接進行多路復用的設備 | ➖ | ➖ | ✔️ | ✔️ | ✔️ | 多路復用的限制比該表中列出的要多。請參閱此文件以取得更多資訊。 |
連接池 - 指定連線數 | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Azure IoT 即插即用支援 | ✔️ | ✔️ | ➖ | ➖ | ➖ | 能夠建置 Azure IoT 即插即用裝置。 |
該 SDK 還包含您可以設定的選項和平台特定功能。您可以在本文檔中找到詳細清單。
此儲存庫包含裝置設定服務的設定客戶端 SDK。
✔️ 功能可用 ✖️ 功能計劃但不支援 ➖ 沒有支援計劃
特徵 | MQTT | mqtt-ws | 阿姆奎普 | amqp-ws | https | 描述 |
---|---|---|---|---|---|---|
TPM 個人註冊 | ➖ | ➖ | 我們宣布棄用 Azure IoT C-SDK 中的 utpm-c 庫支援和 DPS-TPM 身份驗證支援。從 2023 年 5 月開始,Microsoft 將不再提供對此程式庫的支援。使用該庫的現有應用程式將繼續按原樣運行。我們強烈建議使用 tpm2tss OpenSSL 引擎切換到 DPS-X509 身份驗證。 使用可信任平台模組透過單獨註冊將您的裝置連接到裝置配置服務將繼續按原樣工作。本快速入門回顧如何建立模擬設備以進行 TPM 個人註冊。設備配置服務目前不支援基於 MQTT 的 TPM。 | |||
X.509個人招生 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | 此 SDK 支援使用 X.509 葉憑證透過單獨註冊將您的裝置連接到裝置設定服務。本快速入門回顧如何建立用於使用 X.509 進行個人註冊的模擬設備。 |
X.509 註冊組 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | 此 SDK 支援使用 X.509 根憑證透過註冊群組將您的裝置連接到裝置設定服務。 |
適用於 C 的 IoT 中心裝置 SDK 可與各種作業系統平台和裝置一起使用。
設備平台的最低要求是支援以下功能:
平台支援詳細資訊可以在本文檔中找到。您可以在 Azure IoT 認證裝置目錄中找到各種 SDK 已測試過的作業系統平台的詳盡清單。請注意,您可能仍然可以在本頁未列出的作業系統和硬體平台上使用 SDK:所有 SDK 都是開源的,並且設計為可移植的。如果您有建議、回饋或問題要報告,請參閱下面的貢獻和支持部分。
C SDK 和函式庫:
在儲存庫中,您將找到在 Linux、Windows 和微控制器平台上編譯和運行 C 設備客戶端 SDK 的說明和建置工具(有關編譯 C 設備客戶端的更多信息,請參閱上面的連結)。
如果您正在考慮將 C 語言的裝置用戶端 SDK 移植到新平台,請查看移植指南文件。
MBED OS
另請參閱下面的已棄用資料夾以了解其他相關說明。
如果您遇到任何錯誤,對新功能有建議,或者如果您想成為該專案的積極貢獻者,請按照貢獻指南中提供的說明進行操作。
/c-utility, /deps, /umqtt, /uamqp
-
這些是包含程式碼的 git 子模組,例如與其他專案共用的適配器和協定實作。
/build, /build_all
建置並簽入與門相關的資料夾。
/certs
包含與 Azure IoT 中心通訊所需的憑證。
/doc
此資料夾包含應用程式開髮指南和裝置設定說明。
/iothub_client
包含提供庫的原始訊息傳遞功能的 Azure IoT 中心用戶端元件。有關如何使用它的信息,請參閱 API 文件和範例。
/provisioning_client
此資料夾包含設備配置客戶端的客戶端庫。
/samples
包含使用 SDK 演示更複雜的 E2E 場景的範例。
/testtools
包含用於測試庫的工具。
/tools
各種工具。
以下資料夾已被棄用。
/iothub_service_client
包含支援與 IoT 中心服務互動以執行操作(例如向裝置傳送訊息和管理裝置身分登錄)的程式庫。
/provisioning_service_client
包含允許與裝置配置服務互動以執行操作(例如設定有關註冊的策略)的庫。
/serializer
包含在原始訊息傳遞庫之上提供建模和 JSON 序列化功能的庫。
C SDK 提供新功能版本、關鍵錯誤修復和長期支援 (LTS)。一般錯誤修復不會收到單獨的版本,而是包含在 LTS 版本中。版本控制遵循語意版本控制、 xyz
或major.minor.patch
。每當版本更新時,它都會被標記為xyz
。
新功能和關鍵錯誤修復(包括安全性更新)將在主分支上發布。這些版本將使用格式為yyyy-mm-dd
日期進行標記。功能發布將patch
minor
版本並將patch
版本重設為 0。
新的 LTS 版本從主分支分支出來,並將被標記為LTS_
。新的 LTS 版本將繼承發佈時主分支的版本。 LTS 分支根據建立分支的月份和年份命名為lts_mm_yyyy
。
當從主分支移植關鍵錯誤修復(包括安全性更新)時,將發布更新的 LTS 版本。這些更新的版本將以相同的方式標記,除了增加的 Ref## 之外,例如LTS_
。 patch
版本也將被提升。 LTS 更新不會移植任何新功能和一般錯誤修復。
下表顯示了 LTS 分支到已發佈軟體包的對應。
包裹 | GitHub 分支 | 長期支持標籤 | LTS 開始日期 | 維護結束日期 |
---|---|---|---|---|
vcpkg: 2024-08-12 | lts_08_2024 | LTS_08_2024 | 2024-08-12 | 2025-08-12 |
vcpkg: 2024-03-04 | lts_03_2024 | LTS_03_2024 | 2024-03-04 | 2025-03-04 |
「維護結束日期」是指相關版本的生命維持結束。
下面是 C SDK 版本控制和標記的假設範例。 minor
版本透過顏色區分。
1.9.0
,發布標記為2020-02-23
。LTS_07_2020
。主分支升級到 1.10.0 並標記為1.10.0
。2020-08-02
。1.10.1
,發布標記為2020-09-28
。透過建立名為lts_07_2020_ref02
的分支,將關鍵錯誤修復移植到 lts 版本LTS_07_2020
(以及任何其他現有的 LTS 分支),其版本升至 1.9.1 並標記為1.9.1
和LTS_07_2020_Ref02
。屬於關鍵錯誤修復一部分的任何子模組都會標記為LTS_07_2020_Ref02
。1.11.0
,發布標記為2020-12-14
。該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
Microsoft 收集效能和使用信息,這些資訊可用於提供和改進 Microsoft 產品和服務以及增強您的體驗。要了解更多信息,請查看隱私聲明。