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

完了

Azure SignalR Service は、デプロイした ARM テンプレートの一部として公開されています。 このサービスと関連するセットアップを使用すると、Azure 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 を構成します。

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

  1. Visual Studio で DeviceSimulator.sln を開き、ARM テンプレートによって作成された Azure Digital Twins リソースの種類のホスト名を使用して DeviceSimulator を構成します。

  2. テキスト エディターを使用して、Azure Digital Twins の主要な構成パラメーターを含む、1 つ前の演習で作成した Azure_config_settings.txt テキスト ファイルを開きます。 または、PowerShell セッションがアクティブなままの場合は、get-content コマンドの出力から探します。

  3. Azure_config_settings.txt ファイルから、または PowerShell の get-content コマンドの出力から、adtHostName キーのキーと値のペアを見つけて、その値をコピーします。 以下に示したのは実際の表示例です。

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

    Screenshot of the command-line interface running the get-content command prompt.

  4. Visual Studio の DeviceSimulator ソリューションで、[ソリューション エクスプローラー] から AzureIoTHub.cs ファイルをダブルクリックして、ファイルをエディターで開きます。 前のステップ 2 でコピーした adtHostName のキーと値のペアの値を adtInstanceUrl 文字列変数に貼り付けます。

    Screenshot of the Device Simulator solution with the Azure IoT Hub cs file open and host name and instance URL values added.

プライマリ接続文字列を使用してデバイス シミュレーターを構成する

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

  1. Azure_config_settings.txt ファイルから、または PowerShell の get-content コマンドの出力から、connectionString キーのキーと値のペアを見つけて、その値をコピーします。 以下に示したのは実際の表示例です。

    HostName=myprojHubxxxxxxxxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
    
  2. Visual Studio の DeviceSimulator ソリューションから AzureIoTHub.cs ファイルをエディターで開き、前のステップでコピーした connectionString 値を iotHubConnectionString 文字列変数に貼り付けます。

    Screenshot of the Device Simulator solution with the Azure IoT Hub cs file open and IoT Hub connection string value added.

認証キーを使用してデバイス シミュレーターを構成する

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

  1. 前の演習で作成した AppCredentials.txt テキスト ファイルを開きます。

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

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

    Screenshot of the Device Simulator solution with the PropUpdater.cs file open and client, secret, and tenant ID values added.

  3. [ファイル]>[すべて保存] を選択して、Visual Studio で作業内容を保存します。

シミュレートされたテレメトリ データを DeviceSimulator から受信できるように、Unity の Azure Digital Twins プレハブをデジタル ツインに接続します。

Azure Digital Twins 接続プレハブを追加する

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

  1. Unity プロジェクトに戻ります。

  2. [階層]ADTConnection ゲーム オブジェクトを選択します。 階層に存在しない場合は、[アセット]>[ADTPrefabs]>[ADTConnection] プレハブ アセットをシーン階層にドラッグします。

    Screenshot of the Unity Hierarchy with the main scene highlighted.

  3. 前回の演習で作成したテキスト ファイル Azure_config_settings.txt をテキスト エディターで開きます。 このファイルには、Azure Digital Twins の主要な構成パラメーターが含まれています。 または、PowerShell セッションがアクティブなままの場合は、get-content コマンドの出力から探します。

  4. Azure_config_settings.txt ファイルから、または PowerShell の get-content コマンドの出力から、signalRNegotiatePath キーのキーと値のペアを見つけて、その値をコピーします。 以下に示したのは実際の表示例です。

    https://myprojfuncappxxxxxxxxxx.azurewebsites.net/api/negotiate
    
  5. ステップ 1 で取得した Function Url を使用して ADT データ ハンドラー (スクリプト) の下にある Url パラメーターにこの値を追加します。 …/api までの URL にあるすべての文字列を含めます。 最後のバックスラッシュと negotiate という単語は含めません。

    Screenshot of the Unity editor with the Azure Digital Twins connection prefab selected and the ADT data handler script added.

  6. シーンを保存します。

Azure サービスが設定され、適切なポインターが Unity シーン内に配置されました。操作データを視覚化するユーザー インターフェイス (UI) を作成できます。