データ エクスポートを使用してクラウドの宛先に IoT データをエクスポートする (レガシ)
従来のデータ エクスポート (クラシック) 機能は非推奨となりました。新しいデータ エクスポート機能への移行を計画してください。 従来のデータ エクスポートには、さまざまなデータ型の可用性、フィルター処理、メッセージ変換などの重要な機能がありません。 次の表を参照して、従来のデータ エクスポートと新しいデータ エクスポートを比較してください。
機能 | 従来のデータ エクスポート (クラシック) | 新しいデータ エクスポート |
---|---|---|
使用できるデータの種類 | テレメトリ、デバイス、デバイス テンプレート | テレメトリ、プロパティ変更、デバイス接続性の変更、デバイスのライフサイクルの変更、デバイス テンプレートのライフサイクルの変更 |
フィルター処理 | なし | エクスポートするデータの種類によって異なります。 テレメトリの場合は、テレメトリ、メッセージ プロパティ、プロパティ値によるフィルター処理 |
エンリッチメント | なし | デバイスのカスタム文字列またはプロパティ値を使用してエンリッチ化する |
変換 | なし | エクスポート メッセージを目的の図形に変換する |
変換先 | Azure Event Hubs、Azure Service Bus キューおよびトピック、Azure Blob Storage | 従来のデータ エクスポート + Azure Data Explorer および Webhook の場合と同じ |
重要な制限 | アプリごとに5つのエクスポート、エクスポートごとに1つのエクスポート先 | エクスポートの宛先の接続数はアプリごとに 10 個 |
移行に関する注意事項
従来のデータ エクスポート (クラシック) を新しいデータ エクスポートに移行するには、次のことを行う必要があります。
- テスト IoT Central アプリケーションを使用し、同じデータ型と変換先を使用して新しいデータ エクスポートを作成します。 必要に応じて、エンリッチメントやデータ変換機能を使用して、レガシ データ エクスポートのメッセージの図形と同様にエクスポート メッセージの図形を作成することもできます。
- 新しいデータ エクスポートをテストし、運用環境に移行する準備ができたら、アクティブな従来のデータ エクスポートに対するワークフローまたは依存関係が安全に削除されていることを確認します。
- 運用環境に新しいデータ エクスポートを作成し、エクスポート メッセージが要件を満たしていることを確認します。 その後、新しいデータ エクスポートにワークフローまたは依存関係を追加できます。
- すべての従来のデータ エクスポートを新しいデータ エクスポートに正常に移行した後、従来のデータ エクスポートを削除できます。
データ型の移行に関する考慮事項
既定のデータ形式は、従来のデータ エクスポートと新規データ エクスポート間のデータの種類によって異なります。 詳細については、新しいデータ エクスポートのデータ形式に関する記事と従来のレガシ データ エクスポートのデータ形式に関する記事を参照してください。 新しいデータ エクスポートに移行する場合は、従来のデータ エクスポートのデータ形式の依存関係をすべて削除する必要があります。 ただし、強い依存関係やワークフローが従来のデータ エクスポートに関連付けられている場合は、次の考慮事項に従って移行の課題に対処できます。
テレメトリ: 新しいデータ エクスポートのテレメトリに従来のデータ エクスポート形式を一致させる場合は、変換機能を使用して、次の例のような変換クエリを作成できます。
.telemetry | map({ key: .name, value: .value }) | from_entries
デバイス: 現在、デバイスのデータ型で従来のデータ エクスポートを使用している場合は、プロパティの変更とデバイス ライフサイクル イベントの両方のデータ型を新しいエクスポートで使用して、同じデータをエクスポートできます。 両方のデータ型に対して次の変換クエリを使用して、同等のデータ構造を実現できます。
approved: .device.approved,
provisioned: .device.provisioned,
simulated: .device.simulated,
cloudProperties: .device.cloudProperties | map({ key: .name, value: .value }) | from_entries,
displayName: .device.name,
id: .device.id,
instanceOf: .device.templateId,
properties: .device.properties.reported | map({ key: .name, value: .value }) | from_entries
デバイス テンプレート: 現在、デバイス テンプレート データ型で従来のデータ エクスポートを使用している場合は、「デバイス テンプレート - Get API 呼び出し」を使用して同じデータを取得できます。
移行先の移行に関する考慮事項
新しいデータ エクスポートでは、移行先を作成して、それをさまざまなデータ エクスポート間で再利用できます。 従来のデータ エクスポートから移行する場合は、既存のレガシ データ エクスポート先に関する情報を格納する移行先を新しいデータ エクスポートに作成する必要があります。
Note
新しいデータ エクスポートでは、有効でない JSON メッセージのエクスポートをサポートしていません。
IoT データをクラウドの宛先にエクスポートする (レガシ)
注意
この記事では、IoT Central での従来のデータ エクスポート機能について説明します。
従来のデータ エクスポート (クラシック) は、廃止される予定です。 従来のデータ エクスポートを新しいエクスポートに移行する
最新のデータ エクスポート機能の詳細については、Blob Storage を使用して、クラウドの宛先に IoT データをエクスポートするを参照してください。
この記事では、Azure IoT Central のデータ エクスポート機能を使用する方法について説明します。 この機能を使用すると、データを Azure Event Hubs、Azure Service Bus、または Azure Blob Storage のインスタンスに継続的にエクスポートできます。 データ エクスポートでは JSON 形式が使用され、テレメトリ、デバイス情報、デバイス テンプレート情報を含めることができます。 エクスポートされたデータは次のことに使用します。
- ウォーム パスの分析情報と分析。 このオプションには、Azure Stream Analytics でのカスタム ルールのトリガー、Azure Logic Apps でのカスタム ワークフローのトリガー、または変換するための Azure Functions を介した受け渡しなどが含まれます。
- Azure Machine Learning でのモデルのトレーニングや Microsoft Power BI での長期傾向分析などのコールド パス分析。
注意
データ エクスポートを有効にすると、その時点以降のデータのみが取得されます。 現在は、データ エクスポートがオフになっていたときのデータを取得することはできません。 より多くの履歴データを保持するには、データ エクスポートを早い段階で有効にしてください。
前提条件
ご利用の IoT Central アプリケーションの管理者であるか、データ エクスポートのアクセス許可を持っている必要があります。
エクスポート先の設定
データ エクスポートを構成する前に、エクスポート先が存在している必要があります。
Event Hubs 名前空間の作成
エクスポート先となる既存の Event Hubs 名前空間がない場合は、次の手順に従います。
Azure portal で新しい Event Hubs 名前空間を作成します。 詳細については、Azure Event Hubs のドキュメントを参照してください。
サブスクリプションを選択します。 ご使用の IoT Central アプリケーションと同じサブスクリプションではない、他のサブスクリプションにデータをエクスポートできます。 この場合、接続文字列を使用して接続します。
Event Hubs 名前空間にイベント ハブを作成します。 名前空間に移動し、上部の [+ イベント ハブ] を選択して、イベント ハブ インスタンスを作成します。
Service Bus 名前空間の作成
エクスポート先となる既存の Service Bus 名前空間がない場合は、次の手順に従います。
Azure portal で新しい Service Bus 名前空間を作成します。 詳細については、Azure Service Bus のドキュメントを参照してください。
サブスクリプションを選択します。 ご使用の IoT Central アプリケーションと同じサブスクリプションではない、他のサブスクリプションにデータをエクスポートできます。 この場合、接続文字列を使用して接続します。
エクスポート先のキューまたはトピックを作成するには、Service Bus 名前空間に移動し、 [+ キュー] または [+ トピック] を選択します。
エクスポート先として Service Bus を選択する場合、キューとトピックでセッションまたは重複の検出が有効になっていてはいけません。 これらのオプションのいずれかが有効になっていると、一部のメッセージがキューやトピックに到着しません。
ストレージ アカウントの作成
エクスポート先となる既存の Azure Storage アカウントがない場合は、次の手順に従います。
Azure portal で新しいストレージ アカウントを作成します。 新しい Azure Blob Storage アカウントまたは Azure Data Lake Storage v2 ストレージ アカウントの作成の詳細を確認できます。 データのエクスポートでは、ブロック BLOB をサポートするストレージ アカウントにのみデータを書き込めます。 次の一覧は、互換性のある既知のストレージ アカウントの種類を示しています。
パフォーマンス レベル アカウントの種類 Standard General Purpose V2 Standard General Purpose V1 Standard BLOB ストレージ Premium ブロック BLOB ストレージ ご自分のストレージ アカウントでコンテナーを作成します。 ストレージ アカウントに移動します。 [Blob service] で [BLOB の参照] を選択します。 上部の [+ コンテナー] を選択して、新しいコンテナーを作成します。
データ エクスポートの設定
これでデータのエクスポート先ができたので、次の手順に従ってデータ エクスポートを設定します。
ご使用の IoT Central アプリケーションにサインインします。
左側のペインで、 [データのエクスポート] を選択します。
ヒント
左側のペインに [データのエクスポート] が表示されない場合は、アプリでデータ エクスポートを構成するアクセス許可がありません。 データ エクスポートの設定について、管理者に問い合わせてください。
[+ 新規] をクリックします。 エクスポート先として、Azure Blob Storage、Azure Event Hubs、Azure Service Bus キュー、または Azure Service Bus トピックのいずれかを選択します。 アプリケーションごとのエクスポートの最大数は 5 です。
エクスポートの名前を入力します。 ドロップダウン リスト ボックスで、ご使用の名前空間を選択するか、接続文字列を入力します。
ヒント
ご使用の IoT Central アプリケーションと同じサブスクリプション内のストレージ アカウント、Event Hubs 名前空間、Service Bus 名前空間のみが表示されます。 このサブスクリプションとは異なる場所にエクスポートする場合は、 [接続文字列を入力してください] を選択して、手順 6 に進みます。
ドロップダウン リスト ボックスから、イベント ハブ、キュー、トピック、またはコンテナーを選択します。
(省略可能) [Enter a connection string](接続文字列を入力する) を選択すると、接続文字列を貼り付けるための新しいボックスが表示されます。 次の接続文字列を取得するには:
- Event Hubs や Service Bus。Azure portal で名前空間に移動します。
- 名前空間全体に対して接続文字列を使用するには:
- [設定] で、 [共有アクセス ポリシー] を選択します。
- 新しいキーを作成するか、送信アクセス許可を持っている既存のキーを選択します。
- プライマリまたはセカンダリの接続文字列をコピーします。
- 特定のイベント ハブ インスタンスや Service Bus キューまたはトピックに対して接続文字列を使用するには、[エンティティ] > [Event Hubs]、[エンティティ] > [キュー]、[エンティティ] > [トピック] のいずれかに移動します。 特定のインスタンスを選択し、上述のものと同じ手順に従って接続文字列を取得します。
- 名前空間全体に対して接続文字列を使用するには:
- ストレージ アカウント。Azure portal でストレージ アカウントに移動します。
- ストレージ アカウント全体に対する接続文字列のみがサポートされています。 単一のコンテナーを対象とした接続文字列はサポートされていません。
- [設定] で [アクセス キー] を選択します。
- key1 接続文字列または key2 接続文字列のいずれかをコピーします。
- ストレージ アカウント全体に対する接続文字列のみがサポートされています。 単一のコンテナーを対象とした接続文字列はサポートされていません。
接続文字列を貼り付けます。 インスタンスまたは大文字と小文字を区別してコンテナー名を入力します。
- Event Hubs や Service Bus。Azure portal で名前空間に移動します。
[エクスポートするデータ] で、種類を [オン] に設定して、エクスポートするデータの種類を選択します。
データ エクスポートを有効にするには、 [有効] トグルが [オン] になっていることを確認します。 [保存] を選択します。
数分後に、選択したエクスポート先にデータが表示されます。
エクスポートの内容と形式
エクスポートされたテレメトリ データには、テレメトリ値自体だけでなく、デバイスが IoT Central に送信したメッセージ全体が含まれています。 エクスポートされたデバイス データには、すべてのデバイスのプロパティとメタデータに対する変更が含まれており、エクスポートされたデバイス テンプレートには、すべてのデバイス テンプレートに対する変更が含まれています。
Event Hubs と Service Bus では、データはほぼリアルタイムでエクスポートされます。 データは body
プロパティ内にあり、JSON 形式になっています。 次の例を参照してください。
Blob Storage の場合、データは 1 分に 1 回エクスポートされ、各ファイルには、最後にエクスポートされたファイル以降の変更のバッチが含まれます。 エクスポートされたデータは、JSON 形式で 3 つのフォルダーに配置されます。 ストレージ アカウントでの既定のパスは次のとおりです。
- テレメトリ: {container}/{app-id}/telemetry/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
- デバイス: {container}/{app-id}/devices/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
- デバイス テンプレート: {container}/{app-id}/deviceTemplates/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
Azure portal でエクスポートされたファイルを参照するには、そのファイルに移動し、 [BLOB の編集] タブを選択します。
テレメトリ
Event Hubs と Service Bus の場合、IoT Central は、デバイスからメッセージを受信した後、すぐに新しいメッセージをエクスポートします。 エクスポートされた各メッセージには、デバイスが body プロパティで送信した完全なメッセージが JSON 形式で含まれています。
Blob Storage の場合、メッセージはバッチ処理され、1 分に 1 回エクスポートされます。 エクスポートされたファイルでは、IoT Hub メッセージ ルーティングによって Blob Storage にエクスポートされたメッセージ ファイルと同じ形式が使用されます。
注意
Blob Storage の場合、デバイスが、contentType: application/JSON
と contentEncoding:utf-8
(または utf-16
、utf-32
) を持つメッセージを送信していることを確認してください。 例については、IoT Hub のドキュメントを参照してください。
テレメトリを送信したデバイスは、デバイス ID で表されます (以下のセクションを参照)。 デバイスの名前を取得するには、デバイスのデータをエクスポートし、デバイス メッセージの deviceId と一致する connectionDeviceId を使用して各メッセージを関連付けます。
次の例は、イベント ハブまたは Service Bus のキューまたはトピックから受信したメッセージを示しています。
{
"temp":81.129693132351775,
"humid":59.488071477541247,
"EventProcessedUtcTime":"2020-04-07T09:41:15.2877981Z",
"PartitionId":0,
"EventEnqueuedUtcTime":"2020-04-07T09:38:32.7380000Z"
}
このメッセージには、送信元デバイスのデバイス ID は含まれていません。
Azure Stream Analytics クエリのメッセージ データからデバイス ID を取得するには、GetMetadataPropertyValue 関数を使用します。 たとえば、「Stream Analytics、Azure Functions、SendGrid を使用してカスタム ルールで Azure IoT Central を拡張する」のクエリを参照してください。
Azure Databricks または Apache Spark のワークスペースでデバイス ID を取得するには、systemProperties を使用します。 たとえば、「Azure Databricks を使用したカスタム分析で Azure IoT Central を拡張する」の Databricks ワークスペースを参照してください。
次の例は、Blob Storage にエクスポートされるレコードを示しています。
{
"EnqueuedTimeUtc":"2019-09-26T17:46:09.8870000Z",
"Properties":{
},
"SystemProperties":{
"connectionDeviceId":"<deviceid>",
"connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"connectionDeviceGenerationId":"637051167384630591",
"contentType":"application/json",
"contentEncoding":"utf-8",
"enqueuedTime":"2019-09-26T17:46:09.8870000Z"
},
"Body":{
"temp":49.91322758395974,
"humid":49.61214852573155,
"pm25":25.87332214661367
}
}
デバイス
スナップショット内の各メッセージまたはレコードは、最後にエクスポートされたメッセージ以降に、そのデバイスとクラウドのプロパティに加えられた 1 つ以上の変更を表しています。 メッセージには以下が含まれています。
id
IoT Central でデバイスの- デバイスの
displayName
instanceOf
のデバイス テンプレート IDsimulated
フラグ (デバイスがシミュレートされたデバイスの場合は true)provisioned
フラグ (デバイスがプロビジョニングされている場合は true)approved
フラグ (デバイスでデータの送信が承認されている場合は true)- プロパティ値
properties
(デバイスとクラウドのプロパティ値を含む)
削除されたデバイスはエクスポートされません。 現在のところ、エクスポートされたメッセージ内に、削除されたデバイスを示すものはありません。
Event Hubs と Service Bus の場合、IoT Central はデバイス データを含むメッセージをほぼリアルタイムでイベント ハブまたは Service Bus のキューまたはトピックに送信します。
Blob Storage の場合は、最後のものが書き込まれてから以降のすべての変更を含む新しいスナップショットが 1 分間に 1 回エクスポートされます。
次のメッセージの例は、イベント ハブまたは Service Bus のキューまたはトピック内のデバイスとプロパティ データに関する情報を示しています。
{
"body":{
"id": "<device Id>",
"etag": "<etag>",
"displayName": "Sensor 1",
"instanceOf": "<device template Id>",
"simulated": false,
"provisioned": true,
"approved": true,
"properties": {
"sensorComponent": {
"setTemp": "30",
"fwVersion": "2.0.1",
"status": { "first": "first", "second": "second" },
"$metadata": {
"setTemp": {
"desiredValue": "30",
"desiredVersion": 3,
"desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
"ackVersion": 3
},
"fwVersion": { "ackVersion": 3 },
"status": {
"desiredValue": {
"first": "first",
"second": "second"
},
"desiredVersion": 2,
"desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
"ackVersion": 2
}
},
}
},
"installDate": { "installDate": "2020-02-01" }
},
"annotations":{
"iotcentral-message-source":"devices",
"x-opt-partition-key":"<partitionKey>",
"x-opt-sequence-number":39740,
"x-opt-offset":"<offset>",
"x-opt-enqueued-time":1539274959654
},
"partitionKey":"<partitionKey>",
"sequenceNumber":39740,
"enqueuedTimeUtc":"2020-02-01T18:14:49.3820326Z",
"offset":"<offset>"
}
このスナップショットは、Blob Storage のデバイスとプロパティ データを示すメッセージの例です。 エクスポートされたファイルには、1 つのレコードにつき 1 行が含まれます。
{
"id": "<device Id>",
"etag": "<etag>",
"displayName": "Sensor 1",
"instanceOf": "<device template Id>",
"simulated": false,
"provisioned": true,
"approved": true,
"properties": {
"sensorComponent": {
"setTemp": "30",
"fwVersion": "2.0.1",
"status": { "first": "first", "second": "second" },
"$metadata": {
"setTemp": {
"desiredValue": "30",
"desiredVersion": 3,
"desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
"ackVersion": 3
},
"fwVersion": { "ackVersion": 3 },
"status": {
"desiredValue": {
"first": "first",
"second": "second"
},
"desiredVersion": 2,
"desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
"ackVersion": 2
}
},
}
},
"installDate": { "installDate": "2020-02-01" }
}
デバイス テンプレート
各メッセージまたはスナップショット レコードは、最後にエクスポートされたメッセージ以降に公開されたデバイス テンプレートに加えられた 1 つ以上の変更を表しています。 各メッセージまたはレコードで送信される情報としては、次のものがあります。
- 上記のデバイス ストリームの
instanceOf
に一致するデバイス テンプレートのid
- デバイス テンプレートの
displayName
- デバイスの
capabilityModel
(そのinterfaces
を含む)、テレメトリ、プロパティ、およびコマンドの定義 cloudProperties
の定義capabilityModel
に埋め込まれたオーバライドと初期値
削除されたデバイス テンプレートはエクスポートされません。 現在のところ、エクスポートされたメッセージ内に、削除されたデバイス テンプレートを示すものはありません。
Event Hubs と Service Bus の場合、IoT Central はデバイス テンプレート データを含むメッセージをほぼリアルタイムでイベント ハブまたは Service Bus のキューまたはトピックに送信します。
Blob Storage の場合は、最後のものが書き込まれてから以降のすべての変更を含む新しいスナップショットが 1 分間に 1 回エクスポートされます。
この例は、イベント ハブまたは Service Bus のキューまたはトピック内にあるデバイス テンプレート データに関するメッセージを示しています。
{
"body":{
"id": "<device template id>",
"etag": "<etag>",
"types": ["DeviceModel"],
"displayName": "Sensor template",
"capabilityModel": {
"@id": "<capability model id>",
"@type": ["CapabilityModel"],
"contents": [],
"implements": [
{
"@id": "<component Id>",
"@type": ["InterfaceInstance"],
"name": "sensorComponent",
"schema": {
"@id": "<interface Id>",
"@type": ["Interface"],
"displayName": "Sensor interface",
"contents": [
{
"@id": "<id>",
"@type": ["Telemetry"],
"displayName": "Humidity",
"name": "humidity",
"schema": "double"
},
{
"@id": "<id>",
"@type": ["Telemetry", "SemanticType/Event"],
"displayName": "Error event",
"name": "error",
"schema": "integer"
},
{
"@id": "<id>",
"@type": ["Property"],
"displayName": "Set temperature",
"name": "setTemp",
"writable": true,
"schema": "integer",
"unit": "Units/Temperature/fahrenheit",
"initialValue": "30"
},
{
"@id": "<id>",
"@type": ["Property"],
"displayName": "Firmware version read only",
"name": "fwversion",
"schema": "string"
},
{
"@id": "<id>",
"@type": ["Property"],
"displayName": "Display status",
"name": "status",
"writable": true,
"schema": {
"@id": "urn:testInterface:status:obj:ka8iw8wka:1",
"@type": ["Object"]
}
},
{
"@id": "<id>",
"@type": ["Command"],
"request": {
"@id": "<id>",
"@type": ["SchemaField"],
"displayName": "Configuration",
"name": "config",
"schema": "string"
},
"response": {
"@id": "<id>",
"@type": ["SchemaField"],
"displayName": "Response",
"name": "response",
"schema": "string"
},
"displayName": "Configure sensor",
"name": "sensorConfig"
}
]
}
}
],
"displayName": "Sensor capability model"
},
"solutionModel": {
"@id": "<id>",
"@type": ["SolutionModel"],
"cloudProperties": [
{
"@id": "<id>",
"@type": ["CloudProperty"],
"displayName": "Install date",
"name": "installDate",
"schema": "dateTime",
"valueDetail": {
"@id": "<id>",
"@type": ["ValueDetail/DateTimeValueDetail"]
}
}
]
}
},
"annotations":{
"iotcentral-message-source":"deviceTemplates",
"x-opt-partition-key":"<partitionKey>",
"x-opt-sequence-number":25315,
"x-opt-offset":"<offset>",
"x-opt-enqueued-time":1539274985085
},
"partitionKey":"<partitionKey>",
"sequenceNumber":25315,
"enqueuedTimeUtc":"2019-10-02T16:23:05.085Z",
"offset":"<offset>"
}
}
このスナップショットの例では、Blob Storage のデバイスとプロパティ データを含むメッセージが表示されています。 エクスポートされたファイルには、1 つのレコードにつき 1 行が含まれます。
{
"id": "<device template id>",
"etag": "<etag>",
"types": ["DeviceModel"],
"displayName": "Sensor template",
"capabilityModel": {
"@id": "<capability model id>",
"@type": ["CapabilityModel"],
"contents": [],
"implements": [
{
"@id": "<component Id>",
"@type": ["InterfaceInstance"],
"name": "Sensor component",
"schema": {
"@id": "<interface Id>",
"@type": ["Interface"],
"displayName": "Sensor interface",
"contents": [
{
"@id": "<id>",
"@type": ["Telemetry"],
"displayName": "Humidity",
"name": "humidity",
"schema": "double"
},
{
"@id": "<id>",
"@type": ["Telemetry", "SemanticType/Event"],
"displayName": "Error event",
"name": "error",
"schema": "integer"
},
{
"@id": "<id>",
"@type": ["Property"],
"displayName": "Set temperature",
"name": "setTemp",
"writable": true,
"schema": "integer",
"unit": "Units/Temperature/fahrenheit",
"initialValue": "30"
},
{
"@id": "<id>",
"@type": ["Property"],
"displayName": "Firmware version read only",
"name": "fwversion",
"schema": "string"
},
{
"@id": "<id>",
"@type": ["Property"],
"displayName": "Display status",
"name": "status",
"writable": true,
"schema": {
"@id": "urn:testInterface:status:obj:ka8iw8wka:1",
"@type": ["Object"]
}
},
{
"@id": "<id>",
"@type": ["Command"],
"request": {
"@id": "<id>",
"@type": ["SchemaField"],
"displayName": "Configuration",
"name": "config",
"schema": "string"
},
"response": {
"@id": "<id>",
"@type": ["SchemaField"],
"displayName": "Response",
"name": "response",
"schema": "string"
},
"displayName": "Configure sensor",
"name": "sensorconfig"
}
]
}
}
],
"displayName": "Sensor capability model"
},
"solutionModel": {
"@id": "<id>",
"@type": ["SolutionModel"],
"cloudProperties": [
{
"@id": "<id>",
"@type": ["CloudProperty"],
"displayName": "Install date",
"name": "installDate",
"schema": "dateTime",
"valueDetail": {
"@id": "<id>",
"@type": ["ValueDetail/DateTimeValueDetail"]
}
}
]
}
}
データ形式の変更に関する通知
注意
テレメトリ ストリームのデータ形式はこの変更の影響を受けません。 デバイスとデバイス テンプレートのデータ ストリームのみが影響を受けます。
"デバイス" と "デバイス テンプレート" のストリームが有効になっているプレビュー アプリケーションに既存のデータ エクスポートがある場合は、2020 年 6 月 30 日までにそのエクスポートを更新してください。 この要件は、Azure Blob Storage、Azure Event Hubs、および Azure Service Bus へのエクスポートに適用されます。
2020 年 2 月 3 日以降、デバイスとデバイス テンプレートが有効になっているアプリケーションの新しいすべてのエクスポートに、上記のデータ形式が使用されます。 この日付より前に作成されたすべてのエクスポートは、2020 年 6 月 30 日までは古いデータ形式のままになります。この時点で、これらのエクスポートは新しいデータ形式に自動的に移行されます。 新しいデータ形式は、IoT Central パブリック API 内のデバイス、デバイス プロパティ、およびデバイス テンプレートのオブジェクトと一致します。
デバイスについては、古いデータ形式と新しいデータ形式の間で主に次のような違いがあります。
- デバイスの
@id
は削除され、deviceId
の名前はid
に変更されます - デバイスのプロビジョニングの状態を示す
provisioned
フラグが追加されます - デバイスの承認の状態を示す
approved
フラグが追加されます - デバイスとクラウドのプロパティを含む
properties
が、パブリック API のエンティティと一致します
デバイス テンプレートについては、古いデータ形式と新しいデータ形式の間で主に次のような違いがあります。
- デバイス テンプレートの
@id
の名前はid
に変更されます - デバイス テンプレートの
@type
の名前がtypes
に変更され、配列になりました
デバイス (2020 年 2 月 3 日時点で非推奨とされた形式)
{
"@id":"<id-value>",
"@type":"Device",
"displayName":"Airbox",
"data":{
"$cloudProperties":{
"Color":"blue"
},
"EnvironmentalSensor":{
"thsensormodel":{
"reported":{
"value":"Neque quia et voluptatem veritatis assumenda consequuntur quod.",
"$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
}
},
"pm25sensormodel":{
"reported":{
"value":"Aut alias odio.",
"$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
}
}
},
"urn_azureiot_DeviceManagement_DeviceInformation":{
"totalStorage":{
"reported":{
"value":27900.9730905171,
"$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
}
},
"totalMemory":{
"reported":{
"value":4667.82916715811,
"$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
}
}
}
},
"instanceOf":"<template-id>",
"deviceId":"<device-id>",
"simulated":true
}
デバイス テンプレート (2020 年 2 月 3 日時点で非推奨とされた形式)
{
"@id":"<template-id>",
"@type":"DeviceModelDefinition",
"displayName":"Airbox",
"capabilityModel":{
"@id":"<id>",
"@type":"CapabilityModel",
"implements":[
{
"@id":"<id>",
"@type":"InterfaceInstance",
"name":"EnvironmentalSensor",
"schema":{
"@id":"<id>",
"@type":"Interface",
"comment":"Requires temperature and humidity sensors.",
"description":"Provides functionality to report temperature, humidity. Provides telemetry, commands and read-write properties",
"displayName":"Environmental Sensor",
"contents":[
{
"@id":"<id>",
"@type":"Telemetry",
"description":"Current temperature on the device",
"displayName":"Temperature",
"name":"temp",
"schema":"double",
"unit":"Units/Temperature/celsius",
"valueDetail":{
"@id":"<id>",
"@type":"ValueDetail/NumberValueDetail",
"minValue":{
"@value":"50"
}
},
"visualizationDetail":{
"@id":"<id>",
"@type":"VisualizationDetail"
}
},
{
"@id":"<id>",
"@type":"Telemetry",
"description":"Current humidity on the device",
"displayName":"Humidity",
"name":"humid",
"schema":"integer"
},
{
"@id":"<id>",
"@type":"Telemetry",
"description":"Current PM2.5 on the device",
"displayName":"PM2.5",
"name":"pm25",
"schema":"integer"
},
{
"@id":"<id>",
"@type":"Property",
"description":"T&H Sensor Model Name",
"displayName":"T&H Sensor Model",
"name":"thsensormodel",
"schema":"string"
},
{
"@id":"<id>",
"@type":"Property",
"description":"PM2.5 Sensor Model Name",
"displayName":"PM2.5 Sensor Model",
"name":"pm25sensormodel",
"schema":"string"
}
]
}
},
{
"@id":"<id>",
"@type":"InterfaceInstance",
"name":"urn_azureiot_DeviceManagement_DeviceInformation",
"schema":{
"@id":"<id>",
"@type":"Interface",
"displayName":"Device information",
"contents":[
{
"@id":"<id>",
"@type":"Property",
"comment":"Total available storage on the device in kilobytes. Ex. 20480000 kilobytes.",
"displayName":"Total storage",
"name":"totalStorage",
"displayUnit":"kilobytes",
"schema":"long"
},
{
"@id":"<id>",
"@type":"Property",
"comment":"Total available memory on the device in kilobytes. Ex. 256000 kilobytes.",
"displayName":"Total memory",
"name":"totalMemory",
"displayUnit":"kilobytes",
"schema":"long"
}
]
}
}
],
"displayName":"AAEONAirbox52"
},
"solutionModel":{
"@id":"<id>",
"@type":"SolutionModel",
"cloudProperties":[
{
"@id":"<id>",
"@type":"CloudProperty",
"displayName":"Color",
"name":"Color",
"schema":"string",
"valueDetail":{
"@id":"<id>",
"@type":"ValueDetail/StringValueDetail"
},
"visualizationDetail":{
"@id":"<id>",
"@type":"VisualizationDetail"
}
}
]
}
}
次のステップ
これで、Azure Event Hubs、Azure Service Bus、および Azure Blob Storage にデータをエクスポートする方法がわかったので、次の手順に進みます。