次の方法で共有


チュートリアル: シミュレートされたデバイス データを生成する

適用対象:はいアイコン IoT Edge 1.1

重要

IoT Edge 1.1 サポート終了日は 2022 年 12 月 13 日でした。 本製品、サービス、テクノロジ、または API のサポート内容については、Microsoft 製品のライフサイクルに関するページをご確認ください。 最新バージョンの IoT Edge への更新の詳細については、「IoT Edgeの更新」を参照してください。

この記事では、機械学習トレーニング データを使用して、Azure IoT Hub にテレメトリを送信するデバイスをシミュレートします。 このチュートリアルでは、概要で説明したように、 Turbofan エンジンの劣化シミュレーション データセット を使用して、トレーニングとテストのために一連の飛行機エンジンからのデータをシミュレートします。

実験シナリオでは、次のことがわかっています。

  • データは、複数の多変量時系列で構成されます。
  • 各データ セットは、トレーニングとテストのサブセットに分割されます。
  • 各時系列は、異なるエンジンから取得されます。
  • 各エンジンは、初期摩耗と製造バリエーションの異なる程度から始まります。

このチュートリアルでは、1 つのデータ セット (FD003) のトレーニング データ サブセットを使用します。

実際には、各エンジンは独立した IoT デバイスになります。 インターネットに接続されたターボファン エンジンのコレクションを使用できない場合は、これらのデバイス用のソフトウェア スタンドインを構築します。

シミュレーターは、IoT Hub API を使用してプログラムによって仮想デバイスを IoT Hub に登録する C# プログラムです。 その後、NASA が提供するデータ サブセットから各デバイスのデータを読み取り、シミュレートされた IoT デバイスを使用して IoT ハブに送信します。 チュートリアルのこの部分のすべてのコードは、リポジトリの DeviceHarness ディレクトリにあります。

DeviceHarness プロジェクトは、次の 4 つのクラスで構成される C# で記述された .NET Core プロジェクトです。

  • プログラム: ユーザー入力と全体的な調整を処理する実行のエントリ ポイント。
  • TrainingFileManager: 選択したデータ ファイルの読み取りと解析を担当します。
  • CycleData: メッセージ形式に変換されたファイル内の 1 行のデータを表します。
  • TurbofanDevice: データ内の 1 つのデバイス (時系列) に対応する IoT デバイスを作成し、IoT Hub にデータを送信する役割を担います。

この記事で説明するタスクは、完了するまでに約 20 分かかります。

この手順の作業と同等の実際の環境は、デバイス開発者とクラウド開発者によって実行される可能性があります。

チュートリアルのこのセクションでは、次の方法について説明します。

  • 開発環境に外部プロジェクトを組み込みます。
  • DeviceHarness サンプル プロジェクトを使用して、シミュレートされた IoT デバイス データを生成します。
  • IoT Hub で生成されたデータを表示します。

[前提条件]

この記事は、Azure Machine Learning on IoT Edge の使用に関するチュートリアルのシリーズの一部です。 シリーズの各記事は、前の記事の作業に基づいています。 この記事に直接アクセスした場合は、シリーズの 最初の記事 を参照してください。

Visual Studio Code を構成し、DeviceHarness プロジェクトをビルドする

  1. 開発用 VM へのリモート デスクトップ セッションを開きます。

  2. Visual Studio Code で、 C:\source\IoTEdgeAndMlSample\DeviceHarness フォルダーを開きます。

  3. このマシンで拡張機能を初めて使用するため、一部の拡張機能は依存関係を更新してインストールします。 拡張機能の更新を求められる場合があります。 その場合は、[ ウィンドウの再読み込み] を選択します。

    OmniSharp エラーが出力ウィンドウに表示される場合は、C# 拡張機能をアンインストールする必要があります。

  4. DeviceHarness に必要な資産を追加するように求められます。 [ はい ] を選択して追加します。

    • 通知が表示されるまでに数秒かかる場合があります。
    • この通知を見逃した場合は、右下隅にあるベル アイコンを確認してください。

    VS Code 拡張機能のポップアップ

  5. [ 復元 ] を選択して、パッケージの依存関係を復元します。

    VS Code の復元プロンプト

    これらの通知が表示されない場合は、Visual Studio Code を閉じ、 C:\source\IoTEdgeAndMlSample\DeviceHarnessで bin ディレクトリと obj ディレクトリを削除し、Visual Studio Code を開き、DeviceHarness フォルダーをもう一度開きます。

  6. ビルド、 Ctrl + Shift + B、または Terminal>Run Build Task をトリガーして、環境が適切に設定されていることを確認します。

  7. 実行するビルド タスクを選択するように求められます。 ビルドを選択します。

  8. ビルドが実行され、成功メッセージが出力されます。

    ビルドに成功した出力メッセージ

  9. ターミナル>既定のビルド タスクの構成... を選択し、プロンプトから [ビルド] を選択することで、このビルドを既定のビルド タスクにすることができます。

IoT Hub に接続して DeviceHarness を実行する

