在輸入過程中將遙測資料對應至 IoT Central
資料對應可將複雜的裝置遙測資料轉換成 IoT Central 內的結構化資料。 針對每部裝置,您可以將裝置遙測資料訊息中的特定 JSON 路徑對應至別名。 別名是對應目標的自訂名稱。 IoT Central 會使用對應,在傳輸過程中將遙測資料轉換成 IoT Central 資料。 您可以使用對應的遙測資料來:
- 在 IoT Central 中建立裝置範本和裝置管理作業。
- 將多個裝置上的 JSON 路徑對應至一般別名,將不同裝置的遙測資料正常化。
- 匯出至 IoT Central 外部的目的地。
提示
如果您想要從非模型遙測自動產生裝置範本,請參閱自動產生裝置範本 (部分機器翻譯)。
下列影片會逐步引導您完成資料對應程序:
對應裝置的遙測資料
對應會使用 JSONPath 運算式來識別傳入遙測訊息中的值以對應至別名。
JSONPath 運算式的開頭為 $
字元,該字元會參考訊息的根項目。 $
後面會接著以方括弧分隔的子項目序列。 例如:
$["messages"]["tmp"]
$["opcua"]["payload"][0]["value"]
$["Messages"]["Payload"]["nsu=http://microsoft.com/Opc/OpcPlc/;s=FastUInt1"]["Value"]
IoT Central 使用 JSONPath 運算式語法的子集:
- 每個區段都只能是非負數或以雙引號括住的字串。
- 區段不能包含反斜線、方括弧或雙引號。
- JSON 路徑不得超過 1,000 個字元。
若要在 IoT Central 應用程式中建立對應,請選擇下列其中一個選項以瀏覽至 [對應資料] 面板:
從任何裝置頁面上,選取 [管理裝置] > [對應資料]:
在裝置的 [原始資料] 檢視中,展開任何遙測訊息,將滑鼠指標停留在路徑上,然後選取 [新增別名]。 [對應資料] 面板隨即會開啟,顯示 JSONPath 運算式已複製到 [JSON 路徑] 欄位中:
[對應資料] 面板的左側會顯示來自您裝置的最新訊息。 將滑鼠停留在資料的任何部分,然後選取 [新增別名]。 JSONPath 運算式會複製到 [JSON 路徑] 中。 新增不超過 64 個字元的別名名稱。 您無法使用別名來參考裝置範本中所定義複雜物件的欄位。
視需要新增多個對應,然後選取 [儲存]:
針對指定的裝置:
- 任何對應的 JSON 路徑都不能相同。
- 任何對應的別名都不能相同。
提示
您可能需要等候數分鐘,裝置才會傳送遙測訊息以顯示在左側面板中。 如果左側面板中仍然沒有顯示資料,您可以在 [JSON 路徑] 欄位中手動輸入 JSONPath 運算式。
若要確認 IoT Central 是否有對應遙測資料,請瀏覽至裝置的 [原始資料] 檢視,並檢查 _mappeddata
區段:
如果您在重新整理 [原始資料] 之後沒有看到對應的資料,請檢查您使用的 JSONPath 運算式是否符合遙測訊息的結構。
若使用 IoT Edge 裝置,資料對應會套用至來自所有 IoT Edge 模組和中樞的遙測資料。 您無法將對應套用至特定 Azure IoT Edge 模組。
若裝置已指派給裝置範本,您無法對應元件或繼承介面的資料。 不過,您可以在將裝置指派給裝置範本之前,先對應裝置中的任何資料。
管理對應
若要檢視、編輯或刪除對應,請瀏覽至 [對應別名] 頁面。 選取要編輯或刪除的對應。 您可以同時選取多個對應並刪除:
根據預設,從 IoT Central 匯出的資料會包含對應的資料。 若要排除對應的資料,請在資料匯出中使用資料轉換功能。
對應未建模的遙測資料
您可以對應未建模的遙測資料,包括來自未建模元件的遙測資料。 例如,假設在根元件中定義了 workingSet
遙測資料,並在控溫器元件中定義了 temperature
遙測資料,如下列範例所示:
{
"_unmodeleddata": {
"workingSet": 74
},
"_eventtype": "Telemetry",
"_timestamp": "2022-07-18T09:22:40.257Z"
}
{
"_unmodeleddata": {
"thermostat2": {
"__t": "c",
"temperature": 44
}
},
"_eventtype": "Telemetry",
"_timestamp": "2022-07-18T09:21:48.69Z"
}
您可以使用下列對應定義來對應這些遙測資料:
$["workingSet"] ws
$["temperature"] temp
注意
對應定義中請勿包含元件名稱。
這些對應規則的結果看起來會如下列範例所示:
{
"telemetries": {
"workingSet": 84,
"_mappeddata": {
"ws": 84
}
}
}
{
"_unmodeleddata": {
"thermostat2": {
"__t": "c",
"temperature": 12
},
"_mappeddata": {
"thermostat2": {
"__t": "c",
"temp": 12
}
}
},
"_eventtype": "Telemetry",
"_timestamp": "2022-07-18T09:31:21.088Z"
}
現在您可以使用對應的別名,在圖表或儀表板上顯示遙測資料。 您也可以在匯出遙測資料時使用對應的別名。