本概述介紹開發連接典型 Azure IoT 解決方案裝置的關鍵概念。 每一節都包含可提供進一步詳細資料和指引的內容連結。
在雲端連接解決方案中,裝置會直接連接到雲端連接的服務,如 IoT Hub;而在邊緣連接解決方案中,裝置會連接到環境中的邊緣連接服務,例如 Azure IoT Operations。
下圖展示了典型 邊緣連接物聯網解決方案中元件的高階視圖。 本文著重於圖表中顯示的裝置、資產和連接器:
資產通常具有實作標準通訊協定的內建韌體。 例如,機器人臂可能是 OPC UA 用戶端,而安全性攝像機可能會實作 ONVIF。 Azure IoT Operations 包含多種連接器,可利用這些協定與資產通訊,並將資產訊息轉換為 MQTT 訊息。 某些資產可以接收訊息,讓您能夠對其執行作業,例如:
- 平移或傾斜安全攝像頭。
- 變更機器人手臂上的記錄層級。
- 起始韌體更新。
你可以自行建立自訂連接器,連接使用Azure IoT Operations原生不支援協定的資產。
下圖展示典型 雲端連接物聯網解決方案中各元件的高階視角。 本文著重於圖表中顯示的裝置和閘道:
在 Azure IoT 中,裝置開發者會撰寫程式碼,讓解決方案中的裝置執行。 此程式碼通常:
- 建立與雲端端點的安全連線。
- 將從附加感應器收集的遙測資料傳送至雲端。
- 管理裝置狀態,並將該狀態與雲端同步。
- 回應從雲端傳送的命令。
- 啟用從雲端安裝軟體更新。
- 可讓裝置在與雲端中斷連線時保持運作。
裝置類型
IoT 解決方案可以包含許多類型的 資產 和 裝置。
邊緣連接解決方案中的資產範例包括:
- 機器人手臂、輸送帶和電梯。
- 工業CNC機器、車床、鋸子和鑽頭。
- 醫療診斷成像機。
- 安全性攝像機。
- 可程式化邏輯控制器。
這些資產通常具有實作標準通訊協定的內建韌體。 例如,機器人臂可能是 OPC UA 用戶端,而安全性攝像機可能會實作 ONVIF 通訊協定。 在邊緣連接解決方案中,你會使用專用連接器連接這些資產,並將訊息轉換成通用格式。
針對資產,沒有與裝置開發人員角色直接對等的角色。 操作員可以設定連線至資產的連接器。 不過,您可能需要開發自訂連接器,以連線至使用邊緣連線解決方案未原生支援之通訊協定的資產。
雲端連接解決方案中的裝置範例包括:
- 遠端油泵上的壓力感應器。
- 冷氣機中的溫度和濕度感應器。
- 電梯中的加速器。
- 房間中的狀態感應器。
這些裝置通常是使用微控制器(MCU)或微控制器(MPU) 來建置的:
- MCU 較不昂貴而且較 MPU 容易操作。
- MCU 包含許多功能,例如晶片本身中的記憶體、介面和 I/O。 MPU 會從支援晶片的元件存取這項功能。
- MCU 通常會使用即時 OS (RTOS) 或裸機執行 (無 OS),並對外部事件提供即時回應和高確定性的回應。 MPU 通常運行通用作業系統,如 Windows、Linux 或 macOS,提供非確定性的即時回應。 通常無法保證任務何時完成。
特製化硬體和作業系統的範例包括:
Windows for IoT 是針對具備雲端連接功能的 MPU 的嵌入式 Windows,讓您能輕鬆建立安全的裝置,並輕鬆配置與管理。
Eclipse ThreadX 是針對物聯網裝置和由 MCU 驅動的邊緣裝置設計的即時作業系統。 Eclipse ThreadX 的設計目標是支援電池供電且快閃記憶體小於 64 KB 的高限制裝置。
FreeRTOS 是內嵌裝置的即時作系統。 你可以用 FreeRTOS 搭配 Azure IoT 中介軟體 for FreeRTOS,將裝置連接到 Azure IoT。 如需適用於裝置開發的 RTOS 選項概觀,請參閱 C SDK 和內嵌 C SDK 使用案例。
Azure Sphere(整合) 是一個安全且高階的應用平台,內建通訊與安全功能,適用於基於網際網路的裝置。 它包含一個安全、已連線的交叉 MCU、一個以 Linux 為基礎的自訂高層級作業系統,以及一個可提供持續、可更新的安全性的雲端式安全性服務。
裝置基本類型
裝置開發人員通常會在裝置程式代碼中實作下列基本類型,以與雲端互動:
-
裝置到雲端訊息,將時間序列遙測資料傳送至雲端。 例如,從連結到裝置的感應器收集到的溫度資料。
-
媒體檔案的檔案上傳,例如擷取的影像和視訊。 間歇性連線的裝置可以傳送遙測資料批次。 裝置可以壓縮上傳以節省頻寬。
-
裝置雙胞胎用於與雲端分享並同步狀態數據。 例如,裝置可以使用裝置對應項向雲端報告其控制的閥目前的狀態,以及從雲端接收所需的目標溫度。
-
數位雙胞胎用於在數位世界中表示一個裝置。 例如,數位對應項可以代表裝置的實體位置、功能,以及與其他裝置的關聯性。
- 從雲端接收命令的直接方法。 直接方法可以有參數並傳回回應。 例如,雲端可以呼叫直接方法來要求裝置在 30 秒內重新啟動。
-
雲端到裝置訊息會接收來自雲端的單向通知。 例如,更新已準備好下載的通知。
若要深入了解,請參閱裝置到雲端的通訊指引和裝置到雲端的通訊指引。
SDK 和程式庫
裝置 SDK 提供高階抽象概念,可讓您在不了解基礎通訊協定的情況下使用基本類型。 裝置 SDK 也會處理建立與雲端安全連線及驗證裝置的詳細資料。
針對 MPU 裝置,裝置 SDK 適用於下列語言:
針對 MCU 裝置,請參閱:
範例和指引
所有裝置 SDK 都包含範例,示範如何使用 SDK 連線到雲端、傳送遙測,以及使用其他基本類型。
您可以在程式碼範例瀏覽器中找到更多範例。
沒有裝置 SDK 的裝置開發
雖然建議您使用其中一個裝置 SDK,但在某些情況下,您可能不想這麼做。 在這些情況下,你的裝置程式碼必須直接使用IoT Hub和裝置配置服務(DPS)所支援的通訊協定之一。
如需詳細資訊,請參閱
模型化和架構
裝置和資產模型會定義裝置和資產與雲端交換的數據。 模型可啟用一系列低程式碼或無程式碼案例,以整合您的裝置和資產與IoT解決方案。
在邊緣連接解決方案中,操作員會配置連接器以連接資產。 此設定包含資產數據與雲端架構之間的對應。 例如,OPC UA 連接器可讓操作員將 OPC UA 節點標識碼映射到與 MQTT 代理交換的 JSON 訊息中的資料點和事件。 下列螢幕快照顯示在數位運營體驗的 Web UI 中定義的兩個這類對應範例:
在解決方案的其他地方,作員可以直接參考 Temperature 和 Tag 10 標籤 ,而不需要知道 OPC UA 節點識別碼的詳細數據。
在雲端連接解決方案中,IoT Plug and Play 讓解決方案建構者能將物聯網裝置整合到解決方案中,無需手動設定。 IoT Plug and Play 的核心是一種裝置型號,裝置用來向支援 IoT Plug and Play 的應用程式(如 IoT Central)宣傳其功能。 此模型是結構化的一組元素,可定義:
- 代表裝置或其他實體的唯讀或可寫入狀態的屬性。 例如,裝置序號可能是只讀屬性,而控溫器上的目標溫度可能是可寫入的屬性。
- 遙測是裝置所發出的資料,無論這項資料是感應器讀數的一般串流、偶爾的錯誤,還是資訊訊息。
- 說明可在裝置上完成之函式或作業的命令。 例如,命令可以重新啟動閘道或使用遠端相機拍照。
您可以將介面中的這些元素分組跨裝置重複使用,以簡化共同作業及加速開發工作。
該模型是使用 數位孿生定義語言(DTDL) 來指定。
IoT Plug and Play、建模與 DTDL 的使用為可選。 你可以在不使用 IoT Plug and Play 或建模的情況下使用 IoT 裝置基本功能。
Azure Digital Twins 服務也使用 DTDL 模型,根據建築物或工廠等環境的數位模型建立雙生圖。
作為裝置開發者,當你實作 IoT Plug and Play 裝置時,有一套必須遵守的慣例。 這些慣例會使用裝置 SDK 中可用的基本類型,在程式碼中實作裝置模型的標準方式。
容器化
容器化是在輕量型隔離環境中封裝和執行程序代碼的方法。 容器是可攜式的,而且可以在支援容器運行時間的任何平台上執行。 容器是封裝和部署程式代碼的好方法,因為它們會為您的程式代碼提供一致的運行時間環境。 運行時間環境通常包含程式碼執行所需的服務、連結庫和套件。
Azure IoT Operations 將所有在邊緣運行的連接器、代理商及其他元件容器化。 Azure IoT Operations 部署到 Kubernetes 叢集,這是一個容器協調平台。 將您建立的任何自定義連接器或其他元件部署至 Kubernetes 叢集。
你可以看到一個解決方案,將 Azure IoT Edge 作為邊緣連接的閘道,連接到 IoT Hub,作為結合邊緣連接與雲端連接解決方案元素的混合解決方案。
如果您使用容器,例如在 Docker 中執行裝置程式代碼,您可以使用容器基礎結構的功能,將程式代碼部署至裝置。 容器也可讓您為程式碼定義執行時間環境,並安裝所有必要的程式庫和套件版本。 容器可讓您更輕鬆地部署更新,以及管理 IoT 裝置的生命週期。
Azure IoT Edge 在容器中執行設備代碼。 你可以使用 Azure IoT Edge 將程式碼模組部署到你的裝置。 欲了解更多,請參閱開發您自己的IoT Edge模組。
下表列出一些可用的 IoT 裝置開發工具:
相關內容