プロジェクトのビルドが済んだので、IoT ハブに接続して接続文字列にアクセスし、データ生成の進行状況を監視します。

Visual Studio Code で Azure にサインインする

  1. コマンド パレット、 Ctrl + Shift + P 、または View>Command Palette を開いて、Visual Studio Code で Azure サブスクリプションにサインインします。

  2. Azure: Sign In コマンドを検索します。

    ブラウザー ウィンドウが開き、資格情報の入力を求められます。 成功ページにリダイレクトされたら、ブラウザーを閉じます。

IoT ハブに接続し、ハブ接続文字列を取得する

  1. Visual Studio Code エクスプローラーの下部セクションで、 Azure IoT Hub フレームを選択して展開します。

  2. 展開されたフレームで、[ IoT Hub の選択] をクリックします。

  3. メッセージが表示されたら、Azure サブスクリプションと IoT ハブを選択します。

  4. その他のアクションについては、Azure IoT Hub の右側にある ... をクリックします。 [ IoT Hub 接続文字列のコピー] を選択します。

    IoT Hub 接続文字列をコピーする

DeviceHarness プロジェクトを実行する

  1. [表示>ターミナル] を選択して Visual Studio Code ターミナルを開きます。

    プロンプトが表示されない場合は、Enter キーを押します。

  2. ターミナルに「dotnet run」と入力します。

  3. IoT Hub 接続文字列の入力を求められたら、前のセクションでコピーした接続文字列を貼り付けます。

  4. Azure IoT Hub デバイス フレームで、更新ボタンをクリックします。

    IoT Hub デバイスの一覧を更新する

  5. デバイスは IoT Hub に追加され、デバイスは緑色で表示され、そのデバイス経由でデータが送信されていることを示します。 デバイスが IoT ハブにメッセージを送信すると、デバイスは切断され、青色で表示されます。

  6. ハブに送信されたメッセージを表示するには、任意のデバイスを右クリックし、[ 組み込みイベント エンドポイントの監視の開始] を選択します。 メッセージは、Visual Studio Code の出力ウィンドウに表示されます。

  7. Azure IoT Hub の出力ウィンドウをクリックして監視を停止し、[組み込みイベント エンドポイントの監視の停止] を選択します。

  8. アプリケーションを完了するまで実行します。この処理には数分かかります。

IoT Hub でアクティビティを確認する

DeviceHarness によって送信されたデータは、Azure portal で確認できる IoT ハブに送信されました。

  1. Azure portal を開き、このチュートリアル用に作成された IoT ハブに移動します。

  2. 左側のウィンドウ メニューの [ 監視] で、[ メトリック] を選択します。

  3. グラフ定義ページで、[ メトリック ] ドロップダウンをクリックし、一覧を下にスクロールして、[ ルーティング: ストレージに配信されたデータ] を選択します。 グラフには、データがストレージにルーティングされたタイミングのスパイクが表示されます。

    データがストレージに配信されたときのスパイクを示すグラフ

Azure Storage でデータを検証する

IoT ハブに送信したデータは、前の記事で作成したストレージ コンテナーにルーティングされました。 ストレージ アカウントのデータを見てみましょう。

  1. Azure portal のストレージ アカウントに移動します。

  2. ストレージ アカウント ナビゲーターから、 ストレージ エクスプローラー (プレビュー) を選択します。

  3. ストレージ エクスプローラーで、[ BLOB コンテナー ] を選択し、 devicedataします。

  4. コンテンツ ウィンドウで、IoT ハブの名前のフォルダーをクリックし、その後に年、月、日、および時間をクリックします。 データが書き込まれた時間 (分) を表す複数のフォルダーが表示されます。

    BLOB ストレージ内のフォルダーを表示する

  5. これらのフォルダーのいずれかをクリックして、パーティションに対応する 0001 というラベルの付いたデータ ファイルを見つけます。

  6. ファイルは Avro 形式で書き込まれます。 これらのファイルのいずれかをダブルクリックして別のブラウザー タブを開き、データを部分的にレンダリングします。 プログラムでファイルを開くよう求められたら、VS Code を選択すると、正しくレンダリングされます。

  7. 今すぐデータを読み取ったり解釈したりする必要はありません。次の記事で行います。

リソースをクリーンアップする

このチュートリアルは、各記事が前の記事で行われた作業に基づいて構築されるセットの一部です。 最後のチュートリアルが完了するまで、リソースのクリーンアップをお待ちください。

次のステップ

この記事では、.NET Core プロジェクトを使用して一連の仮想 IoT デバイスを作成し、それらを介して IoT ハブと Azure Storage コンテナーにデータを送信しました。 このプロジェクトは、物理 IoT デバイスが IoT Hub にデータを送信し、その後、キュレーションされたストレージにデータを送信する実際のシナリオをシミュレートします。 このデータには、センサーの読み取り値、操作設定、障害信号とモードなどが含まれます。 十分なデータが収集されたら、それを使用して、デバイスの残存耐用年数 (RUL) を予測するモデルをトレーニングします。 この機械学習については、次の記事で説明します。

次の記事に進み、データを使用して機械学習モデルをトレーニングします。