IoT Central での受信時にテレメトリをマップする

データ マッピングを使用すると、複雑なデバイス テレメトリを IoT Central 内部の構造化データに変換できます。 デバイスごとに、デバイス テレメトリ メッセージ内の特定の JSON パスを "エイリアス" にマップできます。 エイリアスは、マッピングのターゲットのフレンドリ名です。 IoT Central は、このマッピングを使用して、テレメトリが IoT Central に入る際に変換します。 マップされたテレメトリを使用すると、次のことができます。

  • IoT Central でデバイス テンプレートとデバイス管理エクスペリエンスを作成する。
  • 複数のデバイス上の JSON パスを共通のエイリアスにマップすることで、さまざまなデバイスからのテレメトリを正規化する。
  • IoT Central の外部の宛先にエクスポートする。

IoT Central でのマッピング プロセスの概要を示す図。

次のビデオでは、データ マッピング プロセスについて説明しています。

デバイスのテレメトリをマップする

マッピングでは JSONPath 式を使用して、受信テレメトリ メッセージの値を識別し、エイリアスにマップします。

JSONPath 式は $ 文字で始まります。これは、メッセージのルート要素を参照します。 $ の後に、角かっこを使用して区切られた一連の子要素が続きます。 次に例を示します。

$["messages"]["tmp"]

$["opcua"]["payload"][0]["value"]

$["Messages"]["Payload"]["nsu=http://microsoft.com/Opc/OpcPlc/;s=FastUInt1"]["Value"]

IoT Centralは、JSONPath 式構文のサブセットを使用します。

  • 各セグメントには、負でない数値または二重引用符で囲んだ文字列のみを指定できます。
  • セグメントには、バックスラッシュ、角かっこ、または二重引用符を含めることはできません。
  • JSON パスは 1,000 文字を超えることはできません。

IoT Central アプリケーションでマッピングを作成するには、次のいずれかのオプションを選択して [データのマップ] パネルに移動します。

  • 任意のデバイス ページから、[デバイスの管理] > [データのマップ] を選択します。

    [データのマップ] メニュー項目を示すスクリーンショット。

  • デバイスの [生データ] ビューで、テレメトリ メッセージを展開し、パスの上にマウス ポインターを合わせて、[エイリアスの追加] を選択します。 [データのマップ] パネルが開き、JSONPath 式が [JSON パス] フィールドにコピーされます。

    [生データ] ビューの [エイリアスの追加] オプションを示すスクリーンショット。

[データのマップ] パネルの左側には、デバイスからの最新メッセージが表示されます。 データの任意の部分にマウス ポインターを合わせて、[エイリアスの追加] を選択します。 JSONPath 式が [JSON パス] にコピーされます。 [エイリアス] に 64 文字以下で名前を入力します。 エイリアスを使用して、デバイス テンプレートで定義された複雑なオブジェクトのフィールドを参照することはできません。

必要な数のマッピングを追加し、[保存] を選択します。

[JSON パス] と [エイリアス] が表示されている [データのマップ] のスクリーンショット。

特定のデバイスの場合:

  • 2 つのマッピングに同じ JSON パスを指定することはできません。
  • 2 つのマッピングに同じエイリアスを指定することはできません。

ヒント

デバイスがテレメトリ メッセージを送信してから左側のパネルに表示されるまで数分待つ必要がある場合があります。 左側のパネルにデータがまだ表示されていない場合は、[JSON パス] フィールドに JSONPath 式を手動で入力できます。

IoT Central によってテレメトリがマッピングされていることを確認するには、デバイスの [生データ] ビューに移動し、_mappeddata セクションを確認します。

[生データ] ビューのマップ済みデータ セクションを示すスクリーンショット。

[生データ] を最新の情報に数回更新してもマップされたデータが表示されない場合は、使用している JSONPath 式がテレメトリ メッセージの構造と一致していることを確認します。

IoT Edge デバイスの場合、データ マッピングは、すべての IoT Edge モジュールとハブからのテレメトリに適用されます。 特定の Azure IoT Edge モジュールにマッピングを適用することはできません。

デバイス テンプレートに割り当てられたデバイスの場合、コンポーネントまたは継承されたインターフェイスのデータをマップすることはできません。 ただし、デバイス テンプレートに割り当てる前に、デバイスからのデータをマップするできます。

マッピングの管理

マッピングを表示、編集、または削除するには、[Mapped aliases](マップされたエイリアス) ページに移動します。 マッピングを選択し、編集または削除します。 複数のマッピングを選択して、一度に削除することができます。

[Mapped aliases]\(マップされたエイリアス\) ビュー示すスクリーンショット。編集および削除ボタンが強調表示されています。

既定では、IoT Central からのデータ エクスポートには、マップ済みデータが含まれます。 マップ済みデータを除外するには、データ エクスポートでデータ変換を使用します。

モデル化されていないテレメトリをマップする

モデル化されていないコンポーネントからのテレメトリを含め、モデル化されていないテレメトリをマップできます。 たとえば、ルート コンポーネントで定義されている workingSet テレメトリと、次の temperature 例に示すサーモスタット コンポーネントで定義されているテレメトリを考えると、次のようになります。

{
  "_unmodeleddata": {
    "workingSet": 74
  },
  "_eventtype": "Telemetry",
  "_timestamp": "2022-07-18T09:22:40.257Z"
}

{
  "_unmodeleddata": {
    "thermostat2": {
      "__t": "c",
      "temperature": 44
    }
  },
  "_eventtype": "Telemetry",
  "_timestamp": "2022-07-18T09:21:48.69Z"
}

このテレメトリは、次のマッピング定義を使用してマップできます。

  • $["workingSet"] ws
  • $["temperature"] temp

注意

マッピング定義にコンポーネント名を含めないでください。

これらのマッピング 規則の結果は、次の例のようになります。

{
  "telemetries": {
    "workingSet": 84,
    "_mappeddata": {
      "ws": 84
    }
  }
}

{
  "_unmodeleddata": {
    "thermostat2": {
      "__t": "c",
      "temperature": 12
    },
    "_mappeddata": {
      "thermostat2": {
        "__t": "c",
        "temp": 12
      }
    }
  },
  "_eventtype": "Telemetry",
  "_timestamp": "2022-07-18T09:31:21.088Z"
}

これで、マップされたエイリアスを使用して、グラフまたはダッシュボードにテレメトリを表示できるようになりました。 マップされたエイリアスは、テレメトリをエクスポートするときにも使用できます。

次のステップ

これで、デバイスのデータをマップする方法を学習しました。次の手順では、データ エクスプローラーを使用してデバイス データを分析する方法を学習することをお勧めします。