教學課程:建置端對端解決方案

此 Azure Digital Twins 教學課程說明如何建置示範服務功能的端對端解決方案。 若要設定由環境即時資料驅動的完整端對端解決方案,您可以將 Azure Digital Twins 實例連線到其他 Azure 服務,以管理裝置和資料。

在本教學課程中,您將...

  • 設定 Azure Digital Twins 實例
  • 瞭解範例建置案例,並具現化預先撰寫的元件
  • 使用 Azure Functions 應用程式將模擬遙測從 IoT 中樞 裝置路由傳送至數位對應項屬性
  • 使用 Azure Functions、端點和路由處理數位對應項通知,透過對應項圖形傳播變更

必要條件

開始本教學課程之前,請先從下列必要條件開始:

  • 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶
  • 本教學課程使用 .NET。 您可以從下載 .NET 下載多個平臺 的最新版本 .NET SDK。

然後,繼續進行本節的其餘部分,以設定其餘必要條件。

取得範例資源

本教學課程是由 以 C# 撰寫的 Azure Digital Twins 端對端範例專案所驅動。 流覽至範例連結,然後選取 標題下方的 [流覽程式碼 ] 按鈕,以取得電腦上的範例專案。

這會帶您前往範例的 GitHub 存放庫,您可以選取 [程式碼 ] 按鈕, 然後選取 [下載 ZIP] 作為 .zip 下載。

Screenshot of the digital-twins-samples repo on GitHub, highlighting the steps to download it as a zip.

這會將 .ZIP 檔案夾下載到您的電腦,做為 digital-twins-samples-main.zip 。 解壓縮資料夾並解壓縮檔案。

準備 Azure Digital Twins 實例

若要使用本文中的 Azure Digital Twins,您需要 Azure Digital Twins 實例和使用它所需的許可權。 如果您已設定 Azure Digital Twins 實例,您可以使用該實例並跳至下一節。 否則,請遵循設定實例和驗證 中的 指示。 這些指示包含可協助您確認已順利完成每個步驟的資訊。

設定實例之後,請記下實例的主機名稱。 您可以在 Azure 入口網站 中找到主機名稱。

備妥環境以使用 Azure CLI

設定 CLI 會話

若要開始在 CLI 中使用 Azure Digital Twins,首先要做的是登入,並將 CLI 內容設定為此會話的訂用帳戶。 在 CLI 視窗中執行下列命令:

az login
az account set --subscription "<your-Azure-subscription-ID>"

提示

您也可以使用訂用帳戶名稱,而不是上述命令中的識別碼。

