演習 - Azure Digital Twin データを風力タービン アセットに接続してストリーミングする
Azure SignalR Service は、デプロイした ARM テンプレートの一部として公開されています。 このサービスと関連するセットアップを使用すると、Azure Digital Twins に接続できます。 Digital Twins からデータを取得するためにデータ パイプラインを作成しました。これは、Mixed Reality で実行されるクライアント アプリから抽象化されています。
Azure SignalR Service の概要
Azure SignalR サービスは、リアルタイムの Web 機能を HTTP 経由でアプリケーションに追加するプロセスを簡略化します。 このリアルタイム機能は、サービスが、接続されているクライアントにシングル ページ Web やモバイル アプリケーションなどのコンテンツの更新をプッシュできるようにします。 その結果、クライアントは、サーバーをポーリングしたり更新プログラムについて新しい HTTP 要求を送信したりしなくても更新されます。 サーバーからクライアントにリアルタイムでデータをプッシュする必要があるすべてのシナリオで Azure SignalR Service を使用できます。 サーバーからのポーリングが頻繁に必要とされる、従来のリアルタイム機能も Azure SignalR Service を使用できます。
Azure SignalR Service は他の Azure サービスと簡単に統合できるため、考えられる他のシナリオにも適用できます。 たとえば、Azure Functions では REST API を使用して Azure SignalR Service に通知をプッシュし、その後、接続されているクライアントにリアルタイムでデータをプッシュすることができます。 Azure SignalR Service は IoT Hub と共に使用することで、リアルタイムのセンサー データを接続されたクライアントに送信して、リアルタイムの監視シナリオをサポートできます。
リアルタイムのシナリオには、多くの場合、クライアントとサーバー間の高頻度のデータ フローと大量のコンカレント接続が含まれます。 機能を大規模に起動して実行するには、大がかりなインフラストラクチャの設定が必要です。 このインフラストラクチャを大規模に構成することは困難です。 通常、この構成には、さまざまなネットワーク層でアプリケーション固有のロジックが必要です。 そのような問題は Azure SignalR Service によって対処されるため、リアルタイムの接続エクスペリエンスを提供するアプリケーション ロジックに集中できます。 使用した分だけ支払いを行い、リアルタイム機能を動的にスケーリングできます。 また、このサービスは、さまざまな転送に対して永続的な接続を実現するための Azure SignalR Service の機能も継承します。
Azure SignalR Service は、さまざまな業界で、リアルタイムでのコンテンツ更新を必要とするあらゆる種類のアプリケーションに対して使用されています。 Azure SignalR Service を使用するのに適したいくつかの例を以下に示します。
- 高頻度でのデータ更新: ゲーム、投票、ポーリング、オークション
- ダッシュ ボードと監視: 会社のダッシュボード、金融市場のデータ、売上の即時更新、マルチ プレイヤー ゲームのスコア ボード、および IoT 監視
- 地図上のリアルタイムの位置: 物流の追跡、配送状態の追跡、輸送状態の更新、GPS アプリ
- 対象を絞ったリアルタイムの広告: パーソナライズされたリアルタイムのプッシュ型広告とオファー、インタラクティブ広告
- コラボレーション アプリ: コオーサリング、ホワイトボード アプリ、チーム会議ソフトウェア
- プッシュ通知: ソーシャル ネットワーク、メール、ゲーム、移動に関するアラート
- リアルタイムのブロードキャスト: ライブ オーディオ/ビデオのブロードキャスト、ライブ キャプション、翻訳、イベント/ニュースのブロードキャスト
- IoT デバイスおよび接続されているデバイス: リアルタイムの IoT メトリック、リモート制御、リアルタイムの状態、および場所の追跡
- オートメーション: アップストリーム イベントからのリアルタイム トリガー
風力タービンのユース ケースの場合、Azure Digital Twins 風力タービン データと Mixed Reality デバイスの間の通信レイヤーは、Azure SignalR Service と Mixed Reality アプリに埋め込まれた SignalR クライアントを使用します。
Azure Digital Twins を使用してクライアント アプリにデータを公開するには、Azure SignalR Service に接続する必要があります。 構築している Mixed Reality アプリでは、SignalR サービスに接続するための SignalR クライアントが実装されています。 SignalR クライアントと Azure SignalR サービス間の通信を確立するには、クライアントが SignalR サービスで negotiate
関数を呼び出す必要があります。
前の演習でキャプチャした Azure Digital Twins 接続パラメーターと認証の詳細を使用して DeviceSimulator
を構成します。
アプリの資格情報を取得する
Visual Studio で DeviceSimulator.sln を開き、ARM テンプレートによって作成された Azure Digital Twins リソースの種類のホスト名を使用して
DeviceSimulator
を構成します。テキスト エディターを使用して、Azure Digital Twins の主要な構成パラメーターを含む、1 つ前の演習で作成した Azure_config_settings.txt テキスト ファイルを開きます。 または、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 Hub のプライマリ接続文字列を使用して、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 で作業内容を保存します。
シミュレートされたテレメトリ データを DeviceSimulator
から受信できるように、Unity の Azure Digital Twins プレハブをデジタル ツインに接続します。
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 で取得した Function Url を使用して ADT データ ハンドラー (スクリプト) の下にある Url パラメーターにこの値を追加します。
…/api
までの URL にあるすべての文字列を含めます。 最後のバックスラッシュや negotiate という単語は含めないでください。シーンを保存します。
Azure サービスが設定され、適切なポインターが Unity シーン内に配置されました。操作データを視覚化するユーザー インターフェイス (UI) を作成できます。