Azure IoT Hub 自動裝置管理透過自動化重複且複雜的任務,簡化管理大型裝置群的流程。 透過自動裝置與模組配置,您可以根據裝置的屬性來鎖定裝置,指定想要的設定,並讓 IoT Hub 在裝置符合定義條件時自動套用更新。 此方法能讓您監控設定狀態、解決衝突,並分階段推出變更,以提升控制與合規性。
備註
本文中所述的功能僅適用於 IoT 中樞的標準層。 如需有關基本和標準/免費 IoT 中樞服務層級的詳細資訊,請參閱為您的解決方案選擇合適的 IoT 中樞層和大小 (英文)。
自動裝置管理概述
自動裝置管理透過對裝置雙胞胎或模組雙胞胎群組套用期望屬性,並利用報告的屬性彙整結果來運作。 此過程使用一種稱為 配置(Configuration)的專用 JSON 文件,包含三個主要組件:
目標條件定義了要更新的裝置雙胞胎或模組雙胞胎的範圍。 目標條件會以查詢形式來指定於對應項標籤和/或回報的屬性上。
目標內容定義了目標裝置雙胞胎或模組雙胞胎中希望新增或更新的屬性。 內容包含一條通往欲更改屬性區塊的路徑。
指標元件提供如成功、進行中和錯誤等配置狀態的摘要計數。 你可以透過查詢雙胞胎報告屬性來定義自訂指標,而系統指標則會自動追蹤更新狀態,包括有多少雙胞胎被鎖定及有多少成功更新。
自動配置會在設定建立後不久首次運行,之後每五分鐘一次。 每次自動設定執行時都會執行指標查詢。 標準層 IoT 中樞最多支援 100 種自動設定;免費層 IoT 中樞只支援十種。 限速限制也適用。 欲了解更多,請參閱 配額與限速。
先決條件
實作對應項
自動裝置配置需要使用裝置雙胞胎來在雲端與裝置之間同步狀態。 如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的裝置對應項。
自動模組配置需要使用模組孿生體來同步雲端與模組之間的狀態。 欲了解更多資訊,請參閱 「理解並使用物聯網中心中的模組雙胞胎」。
用標籤鎖定雙胞胎
在建立設定之前,你必須指定想影響的裝置或模組。 Azure IoT Hub 透過裝置雙胞胎中的標籤來識別裝置,並透過模組雙胞胎中的標籤來識別模組。 每個裝置或模組可以有多個標籤,你可以用任何符合你解決方案的方式來定義它們。 例如,如果管理的裝置位於不同位置,則可將下列標籤新增至裝置對應項:
"tags": {
"location": {
"state": "Washington",
"city": "Tacoma"
}
},
建立設定
你可以在標準層級 IoT 中樞上建立最多 100 種自動設定;在免費層級 IoT 中樞上可以建立 10 種。 欲了解更多,請參閱 配額與限速。
在 Azure 入口網站中,移至您的 IoT 中樞。
在左側導覽欄選「 配置+部署 」。
選擇 新增 ,並從下拉選單中選擇 裝置雙生組態 或 模組雙生組態 。
建立配置有五個步驟。 下列各節將逐步解說每一個步驟。
名稱與唱片公司
- 為您的配置輸入一個獨特的名稱。 名稱最多可包含 128 個字元,並可能包含小寫字母及以下特殊字元:
-+%_*!'。 不允許空格。 - 新增標籤來組織和描述你的配置。 標籤是鍵值對,例如
HostPlatform, Linux或Version, 3.0.1。 - 選取 下一步 以繼續。
雙重設定
透過為每個設定提供兩個輸入,設定目標裝置對應項或模組對應項所需屬性。 首先,指定對應項路徑,指向要更新的對應項所需屬性中的 JSON 區段。 接著輸入要插入該位置的 JSON 內容。
例如,你可以將 twin 路徑設為 , properties.desired.chiller-water 然後提供以下 JSON 內容:
{
"temperature": 66,
"pressure": 28
}
您也可以藉由指定完整對應項路徑,並提供不含括弧的值來設定個別設定。 例如,利用雙路徑 properties.desired.chiller-water.temperature,設定內容為 66。 接著為壓力屬性建立新的雙重設定。
若兩個或以上配置針對同一條雙重路徑,則適用最高優先權配置的內容(優先權定義於步驟4)。
如果你想移除現有的財產,請指定財產價值為 null。
你可以選擇 新增裝置雙重設定 或 新增模組雙重設定來新增。
目標裝置或模組
利用雙生子的 tags 屬性來鎖定應該接收此配置的特定裝置或模組。 您也可以將對應項回報屬性設為目標。
自動裝置配置只能鎖定裝置雙標籤,自動模組配置只能鎖定模組雙標籤。
由於多個配置可能針對同一裝置或模組,每個配置都需要一個優先順序號碼。 如果發生衝突,優先權最高的配置會勝出。
輸入一個正整數作為設定優先 權。 數值最高的被視為最高優先權。 若兩個配置的優先順序相同,則最近建立的組態勝出。
輸入 目標條件 以判斷此配置中目標的裝置或模組。 該條件基於雙重標籤或雙重報告屬性,且應符合表達式格式。
自動裝置設定時,你可以只指定標籤或回報屬性作為目標。 例如,
tags.environment='test'或properties.reported.chillerProperties.model='4000x'。 你可以指定*以針對所有裝置。針對自動模組設定,請使用查詢,從註冊於 IoT 中樞的模組來指定標籤或回報屬性。 例如,
from devices.modules where tags.environment='test'或from devices.modules where properties.reported.chillerProperties.model='4000x'。 萬用字元無法用於針對所有模組。
Metrics
指標提供裝置或模組在套用配置內容後可能回報的各種狀態的總括數量。 例如,你可以建立一個待處理設定變更的指標、錯誤指標,以及成功設定變更指標。
每個配置最多可有五個自訂指標。
輸入度量名稱。
輸入一個「 指標標準」查詢。 查詢是根據裝置對應項報告屬性。 該指標代表查詢回傳的列數。
例如:
SELECT deviceId FROM devices WHERE properties.reported.chillerWaterSettings.status='pending'你可以加入一個子句,說明該配置已被套用,例如:
/* Include the double brackets. */ SELECT deviceId FROM devices WHERE configurations.[[yourconfigname]].status='Applied'如果要建置計量來回報已設定的模組,請從
devices.modules選取moduleId。 例如:SELECT deviceId, moduleId FROM devices.modules WHERE properties.reported.lastDesiredStatus.code = 200
檢閱設定
檢視你的設定資訊,然後選擇 提交。
監控設定
要查看設定細節並監控執行該設定的裝置,請使用以下步驟:
在 Azure 入口網站中,移至您的 IoT 中樞。
在裝置管理中選擇 配置 。
檢查設定清單。 針對每種配置,您可以查看以下細節:
ID - 配置名稱。
目標條件 - 用於定義目標裝置或模組的查詢。
優先權 - 分配給該組態的優先權編號。
建立時間 - 設定建立的時間戳記。 此時間戳記用於在兩個配置優先順序相同時打破平手。
系統指標 ——由 IoT Hub 計算,且開發者無法自訂的指標。 [目標] 會指定符合目標條件的裝置對應項數目。 [套用] 會指定由設定所修改的裝置對應項數目,這在有優先順序較高的個別設定同時也做出變更的情況下,可能會包含局部修改。
自訂指標 ——由開發者指定為查詢的指標,針對雙重報告屬性。 每個配置最多可定義五項自訂指標。
選擇你想監控的設定。
檢查設定細節。 你可以使用分頁查看收到設定的裝置細節。
目標裝置 或 目標模組 ——符合目標條件的裝置或模組。
指標 - 系統指標與自訂指標的清單。 你可以在下拉選單中選擇指標,然後選擇 「檢視裝置 」或 「檢視模組」,查看每個指標所計數的裝置或模組清單。
標籤 - 用於描述配置的鍵值對。 標籤對功能沒有影響。
裝置雙重設定 或 模組雙重設定 ——由設定設定(如果有的話)所設定的雙重設定。
修改設定
當你修改設定時,這些變更會立即複製到所有目標裝置或模組。
若更新目標條件,會發生以下更新:
如果一個雙胞胎未符合舊目標條件,但符合新目標條件,且該配置是該雙胞胎的最高優先權,則該配置會被套用。
如果目前運行此配置的雙胞胎不再符合目標條件,該設定中的設定將被移除,並由下一個優先順序較高的配置修改。
如果目前運行此配置的雙胞胎不再符合目標條件,且其他配置的目標條件不符,則該配置中的設定將被移除,且不再對該配置進行其他變更。
要修改配置,請使用以下步驟:
- 在 Azure 入口網站中,移至您的 IoT 中樞。
- 在裝置管理中選擇 配置 + 部署 。
- 選擇你想修改的設定。
- 你可以更新以下欄位:優先權、指標、目標條件和標籤。
- 選取 [儲存]。
- 請依照 「監控配置 」中的步驟,觀察變更逐步展開。
刪除設定
當你刪除一個設定時,任何裝置孿生都會套用下一個較高優先順序的設定。 如果裝置雙胞胎未符合其他配置的目標條件,則不會套用其他設定。
- 在 Azure 入口網站中,移至您的 IoT 中樞。
- 在裝置管理中選擇 配置 + 部署 。
- 使用勾選框選擇你想刪除的設定。
- 選擇 刪除。
- 提示會要求你確認。
先決條件
有效的 Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
Azure 訂用帳戶中的 IoT 中樞。 如果您還沒有中樞,可遵循建立 IoT 中樞中的步驟。
在你的環境中使用 Azure CLI。 至少你的 Azure CLI 版本必須是 2.0.70 或更新版本。 用
az –-version來驗證。 此版本支援 az 擴充指令,並引入 Knack 指令框架。Azure CLI 的物聯網擴充。
備註
本文使用最新版的 Azure IoT 擴充功能,稱為 azure-iot。 舊版稱為 azure-cli-iot-ext。 您一次只能安裝一個版本。 您可以使用 az extension list 命令來驗證目前安裝的延伸模組。
使用 az extension remove --name azure-cli-iot-ext 移除舊版的擴充功能。
使用 az extension add --name azure-iot 新增新版的擴充功能。
若要檢視目前安裝的擴充功能,請使用 az extension list。
實作對應項
自動裝置配置需要使用裝置雙胞胎來在雲端與裝置之間同步狀態。 如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的裝置對應項。
自動模組配置需要使用模組孿生體來同步雲端與模組之間的狀態。 欲了解更多資訊,請參閱 「理解並使用物聯網中心中的模組雙胞胎」。
用標籤鎖定雙胞胎
在建立設定之前,你必須指定想影響的裝置或模組。 Azure IoT 中樞可在裝置對應項中使用標籤來識別裝置,以及在模組對應項中使用標籤來識別模組。 每個裝置或模組可以有多個標籤,你可以用任何符合你解決方案的方式來定義它們。 例如,如果管理的裝置位於不同位置,則可將下列標籤新增至裝置對應項:
"tags": {
"location": {
"state": "Washington",
"city": "Tacoma"
}
},
定義目標內容與指標
目標內容和計量查詢指定為 JSON 文件,即說明裝置對應項或模組對應項要設定、報告、測量的屬性。 要使用 Azure CLI 建立自動設定,請將目標內容和指標儲存在本地,作為 .txt 檔案。 當你執行命令將設定套用到裝置時,會在之後的部分使用檔案路徑。
以下是自動裝置設定的基本目標內容範例:
{
"content": {
"deviceContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
}
自動模組配置的行為相似,但你是針對 moduleContent 而非 deviceContent。
{
"content": {
"moduleContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
}
以下是度量查詢的範例:
{
"queries": {
"Compliant": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'",
"Error": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='error'",
"Pending": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='pending'"
}
}
模組的計量查詢也類似於裝置的查詢,但您要從 devices.modules 選取 moduleId。 例如:
{
"queries": {
"Compliant": "select deviceId, moduleId from devices.module where configurations.[[chillermodulesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'"
}
}
建立設定
你可以在標準層級 IoT 中樞上建立最多 100 種自動設定;在免費層級 IoT 中樞上可以建立 10 種。 欲了解更多,請參閱 配額與限速。
你透過建立包含目標內容和指標的設定來設定目標裝置。 請使用以下指令建立設定:
az iot hub configuration create --config-id [configuration id] \
--labels [labels] --content [file path] --hub-name [hub name] \
--target-condition [target query] --priority [int] \
--metrics [metric queries]
-- config-id - 物聯網中樞建立的設定名稱。 給你的配置一個最多 128 字元的獨特名稱。 允許使用小寫字母及以下特殊字元:
-+%_*!'。 不允許空格。-- 標籤 - 新增標籤以協助追蹤你的設定。 標籤是名稱和值配對,用來描述你的部署。 例如,
HostPlatform, Linux或Version, 3.0.1-- 內容 - 針對目標內容的內嵌 JSON 或檔案路徑,將設定為對應項所需屬性。
-- hub-name - 建立該配置的物聯網集線器名稱。 中樞必須在目前訂用帳戶中。 用指令切換到想要的訂閱
az account set -s [subscription name]-- 目標條件 - 輸入目標條件以決定使用此配置將被鎖定哪些裝置或模組。 對於自動裝置配置,條件基於裝置雙胞胎標籤或裝置雙胞胎期望屬性,且應符合表達式格式。 例如,
tags.environment='test'或properties.desired.devicemodel='4000x'。 針對自動模組設定,條件會基於模組對應項標籤或模組對應項所需屬性。 例如,from devices.modules where tags.environment='test'或from devices.modules where properties.reported.chillerProperties.model='4000x'。-- 優先權 - 正整數。 若針對同一裝置或模組有兩個或以上配置,則優先權值最高的配置適用。
-- 度量指標 - 用於查詢度量指標的檔案路徑。 指標提供裝置或模組在套用配置內容後可能回報的各種狀態的總括數量。 例如,你可以建立一個待處理設定變更的指標、錯誤指標,以及成功設定變更指標。
監控設定
請使用以下指令顯示設定內容:
az iot hub configuration show --config-id [configuration id] \
--hub-name [hub name]
-- config-id - 物聯網中樞中存在的設定名稱。
-- hub-name - 存在該配置的物聯網集線名稱。 中樞必須在目前的訂閱中。 用指令
az account set -s [subscription name]切換到想要的訂閱。
檢查指令視窗中的設定。 指標屬性列出每個集線器評估的每個指標的計數。
targetedCount - 一種系統指標,指定物聯網中與目標條件相符的裝置雙胞胎或模組雙胞胎數量。
appliedCount - 系統指標指定已套用目標內容的裝置或模組數量。
你的自訂指標 ——你定義的任何指標都是使用者指標。
您可以使用以下指令顯示每個度量的裝置 ID、模組 ID 或物件清單:
az iot hub configuration show-metric --config-id [configuration id] \
--metric-id [metric id] --hub-name [hub name] --metric-type [type]
-- config-id - 存在於物聯網集線中的部署名稱。
-- metric-id - 你想查看裝置 ID 或模組 ID 清單的度量名稱,例如
appliedCount。-- hub-name - 部署所在物聯網樞紐名稱。 中樞必須在目前訂用帳戶中。 用指令
az account set -s [subscription name]切換到想要的訂閱。-- 度量型態 - 度量型態可以是
system或user。 系統指標為targetedCount和appliedCount。 其他所有指標都是使用者指標。
修改設定
當你修改設定時,這些變更會立即複製到所有目標裝置。
若更新目標條件,會發生以下更新:
如果一個雙胞胎未符合舊目標條件,但符合新目標條件,且該配置是該雙胞胎的最高優先權,則該配置會被套用。
如果目前運行此配置的雙胞胎不再符合目標條件,該設定中的設定將被移除,並由下一個優先順序較高的配置修改。
如果目前運行此配置的雙胞胎不再符合目標條件,且其他配置的目標條件不符,則該配置中的設定將被移除,且不再對該配置進行其他變更。
請使用以下指令更新組態:
az iot hub configuration update --config-id [configuration id] \
--hub-name [hub name] --set [property1.property2='value']
-- config-id - 物聯網中樞中存在的設定名稱。
-- hub-name - 存在該配置的物聯網集線名稱。 中樞必須在目前訂用帳戶中。 用指令
az account set -s [subscription name]切換到想要的訂閱。-- set - 更新設定中的屬性。 您可以更新以下屬性:
targetCondition - 例如
targetCondition=tags.location.state='Oregon'labels
priority
刪除設定
刪除設定後,任何裝置對應項或模組對應項會採用優先順序次高的設定。 如果雙胞胎未達到其他配置的目標條件,則不會套用其他設定。
請使用以下指令刪除設定:
az iot hub configuration delete --config-id [configuration id] \
--hub-name [hub name]
-- config-id - 物聯網中樞中存在的設定名稱。
-- hub-name - 存在該配置的物聯網集線名稱。 中樞必須在目前的訂閱中。 用指令
az account set -s [subscription name]切換到想要的訂閱。
後續步驟
在本文中,你學會了如何大規模配置與監控物聯網裝置。
欲了解如何批量管理 IoT Hub 裝置身份,請參閱 「匯入與匯出 IoT Hub 裝置身份批量」