IoT Central デバイスの接続性ガイド
IoT Central アプリケーションを使用すると、数十万台ものデバイスを、そのライフ サイクル全体にわたって監視および管理することができます。 このガイドは、IoT Central に接続されたデバイスで実行されるコードを実装するデバイス開発者向けです。
デバイスは、次のプリミティブを使用して IoT Central とやり取りします。
- "テレメトリ": デバイスが IoT Central に送信するデータ。 たとえば、オンボード センサーから送られてくる温度の値のストリーム。
- "プロパティ": デバイスが IoT Central に報告する状態の値。 たとえば、デバイスのファームウェアの現在のバージョン。 さらに、IoT Central がデバイスで更新できる書き込み可能なプロパティも使用できます (目標温度など)。
- "コマンド": デバイスの動作を制御するために IoT Central から呼び出されます。 たとえば、IoT Central アプリケーションは、デバイスを再起動するためにコマンドを呼び出す場合があります。
デバイスの種類
以降のセクションでは、IoT Central アプリケーションに接続可能なデバイスの主な種類について説明します。
IoT デバイス
IoT デバイスは、IoT Central に直接接続するスタンドアロンのデバイスです。 通常、IoT デバイスは、そのオンボードまたは接続されているセンサーから IoT Central アプリケーションにテレメトリを送信します。 また、スタンドアロン デバイスは、プロパティ値の報告、書き込み可能なプロパティ値の受信、コマンドへの応答を行うこともできます。
IoT Edge デバイス
IoT Edge デバイスは、IoT Central に直接接続します。 IoT Edge デバイスは、自身のテレメトリの送信、そのプロパティのレポート、書き込み可能なプロパティの更新やコマンドへの応答を行うことができます。 IoT Edge モジュールは、IoT Edge デバイス上のローカルでデータを処理します。 また、IoT Edge デバイスが、他のデバイス (ダウンストリーム デバイス) の仲介役を担うこともできます。 たとえば、IoT Edge デバイスは、次のようなシナリオで使用されます。
- テレメトリを IoT Central に送信する前に、テレメトリの集計またはフィルター処理を行います。 この方法は、データを IoT Central に送信するコストの削減に役立ちます。
- IoT Central に直接接続できないデバイスを、IoT Edge デバイスを介して接続できるようにする: たとえば、ダウンストリーム デバイスで、Bluetooth を使用して IoT Edge デバイスに接続し、さらにインターネット経由で IoT Central に接続することができます。
- インターネット経由で IoT Central に接続する場合に生じる待ち時間を回避するために、ダウンストリーム デバイスをローカルで制御します。
IoT Central から見えるのは、IoT Edge デバイスのみです。IoT Edge デバイスに接続されているダウンストリーム デバイスは見えません。
詳細については、Azure IoT Edge デバイスを Azure IoT Central アプリケーションに追加するに関するページを参照してください。
ゲートウェイ
ゲートウェイ デバイスは、IoT Central アプリケーションに接続されている 1 台以上のダウンストリーム デバイスを管理します。 ゲートウェイ デバイスは、ダウンストリーム デバイスからのテレメトリを IoT Central アプリケーションに転送する前に、処理することができます。 ゲートウェイの役割は、IoT デバイスと IoT Edge デバイスの両方が担うことができます。 詳細については、「Azure IoT Central アプリケーションで新しい種類の IoT ゲートウェイ デバイスを定義する」および「IoT Edge の透過的なゲートウェイを経由してデバイスを接続する方法」を参照してください。
デバイスの接続方法
デバイスを IoT Central に接続するときは、"登録済み"、"プロビジョニング済み"、"接続済み" の各ステージの順に行われます。
デバイスが常に Device Provisioning Service を使用して IoT Central に接続する必要がある理由については、「IoT Central に関するデバイスの実装とベスト プラクティス」を参照してください。
デバイスの状態を監視する方法については、「デバイスを監視する」をご覧ください。
デバイスの登録
デバイスを IoT Central に登録する際には、アプリケーションに接続するデバイスの一意の ID を IoT Central に通知します。 このステージでは、必要に応じて、デバイスの機能をアプリケーションに対して宣言するデバイス テンプレートにデバイスを割り当てることができます。
ヒント
デバイス ID には、文字、数字、および -
文字を含めることができます。
IoT Central アプリケーションにデバイスを登録するには、次の 3 つの方法があります。
デバイスが最初に接続を試みるときに自動的に登録します。 このシナリオを使用すると、最初に登録せずに接続できるデバイスを OEM で大量に製造できます。 詳しくは、「デバイスを自動的に登録する」をご覧ください。
CSV ファイルからデバイスを一括で追加します。 詳細については、「デバイスのインポート」をご覧ください。
IoT Central アプリケーションの [デバイス] ページを使って、デバイスを個別に登録します。 詳しくは、「デバイスを追加する」をご覧ください。
必要に応じて、データの送信を開始する前にオペレーターによるデバイスの承認を必須とすることもできます。
ヒント
デバイスからデータの送信が開始される前にオペレーターがデバイスを手動で承認しておく必要があるかどうかは、[アクセス許可] > [デバイス接続グループ] ページの [自動承認] オプションで制御されます。
デバイスを IoT Central アプリケーションに登録する必要があるのは 1 回だけです。
デバイスをプロビジョニングする
デバイスは、初めて IoT Central アプリケーションに接続を試みるとき、Device Provisioning Service (DPS) に接続することによってプロセスを開始します。 DPS により、デバイスの資格情報がチェックされ、有効な場合は、IoT Central の内部 IoT ハブのいずれかへの接続文字列を使ってデバイスがプロビジョニングされます。 DPS は、IoT Central アプリケーションの "グループ登録" 構成を使って、このプロビジョニング プロセスを自動的に管理します。
ヒント
また、やはりデバイスから送信される ID スコープの値により、デバイスの接続先である IoT Central アプリケーションが DPS に通知されます。 ID スコープは、IoT Central アプリケーションの [アクセス許可] > [デバイス接続のグループ] ページで確認できます。
通常、デバイスは、DPS から受け取った接続文字列をキャッシュする必要がありますが、現在の接続が失敗した場合は新しい接続の詳細を取得できるようになっている必要があります。 詳しくは、「接続の障害を処理する」をご覧ください。
DPS を使用すると、次のことが可能になります。
- IoT Central で、大量のデバイスをオンボードして接続できます。
- デバイスの資格情報を生成し、デバイスをオフラインで構成できます。IoT Central UI を通じてデバイスを登録する必要はありません。
- 独自のデバイス ID を使用して、IoT Central にデバイスを登録できます。 独自のデバイス ID を使用して、既存のバックオフィス システムとの統合を簡略化できます。
- 1 つの一貫した方法で IoT Central にデバイスを接続できます。
デバイスを認証して接続する
デバイスは、その資格情報と、DPS から受け取った接続文字列を使って、IoT Central アプリケーションに接続し、認証を行います。 デバイスからは、割り当てられているデバイス テンプレートを識別するモデル ID も送信する必要があります。
IoT Central では、次の 2 種類のデバイス資格情報がサポートされています。
- 共有アクセス署名
- X.509 証明書
詳しくは、デバイス認証の概念に関する記事をご覧ください。
デバイスと、Azure IoT Central 間で交換されるすべてのデータは暗号化されます。 IoT Hub は IoT Hub エンドポイントに接続するデバイスからのすべての要求を認証します。 有線上で資格情報を交換することを避けるため、デバイスでは、認証に署名入りトークンが使用されます。 詳細については、「IoT Hub へのアクセスの制御」を参照してください。
接続パターン
デバイス開発者は、通常、デバイス SDK のいずれかを使用して、IoT Central アプリケーションに接続するデバイスを実装します。 インターネットに接続できないデバイスなど、一部のシナリオでは、ゲートウェイも必要です。
ソリューションの設計は、必要なデバイスの接続パターンを考慮する必要があります。 これらのパターンは、2 つの大きなカテゴリに分類されます。 どちらのカテゴリーにも、IoT Central アプリケーションにテレメトリーを送信するデバイスが含まれます。
永続的な接続
持続的な接続が必要な場合、ソリューションにはコマンドとコントロール機能が必要です。 コマンドとコントロールのシナリオでは、IoT Central アプリケーションがデバイスにコマンドを送信し、ほぼリアルタイムでデバイスの動作をコントロールします。 永続的な接続では、クラウドへのネットワーク接続が維持され、中断が発生するたびに再接続されます。 IoT Central への永続的なデバイス接続には、MQTT またはAMQP プロトコルのいずれかを使用します。
次のオプションは、持続的なデバイス接続をサポートします。
IoT デバイス SDK を使用してデバイスを接続し、テレメトリーを送信します。
デバイス SDK は、IoT Central への持続的な接続を作成するために、MQTT と AMQP の両方のプロトコルを使用できます。
ローカルネットワーク上のデバイスを IoT Edge デバイスに接続し、テレメトリーを IoT Centra lに転送します。
IoT Edgeデバイスは、IoT Central に持続的な接続を行うことができます。 インターネットに接続できないデバイスやネットワーク分離が必要なデバイスには、IoT Edge デバイスをローカルゲートウェイとして使用します。 ゲートウェイは、デバイスのテレメトリーをI oT Central に転送します。 このオプションは、IoT Edge デバイスに接続されたダウンストリーム デバイスをコマンドで制御できます。
詳細については、「Azure IoT Edge デバイスを Azure IoT Central アプリケーションに接続する」を参照してください。
カスタム プロトコルを使用するデバイスを接続するには、IoT Central デバイス ブリッジを使用します。
デバイスによっては、LWM2M や COAPなど、IoT Central が現在サポートしていないプロトコルやエンコードを使用しているものがあります。 IoT Central デバイス ブリッジは、テレメトリーを IoT Central に転送するトランスレーターとして機能します。
詳しくは、「Azure IoT Central デバイス ブリッジ GitHub リポジトリ」を参照してください。
エフェメラル接続
エフェメラル接続は、デバイスが IoT Central アプリケーションにテレメトリを送信するための簡単な接続です。 デバイスはテレメトリーを送信した後、接続を切断します。 デバイスは、送信するテレメトリが増えると再接続します。 エフェメラル接続は、コマンドとコントロールのシナリオには適していません。
次のオプションは、エフェメラル デバイス接続に対応しています。
HTTP を使用してデバイスを接続し、テレメトリを送信:
IoT Central は、HTTP API を使用してテレメトリを送信するデバイス クライアントをサポートしています。 詳しくは、「Send Device Event API」ドキュメントを参照してください。
Note
HTTP API を使用してテレメトリを送信する前に、DPS を使用してデバイスを IoT Central にプロビジョニングおよび登録します。
デバイスの接続には、ステートレス モードの IoT Central デバイス ブリッジを使用します。
IoT Central デバイス ブリッジを Azure Function として展開する。 この機能は、受信したテレメトリ データを HTTP 要求として受け取り、IoT Central に転送します。 IoT Central デバイス ブリッジ は、DPS と統合し、デバイス プロビジョニングを自動的に処理します。
詳しくは、「Azure IoT Central デバイス ブリッジ GitHub リポジトリ」をご覧ください。
IoT Central デバイス ブリッジをステートレス モードで使用し、外部のクラウドと接続します。
Azure IoT Central デバイス ブリッジを使用して、SigFox、Particle、The Things Network など、他の IoT クラウドからIoT Central にメッセージを転送します。
詳しくは、「Azure IoT Central デバイス ブリッジ GitHub リポジトリ」をご覧ください。
イングレス時のデータ変換とカスタム計算
シナリオによっては、外部システムまたはストアからのデータでデバイスのテレメトリを拡張する必要があります。 IoT Central に届く前にテレメトリを拡張することで、ダッシュボードやルールなどの機能で拡張されたデータを使用することができます。
シナリオによっては、IoT Central に届く前にテレメトリを変換する必要があります。 例えば、レガシ形式からのテレメトリの変換などです。
IoT Central がテレメトリを取り込む前に、カスタム変換や計算を行うために次のオプションが利用できます。
IoT Edge の利用:
IoT Edge のカスタムモジュールを使用して、カスタム変換や計算を行います。 デバイスが Azure IoT デバイス SDK を使用する場合は、IoT Edge を使用してください。
IoT Central デバイス ブリッジを使用します。
IoT Central デバイス ブリッジ アダプタを使用して、カスタム変換や計算を行います。
詳しくは、「IoT Central に対するデータの変換」をご覧ください。
次のステップ
デバイス開発者がコードの内容を詳しく知りたい場合は、次の手順として、クライアント アプリケーションを作成して Azure IoT Central アプリケーションに接続することをお勧めします。
デバイスの実装について詳しく知りたい場合は、「IoT Central でのデバイスの実装とベスト プラクティス」をご覧ください。
IoT Central の詳細な使用方法については、次の手順として、クイックスタートの「Azure IoT Central アプリケーションの作成」から始めることをお勧めします。