デバイス管理と制御

この概要では、一般的な Azure IoT ソリューションでのデバイスの管理と制御に関する主要な概念について説明します。 各セクションには、追加の詳細とガイダンスを提供するコンテンツへのリンクが含まれています。

IoT Central アプリケーションは、IoT Hub と Device Provisioning Service (DPS) サービスを内部で使用します。 そのため、この記事の概念は、IoT Central を使用して IoT シナリオを探求するか、IoT Hub と DPS を使用してソリューションを構築するかにあてはまります。

一般的な IoT ソリューションのコンポーネントの概要を次の図に示します。 この記事では、IoT ソリューションのデバイス管理と制御のコンポーネントに焦点をあてています。

Diagram that shows the high-level IoT solution architecture highlighting device connectivity areas.

Azure IoT では、デバイス管理とは、デバイスのプロビジョニングや更新などのプロセスを指します。 デバイス管理には、次のタスクが含まれます。

  • デバイス登録
  • デバイス プロビジョニング
  • デバイスの展開
  • デバイスの更新プログラム
  • デバイスのキーの管理とローテーション
  • デバイスの監視
  • デバイスの有効化と無効化

Azure IoT では、"コマンドと制御" とは、デバイスにコマンドを送信し、それから応答を受け取るプロセスを指します。 たとえば、デバイスに次の目的でコマンドを送信できます。

  • 目標温度を設定する。
  • 直近の 2 時間の温度の最大と最小の値を要求する。
  • テレメトリの間隔を 10 秒に設定する。

プリミティブ

Azure IoT ソリューションでは、デバイスの管理とコマンドと制御の両方に次のプリミティブを使用できます。

  • "デバイス ツイン"。状態データをクラウドと共有および同期します。 たとえば、デバイスはデバイス ツインを使用して、制御するバルブの現在の状態をクラウドに報告し、クラウドから目的の目標温度を受け取ることができます。
  • "デジタル ツイン"。デジタル世界のデバイスを表します。 たとえば、デジタル ツインは、デバイスの物理的な場所、その機能、および他のデバイスとの関係を表すことができます。 デバイス ツインとデジタル ツインの違いの詳細については、「IoT プラグ アンド プレイのデジタル ツインを理解する」を参照してください。
  • "ダイレクト メソッド"。クラウドからコマンドを受け取ります。 ダイレクト メソッドはパラメーターを使用し、応答を返すことができます。 たとえば、クラウドはダイレクト メソッドを呼び出して、30 秒以内に再起動することをデバイスに要求できます。
  • "cloud-to-device" メッセージ。クラウドから一方向の通知を受け取ります。 たとえば、更新プログラムをダウンロードする準備ができていることを示す通知です。

詳細については、「cloud-to-device 通信に関するガイダンス」を参照してください。

デバイス登録

デバイスは、IoT ハブに接続する前に登録する必要があります。 デバイス登録は、クラウドでデバイス ID を作成するプロセスです。 各 IoT ハブには、独自の内部デバイス レジストリがあります。 デバイス ID は、Azure IoT に接続するときにデバイスを認証するために使用されます。 デバイス登録エントリには、次のプロパティが含まれます。

  • 一意のデバイス ID。
  • 対称キーや X.509 証明書などの認証情報。
  • デバイスの種類。 それが IoT Edgeデバイスかどうか。

デバイスが侵害されている、または適切に機能していないと思われる場合は、デバイス レジストリで無効にして、クラウドに接続できないようにすることができます。 問題が解決された後にデバイスがクラウドに接続できるようにするために、デバイス レジストリで再度有効にできます。 デバイス レジストリからデバイスを完全に削除して、クラウドへの接続を完全に防ぐこともできます。

詳細については、「IoT Hub の ID レジストリを理解する」を参照してください。

IoT Central には、基になる IoT ハブでデバイス レジストリを管理するための UI が用意されています。 詳しくは、「デバイスを追加する (IoT Central)」をご覧ください。

デバイス プロビジョニング

接続する必要がある IoT ハブの詳細を、ソリューション内の各デバイスに構成する必要があります。 ソリューション内の各デバイスは手動で構成できますが、デバイスが多数ある場合、この方法は実用的ではないことがあります。 この問題を回避するために、Device Provisioning Service (DPS) を使用して、各デバイスを IoT ハブに自動的に登録してから、必要な接続情報を各デバイスにプロビジョニングできます。 IoT ソリューションで複数の IoT ハブを使用する場合は、DPS を使用して、デバイスに最も近いハブなどの条件に基づいて、デバイスをハブにプロビジョニングできます。 現地にデバイスを物理的にデプロイする前に、デバイスを登録およびプロビジョニングするためのルールを DPS に構成できます。

IoT ソリューションが IoT Hub を使用する場合、DPS の使用はオプションです。 IoT Central を使用する場合、ソリューションは、IoT Central が管理する DPS インスタンスを自動的に使用します。

詳細については、Device Provisioning Service の概要に関するページを参照してください。

デバイスの展開