如果這是您第一次搭配 Azure Digital Twins 使用此訂用帳戶,請執行此命令以向 Azure Digital Twins 命名空間註冊。 (如果你不確定,即使你曾經做過,也沒關係再執行它了。

az provider register --namespace 'Microsoft.DigitalTwins'

接下來,您將新增適用于 Azure CLI Microsoft Azure IoT 擴充功能,以啟用與 Azure Digital Twins 和其他 IoT 服務互動的命令。 執行此命令以確定您有最新版本的擴充功能:

az extension add --upgrade --name azure-iot

現在您已準備好在 Azure CLI 中使用 Azure Digital Twins。

您可以隨時執行 az dt --help 來確認此情況,以查看可用的最上層 Azure Digital Twins 命令清單。

設定範例專案

接下來,設定將與您的 Azure Digital Twins 實例互動的範例用戶端應用程式。

在您的電腦上流覽至您稍早從 Azure Digital Twins 端對端範例 下載的資料夾(如果您尚未解壓縮,請將它解壓縮)。

在資料夾內,流覽至 digital-twins-samples-main\AdtSampleApp\SampleClientApp ,然後開啟 appsettings.json 檔案。 此 JSON 檔案包含執行專案所需的組態變數。

在檔案主體中,將 變更 instanceUrl 為您的 Azure Digital Twins 實例主機名稱 URL(方法是在主機名稱前面新增 HTTPs:// ,如下所示)。

{
  "instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}

儲存後關閉檔案。

設定本機 Azure 認證

此範例會在本機電腦上執行 Azure Digital Twins 實例時,使用 DefaultAzureCredential (程式庫的 Azure.Identity 一部分)來驗證使用者。 如需用戶端應用程式使用 Azure Digital Twins 進行驗證之不同方式的詳細資訊,請參閱 撰寫應用程式驗證碼

使用 DefaultAzureCredential 時,此範例會在本機環境中搜尋認證,例如在本機 Azure CLI Visual Studio 或 Visual Studio Code 中登入。 基於這個理由,您應該 透過下列其中一個機制在本機登入 Azure ,以設定範例的認證。

如果您使用 Visual Studio 或 Visual Studio Code 來執行程式碼範例,請確定您已 使用您想要用來存取 Azure Digital Twins 實例的相同 Azure 認證登入該編輯器 。 如果您使用本機 CLI 視窗,請執行 az login 命令來登入您的 Azure 帳戶。 之後,當您執行程式碼範例時,應該會自動進行驗證。

開始使用建置案例

本教學課程中使用的範例專案代表真實世界的建築物案例,其中包含樓層、會議室和控溫器裝置。 這些元件將會以數位方式呈現在 Azure Digital Twins 實例中,然後連線到 IoT 中樞 事件方格 和兩 個 Azure 函 式,以啟用資料移動。

下圖代表完整的案例。

您必須先建立 Azure Digital Twins 實例( 圖表中的 A 區段),然後設定裝置遙測資料流程到數位對應項(箭頭 B ),然後透過對應項圖形設定資料傳播( 箭頭 C )。

Diagram of the full building scenario, which shows the data flowing from a device into and out of Azure Digital Twins through various Azure services.

若要完成此案例,您將與您稍早下載的預先撰寫範例應用程式的元件互動。

以下是建置案例 AdtSampleApp 範例應用程式所實作的元件:

  • 裝置驗證
  • .NET (C#) SDK 使用範例 (在 CommandLoop.cs 中找到
  • 呼叫 Azure Digital Twins API 的主控台介面
  • SampleClientApp - 範例 Azure Digital Twins 解決方案
  • SampleFunctionsApp - Azure Functions 應用程式,可根據來自IoT 中樞和 Azure Digital Twins 事件的裝置遙測來更新 Azure Digital Twins 圖表

具現化預先建立的對應項圖形

首先,您將使用範例專案中的 AdtSampleApp 解決方案來建置端對端案例的 Azure Digital Twins 片段( A 節):

Diagram of an excerpt from the full building scenario diagram highlighting the Azure Digital Twins instance section.

開啟本機 主控台視窗 ,並流覽至 digital-twins-samples-main\AdtSampleApp\SampleClientApp 資料夾。 使用這個 dotnet 命令執行 SampleClientApp 專案:

dotnet run

專案將會開始執行、執行驗證,並等候命令。 在此主控台中,執行下一個命令來具現化範例 Azure Digital Twins 解決方案。

重要

如果您的 Azure Digital Twins 實例中已經有數位對應項和關聯性,則執行此命令將會刪除它們,並將它們取代為範例案例的對應項和關聯性。

SetupBuildingScenario

此命令的輸出是一系列確認訊息,因為 Azure Digital Twins 實例中會建立並聯機三 個數字對應項 :名為 floor1 的地板、名為 room21 的房間,以及名為控溫器的溫度感應器67。 這些數位對應項代表存在於真實世界環境中的實體。

它們會透過關聯性連線到下列 對應項圖表 。 對應項圖表代表整個環境,包括實體彼此互動和關聯的方式。

Diagram showing that floor1 contains room21, and room21 contains thermostat67.

您可以執行下列命令來驗證已建立的對應項,其會查詢連線的 Azure Digital Twins 實例中所包含的所有數位對應項:

Query

您現在可以停止執行專案。 不過,讓主控台視窗在此位置保持開啟,因為您稍後會在教學課程中再次使用此應用程式。

設定範例函式應用程式

下一個步驟是設定 將在本教學課程中使用的 Azure Functions 應用程式 來處理資料。 函式應用程式 SampleFunctionsApp 包含兩個函式:

  • ProcessHubToDTEvents :處理傳入IoT 中樞資料並據以更新 Azure Digital Twins
  • ProcessDTRoutedData :處理數位對應項的資料,並據以更新 Azure Digital Twins 中的父對應項

在本節中,您將發佈預先撰寫的函式應用程式,並確保函式應用程式可以藉由指派 Microsoft Entra 身分識別來存取 Azure Digital Twins。

函式應用程式是您下載的範例專案的一部分,位於 digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp 資料夾中。

發行應用程式

若要將函式應用程式發佈至 Azure,您必須建立儲存體帳戶,然後在 Azure 中建立函式應用程式,最後將函式發佈至 Azure 函式應用程式。 本節會使用 Azure CLI 完成這些動作。 在每個命令中,以您自己的資源詳細資料取代角括弧中的任何預留位置。

  1. 執行下列命令來建立 Azure 儲存體帳戶:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. 執行下列命令來建立 Azure 函式應用程式:

    az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --runtime-version 7 --resource-group <resource-group>
    
  3. 接下來,您將壓縮函式,並將其發佈至新的 Azure 函式應用程式。

    1. 在您的電腦上開啟主控台視窗,並流覽至 所下載範例專案內的 digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp 資料夾。

    2. 在主控台中,執行下列命令,在本機發佈專案:

      dotnet publish -c Release -o publish
      

      此命令會將專案發佈至 digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish 目錄。

    3. 使用慣用的方法,建立位於 digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish 目錄內的 已發佈檔案 ZIP。 將 ziped 資料夾 命名為 publish.zip

      重要

      請確定 ziped 資料夾不包含發佈 資料夾本身的額外圖層 。 它應該只包含 publish 資料夾內 的內容。

      以下是 ZIP 內容外觀的影像(視您的 .NET 版本而定可能會變更)。

      Screenshot of File Explorer in Windows showing the contents of the publish zip folder.

    現在,您可以關閉用來準備專案的本機主控台視窗。 最後一個步驟將在 Azure CLI 中完成。

  4. 在 Azure CLI 中,執行下列命令,將已發佈和壓縮的函式部署至您的 Azure 函式應用程式:

    az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
    

    提示

    如果您在本機使用 Azure CLI,您可以使用電腦上的路徑直接存取電腦上的 ZIP 檔案。

    如果您使用 Azure Cloud Shell,請先使用此按鈕將 ZIP 檔案上傳至 Cloud Shell,再執行命令:

    Screenshot of the Azure Cloud Shell highlighting how to upload files.

    在此情況下,檔案會上傳至 Cloud Shell 儲存體的根目錄,因此您可以直接以命令參數的名稱 --src 來參照檔案(如 中所示 --src publish.zip )。

    成功的部署會回應狀態碼 202,並輸出 JSON 物件,其中包含新函式的詳細資料。 您可以在結果中尋找此欄位,以確認部署成功:

    "provisioningState": "Succeeded",
    

函式現在應該發佈至 Azure 中的函式應用程式。 您可以使用下列 CLI 命令來確認這兩個函式都已成功發佈。 每個命令都有資源群組和函式應用程式名稱的預留位置。 這些命令會列印已發行之 ProcessDTRoutedData ProcessHubToDTEvents 函 式的相關資訊。

az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessDTRoutedData
az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessHubToDTEvents

接下來,您的函式應用程式必須具有正確的許可權,才能存取您的 Azure Digital Twins 實例。 您將在下一節中設定此存取權。

設定函式應用程式的許可權

函式應用程式必須設定兩個設定,才能存取您的 Azure Digital Twins 實例,這兩個設定都可以使用 Azure CLI 來完成。

指派存取角色

第一個設定會為函式應用程式 提供 Azure Digital Twins 資料擁有者 角色在 Azure Digital Twins 實例中。 任何想要在 實例上執行許多資料平面活動的使用者或函式都需要此角色。 您可以在 Azure Digital Twins 解決方案 的安全性和角色指派中 深入瞭解安全性。

  1. 使用下列命令建立 函式的系統指派身 分識別。 輸出會顯示已建立之身分識別的詳細資料。 記下 輸出中要用於下一個步驟的 principalId 欄位。

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. 使用下列命令中的 principalId 值,將函數應用程式的身分識別指派給您 Azure Digital Twins 執行個體的「Azure Digital Twins 資料擁有者」角色。

    az dt role-assignment create --resource-group <your-resource-group> --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
    

此命令的結果會輸出您所建立角色指派的相關資訊。 函式應用程式現在具有存取 Azure Digital Twins 實例中資料的許可權。

設定應用程式設定

第二個設定會使用 Azure Digital Twins 實例的 URL,為函式建立環境變數。 函式程式碼會使用此變數的值來參考您的實例。 如需環境變數的詳細資訊,請參閱 管理函式應用程式

執行下列命令,填入您的資源詳細資料預留位置。

az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"

輸出是 Azure 函式的設定清單,現在應該包含名為 ADT_SERVICE_URL 的專案。

處理來自IoT 中樞裝置的模擬遙測

Azure Digital Twins 圖表是由來自實際裝置的遙測所驅動。

在此步驟中,您會將註冊于 IoT 中樞 模擬控溫器裝置連線到 Azure Digital Twins 中代表它的數位對應項。 當模擬裝置發出遙測時,資料會透過 ProcessHubToDTEvents Azure 函式導向,以觸發數位對應項中的對應更新。 如此一來,數位對應項會持續掌握真實裝置的資料。 在 Azure Digital Twins 中,將事件資料從某個位置導向另一個位置的程式稱為 路由事件

處理模擬遙測會在端對端案例的這個部分中發生( 箭頭 B ):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows elements before Azure Digital Twins.

以下是您將完成以設定此裝置連線的動作:

  1. 建立將管理模擬裝置的 IoT 中樞
  2. 藉由設定事件訂用帳戶,將 IoT 中樞連線至適當的 Azure 函式
  3. 在 IoT 中樞註冊模擬裝置
  4. 執行模擬裝置並產生遙測
  5. 查詢 Azure Digital Twins 以查看即時結果

建立 IoT 中樞執行個體

Azure Digital Twins 的設計目的是與IoT 中樞 一起 運作,這是一項 Azure 服務,可用來管理裝置及其資料。 在此步驟中,您將設定 IoT 中樞,以管理本教學課程中的範例裝置。

在 Azure CLI 中,使用此命令來建立新的 IoT 中樞:

az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1

此命令的輸出是所建立 IoT 中樞的相關資訊。

儲存您授與 IoT 中樞的名稱 。 稍後您將會用到此資訊。

將 IoT 中樞連線至 Azure 函式

接下來,將 IoT 中樞連線到 您稍早發佈的函式應用程式中的 ProcessHubToDTEvents Azure 函式,讓資料可以透過更新 Azure Digital Twins 的函式,從裝置IoT 中樞流動。

若要這樣做,您將會在IoT 中樞上建立 事件訂 用帳戶,並使用 Azure 函式作為端點。 此「訂閱」函式,以IoT 中樞中發生的事件。

使用下列 CLI 命令來建立事件訂用帳戶。 有一個預留位置可供您輸入事件訂用帳戶的名稱,也有預留位置可供您輸入訂用帳戶識別碼、資源群組、IoT 中樞名稱,以及函式應用程式的名稱。

az eventgrid event-subscription create --name <name-for-hub-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Devices/IotHubs/<your-IoT-hub> --included-event-types Microsoft.Devices.DeviceTelemetry --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessHubToDTEvents

輸出會顯示已建立之事件訂閱的相關資訊。 您可以確認 provisioningState 結果中的值,以確認作業已順利完成:

"provisioningState": "Succeeded",

提示

如果命令傳回資源提供者錯誤,請將 Microsoft.EventGrid 新增為資源提供者至您的訂用帳戶。 您可以依照註冊資源提供者 中的指示,在Azure 入口網站中 執行此動作。

使用 IoT 中樞 註冊模擬裝置

本節會在識別碼控溫器67 的IoT 中樞中建立裝置標記法。 模擬裝置會連線到此標記法,也就是遙測事件如何從裝置進入IoT 中樞。 IoT 中樞是上一個步驟中已訂閱的 Azure 函式正在接聽的位置,可供挑選事件並繼續處理。

在 Azure CLI 中,使用下列命令在 IoT 中樞 中建立裝置:

az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>

輸出是所建立裝置的相關資訊。

設定和執行模擬

接下來,設定裝置模擬器將資料傳送至IoT 中樞實例。

首先,使用下列命令取得 IoT 中樞連接字串。 連接字串值會以 開頭 HostName=

az iot hub connection-string show --hub-name <your-IoT-hub-name>

然後,使用此命令取得裝置連接字串:

az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>

接下來,將這些值插入本機專案中的裝置模擬器程式碼,以將模擬器連線到此 IoT 中樞和 IoT 中樞裝置。

在本機電腦上流覽至下載的範例資料夾,然後流覽至 digital-twins-samples-main\DeviceSimulator\DeviceSimulator 資料夾。 開啟 AzureIoTHub.cs 檔案進行編輯。 將下列連接字串值變更為您收集上述的值:

private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";

儲存檔案。

現在,若要查看您已設定的資料模擬結果,請開啟新的本機主控台視窗,並流覽至 digital-twins-samples-main\DeviceSimulator\DeviceSimulator

注意

您現在應該有兩個開啟的 主控台視窗:一個開啟至 DeviceSimulator\DeviceSimulator 資料夾,另一個來自先前開啟的主控台視窗仍會開啟至 AdtSampleApp\SampleClientApp 資料夾。

使用下列 dotnet 命令來執行裝置模擬器專案:

dotnet run

專案將會開始執行,並開始顯示模擬的溫度遙測訊息。 這些訊息會傳送至IoT 中樞,然後由 Azure 函式挑選並處理這些訊息。

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

您不需要在此主控台中執行任何其他動作,但在完成後續步驟時讓它保持執行狀態。

查看 Azure Digital Twins 中的結果

您稍早發佈的 ProcessHubToDTEvents 函式會接聽IoT 中樞資料,並呼叫 Azure Digital Twins API 來更新 Temperature 控溫器67 對應項上的屬性。

若要查看 Azure Digital Twins 端的資料,請切換至開啟至 AdtSampleApp\SampleClientApp 資料夾的其他主控台視窗 使用 dotnet run 執行 SampleClientApp 專案。

dotnet run

一旦專案執行並接受命令,請執行下列命令,以取得數位對應項控溫器所報告的溫度67:

ObserveProperties thermostat67 Temperature

您應該會看到 Azure Digital Twins 實例每兩秒記錄到主控台的即時更新溫度。 它們應該反映資料模擬器正在產生的值(您可以並排放置主控台視窗以確認值座標)。

注意

可能需要幾秒鐘的時間,裝置的資料才會傳播到對應項。 在資料開始到達之前,前幾個溫度讀數可能會顯示為 0。

Screenshot of the console output showing log of temperature messages from digital twin thermostat67.

確認即時溫度記錄已成功運作之後,您就可以停止執行這兩個專案。 讓主控台視窗保持開啟,因為您稍後會在教學課程中再次使用這些視窗。

透過圖表傳播 Azure Digital Twins 事件

在本教學課程中,您已瞭解如何從外部裝置資料更新 Azure Digital Twins。 接下來,您將瞭解如何透過 Azure Digital Twins 圖表傳播一個數位對應項的變更,換句話說,如何從服務內部資料更新對應項。

若要這樣做,您將使用 ProcessDTRoutedData Azure 函式,在連線的 控溫器對應項更新時更新會議室對應項。 更新功能會在端對端案例的這個部分中發生( 箭頭 C ):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows the elements after Azure Digital Twins.

以下是您將完成以設定此資料流程的動作:

  1. 建立事件方格主題 ,以在 Azure 服務之間移動資料
  2. 在 Azure Digital Twins 中建立端點 ,以將實例連線至事件方格主題
  3. 在 Azure Digital Twins 中設定路由 ,以將對應項屬性變更事件傳送至端點
  4. 設定在端點的 Event Grid 主題上接聽的 Azure 函 式、接收傳送至該處的對應項屬性變更事件,並據以更新圖形中的其他對應項

建立事件方格主題

事件方格 是一項 Azure 服務,可協助將事件從 Azure 服務路由傳送至 Azure 內的其他地方。 您可以建立 事件方格主題 ,從來源收集特定事件,然後訂閱者可以接聽主題,以在事件通過時接收事件。

在 Azure CLI 中,執行下列命令來建立事件方格主題:

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

此命令的輸出是您建立之事件方格主題的相關資訊。 儲存您授與事件方格主題的名稱 ,因為您稍後會使用它。

建立端點

接下來,在 Azure Digital Twins 中建立事件方格端點,以將您的實例連線到事件方格主題。 使用下列命令,填入上一個步驟中事件方格主題的名稱,並視需要填入其他預留位置欄位。

az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>

此命令的輸出是您建立之端點的相關資訊。

provisioningState尋找輸出中的欄位,並檢查值是否為 「成功」。

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of Succeeded.

它也可能會說「布建」,這表示端點仍在建立中。 如果是,請稍候幾秒鐘,然後執行下列命令來檢查端點的狀態。 重複直到 provisioningState 顯示「成功」為止。

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

儲存端點的名稱 ,因為您稍後會使用它。

建立路由

接下來,建立 Azure Digital Twins 路由,以將事件傳送至您所建立的事件方格端點。

使用下列 CLI 命令,視需要填入上一個步驟中端點的名稱和其他預留位置欄位。 此命令會轉送對應項圖形中發生的所有事件。

提示

您可以使用篩選 條件,將事件限制為僅限特定 事件。

az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>

此命令的輸出是您建立之路由的一些資訊。

注意

端點(來自上一個步驟)必須先完成布建,才能設定使用這些端點的事件路由。 如果路由建立失敗,因為端點尚未就緒,請稍候幾分鐘,然後再試一次。

連線 Azure 函式

接下來,將 ProcessDTRoutedData Azure 函式訂閱至您稍早建立的事件方格主題,讓遙測資料可以透過 Event Grid 主題流向函式,以返回 Azure Digital Twins 並據以更新 room21 對應項。

若要這樣做,您將建立事件方格訂用帳戶,以將資料從您稍早建立的事件方格主題傳送至 ProcessDTRoutedData Azure 函式。

使用下列 CLI 命令來建立事件訂用帳戶。 有一個預留位置可供您輸入此事件訂用帳戶的名稱,也有預留位置可供您輸入訂用帳戶識別碼、資源群組、事件方格主題的名稱,以及函式應用程式的名稱。

az eventgrid event-subscription create --name <name-for-topic-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessDTRoutedData

執行模擬並查看結果

現在,事件應該能夠從模擬裝置流向 Azure Digital Twins,並透過 Azure Digital Twins 圖形適當地更新對應項。 在本節中,您將再次執行裝置模擬器,以啟動您已設定的完整事件流程,並查詢 Azure Digital Twins 以查看即時結果

移至開啟至 DeviceSimulator\DeviceSimulator 資料夾的 主控台視窗,並使用 執行裝置模擬器專案 dotnet run

就像您第一次執行裝置模擬器一樣,專案會開始執行並顯示模擬的溫度遙測訊息。 這些事件會通過您稍早設定的流程來更新控溫器67 對應項,然後通過您最近設定的流程來更新 room21 對應項以符合。

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

您不需要在此主控台中執行任何其他動作,但在完成後續步驟時讓它保持執行狀態。

若要查看 Azure Digital Twins 端的資料,請移至開啟至 AdtSampleApp\SampleClientApp 資料夾的其他主控台視窗 ,並使用 執行 SampleClientApp 專案 dotnet run

一旦專案執行並接受命令,請執行下列命令,以取得數位對應項控溫器67 和數位對應項室21 所報告的溫度。

ObserveProperties thermostat67 Temperature room21 Temperature

您應該會看到 Azure Digital Twins 實例每兩秒記錄到主控台的即時更新溫度。 請注意,room21 的溫度正在更新,以符合控溫器的更新67。

Screenshot of the console output showing a log of temperature messages, from a thermostat and a room.

驗證實例的即時溫度記錄成功後,您就可以停止執行這兩個專案。 您也可以關閉這兩個主控台視窗,因為教學課程現在已完成。

檢閱

以下是您在本教學課程中建置的案例檢閱。

  1. Azure Digital Twins 實例會以數位方式代表樓層、會議室和控溫器(如下圖所示 的 A 區段所代表)
  2. 模擬裝置遙測會傳送至 IoT 中樞,其中 ProcessHubToDTEvents Azure 函式正在接聽遙測事件。 ProcessHubToDTEvents Azure 函式會使用這些事件中的資訊來設定 Temperature 控溫器67 上的屬性( 圖表中的箭號 B )。
  3. Azure Digital Twins 中的屬性變更事件會路由傳送至事件方格主題,其中 ProcessDTRoutedData Azure 函式正在接聽事件。 ProcessDTRoutedData Azure 函式會使用這些事件中的資訊來設定 Temperature room21 上的 屬性( 圖表中的箭號 C )。

Diagram from the beginning of the article showing the full building scenario.

清除資源

完成本教學課程之後,您可以根據接下來要執行的動作,選擇要移除的資源。

  • 如果您不需要在本教學課程中建立的任何資源,您可以使用 az group delete CLI 命令,刪除本文 中的 Azure Digital Twins 實例和所有其他資源。 這會刪除資源群組中的所有 Azure 資源,以及資源群組本身。

    重要

    刪除資源群組是無法復原的。 資源群組及其中包含的所有資源都會永久刪除。 請確定您不會不小心刪除錯誤的資源群組或資源。

    開啟 Azure Cloud Shell 或本機 CLI 視窗,然後執行下列命令來刪除資源群組及其包含的所有專案。

    az group delete --name <your-resource-group>
    
  • 如果您想要繼續使用本文中設定的 Azure Digital Twins 實例,但請清除其部分或所有模型、對應項和關聯性,您可以使用 az dt CLI 命令來刪除您想要移除的元素。

    此選項不會移除本教學課程中建立的任何其他 Azure 資源(IoT 中樞、Azure Functions 應用程式等等)。 您可以使用適用于每個資源類型的 dt 命令 ,個別 刪除這些命令。

您也可以從本機電腦刪除專案資料夾。

下一步

在本教學課程中,您已建立端對端案例,顯示 Azure Digital Twins 是由即時裝置資料所驅動。

接下來,開始查看概念檔,以深入瞭解您在教學課程中使用的專案: