Share via


在 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來利用可調整的裝置輸入。

必要條件

若要完成本操作指南中的步驟,您需要:

輸入時的數據轉換

若要在輸入時轉換裝置資料,有兩個選項:

  • IoT Edge:使用IoT Edge模組在將資料傳送至IoT Central應用程式之前,先從下游裝置轉換數據。

  • IoT Central 裝置網橋:IoT Central 裝置網橋會將其他 IoT 裝置雲端,例如 Sigfox、Particle 和 The Things Network 連線到 IoT Central。 裝置網橋會使用 Azure 函式來轉送數據,而且您可以自定義函式來轉換裝置數據。

使用IoT Edge轉換裝置資料

使用IoT Edge進行輸入的數據轉換

在此案例中,IoT Edge 模組會在將數據轉送至 IoT Central 應用程式之前,先從下游裝置轉換數據。 概括而言,設定此案例的步驟如下:

  1. 設定 IoT Edge 裝置:將 IoT Edge 裝置安裝及布建為閘道,並將網關聯機至 IoT Central 應用程式。

  2. 連線 IoT Edge 裝置的下游裝置:連線 IoT Edge 裝置的下游裝置,並將其布建至 IoT Central 應用程式。

  3. 在IoT Edge中轉換裝置資料: 建立IoT Edge模組來轉換數據。 將模組部署至IoT Edge閘道裝置,以將轉換的裝置資料轉送至IoT Central應用程式。

  4. 驗證:將數據從下游裝置傳送至閘道,並確認已轉換的裝置數據抵達IoT Central應用程式。

在下列各節所述的範例中,下游裝置會將下列格式的 JSON 數據傳送至 IoT Edge 閘道裝置:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "celsius",
  }
}

您可以使用 IoT Edge 模組來轉換資料,並將溫度值CelsiusFahrenheit從 轉換成 ,再將它傳送至 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 具有建立容器登錄、建置模組,以及將模組上傳至登錄所需的所有工具:

若要建立容器登錄:

  1. 開啟 Azure Cloud Shell 並登入您的 Azure 訂用帳戶。

  2. 選取 Bash 殼層。

  3. 執行下列命令來建立 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
    

    記下 usernamepassword 值,您稍後會使用這些和值。 您只需要命令輸出中顯示的其中一個密碼。

若要在 Azure Cloud Shell建置自定義模組:

  1. 在 Azure Cloud Shell,複製包含模組原始程式碼的 GitHub 存放庫:

    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  2. 若要建置自定義模組,請在 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閘道裝置的裝置範本:

  1. 將部署指令清單的複本儲存至本機開發計算機: moduledeployment.json

  2. 在文本編輯器中開啟moduledeployment.json指令清單檔案的本機複本。

  3. 尋找 區 registryCredentials 段,並將佔位元取代為您在建立 Azure 容器登錄時記下的值。 值 address 看起來像 {your username}.azurecr.io

  4. settings尋找 的 transformmodule區段。 將取代 {your username} 為您在上一個步驟中使用的相同值。 儲存變更。

  5. 在您的 IoT Central 應用程式中,流覽至 Edge 指令清單 頁面。

  6. 選取 + 新增。 輸入部署指令清單的 Transformer 之類的名稱,然後上傳您先前下載的moduledeployment.json檔案。 部署指令清單包含稱為 transformmodule 的自定義模組。

  7. 選取 [下一步],然後選取 [建立]

  8. 在您的 IoT Central 應用程式中,流覽至 [裝置範本 ] 頁面。

  9. 選取 [+ 新增],選取 [Azure IoT Edge],然後選取 [ 下一步:自定義]。

  10. 輸入 IoT Edge閘道裝置 作為裝置範本名稱。 選取 [這是閘道裝置]。

  11. 選取 [ 下一步:檢閱],然後選取 [ 建立]。

  12. 在 [ 建立模型 ] 頁面上,選取 [ 自定義模型]。

  13. 在模型中,選取 [模組 ],然後 從指令清單匯入模組。 選取 [轉換器部署指令清單],然後選取 [匯入]。

