教學課程: 建置端對端解決方案
本 Azure Digital Twins 教學課程說明如何建置示範服務功能的端對端解決方案。 若要設定由環境即時資料驅動的完整端對端解決方案,您可以將 Azure Digital Twins 執行個體連線到其他 Azure 服務,以管理裝置和資料。
在本教學課程中,您將...
- 設定 Azure Digital Twins 執行個體
- 了解範例建築案例以及具現化預先撰寫的元件
- 使用 Azure Functions 應用程式,將模擬的遙測從 IoT 中樞裝置路由至數位分身屬性
- 藉由使用 Azure Functions、端點和路由處理數位分身通知,透過對應項圖形傳播變更
必要條件
開始本教學課程之前,請先從下列必要條件開始:
然後,繼續進行本節的其餘部分,以設定剩餘必要條件。
取得範例資源
本教學課程是由以 C# 撰寫的 Azure Digital Twins 端對端樣本專案 (英文) 所驅動。 瀏覽至範例連結,然後選取標題底下的 [瀏覽程式碼] 按鈕,以在電腦上取得樣本專案。
這將會帶您前往樣本的 GitHub 存放庫,您可以選取 [程式碼] 按鈕,以及 [下載 ZIP] 按鈕,以 .zip 形式下載樣本。
這會將 .ZIP 資料夾以 digital-twins-samples-main.zip 的形式下載至您的機器。 將資料夾解壓縮並擷取檔案。
準備 Azure Digital Twins 執行個體
若要使用本文中的 Azure Digital Twins,您必須要有 Azure Digital Twins 執行個體,以及必要的使用權限。 如果您已經設定好 Azure Digital Twins 執行個體,您可以直接使用該執行個體,並跳至下一節。 否則,請依照設定執行個體和驗證中的指示進行。 指示中包含的資訊可協助您確認已成功完成每個步驟。
設定執行個體之後,請記下執行個體的主機名稱。 您可以在 Azure 入口網站中找到主機名稱。
備妥環境以使用 Azure CLI
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
設定 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 認證
這個範例會使用 DefaultAzureCredential (屬於 Azure.Identity
程式庫),在本機電腦上執行時,使用 Azure Digital Twins 執行個體來驗證使用者。 如需深入了解用戶端應用程式向 Azure Digital Twins 進行驗證的不同方式,請參閱撰寫應用程式驗證碼。
使用 DefaultAzureCredential
,該範例會搜尋本機環境中的認證,例如在本機 Azure CLI 中或在 Visual Studio 或 Visual Studio Code 中的 Azure 登入。 因此,您應該透過下列其中一種機制本機登入 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 箭號) 設定資料傳播。
為一步步完成此案例,您要與之前下載之預先撰寫範例應用程式的元件互動。
以下是建築案例 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 區):
開啟本機 [主控台視窗],然後瀏覽至 [digital-twins-samples-main\AdtSampleApp\SampleClientApp] 資料夾。 使用下方 dotnet 命令執行 [SampleClientApp] 專案:
dotnet run
專案將會開始執行,並進行驗證,然後等候命令。 在此主控台中,執行下一個命令以具現化範例 Azure Digital Twins 解決方案。
重要
如果您的 Azure Digital Twins 執行個體中已經有數位分身和關聯性,執行此命令將會刪除這些項目,並替換為範例案例的對應項和關聯性。
SetupBuildingScenario
此命令的輸出是一系列的確認訊息,因為三個數位分身是在您的 Azure Digital Twins 執行個體中建立和連線: 名為 floor1 的樓層、名為 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 完成這些動作。 在每個命令中,以您自己的資源詳細資料取代角括弧中的所有預留位置。
執行下列命令以建立 Azure 儲存體帳戶:
az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
執行下列命令以建立 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>
接下來,您將壓縮此函式,並將其發佈至新的 Azure 函式應用程式。
在您的電腦上開啟主控台視窗 (如果您正在使用本機 Azure CLI,它可以是相同的視窗),並瀏覽至下載樣本專案內的 [digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp] 資料夾。
在主控台中執行下列命令,以在本機發佈專案:
dotnet publish -c Release -o publish
此命令會將專案發佈至 digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish 目錄。
使用慣用方法建立位於 digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish 目錄中的發佈檔案。 將壓縮的資料夾命名為 publish.zip。
重要
請確定壓縮的資料夾不包含發佈資料夾以外的層面。 此資料夾應只包含發佈資料夾的內容。
以下是 ZIP 內容外觀的影像 (可能會根據您的 .NET 版本而有所變更)。
最後一個步驟將在 Azure CLI 中完成。
在 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,再執行命令:
在此情況下,檔案會上傳至 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 解決方案的安全性。
使用下列命令,以為函數建立系統指派身分識別。 輸出會顯示已建立身分識別的詳細資料。 記下輸出中的 principalId 欄位,以在接下來的步驟中使用。
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
使用下列命令中的 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 箭號):
請完成下列動作以設定此裝置連線:
- 建立將要管理模擬裝置的 IoT 中樞
- 設定事件訂用帳戶,將 IoT 中樞連線至適當的 Azure 函式
- 在 IoT 中樞中註冊模擬裝置
- 執行模擬裝置並產生遙測
- 查詢 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 中樞連接字串開始: 連接字串值會以 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\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 更新 thermostat67 對應項的 Temperature
屬性。
若要查看 Azure Digital Twins 端的資料,請切換到其他開啟至 [AdtSampleApp\SampleClientApp] 資料夾的主控台視窗。 使用 dotnet run
執行 [SampleClientApp] 專案:
dotnet run
一旦專案正在執行並且接受命令,執行下列命令以取得數位分身 thermostat67 回報的溫度:
ObserveProperties thermostat67 Temperature
您應該會看到來自 Azure Digital Twins 執行個體的即時更新溫度,每隔兩秒就會記錄到主控台中。 此溫度應該反映資料模擬器正在產生的值 (您可以將主控台視窗並排放置以確認值的座標)。
注意
裝置的資料可能需要幾秒鐘的時間才會傳播到對應項。 在資料開始抵達之前,前幾個溫度讀數可能會顯示為 0。
一旦您驗證即時溫度記錄成功運作,您就可以停止執行這兩個專案。 稍後您會在教學課程中再次使用此應用程式,因此請在保持主控台視窗開啟。
透過圖形傳播 Azure Digital Twins 事件
截至目前為止,您已在本教學課程中了解如何利用外部裝置資料更新 Azure Digital Twins。 接下來,您將會看到如何透過 Azure Digital Twins 圖形傳播以變更一個數位分身,換句話說,如何利用服務 - 內部資料更新對應項。
若要這樣做,在更新連線的 Thermostat 對應項時,您要使用 ProcessDTRoutedData Azure 函式來更新 Room 對應項。 更新的功能發生在此端對端案例的這個部分 (C 箭號):
請完成下列動作以設定此資料流程:
- 建立事件方格主題,以在各種 Azure 服務之間啟用資料移動
- 在 Azure Digital Twins 中建立端點,將執行個體連線至事件方格主題
- 設定 Azure Digital Twins 內的路由,將對應項屬性變更事件傳送至端點
- 在端點上建立接聽事件方格主題的 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"。
其也可能指出「佈建中」,這表示端點仍在建立中。 如果是,請稍候幾秒鐘,然後執行下列命令來檢查端點狀態。 重複前述作業,直到 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] 資料夾的控制台視窗,然後使用 dotnet run
執行 [SampleClientApp] 專案。
一旦專案正在執行並且接受命令,執行下列命令以取得數位分身 thermostat67 和對應項 room21 回報的溫度。
ObserveProperties thermostat67 Temperature room21 Temperature
您應該會看到來自 Azure Digital Twins 執行個體的即時更新溫度,每隔兩秒就會記錄到主控台中。 請注意,room21 的溫度正在更新,以符合 thermostat67 的更新。
一旦您驗證來自執行個體的即時溫度記錄成功運作,您就可以停止執行這兩個專案。 您也可以關閉這兩個主控台視窗,因為本教學課程已完成。
檢閱
以下是您在本教學課程中建立的案例回顧。
- Azure Digital Twins 執行個體會以數位方式顯示樓層、房間和溫控器 (如下圖的 A 區所示)
- 模擬裝置遙測會傳送至 IoT 中樞,其中 ProcessHubToDTEvents Azure 函式正在接聽遙測事件。 ProcessHubToDTEvents Azure 函式會使用這些事件中的資訊,來設定在 thermostat67 (圖中的 B 箭號) 的
Temperature
屬性。 - Azure Digital Twins 的屬性變更事件會路由至事件方格主題,其中 ProcessDTRoutedData Azure 函式正在接聽事件。 ProcessHubToDTEvents Azure 函式會使用這些事件中的資訊,來設定 room21 (圖中的 C 箭號) 的
Temperature
屬性。
清除資源
完成本教學課程之後,您可以根據接下來要執行的動作,選擇要移除的資源。
如果您不需要在本教學課程中建立的任何資源,可以使用 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。
接下來,開始查看概念文件,以深入了解您在本教學課程中使用過的元素: