Azure IoT Edge デバイスを Azure IoT Central アプリケーションに接続する

Azure IoT Edge によって、クラウド分析およびカスタム ビジネス ロジックをクラウドからデバイスに移動します。 このアプローチにより、クラウド ソリューションではデータ管理ではなくビジネス分析情報に集中できます。 ビジネス ロジックを標準のコンテナーにパッケージ化することで IoT ソリューションをスケールアウトし、それらのコンテナーをデバイスにデプロイして、それらをクラウドから監視します。

この記事では、次の内容について説明します。

  • IoT Central での IoT Edge のゲートウェイ パターン。
  • IoT Edge デバイスが IoT Central アプリケーションに接続される方法。
  • IoT Central を使用して IoT Edge デバイスを管理する方法。

IoT Edge の詳細については、「Azure IoT Edge とは」を参照してください

IoT Edge

Azure IoT Central with Azure IoT Edge

IoT Edge は、次の 3 つのコンポーネントで構成されます。

  • IoT Edge モジュール: Azure サービス、パートナー サービス、またはカスタム コードを実行するコンテナーです。 モジュールは、IoT Edge デバイスにデプロイされ、そのデバイスでローカルに実行されます。 配置マニフェストで IoT Edge デバイスに配置するモジュールを指定します。
  • IoT Edge ランタイム: 個々の IoT Edge デバイス上で動作し、各デバイスにデプロイされたモジュールを管理します。 ランタイムは、IoT Edge エージェントと IoT Edge ハブという 2 つの IoT Edge モジュールで構成されます。
  • クラウドベースのインターフェイス: IoT Edge デバイスをリモートから監視して管理します。 IoT Central はクラウド インターフェイスの例です。

IoT Central により、IoT Edge デバイスで次の機能を使用できるようになります。

  • 配置マニフェスト管理。 IoT Central アプリケーションは、配置マニフェストのコレクションを管理し、デバイスに割り当てることができます。
  • 次のような IoT Edge デバイスの機能を記述するデバイス テンプレート。
    • 各 IoT Edge モジュールが送信するテレメトリ。
    • 各 IoT Edge モジュールが報告するプロパティ。
    • 各 IoT Edge モジュールが応答するコマンド。
    • IoT Edge ゲートウェイ デバイスとダウンストリーム デバイス間の関係。
    • IoT Edge デバイスに格納されていないクラウド プロパティ。
    • デバイスのビューとフォーム。
  • Azure IoT のデバイス プロビジョニング サービスを使用して大規模に IoT Edge デバイスをプロビジョニングする機能。
  • ルールとアクション。
  • カスタム ダッシュボードと分析。
  • IoT Edge デバイスからのテレメトリの連続データ エクスポート。

次のものを IoT Edge デバイスにすることができます。

  • カスタム モジュールで構成されるスタンドアロン デバイス。
  • ダウンストリーム デバイスが接続される "ゲートウェイ デバイス"。 ゲートウェイ デバイスには、カスタム モジュールが含まれる場合があります。

IoT Edge デバイスと IoT Central

IoT Edge デバイスで IoT Central による認証を行うには、Shared Access Signature トークンまたは X.509 証明書を使用できます。 初めて接続する前に IoT Edge デバイスを IoT Central に手動で登録するか、Device Provisioning Service を使用して登録を処理することができます。 詳しくは、「デバイスの接続方法」をご覧ください。

必要に応じて、IoT Central はデバイス テンプレートを使い、IoT Central が IoT Edge デバイスとどのように対話するかを定義します。 たとえば、次の項目がデバイス テンプレートで指定されています。

  • IoT Central で解釈して視覚エフェクトを作成できるように、IoT Edge デバイスから送信されるテレメトリとプロパティの種類。
  • IoT Central でオペレーターがコマンドの呼び出しに使用する UI を表示できるように、IoT Edge デバイスが応答するコマンド。

デバイスに関連付けられたデバイス テンプレートがない場合、テレメトリとプロパティ値は "モデル化されていない" データとして表示されます。 ただし、IoT Central のデータ エクスポート機能を使って、テレメトリとプロパティ値を他のバックエンド サービスに転送することはできます。

IoT Edge のデプロイ マニフェスト

IoT Edge では、ビジネス ロジックをモジュールの形式でデプロイして管理します。 IoT Edge モジュールは、IoT Edge によって管理される最小の計算単位であり、Azure Stream Analytics などの Azure サービスや独自のソリューション固有のコードを含めることができます。