部署指令清單不會指定模組傳送的遙測。 若要將遙測定義新增至裝置範本:

  1. 在IoT Edge閘道裝置範本的 [模組] 區段中,選取 [模組轉換模組]。

  2. 選取 [新增功能 ],並使用下表中的資訊來新增遙測類型:

    設定
    Display name 裝置
    名稱 device
    功能類型 遙測
    語意類型
    結構描述 Object

    物件定義:

    Display name 名稱 結構描述
    裝置識別碼 deviceId String

    儲存您的變更。

  3. 選取 [新增功能 ],並使用下表中的資訊來新增遙測類型:

    設定
    Display name 測量
    名稱 measurements
    功能類型 遙測
    語意類型
    結構描述 Object

    物件定義:

    Display name 名稱 結構描述
    溫度 溫度 Double
    氣壓 壓力 Double
    溼度 溼度 Double
    調整 級別 String

    儲存您的變更。

  4. 在模型中,選取 [ 關聯性]。 請勿在 transformmodule 模組中選取 [關聯]。

  5. 選取 [ 新增關聯性]。

  6. 輸入 下游感測器 作為顯示名稱、 感測器 作為名稱,然後選取 [任何 ] 作為目標。 選取 [儲存]。

  7. 選取 [ 發佈 ] 以發佈裝置範本。

若要在IoT Central 中註冊閘道裝置:

  1. 在您的 IoT Central 應用程式中,流覽至 [ 裝置] 頁面。

  2. 選取 [IoT Edge 閘道裝置 ],然後選取 [ + 新增]。 輸入IoT Edge閘道裝置作為裝置名稱,輸入 gateway-01 作為裝置識別碼,確定已選取 [IoT Edge 網關裝置] 作為裝置範本,然後選取 [否] 作為 [模擬此裝置?]。 選取 [轉換器 ] 作為邊緣指令清單。 選取 建立

  3. 在裝置清單中,按兩下IoT Edge閘道裝置,然後選取 [連線]。

  4. 記下 IoT Edge 閘道裝置識別碼範圍裝置識別碼主鍵值。 您稍後會使用它們。

若要在IoT Central中註冊下游裝置:

  1. 在您的 IoT Central 應用程式中,流覽至 [ 裝置] 頁面。

  2. 請勿選取裝置範本。 選取 + 新增。 輸入下游 01 作為裝置名稱,輸入 downstream-01 作為裝置識別碼,請確定裝置範本為 [未指派],然後選取 [否] 作為 [模擬此裝置?]。 選取 建立

  3. 在裝置清單中,按兩下 [下游 01 裝置],然後選取 [ 管理裝置 > 附加至閘道]。

  4. 在 [鏈接至閘道] 對話框中,選取 [IoT Edge 閘道裝置裝置] 裝置範本,以及 IoT Edge 閘道裝置裝置實例。 選取連結

  5. [下游 01] 裝置上,選取 [連線]。

  6. 記下下游 01 裝置的標識碼範圍裝置標識碼主鍵值。 您稍後會使用它們。

部署閘道和下游裝置

為了方便起見,本文使用 Azure 虛擬機來執行閘道和下游裝置。 若要建立兩部 Azure 虛擬機,請選取下表後面顯示的 [ 部署至 Azure ] 按鈕。 使用表格中的資訊來完成 自訂部署 表單:

欄位
資源群組 ingress-scenario
DNS 標籤前置詞閘道 此電腦的唯一 DNS 名稱,例如 <your name>edgegateway
DNS 標籤前置詞下游 此電腦的唯一 DNS 名稱,例如 <your name>downstream
範圍識別碼 您先前記下的識別碼範圍
裝置標識碼 IoT Edge 閘道 gateway-01
裝置金鑰 IoT Edge 閘道 您先前記下的主鍵值
驗證類型 密碼
系統管理員密碼或金鑰 您在這兩部虛擬機上選擇 AzureUser 帳戶的密碼。

部署至 Azure 按鈕

選取 [檢閱 + 建立],然後選取 [建立]。 在輸入案例資源群組中建立虛擬機需要幾分鐘的時間。

若要檢查 IoT Edge 閘道裝置是否正常執行:

  1. 開啟IoT Central 應用程式。 然後流覽至 [裝置] 頁面上裝置清單上的 IoT Edge 閘道裝置

  2. 選取 [模組] 索引標籤,並檢查三個模組的狀態。 IoT Edge 運行時間需要幾分鐘的時間才能在虛擬機中啟動。 當虛擬機執行時,三個模組的狀態為 [正在執行]。 如果 IoT Edge 執行時間未啟動,請參閱 針對 IoT Edge 裝置進行疑難解答。

若要讓IoT Edge裝置作為閘道運作,它需要一些憑證,才能向任何下游裝置證明其身分識別。 本文使用示範憑證。 在生產環境中,使用證書頒發機構單位的憑證。

