練習 - 將 Azure Digital Twin 資料連線並串流至風力發電機資產
Azure SignalR Service 已作為您已部署的 ARM 範本一部分來公開。 此服務與相關聯的設定可讓您連線到 Azure Digital Twins。 我們已建立能從數位對應項中擷取資料的資料管線,其會從在混合實境中執行的用戶端應用程式中抽離。
Azure SignalR Service 概觀
Azure SignalR Service 簡化了透過 HTTP 將即時 Web 功能新增到應用程式的程序。 此即時功能可讓服務將內容更新推播至連線的用戶端,例如單一頁面的 Web 或行動應用程式。 如此一來,用戶端可以在不需要輪詢伺服器或送出新的 HTTP 更新要求的情況下進行更新。 所有需要即時將資料從伺服器推送到用戶端的案例,都可以使用 Azure SignalR Service。 通常需要從伺服器進行輪詢的傳統即時功能也可以使用 Azure SignalR Service。
您可以輕鬆地將 Azure SignalR Service 與其他 Azure 服務整合,以開啟其他可能的案例。 例如,Azure Functions 可以使用 REST API 將通知推送至 Azure SignalR Service,然後 Azure SignalR Service 會即時將資料推送至連線的用戶端。 當 Azure SignalR Service 與 IoT 中樞搭配使用時,可將即時感應器資料傳輸至連線的用戶端,以支援即時監視案例。
即時案例通常會伴隨高頻率的資料流程,以及用戶端與伺服器之間資料的大量同時連接。 其需要非一般的基礎結構設定,才能大規模運行並執行功能。 大規模設定此基礎結構很困難。 設定通常需要各種網路層的應用程式特定邏輯。 Azure SignalR Service 會處理這些問題,讓您可以將焦點放在提供即時連線體驗的應用程式邏輯上。 您可以動態調整即時功能,且只需為您使用的內容付費即可。 該服務也會繼承 Azure SignalR Service 透過各種傳輸進行持續連線的功能。
各種不同的產業已將 Azure SignalR Service 運用在所有需要即時內容更新的應用程式類型。 此處列出適合使用 Azure SignalR Service 的一些範例:
- 高頻率資料更新:遊戲、投票、輪詢與拍賣
- 儀表板與監視:公司儀表板、金融市場資料、立即銷售更新、多玩家遊戲排行榜,以及 IoT 監視
- 地圖上的即時位置:物流追蹤、交貨狀態追蹤、運輸狀態更新,以及 GPS 應用程式
- 即時目標鎖定廣告:個人化即時推播廣告與供應項目,以及互動式廣告
- 共同作業應用程式:共同撰寫、白板應用程式與小組會議軟體
- 推播通知:社交網路、電子郵件、遊戲與旅遊警示
- 即時廣播:即時音訊/視訊廣播、即時字幕、翻譯,以及事件/新聞廣播
- IoT 與連線的裝置:即時 IoT 計量、遠端控制、即時狀態,以及位置追蹤
- 自動化:上游事件的即時觸發程序
針對您的風力發電機使用案例,Azure Digital Twins 風力發電機資料與您的混合實境裝置之間的通訊層會使用 Azure SignalR Service 與內嵌在混合實境應用程式中的 SignalR 用戶端。
若要使用 Azure Digital Twins 來將資料公開給用戶端應用程式,您需要連線到 Azure SignalR Service。 您建置的混合實境應用程式會實作 SignalR 用戶端,以連線到 SignalR 服務。 若要建立 SignalR 用戶端與 Azure SignalR 服務之間的通訊,用戶端必須在 SignalR 服務中叫用 negotiate
函式。
使用您的 Azure Digital Twins 連線參數與在上一個練習中所擷取的驗證詳細資料來設定 DeviceSimulator
。
獲得應用程式認證
在 Visual Studio 中開啟 DeviceSimulator.sln,並使用 ARM 範本所建立的 Azure Digital Twins 資源類型的主機名稱來設定
DeviceSimulator
。使用文字編輯器,開啟您在上一個練習中建立的 Azure_config_settings.txt 文字檔,其中包含關鍵 Azure Digital Twins 設定參數。 或者,如果您的 PowerShell 工作階段仍在使用中狀態,請查看
get-content
命令的輸出。從 Azure_config_settings.txt 檔案,或從 PowerShell 的
get-content
命令輸出中,找出adtHostName
機碼的機碼/值組,並複製該值。 其內容應與下面所示類似:https://myprojadtxxxxxxxxxx.api.eus.digitaltwins.azure.net
在 Visual Studio 的 DeviceSimulator 解決方案中,按兩下 [方案總管] 中的 AzureIoTHub.cs 檔案,以在編輯器中開啟該檔案。 將您在步驟 2 中複製的
adtHostName
索引鍵/值組的值貼入 adtInstanceUrl 字串變數中。
使用主要連接字串設定裝置模擬器
使用 ARM 範本所建立 IoT 中樞的主要連接字串來設定 DeviceSimulator
。
重要
本課程模組包含使用共用存取簽章連線裝置的步驟,也稱為對稱金鑰驗證。 此驗證方法便於進行測試和評估,但使用 X.509 憑證驗證裝置是更安全的方法。 若要深入了解,請參閱安全性最佳做法>連線安全性。
從 Azure_config_settings.txt 檔案,或從 PowerShell 的
get-content
命令輸出中,找出connectionString
機碼的機碼/值組,並複製該值。 其內容應與下面所示類似:HostName=myprojHubxxxxxxxxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
在 Visual Studio 的
DeviceSimulator
解決方案中,在編輯器中開啟 AzureIoTHub.cs 檔案,並將您在上一個步驟所複製的connectionString
值貼入 iotHubConnectionString 字串變數中。
使用驗證金鑰設定裝置模擬器
使用 ARM 範本所建立的驗證金鑰來設定 DeviceSimulator。
開啟您在上一個練習中建立的 AppCredentials.txt 文字檔。
在您 Visual Studio 的 [DeviceSimulator] 解決方案中,在編輯器中開啟 PropUpdater.cs 檔案。 複製文字檔中的全域唯一識別碼 (GUID) 並貼到 .cs 檔案。 使用下列從 .cs 變數到文字檔中 JSON 資料輸出的對應:
AppCredentials.txt PropUpdater.cs appId clientId password clientSecret tenant tenantId 選取 [檔案]>[全部儲存],在 Visual Studio 中儲存您的工作成果。
在 Unity 中將您的 Azure Digital Twins 預製物件連線到數位對應項,讓您可以從 DeviceSimulator
接收模擬的遙測資料。
新增 Azure Digital Twins 連線預製物件
將 Azure Digital Twins 連線預製物件資產新增至您的 Unity 場景並加以設定。
返回您的 Unity 專案。
在 [階層] 中,選取
ADTConnection
遊戲物件。 如果您的階層中缺少該物件,請將 [資產]>[ADTPrefabs]>[ADTConnection] 預製物件資產拖曳至您的場景階層。在文字編輯器中,開啟您在上一個練習中建立的文字檔 Azure_config_settings.txt。 該檔案包含關鍵 Azure Digital Twins 設定參數。 或者,如果您的 PowerShell 工作階段仍在使用中狀態,請查看
get-content
命令的輸出。從 Azure_config_settings.txt 檔案,或從 PowerShell 的
get-content
命令輸出中,找出signalRNegotiatePath
機碼的機碼/值組,並複製該值。 其內容應與下面所示類似:https://myprojfuncappxxxxxxxxxx.azurewebsites.net/api/negotiate
將此值與在步驟 1 中取得的函式 URL 一同新增到 [ADT 資料處理常式 (指令碼)] 下的 URL 參數中。 包含 URL 中直到
…/api
(含) 為止的所有內容。 請勿包含最後一個反斜線或 negotiate 一字。儲存場景。
現在已設定了 Azure 服務,而且您的 Unity 場景中也有了適當的指標,您可以建立使用者介面 (UI) 來將作業資料視覺化。