IoT Edge の "配置マニフェスト" には、デバイスにデプロイする IoT Edge モジュールとその構成方法が記述されています。

Azure IoT Central で、Edge マニフェストに移動し、ソリューション内の IoT Edge デバイスの配置マニフェストをインポートして管理します。

次のコード スニペットは、IoT Edge の配置マニフェストの例を示したものです。

{
  "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {}
          }
        },
        "systemModules": {
          "edgeAgent": {
            "type": "docker",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-agent:1.0.9",
              "createOptions": "{}"
            }
          },
          "edgeHub": {
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-hub:1.0.9",
              "createOptions": "{}"
            }
          }
        },
        "modules": {
          "SimulatedTemperatureSensor": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0",
              "createOptions": "{}"
            }
          }
        }
      }
    },
    "$edgeHub": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "routes": {
            "route": "FROM /* INTO $upstream"
        },
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        }
      }
    },
    "SimulatedTemperatureSensor": {
      "properties.desired": {
           "SendData": true,
           "SendInterval": 10
      }
    }
  }
}

このスニペットからは、次のことがわかります。

  • 3 つのモジュールがあります。 すべての配置マニフェストに存在する "IoT Edge エージェント" と "IoT Edge ハブ" のシステム モジュール。 カスタム SimulatedTemperatureSensor モジュール。
  • パブリック モジュール イメージは、接続するために資格情報が必要ない Azure Container Registry リポジトリからプルされます。 プライベート モジュール イメージの場合は、使用するコンテナー レジストリ資格情報を、"IoT Edge エージェント" モジュールの registryCredentials に設定します。
  • カスタム SimulatedTemperatureSensor モジュールには、"SendData": true"SendInterval": 10 という 2 つの書き込み可能なプロパティがあります。

次のスクリーンショットは、IoT Central にインポートされたこの配置マニフェストを示しています。

Screenshot that shows the imported Environmental sensor deployment manifest.

アプリケーションが組織を使っている場合、配置マニフェストを特定の組織に割り当てることができます。 前のスクリーンショットは、Store Manager / Americas 組織に割り当てられた配置マニフェストを示しています。

[Edge マニフェスト] ページを使って IoT Edge デバイスに配置マニフェストを割り当てる方法については、「IoT Central アプリケーションで IoT Edge 配置マニフェストを管理する」を参照してください。

割り当てられていないデバイスを管理する

デバイス テンプレートが関連付けられていない IoT Edge デバイスは、"割り当てられていない" デバイスと呼ばれます。 割り当てられていないデバイスでは、ダッシュボード、デバイス グループ、分析、規則、ジョブなどの IoT Central の機能を使用できません。 ただし、割り当てられていないデバイスでは、次の機能以下の機能を使うことはできます。

  • テレメトリやプロパティなどの生データを表示する。
  • デバイスのコマンドを呼び出す。
  • プロパティの読み取りと書き込み。

Screenshot that shows unassigned device capabilities.

割り当てられていないデバイスのモジュールを個別に管理することもできます。

Screenshot that shows the options for managing modules on unassigned devices.

IoT Edge デバイス テンプレート

IoT Central デバイス テンプレートでは、モデルを利用して IoT Edge デバイスの機能を表します。 IoT Edge デバイスのデバイス テンプレートは省略可能です。 デバイス テンプレートを使うと、ダッシュボードや分析などの IoT Central の機能を使ってテレメトリ、プロパティ、コマンドを操作できます。 次の図は、IoT Edge デバイスのモデル構造を示しています。

Diagram that shows the model structure for an IoT Edge device connected to IoT Central.

IoT Central は、IoT Edge デバイスを次のようにモデル化します。

  • すべての IoT Edge デバイス テンプレートに機能モデルがあります。
  • 配置マニフェストに列挙されているカスタム モジュールごとに、IoT Central を使ってそのモジュールと対話する場合は、モジュール定義を追加します。
  • モジュール機能モデルは、1 つまたは複数のモジュール インターフェイスを実装します。
  • 各モジュール インターフェイスには、テレメトリ、プロパティ、およびコマンドが含まれます。

デバイス マニフェストに定義されているモジュールとプロパティに基づいて、基本機能モデルを生成できます。 詳細については、「デバイス テンプレートにモジュールとプロパティを追加する」を参照してください。