若要產生示範憑證,並將其安裝在閘道裝置上:

  1. 使用SSH連線至閘道裝置虛擬機並登入。 您可以在 Azure 入口網站 中找到此虛擬機的 DNS 名稱。 流覽至輸入案例資源群組中的edgegateway虛擬機。

    提示

    您可能需要在兩部虛擬機上開啟埠 22 以進行 SSH 存取,才能使用 SSH 從本機電腦或 Azure Cloud Shell 進行連線。

  2. 執行下列命令以複製 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裝置功能

  3. 文本編輯器中開啟 config.toml 檔案。 例如:

    sudo nano /etc/aziot/config.toml
    
  4. 取消批注和修改憑證設定,如下所示:

    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 憑證。

  5. 儲存變更並執行下列命令,以確認 config.toml 檔案是否正確:

    sudo iotedge check
    
  6. 重新啟動 IoT Edge 執行時間:

    sudo iotedge config apply
    

如果 IoT Edge 運行時間在變更后成功啟動,則$edgeAgent的狀態$edgeHub模組會變更為 [執行中]。 您可以在 IoT Central 中閘道裝置的 [模組] 頁面上看到這些狀態值

如果運行時間未啟動,請檢查您在 config.toml所做的變更,並參閱針對 IoT Edge 裝置進行疑難解答。

連線 下游裝置至IoT Edge裝置

