共用方式為


為 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 模組來轉換資料,並將溫度值從 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 Hub。 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. 尋找 transformmodulesettings 區段。 以上個步驟中使用的相同值取代 {your username}。 儲存變更。

  5. 在您的 IoT Central 應用程式中,瀏覽至 [Edge 資訊清單] 頁面。

  6. 選取 + 新增。 輸入部署資訊清單的名稱 (如 [轉換器]),然後上傳您先前下載的 moduledeployment.json 檔案。 部署指令清單包含稱為 轉換模組的自定義模組

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

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

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

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

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

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

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

部署資訊清單不會指定模組所傳送的遙測。 若要在裝置範本中新增遙測定義:

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

  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 虛擬機器。

    提示

    您可能需要開啟兩部虛擬機器上的 SSH 存取連接埠 22,才能使用 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 名稱。 瀏覽至 [輸入案例] 資源群組中的 leafdevice 虛擬機器。

    提示

    您可能需要開啟兩部虛擬機器上的 SSH 存取連接埠 22,才能使用 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":"fahrenheit"}
    

傳送溫度時會以華氏為單位。 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>"

您可以使用裝置橋接器,透過下列方式轉換裝置資料:

  • 將溫度單位從攝氏變更為華氏。
  • 使用從 Open Weather 服務提取的天氣資料來擴充裝置資料,以取得緯度和經度值。

然後,裝置橋接器會以下列格式將已轉換的資料傳送至 IoT Central:

{
  "temp": <temperature in degrees F>,
  "humidity": <humidity>,
  "lat": <latitude>,
  "lon": <longitude>,
  "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 Edge 模組,在將資料傳送至 IoT Central 應用程式之前,先從下游裝置轉換資料。
  • 使用 Azure Functions 轉換 IoT Central 外部的資料。 在此案例中,IoT Central 會使用資料匯出,將傳入資料傳送至要轉換的 Azure 函式。 函式會將已轉換的資料傳回您的 IoT Central 應用程式。