Azure IoT では、デバイスのデプロイは通常、IoT Edge デバイスにソフトウェアをインストールするプロセスを指します。 IoT Edge デバイスが IoT ハブに接続すると、デバイスで実行するモジュールの詳細を含む "配置マニフェスト" を受け取ります。 配置マニフェストには、モジュールの構成情報も含まれています。 IoT Edge デバイスで使用できる標準モジュールはいくつかあります。 また、独自のカスタム モジュールを作成することもできます。

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

IoT Central を使用している場合は、IoT Central UI を使用して配置マニフェストを管理できます。

デバイスの更新プログラム

通常、IoT ソリューションには、デバイス ソフトウェアを更新する方法が含まれている必要があります。 IoT Edge デバイスの場合は、配置マニフェストを更新することで、デバイスで実行されるモジュールを更新できます。

IoT Edge 以外のデバイスの場合は、デバイス ファームウェアを更新する方法が必要です。 この更新プロセスでは、クラウドからデバイスへのメッセージを使用して、ファームウェアの更新プログラムが利用可能であることをデバイスに通知できます。 そうすると、デバイスがカスタム コードを実行し、更新プログラムをダウンロードしてインストールします。

Device Update for IoT Hub サービスには、デバイスを更新するためのマネージド ソリューションが用意されています。 これを使用すると、ファームウェアの更新プログラムをクラウドにアップロードしてから、デバイスに配布できます。 更新プロセスを監視し、更新が失敗した場合は前のバージョンにロールバックすることもできます。

デバイスのキーの管理とローテーション

IoT ソリューションのライフサイクル中に、デバイスの認証に使用されるキーのロール オーバーが必要になる場合があります。 たとえば、キーが侵害されたと疑われる場合や証明書の有効期限が切れた場合は、キーのロール オーバーが必要になることがあります。

デバイスの監視

ソリューション全体の監視の一環として、デバイスの正常性の監視が必要になることがあります。 たとえば、デバイスの正常性の監視や、デバイスがクラウドに接続されなくなった日時の検出が必要になることがあります。 デバイスを監視するためのオプションには次のようなものがあります。

  • デバイスがデバイス ツインを使用して、現在の状態をクラウドに報告します。 たとえば、デバイスは現在の内部温度や現在のバッテリ レベルを報告できます。
  • デバイスがテレメトリ メッセージをクラウドに送信してアラートを発生させることができます。
  • デバイスのクラウドに対する接続や切断の時点で IoT Hub がイベントを発生させることができます。
  • IoT Central がルールを使用して、指定された条件が満たされたときにアクションを実行できます。
  • 機械学習ツールを使用してデバイスのテレメトリ ストリームを分析し、デバイスの問題を示す異常を特定します。

詳細については、「デバイス接続の状態を監視する (IoT Hub)」を参照してください。

デバイスの移行

デバイスを IoT Central から IoT Hub に移行する必要がある場合は、デバイス移行ツールを使用できます。 詳細については、IoT Central から IoT Hub へのデバイスの移行に関するページを参照してください。

コマンドと制御

デバイスにコマンドを送信して動作を制御するには、次の方法を使用します。

  • ダイレクト メソッド: 結果を即座に確認することが求められる通信用。 ダイレクト メソッドは、対話型のデバイス制御によく使用されます (ファンの電源を投入するなど)。

  • デバイス ツインの "目的のプロパティ" デバイスを特定の状態にするための実行時間が長いコマンド用。 たとえば、テレメトリの送信間隔を 30 分に設定します。

  • "cloud-to-device メッセージ": デバイスに対する一方向の通知用。

詳細については、「cloud-to-device 通信に関するガイダンス」を参照してください。

一部のシナリオでは、フィードバック ループに基づいてデバイス制御を自動化できます。 たとえば、デバイスの温度が高すぎる場合、クラウドで実行されているロジックが、ファンをオンにするコマンドを送信できます。 次に、温度が正常に戻ったときにファンをオフにするコマンドをクラウド プロセスが送信できます。

この種の自動化をローカルで実行することもできます。 たとえば、IoT Edge を使用してゲートウェイ デバイスを実装する場合は、IoT Edge モジュールでデバイスを制御するロジックを実行できます。 エッジでこの種のロジックを実行すると、待機時間が短縮され、ネットワークが停止した場合の回復性が向上します。

ジョブ

ダイレクト メソッド、目的のプロパティ、および cloud-to-device メッセージを使用して、個々のデバイスにコマンドを送信できます。 複数のデバイスにコマンドを送信する必要がある場合は、ジョブを使用できます。 ジョブを使用すると、コマンドと目的のプロパティの更新を複数のデバイスに同時にスケジュールして送信できます。 ジョブを使用してコマンドの進行状況を監視し、コマンドが失敗した場合は前の状態にロールバックすることもできます。

詳細については、以下をご覧ください。

次のステップ

Azure IoT ソリューションでのデバイスの管理と制御について概要を確認したので、推奨される手順を次にいくつか示します。