若要將下游裝置連線到IoT Edge閘道裝置:

  1. 使用SSH連線到下游裝置虛擬機並登入。 您可以在 Azure 入口網站 中找到此虛擬機的 DNS 名稱。 流覽至輸入案例資源群組中的分葉裝置虛擬機。

    提示

    您可能需要在兩部虛擬機上開啟埠 22 以進行 SSH 存取,才能使用 SSH 從本機電腦或 Azure Cloud Shell 進行連線。

  2. 若要使用範例下游裝置的原始程式碼複製 GitHub 存放庫,請執行下列命令:

    cd ~
    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  3. 若要從閘道裝置複製所需的憑證,請執行下列 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
    
  4. 流覽至 leafdevice 資料夾,並安裝必要的套件。 然後執行 buildstart 腳本,以布建裝置並將裝置連線至閘道:

    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

  5. 輸入您先前建立之下游裝置的裝置標識碼、範圍標識碼和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$edgeHubtransformmodule 正在執行。

  • 選取 [原始數據]。 [裝置] 資料行中的遙測數據看起來像:

    {"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 Edge進行輸出的數據轉換

在此案例中,計算引擎會先轉換從IoT Central導出的裝置數據,再將其傳送回IoT Central 應用程式。 概括而言,設定此案例的步驟如下:

  1. 設定計算引擎: 建立IoT Central裝置網橋,以作為資料轉換的計算引擎。

  2. 在裝置網橋中轉換裝置數據: 修改數據轉換使用案例的裝置網橋函式程式代碼,以轉換裝置網橋中的數據。

  3. 啟用從IoT Central到裝置網橋的數據流: 將數據從IoT Central匯出至裝置網橋以進行轉換。 然後,將轉換的數據轉送回 IoT Central。 當您建立資料匯出時,請使用訊息屬性篩選來只匯出未轉換的數據。

  4. 確認:連線 您的裝置到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 應用程式取得一些連線設定:

  1. 登入IoT Central 應用程式。

  2. 流覽至 [許可權 > 裝置連線群組]。

  3. 記下標識碼 範圍。 您稍後會使用此值。

  4. 選取 SaS-IoT-Devices 註冊群組。 記下共用存取簽章主鍵。 您稍後會使用此值。

設定計算引擎

此案例使用與 IoT Central 裝置網橋相同的 Azure Functions 部署。 若要部署裝置網橋,請選取下表後面顯示的 [ 部署至 Azure ] 按鈕。 使用表格中的資訊來完成 自訂部署 表單:

欄位
資源群組 建立名為 的新資源群組 egress-scenario
區域 選取最靠近您的區域。
範圍識別碼 使用您先前記下的識別碼範圍
IoT Central SAS 金鑰 使用 SaS-IoT-Devices 註冊群組的共用存取簽章主要密鑰。 您先前已記下此值。

部署至 Azure.

選取 [檢閱 + 建立],然後選取 [建立]。 在輸出案例資源群組中建立 Azure 函式和相關資源需要幾分鐘的時間。

轉換裝置網橋中的裝置數據

若要設定裝置網橋以轉換導出的裝置資料:

  1. 從 Open Weather 服務取得應用程式 API 金鑰。 帳戶是免費的,但服務使用量有限。 若要建立應用程式 API 金鑰,請在 Open Weather 服務入口網站 中建立帳戶,並遵循指示。 您稍後會使用 Open Weather API 金鑰。

  2. 在 Azure 入口網站 中,流覽至輸出案例資源群組中的函式應用程式。

  3. 在左側導覽的 [開發工具] 中,選取 [App Service 編輯器][預覽]。

  4. 選取 [移至→ ],以開啟 [App Service 編輯器] 頁面。 進行下列變更:

    1. 開啟 wwwroot/IoTCIntegration/index.js 檔案。 將此檔案中的所有程式代碼取代為 index.js 中的程序代碼。

    2. 在新 index.js中,使用您先前取得的Open Weather API 金鑰來更新 openWeatherAppId 變數檔案。

      const openWeatherAppId = '<Your Open Weather API Key>'
      
    3. 將訊息屬性新增至函式傳送至 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檔案的完整範例。

  5. 在 App Service 編輯器中,選取左側導覽中的 [控制台]。 執行下列命令以安裝必要的套件:

    cd IoTCIntegration
    npm install
    

    執行此命令可能會需要花費幾分鐘。

  6. 返回 [Azure 函式概 ] 頁面,然後重新啟動函式:

    重新啟動函式

  7. 選取 左側導覽中的 [函式 ]。 然後選取 [IoTCIntegration]。 選取 [程式碼 + 測試]

  8. 記下函式 URL,您稍後需要此值:

    取得函式 URL

啟用從IoT Central到裝置網橋的數據流

本節說明如何設定 Azure IoT Central 應用程式。

首先,將 裝置型號 檔案儲存至本機計算機。

若要將裝置範本新增至 IoT Central 應用程式,請流覽至 IoT Central 應用程式,然後:

  1. 登入您的 IoT Central 應用程式,並流覽至 [裝置範本 ] 頁面。

  2. 選取 [+ 新增],選取 [IoT 裝置],選取 [下一步:自定義],輸入 計算模型 作為範本名稱。 選取 [下一步:檢閱]。 然後選取建立

  3. 選取 [ 匯入模型 ],然後流覽至 您先前下載model.json 檔案。

  4. 匯入模型之後,選取 [發佈 ] 以發佈 計算模型 裝置範本。

設定資料匯出以將資料傳送至裝置網橋:

  1. 在 IoT Central 應用程式中,選取 [ 資料匯出]。

  2. 選取 [+ 新增目的地 ] 以建立要與裝置網橋搭配使用的目的地。 呼叫目的地 計算函式,針對 [目的地類型 ] 選取 [Webhook]。 針對 [回呼 URL],選取貼上您先前記下的函式 URL。 將授權保留為 [無驗證]。

  3. 儲存變更。

  4. 選取 [ + 新增匯出 ],然後建立名為 計算匯出的數據導出

  5. 新增篩選條件,只匯出您正在使用之裝置範本的裝置數據。 選取 [+ 篩選],選取專案 [裝置範本],選取 [運算符 等於],然後選取您建立的 計算模型 裝置範本。

  6. 新增訊息篩選,以區分已轉換和未轉換的數據。 此篩選可防止將轉換的值傳回裝置網橋。 選取 [+ 訊息] 屬性篩選,然後輸入計算的名稱值,然後選取運算符不存在。 字串 computed 會在裝置網橋範例程式代碼中當做關鍵詞使用。

  7. 針對目的地,選取您先前建立的 計算函 式目的地。

  8. 儲存變更。 一分鐘左右之後,[ 導出] 狀態 會顯示為 [ 狀況良好]。

Verify

您用來測試案例的範例裝置是以Node.js撰寫。 請確定您已在本機計算機上安裝 Node.js 和 npm。 如果您不想安裝這些必要條件,請使用 預安裝它們的 Azure Cloud Shell

若要執行測試案例的範例裝置:

  1. 複製包含範例程式代碼的 GitHub 存放庫,執行下列命令:

    git clone https://github.com/Azure/iot-central-compute
    
  2. 若要將範例裝置連線到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>";
    //
    

    儲存變更。

  3. 使用下列命令來安裝必要的套件並執行裝置:

    cd ~/iot-central-compute/device
    npm install
    node device.js
    
  4. 這個指令的結果看起來像下列輸出:

    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"}]
    
  5. 在您的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 中的裝置數據。