デバイスの接続性とテレメトリの受信
重要
Azure Digital Twins サービスの新しいバージョンがリリースされました。 新しいサービスの拡張機能に照らして、元の Azure Digital Twins サービス (このドキュメント セットで説明) は廃止されました。
新しいサービスのドキュメントを表示するには、アクティブな Azure Digital Twins のドキュメントを参照してください。
デバイスとセンサーによって送信されるテレメトリ データが、IoT ソリューションのバックボーンを形成します。 これらのさまざまなリソースを表し、場所のコンテキスト内でそれらを管理する方法は、IoT アプリの開発における主な考慮事項です。 Azure Digital Twins は、デバイスやセンサーと空間インテリジェンス グラフを統合することにより、IoT ソリューションの開発のプロセスを簡単にします。
まず、空間グラフのルートに Azure IoT Hub のリソースを作成します。 IoT Hub のリソースにより、メッセージを送信するルート空間の下ですべてのデバイスが許可されます。 IoT ハブが作成されたら、Digital Twins のインスタンス内のセンサーにデバイスを登録します。 デバイスは、Azure IoT device SDK 経由で Digital Twins サービスにデータを送信することができます。
デバイスをオンボードする方法の詳しい手順については、Digital Twins のデプロイと構成に関するチュートリアルの記事をご覧ください。 手順の概要は次のとおりです。
- Azure portal から Digital Twins のインスタンスをデプロイします。
- グラフに空間を作成します。
- IoT Hub リソースを作成し、グラフ内の空間に割り当てます。
- グラフ内にデバイスとセンサーを作成し、前の手順で作成した空間に割り当てます。
- 条件に基づいてテレメトリ メッセージをフィルター処理するマッチャーを作成します。
- テレメトリ メッセージのカスタム処理用のユーザー定義関数を作成し、グラフの空間に割り当てます。
- ユーザー定義関数がグラフ データにアクセスできるように、ロールを割り当てます。
- Digital Twins Management API から IoT Hub デバイスの接続文字列を取得します。
- Azure IoT device SDK を使用してデバイスにデバイス接続文字列を構成します。
次のセクションで、Digital Twins Management API から IoT Hub デバイスの接続文字列を取得する方法について説明します。 また、IoT Hub のテレメトリ メッセージの形式を使用してセンサー ベースのテレメトリを送信する方法を説明します。 Digital Twins は、受信したテレメトリの各部分が空間グラフ内のセンサーに関連付けられることを必要とします。 この要件によって、確実にデータが処理され、適切な空間コンテキスト内でルーティングされます。
Management API から IoT Hub デバイスの接続文字列を取得する
次の例では、YOUR_MANAGEMENT_API_URL
は Digital Twins API の URI を参照しています。
https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
名前 | 置換後の文字列 |
---|---|
YOUR_INSTANCE_NAME | Azure Digital Twins インスタンスの名前 |
YOUR_LOCATION | インスタンスをホストするリージョン |
includes=ConnectionString
パラメーターを指定して Device API で GET 呼び出しを行い、IoT Hub デバイスの接続文字列を取得します。 デバイスの GUID またはハードウェアの ID でフィルター処理を行い、特定のデバイスを検索します。
YOUR_MANAGEMENT_API_URL/devices/YOUR_DEVICE_GUID?includes=ConnectionString
パラメーター | 置換後の文字列 |
---|---|
YOUR_DEVICE_GUID | デバイス ID |
YOUR_MANAGEMENT_API_URL/devices?HardwareIds=YOUR_DEVICE_HARDWARE_ID&includes=ConnectionString
パラメーター値 | 置換後の文字列 |
---|---|
YOUR_DEVICE_HARDWARE_ID | デバイスのハードウェア ID |
応答ペイロードで、デバイスの connectionString プロパティをコピーします。 これは、Azure IoT device SDK を呼び出して Digital Twins にデータを送信する際に使用します。
デバイスからクラウドへのメッセージ
ソリューションのニーズに合わせて、デバイスのメッセージ形式とペイロードをカスタマイズできます。 Azure IoT Device Client Message クラスの Message(byte[] byteArray) によってサポートされるバイト配列またはストリームにシリアル化できる任意のデータ コントラクトを使用します。 対応するユーザー定義関数でデータ コントラクトをデコードする限り、メッセージでは任意のカスタム バイナリ形式を使用できます。 デバイスからクラウドへのメッセージの要件は 1 つだけあります。 処理エンジンにメッセージが適切にルーティングされるようにプロパティのセットを維持する必要があります。
テレメトリのプロパティ
Message のペイロードの内容はサイズが最大 256 KB の任意のデータです。
Message.Properties
型のプロパティに必要ないくつかの要件があります。 システムによってサポートされる必須および省略可能なプロパティを表に示します。
プロパティ名 | 値 | 必須 | 説明 |
---|---|---|---|
DigitalTwins-Telemetry | 1.0 | はい | システムに対してメッセージを示す定数値。 |
DigitalTwins-SensorHardwareId | string(72) |
はい |
Message を送信しているセンサーの一意識別子。 この値は、それを処理するシステムでのオブジェクトの HardwareId プロパティと一致する必要があります。 たとえば、「 00FF0643BE88-CO2 」のように入力します。 |
CreationTimeUtc | string |
No | ペイロードのサンプリング日時を示す ISO 8601 形式の日付文字列。 たとえば、「 2018-09-20T07:35:00.8587882-07:00 」のように入力します。 |
CorrelationId | string |
No | システム全体でイベントをトレースするために使用される UUID。 たとえば、「 cec16751-ab27-405d-8fe6-c68e1412ce1f 」のように入力します。 |
Digital Twins へのメッセージの送信
DeviceClient の SendEventAsync または SendEventBatchAsync の呼び出しを使用して、メッセージを Digital Twins に送信します。
次の手順
- Azure Digital Twins のデータ処理機能とユーザー定義関数の機能については、 Azure Digital Twins のデータ処理とユーザー定義関数を参照してください。