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