共用方式為


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

本 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 檔案。

GitHub 上數位雙胞胎範例儲存庫的截圖,重點標示將它下載為 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 的 Azure IoT 擴充功能Microsoft,以啟用與 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 認證

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

使用 DefaultAzureCredential時,範例會在本機環境中搜尋認證,例如 本機 Azure CLI 中的 Azure 登入,或在 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)。

完整建置案例的圖表,其中顯示透過各種 Azure 服務從裝置流入和流出 Azure Digital Twins 的數據。

為一步步完成此案例,您要與先前下載之預先撰寫範例應用程式的元件互動。

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

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

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

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

從完整建築案例圖表摘錄的圖表,當中醒目提示 Azure Digital Twins 執行個體區段。

開啟本機 [主控台視窗],然後瀏覽至 [digital-twins-samples-main\AdtSampleApp\SampleClientApp] 資料夾。 使用下方 dotnet 命令執行 [SampleClientApp] 專案:

dotnet run

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

重要事項

如果您的 Azure Digital Twins 執行個體中已經有數位分身和關聯性,執行此命令會刪除這些項目,並替換為範例案例的對應項和關聯性。

SetupBuildingScenario

此命令的輸出是一系列確認訊息,因為會在您的 Azure Digital Twins 實例中創建並連接三個數位雙胞胎:名為 floor1 的地板、名為 room21 的房間,以及名為 thermostat67 的溫度感測器。 這些數位分身代表真實環境中可能存在的實體。

它們透過關係連結到下列 雙重圖。 對應項圖形代表整個環境,包括實體彼此之間的互動方式及關聯性。

顯示 floor1 包含 room21 的圖表,而 room21 包含 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 --resource-group <resource-group>
    
  3. 接下來,您會壓縮此函式,並將其發佈至新的 Azure 函式應用程式。

    1. 在您的計算機上開啟控制台視窗(如果您使用本機 Azure CLI,它可以是相同的視窗),並流覽至您下載範例專案內的 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。 將 zip 資料夾命名 為publish.zip

      重要事項

      請確保壓縮的資料夾不包含發佈資料夾以外的層面。 它應該只包含 publish 資料夾內的內容。

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

      Windows 中檔案總管的螢幕快照,其中顯示 publish zip 資料夾的內容。

    最後一個步驟是在 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,再執行命令:

    Azure Cloud Shell 的螢幕快照,其中醒目提示如何上傳檔案。

    在此情況下,檔案會上傳至 Cloud Shell 儲存體的根目錄,因此您可以直接參考檔案的名稱作為命令的 --src 參數 (也就是 --src publish.zip)。

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

    "provisioningState": "Succeeded",
    

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

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):

從完整建築案例圖表摘錄的圖表,當中醒目提示 顯示 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 函式。 此連線可讓資料透過函式從裝置流入 IoT 中樞,進而更新 Azure Digital Twins。

若要這樣做,您可以在您的 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 中樞註冊模擬裝置

本節會在識別碼為 thermostat67 的 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>

輸出是有關已建立的裝置資訊。

設定並執行模擬

重要事項

本文包含使用共用存取簽章 (也稱為對稱金鑰驗證) 連線裝置的步驟。 此驗證方法方便進行測試和評估,但使用 X.509 憑證來驗證裝置是更安全的方法。 若要深入瞭解,請參閱 IoT解決方案 > 連線安全性的安全性最佳做法

接下來,設定裝置模擬器以將資料傳送至您的 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 函式接手並處理。

顯示傳送溫度裝置數據的裝置模擬器控制台輸出螢幕快照。

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

查看 Azure Digital Twins 中的結果

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

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

dotnet run

一旦專案正在執行並且接受命令,執行下列命令以取得數位對應項 thermostat67 回報的溫度:

ObserveProperties thermostat67 Temperature

您應該會看到來自 Azure Digital Twins 執行個體的即時更新溫度,每隔兩秒就會記錄到主控台中。 此溫度應該反映資料模擬器正在產生的值 (您可以將主控台視窗並排放置以確認值的座標)。

附註

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

控制台輸出的螢幕快照,顯示來自數位雙胞胎控溫器67 的溫度訊息記錄。

一旦您驗證即時溫度記錄成功運作,您就可以停止執行這兩個專案。 稍後您會在教學課程中再次使用此應用程式,因此請在保持主控台視窗開啟。

透過圖形傳播 Azure Digital Twins 事件

截至目前為止,您已在本教學課程中了解如何利用外部裝置資料更新 Azure Digital Twins。 接下來,您會看到如何透過 Azure Digital Twins 圖形傳播以變更一個數位分身,換句話說,如何利用服務 - 內部資料更新對應項。

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

從完整建築案例圖表摘錄的圖表,當中醒目提示 顯示 Azure Digital Twins 之後元素的區段。

請執行下列動作以設定此資料流程:

  1. 建立事件方格主題,以在各種 Azure 服務之間啟用資料移動
  2. 在 Azure Digital Twins 中建立端點,以將實例連線至事件方格主題
  3. 在 Azure Digital Twins 中設定路由,以將對應項屬性變更事件傳送至端點
  4. 在端點上建立接聽事件方格主題的 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 欄位,檢查其值是否為 "Succeeded"。

Azure 入口網站 Cloud Shell 中端點查詢結果的螢幕快照,其中顯示具有 provisioningState of Succeeded 的端點。

其也可能指出「佈建中」,這表示端點仍在建立中。 如果是,請稍候幾秒鐘,然後執行下列命令來檢查端點狀態。 重複前述作業,直到 provisioningState 顯示為 "Succeeded" 為止。

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 函式訂閱至您先前建立的事件方格主題。 此訂用帳戶可讓模擬裝置資料從 thermostat67 對應項經由事件方格主題流向函式,屆時函式會返回 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 執行裝置模擬器專案。

如同第一次執行裝置模擬器,專案會開始執行並顯示模擬溫度裝置資料訊息。 這些事件會通過您稍早設定的流程來更新 thermostat67 對應項,再通過您最近設定的流程來更新要比對的 room21 對應項。

顯示傳送溫度裝置數據的裝置模擬器控制台輸出螢幕快照。

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

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

一旦專案正在執行並且接受命令,執行下列命令以取得數位對應項 thermostat67 和數位對應項 room21 回報的溫度。

ObserveProperties thermostat67 Temperature room21 Temperature

您應該會看到來自 Azure Digital Twins 執行個體的即時更新溫度,每隔兩秒就會記錄到主控台中。 請注意,room21 的溫度正在更新,以符合 thermostat67 的更新。

控制台輸出的螢幕快照,其中顯示來自控溫器和會議室的溫度訊息記錄。

一旦您驗證來自執行個體的即時溫度記錄成功運作,您就可以停止執行這兩個專案。 您也可以關閉這兩個主控台視窗,因為本教學課程已完成。

檢閱

以下是您在本教學課程中建立的案例回顧。

  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)。

本文開頭的圖表,其中顯示完整的建置案例。

清除資源

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

  • 如果您不需要在本教學課程中建立的任何資源,您可以使用 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。

接下來,開始查看概念文件,以深入了解您在本教學課程中使用過的元素: