在 IoT Central 外部轉換數據
IoT 裝置會以各種格式傳送數據。 若要搭配IoT Central 應用程式使用裝置資料,您可能需要使用轉換來:
- 讓數據格式與您的IoT Central 應用程式相容。
- 轉換單位。
- 計算新的計量。
- 從其他來源擴充數據。
本文說明如何在輸入或輸出時,在IoT Central外部轉換裝置資料。
注意
IoT Central 也可以在內部轉換數據,以深入瞭解如何將輸入遙測對應至IoT Central,以及轉換IoT Central應用程式內的數據以進行匯出。
下圖顯示包含轉換之資料的三個路由:
下表顯示三個範例轉換類型:
轉換 | 描述 | 範例 | 備註 |
---|---|---|---|
訊息格式 | 轉換成或操作 JSON 訊息。 | CSV 至 JSON | 輸入時。 IoT Central 只接受值 JSON 訊息。 若要深入瞭解,請參閱 遙測、屬性和命令承載。 |
計算 | Azure Functions 可執行的數學函式。 | 從華氏到攝氏的單位轉換。 | 使用輸出模式進行轉換,以透過直接連線到IoT Central來利用可調整的裝置輸入。 轉換數據可讓您使用IoT Central功能,例如視覺效果和作業。 |
訊息擴充 | 在裝置屬性或遙測中找不到外部數據源的擴充。 若要深入了解內部擴充,請參閱使用 Blob 儲存體 將 IoT 數據匯出至雲端目的地。 | 使用 裝置的位置數據 ,將天氣資訊新增至訊息。 | 使用輸出模式進行轉換,以透過直接連線到IoT Central來利用可調整的裝置輸入。 |
必要條件
若要完成本操作指南中的步驟,您需要:
啟用中的 Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
從自定義應用程式範本建立的 IoT Central 應用程式 。 若要深入瞭解,請參閱建立IoT Central 應用程式和關於您的應用程式。
輸入時的數據轉換
若要在輸入時轉換裝置資料,有兩個選項:
IoT Edge:使用IoT Edge模組在將資料傳送至IoT Central應用程式之前,先從下游裝置轉換數據。
IoT Central 裝置網橋:IoT Central 裝置網橋會將其他 IoT 裝置雲端,例如 Sigfox、Particle 和 The Things Network 連線到 IoT Central。 裝置網橋會使用 Azure 函式來轉送數據,而且您可以自定義函式來轉換裝置數據。
使用IoT Edge轉換裝置資料
在此案例中,IoT Edge 模組會在將數據轉送至 IoT Central 應用程式之前,先從下游裝置轉換數據。 概括而言,設定此案例的步驟如下:
設定 IoT Edge 裝置:將 IoT Edge 裝置安裝及布建為閘道,並將網關聯機至 IoT Central 應用程式。
連線 IoT Edge 裝置的下游裝置:連線 IoT Edge 裝置的下游裝置,並將其布建至 IoT Central 應用程式。
在IoT Edge中轉換裝置資料: 建立IoT Edge模組來轉換數據。 將模組部署至IoT Edge閘道裝置,以將轉換的裝置資料轉送至IoT Central應用程式。
驗證:將數據從下游裝置傳送至閘道,並確認已轉換的裝置數據抵達IoT Central應用程式。
在下列各節所述的範例中,下游裝置會將下列格式的 JSON 數據傳送至 IoT Edge 閘道裝置:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "celsius",
}
}
您可以使用 IoT Edge 模組來轉換資料,並將溫度值Celsius
Fahrenheit
從 轉換成 ,再將它傳送至 IoT Central:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "fahrenheit"
}
}
下列步驟說明如何設定及設定此案例:
建置自定義模組
在此案例中,IoT Edge 裝置會執行自定義模組,從下游裝置轉換數據。 在部署和設定 IoT Edge 裝置之前,您需要:
- 建置自定義模組。
- 將自訂模組新增至容器登錄。
IoT Edge 運行時間會從容器登錄下載自定義模組,例如 Azure 容器登錄或 Docker 中樞。 Azure Cloud Shell 具有建立容器登錄、建置模組,以及將模組上傳至登錄所需的所有工具:
若要建立容器登錄:
開啟 Azure Cloud Shell 並登入您的 Azure 訂用帳戶。
選取 Bash 殼層。
執行下列命令來建立 Azure 容器登錄:
REGISTRY_NAME="{your unique container registry name}" az group create --name ingress-scenario --location eastus az acr create -n $REGISTRY_NAME -g ingress-scenario --sku Standard --admin-enabled true az acr credential show -n $REGISTRY_NAME
記下
username
和password
值,您稍後會使用這些和值。 您只需要命令輸出中顯示的其中一個密碼。
若要在 Azure Cloud Shell 中建置自定義模組:
在 Azure Cloud Shell 中,複製包含模組原始程式碼的 GitHub 存放庫:
git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
若要建置自定義模組,請在 Azure Cloud Shell 中執行下列命令:
cd iot-central-transform-with-iot-edge/custommodule/transformmodule az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
先前的命令可能需要幾分鐘的時間才能執行。
設定 IoT Edge 裝置
此案例會使用IoT Edge閘道裝置來轉換來自任何下游裝置的數據。 本節說明如何在IoT Central 應用程式中建立閘道裝置的IoT Central裝置範本。 IoT Edge 裝置會使用部署指令清單來設定其模組。
在此範例中,下游裝置不需要裝置範本。 下游裝置已在IoT Central中註冊,因此您可以產生連接IoT Edge裝置所需的認證。 因為IoT Edge模組會轉換數據,所以所有下游裝置遙測都會抵達IoT Central,就像IoT Edge裝置已傳送一樣。
若要建立IoT Edge閘道裝置的裝置範本:
將部署指令清單的複本儲存至本機開發計算機: moduledeployment.json。
在文本編輯器中開啟moduledeployment.json指令清單檔案的本機複本。
尋找 區
registryCredentials
段,並將佔位元取代為您在建立 Azure 容器登錄時記下的值。 值address
看起來像{your username}.azurecr.io
。settings
尋找 的transformmodule
區段。 將取代{your username}
為您在上一個步驟中使用的相同值。 儲存變更。在您的 IoT Central 應用程式中,流覽至 Edge 指令清單 頁面。
選取 + 新增。 輸入部署指令清單的 Transformer 之類的名稱,然後上傳您先前下載的moduledeployment.json檔案。 部署指令清單包含稱為 transformmodule 的自定義模組。
選取 [下一步],然後選取 [建立]。
在您的 IoT Central 應用程式中,流覽至 [裝置範本 ] 頁面。
選取 [+ 新增],選取 [Azure IoT Edge],然後選取 [ 下一步:自定義]。
輸入 IoT Edge閘道裝置 作為裝置範本名稱。 選取 [這是閘道裝置]。
選取 [ 下一步:檢閱],然後選取 [ 建立]。
在 [ 建立模型 ] 頁面上,選取 [ 自定義模型]。
在模型中,選取 [模組 ],然後 從指令清單匯入模組。 選取 [轉換器部署指令清單],然後選取 [匯入]。
部署指令清單不會指定模組傳送的遙測。 若要將遙測定義新增至裝置範本:
在IoT Edge閘道裝置範本的 [模組] 區段中,選取 [模組轉換模組]。
選取 [新增功能 ],並使用下表中的資訊來新增遙測類型:
設定 值 Display name 裝置 名稱 device 功能類型 遙測 語意類型 無 結構描述 Object 物件定義:
Display name 名稱 結構描述 裝置識別碼 deviceId String 儲存您的變更。
選取 [新增功能 ],並使用下表中的資訊來新增遙測類型:
設定 值 Display name 測量 名稱 measurements 功能類型 遙測 語意類型 無 結構描述 Object 物件定義:
Display name 名稱 結構描述 溫度 溫度 Double 氣壓 壓力 Double 溼度 溼度 Double 調整 級別 String 儲存您的變更。
在模型中,選取 [ 關聯性]。 請勿在 transformmodule 模組中選取 [關聯性]。
選取 [ 新增關聯性]。
輸入 下游感測器 作為顯示名稱、 感測器 作為名稱,然後選取 [任何 ] 作為目標。 選取 [儲存]。
選取 [ 發佈 ] 以發佈裝置範本。
若要在IoT Central 中註冊閘道裝置:
在您的 IoT Central 應用程式中,流覽至 [ 裝置] 頁面。
選取 [IoT Edge 閘道裝置 ],然後選取 [ + 新增]。 輸入IoT Edge閘道裝置作為裝置名稱,輸入 gateway-01 作為裝置識別碼,確定已選取 [IoT Edge 網關裝置] 作為裝置範本,然後選取 [否] 作為 [模擬此裝置?]。 選取 [轉換器 ] 作為邊緣指令清單。 選取 建立。
在裝置清單中,按兩下IoT Edge閘道裝置,然後選取 [連線]。
記下 IoT Edge 閘道裝置的識別碼範圍、裝置識別碼和主鍵值。 您稍後會使用它們。
若要在IoT Central中註冊下游裝置:
在您的 IoT Central 應用程式中,流覽至 [ 裝置] 頁面。
請勿選取裝置範本。 選取 + 新增。 輸入下游 01 作為裝置名稱,輸入 downstream-01 作為裝置識別碼,請確定裝置範本為 [未指派],然後選取 [否] 作為 [模擬此裝置?]。 選取 建立。
在裝置清單中,按兩下 [下游 01 裝置],然後選取 [ 管理裝置 > 附加至閘道]。
在 [鏈接至閘道] 對話框中,選取 [IoT Edge 閘道裝置裝置] 裝置範本,以及 IoT Edge 閘道裝置裝置實例。 選取連結。
在 [下游 01] 裝置上,選取 [連線]。
記下下游 01 裝置的標識碼範圍、裝置標識碼和主鍵值。 您稍後會使用它們。
部署閘道和下游裝置
為了方便起見,本文使用 Azure 虛擬機來執行閘道和下游裝置。 若要建立兩部 Azure 虛擬機,請選取下表後面顯示的 [ 部署至 Azure ] 按鈕。 使用表格中的資訊來完成 自訂部署 表單:
欄位 | 值 |
---|---|
資源群組 | ingress-scenario |
DNS 標籤前置詞閘道 | 此電腦的唯一 DNS 名稱,例如 <your name>edgegateway |
DNS 標籤前置詞下游 | 此電腦的唯一 DNS 名稱,例如 <your name>downstream |
範圍識別碼 | 您先前記下的識別碼範圍 |
裝置標識碼 IoT Edge 閘道 | gateway-01 |
裝置金鑰 IoT Edge 閘道 | 您先前記下的主鍵值 |
驗證類型 | 密碼 |
系統管理員密碼或金鑰 | 您在這兩部虛擬機上選擇 AzureUser 帳戶的密碼。 |
選取 [檢閱 + 建立],然後選取 [建立]。 在輸入案例資源群組中建立虛擬機需要幾分鐘的時間。
若要檢查 IoT Edge 閘道裝置是否正常執行:
開啟IoT Central 應用程式。 然後流覽至 [裝置] 頁面上裝置清單上的 IoT Edge 閘道裝置。
選取 [模組] 索引標籤,並檢查三個模組的狀態。 IoT Edge 運行時間需要幾分鐘的時間才能在虛擬機中啟動。 當虛擬機執行時,三個模組的狀態為 [正在執行]。 如果 IoT Edge 執行時間未啟動,請參閱 針對 IoT Edge 裝置進行疑難解答。
若要讓IoT Edge裝置作為閘道運作,它需要一些憑證,才能向任何下游裝置證明其身分識別。 本文使用示範憑證。 在生產環境中,使用證書頒發機構單位的憑證。
若要產生示範憑證,並將其安裝在閘道裝置上:
使用SSH連線至閘道裝置虛擬機並登入。 您可以在 Azure 入口網站 中找到此虛擬機的 DNS 名稱。 流覽至輸入案例資源群組中的edgegateway虛擬機。
提示
您可能需要在兩部虛擬機上開啟埠 22 以進行 SSH 存取,才能使用 SSH 從本機電腦或 Azure Cloud Shell 進行連線。
執行下列命令以複製 IoT Edge 存放庫併產生示範憑證:
# Clone the repo cd ~ git clone https://github.com/Azure/iotedge.git # Generate the demo certificates mkdir certs cd certs cp ~/iotedge/tools/CACertificates/*.cnf . cp ~/iotedge/tools/CACertificates/certGen.sh . ./certGen.sh create_root_and_intermediate ./certGen.sh create_edge_device_ca_certificate "mycacert"
執行先前的命令之後,下列檔案即可在後續步驟中使用:
- ~/certs/certs/azure-iot-test-only.root.ca.cert.pem - 用來建立所有其他示範憑證以測試 IoT Edge 案例的根 CA 憑證。
- ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem - 從 config.yaml 檔案參考的裝置 CA 憑證。 在閘道案例中,此 CA 憑證是 IoT Edge 裝置向下游裝置驗證其身分識別的方式。
- ~/certs/private/iot-edge-device-mycacert.key.pem - 與裝置 CA 憑證相關聯的私鑰。
若要深入瞭解這些示範憑證,請參閱 建立示範憑證以測試IoT Edge裝置功能。
在 文本編輯器中開啟 config.toml 檔案。 例如:
sudo nano /etc/aziot/config.toml
取消批注和修改憑證設定,如下所示:
trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem" ... [edge_ca] cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem" pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
上述範例假設您已以 AzureUser 身分登入,並建立名為 「mycacert」 的裝置 CA 憑證。
儲存變更並執行下列命令,以確認 config.toml 檔案是否正確:
sudo iotedge check
重新啟動 IoT Edge 執行時間:
sudo iotedge config apply
如果 IoT Edge 運行時間在變更后成功啟動,則$edgeAgent的狀態和$edgeHub模組會變更為 [執行中]。 您可以在 IoT Central 中閘道裝置的 [模組] 頁面上看到這些狀態值。
如果運行時間未啟動,請檢查您在 config.toml 中所做的變更,並參閱針對 IoT Edge 裝置進行疑難解答。
連線 下游裝置至IoT Edge裝置
若要將下游裝置連線到IoT Edge閘道裝置:
使用SSH連線到下游裝置虛擬機並登入。 您可以在 Azure 入口網站 中找到此虛擬機的 DNS 名稱。 流覽至輸入案例資源群組中的分葉裝置虛擬機。
提示
您可能需要在兩部虛擬機上開啟埠 22 以進行 SSH 存取,才能使用 SSH 從本機電腦或 Azure Cloud Shell 進行連線。
若要使用範例下游裝置的原始程式碼複製 GitHub 存放庫,請執行下列命令:
cd ~ git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
若要從閘道裝置複製所需的憑證,請執行下列
scp
命令。 此命令scp
會使用主機名edgegateway
來識別閘道虛擬機。 系統會提示您輸入密碼:cd ~/iot-central-transform-with-iot-edge scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
流覽至 leafdevice 資料夾,並安裝必要的套件。 然後執行
build
和start
腳本,以布建裝置並將裝置連線至閘道:cd ~/iot-central-transform-with-iot-edge/leafdevice sudo apt update curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install nodejs npm install npm run-script build npm run-script start
在命令期間
sudo apt-get install nodejs
,系統可能會要求您允許安裝:如果出現提示,請按下Y
。輸入您先前建立之下游裝置的裝置標識碼、範圍標識碼和SAS 金鑰。 針對主機名稱,輸入
edgegateway
。 命令輸出看起來如下:Registering device downstream-01 with scope 0ne00284FD9 Registered device downstream-01. Connecting device downstream-01 Connected device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01
為了簡單起見,下游裝置的程序代碼會在IoT Central中布建裝置。 一般而言,下游裝置會透過網關聯機,因為它們無法連線到因特網,因此無法連線到裝置布建服務端點。 若要深入瞭解,請參閱 如何透過IoT Edge透明閘道聯機裝置。
Verify
若要確認案例是否正在執行,請流覽至 IoT Central 中的 IoT Edge 閘道裝置 :
選取 [模組]。 確認三個IoT Edge模組 $edgeAgent, $edgeHub 和 transformmodule 正在執行。
選取 [原始數據]。 [裝置] 資料行中的遙測數據看起來像:
{"deviceId":"downstream-01"}
[度量] 數據行中的遙測數據看起來像:
{"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
溫度會以華氏傳送。 由於IoT Edge裝置正在從下游裝置轉換數據,因此遙測會與IoT Central中的閘道裝置相關聯。 若要將已轉換的遙測可視化,請在IoT Edge閘道裝置範本中建立檢視並重新發佈。
輸出的數據轉換
您可以將裝置連線到IoT Central、將裝置資料匯出至計算引擎以轉換裝置,然後將轉換的數據傳送回IoT Central以進行裝置管理和分析。 例如:
- 您的裝置會將位置數據傳送至 IoT Central。
- IoT Central 會將數據匯出至計算引擎,以使用天氣資訊來增強位置數據。
- 計算引擎會將增強型數據傳回IoT Central。
您可以使用 IoT Central裝置網橋 作為計算引擎,轉換從IoT Central匯出的數據。
在輸出中轉換數據的優點是,您的裝置會直接連線到IoT Central,這可讓您輕鬆地將命令傳送至裝置或更新裝置屬性。 不過,透過此方法,您可以使用比每月分配更多的訊息,並增加使用 Azure IoT Central 的成本。
使用IoT Central裝置網橋來轉換裝置數據
在此案例中,計算引擎會先轉換從IoT Central導出的裝置數據,再將其傳送回IoT Central 應用程式。 概括而言,設定此案例的步驟如下:
設定計算引擎: 建立IoT Central裝置網橋,以作為資料轉換的計算引擎。
在裝置網橋中轉換裝置數據: 修改數據轉換使用案例的裝置網橋函式程式代碼,以轉換裝置網橋中的數據。
啟用從IoT Central到裝置網橋的數據流: 將數據從IoT Central匯出至裝置網橋以進行轉換。 然後,將轉換的數據轉送回 IoT Central。 當您建立資料匯出時,請使用訊息屬性篩選來只匯出未轉換的數據。
確認:連線 您的裝置到IoT Central應用程式,並檢查IoT Central中是否有原始裝置資料和已轉換的數據。
在下列各節所述的範例中,裝置會將下列格式的 CSV 數據傳送至 IoT Edge 閘道裝置:
"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"
您可以使用裝置網橋,透過下列方式轉換裝置資料:
- 將溫度單位從centigrade變更為華氏度。
- 使用從 開放天氣 服務提取的緯度和經度值來擴充裝置數據。
然後,裝置網橋會以下列格式將轉換的數據傳送至 IoT Central:
{
"temp": <temperature in degrees F>,
"humidity": <humidity>,
"lat": <latitude>,
"lon": <logitude>,
"weather": {
"weather_temp": <temperature at lat/lon>,
"weather_humidity": <humidity at lat/lon>,
"weather_pressure": <pressure at lat/lon>,
"weather_windspeed": <wind speed at lat/lon>,
"weather_clouds": <cloud cover at lat/lon>,
"weather_uvi": <UVI at lat/lon>
}
}
下列步驟說明如何設定及設定此案例:
擷取 IoT Central 連線設定
在設定此案例之前,您需要從 IoT Central 應用程式取得一些連線設定:
登入IoT Central 應用程式。
流覽至 [許可權 > 裝置連線群組]。
記下標識碼 範圍。 您稍後會使用此值。
選取 SaS-IoT-Devices 註冊群組。 記下共用存取簽章主鍵。 您稍後會使用此值。
設定計算引擎
此案例使用與 IoT Central 裝置網橋相同的 Azure Functions 部署。 若要部署裝置網橋,請選取下表後面顯示的 [ 部署至 Azure ] 按鈕。 使用表格中的資訊來完成 自訂部署 表單:
欄位 | 值 |
---|---|
資源群組 | 建立名為 的新資源群組 egress-scenario |
區域 | 選取最靠近您的區域。 |
範圍識別碼 | 使用您先前記下的識別碼範圍。 |
IoT Central SAS 金鑰 | 使用 SaS-IoT-Devices 註冊群組的共用存取簽章主要密鑰。 您先前已記下此值。 |
選取 [檢閱 + 建立],然後選取 [建立]。 在輸出案例資源群組中建立 Azure 函式和相關資源需要幾分鐘的時間。
轉換裝置網橋中的裝置數據
若要設定裝置網橋以轉換導出的裝置資料:
從 Open Weather 服務取得應用程式 API 金鑰。 帳戶是免費的,但服務使用量有限。 若要建立應用程式 API 金鑰,請在 Open Weather 服務入口網站 中建立帳戶,並遵循指示。 您稍後會使用 Open Weather API 金鑰。
在 Azure 入口網站 中,流覽至輸出案例資源群組中的函式應用程式。
在左側導覽的 [開發工具] 中,選取 [App Service 編輯器][預覽]。
選取 [移至→ ],以開啟 [App Service 編輯器] 頁面。 進行下列變更:
開啟 wwwroot/IoTCIntegration/index.js 檔案。 將此檔案中的所有程式代碼取代為 index.js 中的程序代碼。
在新 index.js中,使用您先前取得的Open Weather API 金鑰來更新
openWeatherAppId
變數檔案。const openWeatherAppId = '<Your Open Weather API Key>'
將訊息屬性新增至函式傳送至 IoT Central 的數據。 IoT Central 會使用這個屬性來防止匯出已轉換的數據。 若要進行這項變更,請開啟 wwwroot/IoTCIntegration/lib/engine.js 檔案。 尋找下列程式碼:
if (timestamp) { message.properties.add('iothub-creation-time-utc', timestamp); }
在上一個代碼段中的程式代碼後面新增下列程式代碼:
// add a message property that we can look for in data export to not re-compute computed telemetry message.properties.add('computed', true);
如需參考,您可以檢視engine.js檔案的完整範例。
在 App Service 編輯器中,選取左側導覽中的 [控制台]。 執行下列命令以安裝必要的套件:
cd IoTCIntegration npm install
執行此命令可能會需要花費幾分鐘。
返回 [Azure 函式概 觀 ] 頁面,然後重新啟動函式:
選取 左側導覽中的 [函式 ]。 然後選取 [IoTCIntegration]。 選取 [程式碼 + 測試]。
記下函式 URL,您稍後需要此值:
啟用從IoT Central到裝置網橋的數據流
本節說明如何設定 Azure IoT Central 應用程式。
首先,將 裝置型號 檔案儲存至本機計算機。
若要將裝置範本新增至 IoT Central 應用程式,請流覽至 IoT Central 應用程式,然後:
登入您的 IoT Central 應用程式,並流覽至 [裝置範本 ] 頁面。
選取 [+ 新增],選取 [IoT 裝置],選取 [下一步:自定義],輸入 計算模型 作為範本名稱。 選取 [下一步:檢閱]。 然後選取建立。
選取 [ 匯入模型 ],然後流覽至 您先前下載model.json 檔案。
匯入模型之後,選取 [發佈 ] 以發佈 計算模型 裝置範本。
設定資料匯出以將資料傳送至裝置網橋:
在 IoT Central 應用程式中,選取 [ 資料匯出]。
選取 [+ 新增目的地 ] 以建立要與裝置網橋搭配使用的目的地。 呼叫目的地 計算函式,針對 [目的地類型 ] 選取 [Webhook]。 針對 [回呼 URL],選取貼上您先前記下的函式 URL。 將授權保留為 [無驗證]。
儲存變更。
選取 [ + 新增匯出 ],然後建立名為 計算匯出的數據導出。
新增篩選條件,只匯出您正在使用之裝置範本的裝置數據。 選取 [+ 篩選],選取專案 [裝置範本],選取 [運算符 等於],然後選取您建立的 計算模型 裝置範本。
新增訊息篩選,以區分已轉換和未轉換的數據。 此篩選可防止將轉換的值傳回裝置網橋。 選取 [+ 訊息] 屬性篩選,然後輸入計算的名稱值,然後選取運算符不存在。 字串
computed
會在裝置網橋範例程式代碼中當做關鍵詞使用。針對目的地,選取您先前建立的 計算函 式目的地。
儲存變更。 一分鐘左右之後,[ 導出] 狀態 會顯示為 [ 狀況良好]。
Verify
您用來測試案例的範例裝置是以Node.js撰寫。 請確定您已在本機計算機上安裝 Node.js 和 npm。 如果您不想安裝這些必要條件,請使用 預安裝它們的 Azure Cloud Shell 。
若要執行測試案例的範例裝置:
複製包含範例程式代碼的 GitHub 存放庫,執行下列命令:
git clone https://github.com/Azure/iot-central-compute
若要將範例裝置連線到IoT Central應用程式,請編輯iot-central-compute/device/device.js 檔案中的聯機設定。 將範圍識別碼和群組 SAS 金鑰取代為您先前記下的值:
// These values need to be filled in from your Azure IoT Central application // const scopeId = "<IoT Central Scope Id value>"; const groupSasKey = "<IoT Central Group SAS key>"; //
儲存變更。
使用下列命令來安裝必要的套件並執行裝置:
cd ~/iot-central-compute/device npm install node device.js
這個指令的結果看起來像下列輸出:
registration succeeded assigned hub=iotc-2bd611b0....azure-devices.net deviceId=computeDevice Client connected send status: MessageEnqueued [{"data":"33.23, 69.09, 30.7213, -61.1192"}] send status: MessageEnqueued [{"data":"2.43, 75.86, -2.6358, 162.935"}] send status: MessageEnqueued [{"data":"6.19, 76.55, -14.3538, -82.314"}] send status: MessageEnqueued [{"data":"33.26, 48.01, 71.9172, 48.6606"}] send status: MessageEnqueued [{"data":"40.5, 36.41, 14.6043, 14.079"}]
在您的IoT Central應用程式中,流覽至名為 computeDevice 的裝置。 在 [ 原始數據 ] 檢視上,每隔五秒就會顯示兩個不同的遙測數據流。 具有未模型數據的數據流是原始遙測,具有模型化數據的數據流是函式轉換的數據:
清除資源
如果您不再需要遵循本指南中的步驟建立的 Azure 資源,請刪除 Azure 入口網站 中的資源群組。
本指南中使用的兩個資源群組是 輸入案例 和 輸出案例。
下一步
在本文中,您已了解在輸入和輸出中轉換 IoT Central 裝置資料的不同選項。 本文包含兩個特定案例的逐步解說:
- 在將數據傳送至IoT Central 應用程式之前,使用IoT Edge模組從下游裝置轉換數據。
- 使用 Azure Functions 在 IoT Central 外部轉換數據。 在此案例中,IoT Central 會使用數據匯出將數據傳送至要轉換的 Azure 函式。 函式會將轉換的數據傳回IoT Central 應用程式。
既然您已瞭解如何在 Azure IoT Central 應用程式外部轉換裝置數據,您可以瞭解如何 使用數據總管來分析 IoT Central 中的裝置數據。