MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2でAzure Digital Twinのラーニングパスを試す その4

本日は HoloLens2 の技術調査枠です。
HoloLens2でAzure Digital Twinのラーニングパスを試して実施記録を記事にします。
f:id:bluebirdofoz:20210612231758j:plain

前提条件

前回記事の続きです。
bluebirdofoz.hatenablog.com

Azure Digital Twinデータを風力タービンアセットに接続してストリーミングする

Azure SignalR サービスはデプロイした ARM テンプレートの一部として公開されています。
このサービスと関連するセットアップを使用すると、Azure Digital Twin に接続できます。
データパイプラインは、Azure Digital Twin からデータを取得するために作成されています

SignalR の概要

Azure SignalR サービスはリアルタイムの Web 機能を HTTP 経由でアプリケーションに追加するプロセスを簡略化します。
このリアルタイム機能はサービスが接続されているクライアントにシングルページ Web やモバイル アプリケーションなどのコンテンツの更新をプッシュできるようにします。
その結果、クライアントはサーバーをポーリングしたり更新プログラムについて新しい HTTP 要求を送信したりしなくても更新されます。
サーバーからクライアントにリアルタイムでデータをプッシュする必要があるすべてのシナリオで Azure SignalR Service を使用できます。

風力タービンのユースケースの場合

Azure Digital Twin 風力タービンデータと HoloLens 2 の間の通信レイヤーは Azure SignalR Service と HoloLens 2 アプリに埋め込まれた SignalR クライアントを使用します。

Azure Digital Twin を介してクライアントアプリにデータを公開するには Azure SignalR サービスに接続する必要があります。
構築している HoloLens 2 アプリでは、SignalR サービスに接続するための SignalR クライアントが実装されています。
SignalR クライアントと Azure SignalR サービス間の通信を確立するにはクライアントが SignalR サービスで negotiate 関数を呼び出す必要があります。

アプリの資格情報を取得する

前の演習でキャプチャした Azure Digital Twin 接続パラメーターと認証の詳細を使用し、以下の手順で DeviceSimulator を構成します。

1. Azure_config_settings.txt ファイル、または PowerShell の get-content コマンドの出力から adtHostName キーのキーと値のペアを見つけます。
値は次のようになります。

https://myprojadtxxxxxxxxxx.api.eus.digitaltwins.azure.net

f:id:bluebirdofoz:20210612231815j:plain

2. Visual Studio の DeviceSimulator ソリューションを開きます。
f:id:bluebirdofoz:20210612231827j:plain

3. [ソリューション エクスプローラー] ウィンドウでファイルをダブルクリックし、AzureIoTHub.cs ファイルをエディターで開きます。
前のステップでコピーした adtHostName のキーとペアの値を adtInstanceUrl 文字列変数に貼り付けます。
f:id:bluebirdofoz:20210612231837j:plain

ARMテンプレートによって作成されたIoT Hubのプライマリ接続文字列を使用してDeviceSimulatorを構成する

1. Azure_config_settings.txt ファイル、または PowerShell の get-content コマンドの出力から connectionString キーのキーと値のペアを見つけます。
値は次のようになります。

HostName=myprojHubxxxxxxxxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”

f:id:bluebirdofoz:20210612231847j:plain

2. Visual Studio の DeviceSimulator ソリューションから AzureIoTHub.cs ファイルをエディターで開き、上記のステップでコピーした connectionString 値を iotHubConnectionString 文字列変数に貼り付けます。
f:id:bluebirdofoz:20210612231858j:plain

ARMテンプレートによって作成された認証キーを使用してDeviceSimulatorを構成する

1. 前の演習で作成した AppCredentials.txt テキスト ファイルを開きます。
f:id:bluebirdofoz:20210612231910j:plain

2. Visual Studio の DeviceSimulator ソリューションから PropUpdater.cs ファイルをエディターで開きます。
.cs 変数からテキスト ファイルの JSON データ出力への次のマッピングに基づいて、テキストファイルからグローバル一意識別子 (GUID) をコピーして .cs ファイルに貼り付けます。

AppCredentials.txt PropUpdater.cs
appId clientId
password clientSecret
tenant tenantId

f:id:bluebirdofoz:20210612231922j:plain

3. [ファイル -> すべて保存] を選択して、Visual Studio で作業内容を保存します。
f:id:bluebirdofoz:20210612231936j:plain

Azure Digital Twin接続プレハブアセットをUnityシーンに追加して構成する

シミュレートされたテレメトリデータを DeviceSimulator から受信できるようにします。
以下の手順で Unity の ADT プレハブを Azure Digital Twin に接続します。

1. Unity プロジェクトを開き、Hierarchy で ADTConnection ゲームオブジェクトを選択します。
Hierarchy に存在しない場合は Assets/ADTPrefabs ディレクトリの ADTConnection.prefab アセットをシーンにドラッグします。
f:id:bluebirdofoz:20210612231950j:plain

2. Azure_config_settings.txt ファイル、または PowerShell の get-content コマンドの出力から signalRNegotiatePath キーのキーと値のペアを見つけます。
値は次のようになります。

https://myprojfuncappxxxxxxxxxx.azurewebsites.net/api/negotiate

f:id:bluebirdofoz:20210612232005j:plain

3. ADT Data Handler(スクリプト) コンポーネントの下にある Url パラメーターにこの値を追加します。
…/api までの URL にあるすべての文字列を含めます。最後のバックスラッシュと "negotiate" という単語は含めません。
f:id:bluebirdofoz:20210612232016j:plain

4. シーンを[Save]します。
f:id:bluebirdofoz:20210612232030j:plain

記事が長くなったので分けます。
次は Unity プロジェクトにユーザーインターフェイスを追加します。
bluebirdofoz.hatenablog.com