IoT Edge ゲートウェイのパターン

IoT Central は、次の IoT Edge デバイス パターンをサポートしています。

透過的ゲートウェイとしての IoT Edge デバイス

ダウンストリーム デバイスでは、独自の ID を使用して、ゲートウェイ経由で IoT Central デバイスに接続します。

IoT Edge as transparent gateway

IoT Edge デバイスは、IoT Edge デバイスに接続されているダウンストリーム デバイスと共に IoT Central にプロビジョニングされます。 ゲートウェイ経由でダウンストリーム デバイスをプロビジョニングするためのランタイム サポートは、現在サポートされていません。

IoT Edge ハブ モジュールは、IoT Central のように動作し、IoT Central に登録されているデバイスからの接続を処理します。 メッセージは、間にゲートウェイが存在しないかのように、ダウンストリーム デバイスから IoT Central に渡されます。 透過的なゲートウェイでは、カスタム モジュールを使用してダウンストリーム デバイスからのメッセージを操作することはできません。

Note

現在 IoT Central では、IoT Edge デバイスをダウンストリーム デバイスとして、IoT Edge の透過的なゲートウェイに接続することはできません。 これは、IoT Central に接続するすべてのデバイスが、Device Provisioning Service (DPS) を使用してプロビジョニングされるためです。DPS では、現在入れ子になった IoT Edge シナリオはサポートされていません。

プロトコル変換ゲートウェイとしての IoT Edge

このパターンを使用すると、IoT Central によってサポートされているプロトコルを使用できないデバイスに接続できます。

IoT Edge as protocol translation gateway

IoT Edge デバイスは、IoT Central にプロビジョニングされ、ダウンストリーム デバイスからのテレメトリは、IoT Edge デバイスからのものとして表されます。 IoT Edge デバイスに接続されているダウンストリーム デバイスは、IoT Central にはプロビジョニングされません。

ID 変換ゲートウェイとしての IoT Edge

ダウンストリーム デバイスでは、それらに、IoT Central デバイス ID を提供するゲートウェイのモジュールに接続します。

IoT Edge as identity translation gateway

IoT Edge デバイスは、IoT Edge デバイスに接続されているダウンストリーム デバイスと共に IoT Central にプロビジョニングされます。 現時点で IoT Central には、ID を提供し、ダウンストリーム デバイスをプロビジョニングするためのゲートウェイのランタイム サポートはありません。 独自の ID 変換モジュールを使用すると、IoT Central はこのパターンをサポートできます。

ゲートウェイおよびモジュールとのダウンストリーム デバイスのリレーションシップ

ダウンストリーム デバイスが、"IoT Edge ハブ" モジュール経由で IoT Edge ゲートウェイ デバイスに接続する場合、IoT Edge デバイスは透過的なゲートウェイです。

Diagram of transparent gateway

ダウンストリーム デバイスが、カスタム モジュール経由で IoT Edge ゲートウェイ デバイスに接続する場合、IoT Edge デバイスは透過的なゲートウェイです。 次の例で、ダウンストリーム デバイスは、プロトコル変換を行う Modbus カスタム モジュール経由で接続します。

Diagram of custom module connection

次の図では、両方の種類のモジュールを使用した IoT Edge ゲートウェイ デバイスへの接続が示されています。 このシナリオでの IoT Edge デバイスは、透過的ゲートウェイと変換ゲートウェイの両方になります。

Diagram of connecting using both connection modules

ダウンストリーム デバイスからは、複数のカスタム モジュールを通して IoT Edge ゲートウェイ デバイスに接続できます。 次の図は、Modbus カスタム モジュール、BLE カスタム モジュール、"IoT Edge ハブ" モジュールを通して接続しているダウンストリーム デバイスを示したものです。

Diagram of connecting using multiple custom modules

IoT Edge のゲートウェイ パターンの詳細については、「IoT Edge デバイスをゲートウェイとして使用する方法」を参照してください。

IoT Edge ランタイムをデプロイする

IoT Edge ランタイムを実行できる場所については、「Azure IoT Edge のサポートされるシステム」を参照してください。

次の環境に IoT Edge ランタイムをインストールすることもできます。

IoT Edge デバイスを監視する

お使いの IoT Edge フリートをリモートで監視する方法については、「メトリックの収集と転送」を参照してください。

次のステップ

次のステップとして独自の IoT Edge モジュールを開発する方法について学習することをお勧めします。