TSL(Thing Specification Language)モデルに関連する API 操作を呼び出すと、リクエストパラメーターまたはレスポンスパラメーターに ThingModelJson パラメーターが含まれる場合があります。このパラメーターの値は、IoT Platform に保存されている TSL データ構造を示します。この TSL データ構造は、元の TSL データ構造とは異なります。 ThingModelJson パラメーターのすべてのフィールドは、キーでアルファベット順にソートされています。
TSL 機能の制限については、「制限」をご参照ください。
データ構造
デフォルトの TSL モジュールのデータ構造は、カスタム TSL モジュールのデータ構造とは異なります。
- デフォルトの TSL モジュール
{ "_ppk":{ "description":"test", // テスト "version":"159244410****" // バージョン } "events":[], // イベント "productKey":"al12345****", // プロダクトキー "properties":[], // プロパティ "services":[], // サービス "functionBlocks":[{ // ファンクションブロック "productKey":"al12345****", // プロダクトキー "functionBlockId":"location0", // ファンクションブロックID "functionBlockName":"Location module 0" // 位置モジュール 0 }] }パラメーター 型 説明 productKey String TSL モデルが属するプロダクトの ProductKey。 _ppk String TSL モデルバージョンに関する情報。このパラメーターは、次のフィールドで構成されます。 - version: 現在の TSL モデルのバージョン番号。このフィールドは、公開済みの TSL モデルでのみ使用できます。
- description: 現在の TSL モデルの説明。このフィールドは、公開済みの TSL モデルでのみ使用できます。
properties List TSL モデルが属するプロダクトのプロパティ。 properties パラメーターのデータ構造の詳細については、「properties パラメーターのデータ構造」をご参照ください。 各プロパティで、extendConfig パラメーターを使用して、TSL モデルに関する拡張情報を定義できます。詳細については、「extendConfig パラメーターのデータ構造」をご参照ください。拡張情報を定義する必要がない場合は、extendConfig パラメーターを指定する必要はありません。
services List TSL モデルが属するプロダクトのサービス。 services パラメーターのデータ構造の詳細については、「services パラメーターのデータ構造」をご参照ください。 各サービスで、extendConfig パラメーターを使用して、TSL モデルに関する拡張情報を定義できます。詳細については、「extendConfig パラメーターのデータ構造」をご参照ください。拡張情報を定義する必要がない場合は、extendConfig パラメーターを指定する必要はありません。
events List TSL モデルが属するプロダクトのイベント。 events パラメーターのデータ構造の詳細については、「events パラメーターのデータ構造」をご参照ください。 各イベントで、extendConfig パラメーターを使用して、TSL モデルに関する拡張情報を定義できます。詳細については、「extendConfig パラメーターのデータ構造」をご参照ください。拡張情報を定義する必要がない場合は、extendConfig パラメーターを指定する必要はありません。
functionBlocks List カスタムモジュールのリスト。このパラメーターは、プロダクトに少なくとも 1 つのカスタム TSL モジュールが含まれている場合にのみ使用できます。このパラメーターは、次のフィールドで構成されます。 - productKey: TSL モデルが属するプロダクトの ProductKey。
- functionBlockId: カスタム TSL モジュールの ID。各 ID はプロダクト内で一意です。
- functionBlockName: カスタム TSL モジュールの名前。
- カスタム TSL モジュール
{ "productKey":"al12345****", // プロダクトキー "identifier":"location0", // ID "name":"Location module 0", // 位置モジュール 0 "properties":[], // プロパティ "services":[], // サービス "events":[], // イベント "description":"" // 説明 }次の表に、デフォルトの TSL モジュールから継承されたものを除く、カスタム TSL モジュールのパラメーターを示します。
パラメーター 型 説明 identifier String カスタム TSL モジュールの ID。各 ID はプロダクト内で一意です。 ID は 1 ~ 30 文字で、文字、数字、およびアンダースコア(_)を含めることができます。
name String カスタム TSL モジュールの名前。 名前は 4 ~ 30 文字で、文字、数字、およびアンダースコア(_)を含めることができます。
description String カスタム TSL モジュールの説明。説明は最大 100 文字まで入力できます。
properties パラメーターのデータ構造
次の表に、プロパティを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| productKey | String | はい | TSL モデルが属するプロダクトの ProductKey。 |
| createTs | Long | いいえ | 機能が定義された時刻。デフォルトでは、値は 13 桁のタイムスタンプです。このパラメーターを指定できます。このパラメーターを指定しない場合、IoT Platform はタイムスタンプを生成します。機能はタイムスタンプ順に時系列でソートされます。 説明 既存の TSL モデルの場合、作成時刻は、TSL モデルが公開された後に初めて変更された時刻です。 |
| identifier | String | はい | プロパティの ID。ID は最大 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。 説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。 |
| dataType | String | はい | プロパティ値のデータ型。 有効な値: ARRAY、STRUCT、INT、FLOAT、DOUBLE、TEXT、DATE、ENUM、BOOL。 異なるデータ型が指定されている場合は、異なるパラメーターを指定する必要があります。詳細については、このトピックの対応する型のデータ構造を参照してください。 |
| name | String | はい | プロパティの名前。名前は最大 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。 |
| rwFlag | String | はい | IoT Platform がプロパティで実行できる操作のタイプ。有効な値:
|
| dataSpecs | Object | いいえ | dataType を INT、FLOAT、DOUBLE、TEXT、DATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。 説明
|
| dataSpecsList | List | いいえ | dataType パラメーターを ENUM、BOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。 説明
|
| required | Boolean | はい | 標準カテゴリにプロパティが必要かどうかを指定します。有効な値:
|
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
- dataSpecs パラメーターのサンプル値 (dataType パラメーターが INT に設定されている場合):
{ "dataSpecs": { // データ仕様 "custom": true, // カスタム "dataType": "INT", // データ型 "defaultValue": "30", // デフォルト値 "max": "1440", // 最大値 "min": "0", // 最小値 "step": "10", // ステップ "unit": "min" // 単位 } } - dataSpecs パラメーターのサンプル値 (dataType パラメーターが TEXT に設定されている場合):
{ "dataSpecs": { // データ仕様 "custom": true, // カスタム "dataType": "TEXT", // データ型 "id": 2412127, // ID "length": 2048 // 長さ } } - dataSpecs パラメーターのサンプル値 (dataType パラメーターが ARRAY に設定されている場合):
{ "dataSpecs": { // データ仕様 "childDataType": "INT", // 子データ型 "custom": true, // カスタム "dataType": "ARRAY", // データ型 "size": 1 // サイズ } } - dataSpecsList パラメーターのサンプル値 (dataType パラメーターが ENUM に設定されている場合):
{ "dataSpecsList": [ // データ仕様リスト { "custom": false, // カスタム "dataType": "ENUM", // データ型 "defaultValue": "true", // デフォルト値 "name": "Open", // 開く "value": 1 // 値 }, { "custom": false, // カスタム "dataType": "ENUM", // データ型 "defaultValue": "false", // デフォルト値 "name": "Close", // 閉じる "value": 0 // 値 } ] } - dataSpecsList パラメーターのサンプル値 (dataType パラメーターが STRUCT に設定されている場合):
{ "childDataType": "TEXT", // 子データ型 "childName": "Card number", // カード番号 "dataSpecs": { // データ仕様 "custom": true, // カスタム "dataType": "TEXT", // データ型 "length": 128 // 長さ }, "dataType": "STRUCT", // データ型 "identifier": "CardNo", // カード番号 "name": "NVR chip information" // NVR チップ情報 }
services パラメーターのデータ構造
次の表に、サービスを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| productKey | String | はい | TSL モデルが属するプロダクトの ProductKey。 |
createTs | Long | いいえ | 機能が定義された時刻。デフォルトでは、値は 13 桁のタイムスタンプです。このパラメーターを指定できます。このパラメーターを指定しない場合、IoT Platform はタイムスタンプを生成します。機能はタイムスタンプ順に時系列でソートされます。 説明 既存の TSL モデルの場合、作成時刻は、TSL モデルが公開された後に初めて変更された時刻です。 |
| identifier | String | はい | サービスの ID。ID は 1 ~ 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。 説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。 |
| serviceName | String | はい | サービスの名前。名前は 1 ~ 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。 |
| inputParams | List | いいえ | サービスの入力パラメーター。データ構造の詳細については、「入力パラメーターと出力パラメーターのデータ構造」をご参照ください。 |
| outputParams | List | いいえ | サービスの出力パラメーター。データ構造の詳細については、「入力パラメーターと出力パラメーターのデータ構造」をご参照ください。 |
| required | Boolean | はい | 標準カテゴリにサービスが必要かどうかを指定します。有効な値:
|
| callType | String | はい | サービスの呼び出しに使用されるメソッド。
|
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
events パラメーターのデータ構造
次の表に、イベントを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| productKey | String | はい | TSL モデルが属するプロダクトの ProductKey。 |
createTs | Long | いいえ | 機能が定義された時刻。デフォルトでは、値は 13 桁のタイムスタンプです。このパラメーターを指定できます。このパラメーターを指定しない場合、IoT Platform はタイムスタンプを生成します。機能はタイムスタンプ順に時系列でソートされます。 説明 既存の TSL モデルの場合、作成時刻は、TSL モデルが公開された後に初めて変更された時刻です。 |
| identifier | String | はい | イベントの ID。ID は 50 文字で、大文字、小文字、数字、およびアンダースコア(_)を含めることができます。 説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。 |
| eventName | String | はい | 1 つ以上のイベント名のリスト。名前は 1 ~ 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。 |
| eventType | String | はい | イベントのタイプ。有効な値:
|
| outputdata | List | いいえ | イベントの出力パラメーター。データ構造の詳細については、「入力パラメーターと出力パラメーターのデータ構造」をご参照ください。 |
| required | Boolean | はい | 標準カテゴリにイベントが必要かどうかを指定します。有効な値:
|
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
入力パラメーターと出力パラメーターのデータ構造
次の表に、サービスまたはイベントの入力パラメーターと出力パラメーターを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| dataType | String | はい | パラメーター値のデータ型。 有効な値: ARRAY、STRUCT、INT、FLOAT、DOUBLE、TEXT、DATE、ENUM、BOOL。 詳細については、このトピックの対応する型のデータ構造を参照してください。 |
| identifier | String | はい | パラメーターの ID。ID は 1 ~ 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。 説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。 |
| name | String | はい | リクエストパラメーターの名前。名前は 1 ~ 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。 |
| direction | String | はい | パラメーターが入力パラメーターか出力パラメーターかを指定します。有効な値:
|
| paraOrder | Integer | はい | パラメーターのシリアル番号。シリアル番号は 0 から始まり、一意である必要があります。 |
| dataSpecs | Object | いいえ | dataType パラメーターを INT、FLOAT、DOUBLE、TEXT、DATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。 説明
|
| dataSpecsList | List | いいえ | dataType パラメーターを ENUM、BOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。 説明
|
| custom | Boolean | はい | パラメーターがカスタム TSL 機能に属しているかどうかを指定します。有効な値:
|
INT、FLOAT、または DOUBLE 型のデータ構造
次の表に、INT、FLOAT、および DOUBLE 型のデータを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| dataType | String | はい | データの型。有効な値: INT、FLOAT、DOUBLE。 |
| max | String | はい | パラメーターの最大値。最大値は、INTFLOATDOUBLEdataType パラメーターで指定されているように、 max パラメーターの値は、STRING 型のデータに変換する必要があります。dataType パラメーターが INT に設定されている場合、たとえば、200 の値は |
| min | String | はい | パラメーターの最小値。最小値は、INTFLOATDOUBLEdataType パラメーターで指定されているように、 ステップ パラメーターの値は、STRING 型のデータに変換する必要があります。詳細については、「max パラメーターの説明」をご参照ください。 |
| step | String | はい | ステップサイズ。データの各変更の増分を示します。ステップサイズは、INTFLOATDOUBLEdataType パラメーターで指定されているように、 ステップ パラメーターの値は、STRING 型のデータに変換する必要があります。詳細については、「max パラメーターの説明」をご参照ください。 |
| precise | String | いいえ | dataType パラメーターが FLOAT または DOUBLE に設定されている場合に、このパラメーターを指定できます。値の精度。 |
| defaultValue | String | いいえ | このパラメーターを指定して、デフォルト値を設定できます。 |
| unit | String | はい | 単位の記号。 |
| unitName | String | はい | 単位の名前。 |
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
DATE または TEXT 型のデータ構造
次の表に、DATE および TEXT 型のデータを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| dataType | String | はい | データの型。有効な値: DATE および TEXT。 |
| length | Long | はい | データの長さ。最大値: 2048。単位: バイト。dataType パラメーターが TEXT に設定されている場合は、このパラメーターを指定する必要があります。 |
| defaultValue | String | いいえ | このパラメーターを指定して、デフォルト値を設定できます。 |
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
ARRAY 型のデータ構造
次の表に、ARRAY 型のデータを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| dataType | String | はい | データの型。値を ARRAY に設定します。 |
| size | Long | はい | 配列内の要素の数。 |
| childDataType | String | はい | 配列内の要素のデータ型。有効な値: STRUCT、INT、FLOAT、DOUBLE、TEXT。 |
| dataSpecs | Object | いいえ | dataType パラメーターを INT、FLOAT、DOUBLE、TEXT、DATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。 説明
|
| dataSpecsList | List | いいえ | dataType パラメーターを ENUM、BOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。 説明
|
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
ENUM または BOOL 型のデータ構造
次の表に、BOOL および ENUM 型のデータを定義するために使用されるパラメーターを示します。
| パラメーター | 型 | 必須 | 説明 |
| dataType | String | はい | データの型。有効な値: BOOL および ENUM。 |
| name | String | はい | ENUM 項目の名前。名前は 1 ~ 20 文字で、文字、数字、アンダースコア(_)、およびハイフン(-)を含めることができます。文字または数字で始める必要があります。 |
| value | Integer | はい | ENUM 項目の値。 |
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
STRUCT 型のデータ構造
次の表に、STRUCT 型のデータを定義するために使用されるパラメーターを示します。
- 以前のバージョンの API で使用されていた childSpecsDTO と childEnumSpecsDTO は廃止されました。したがって、このセクションでは、これらのパラメーターの説明は提供されていません。API 操作を呼び出すときは、これら 2 つのパラメーターを指定する必要はありません。2 つのパラメーターの代わりに dataSpecsList パラメーターを使用することをお勧めします。
- ARRAY 型のデータと STRUCT 型のデータが相互にネストされている場合、最大 2 層の再帰ネストがサポートされます。
| パラメーター | 型 | 必須 | 説明 |
| dataType | String | はい | データの型。値を STRUCT に設定します。 |
| identifier | String | はい | 構造体内のサブパラメーターの ID。ID は最大 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。 説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。 |
| name | String | はい | 構造体内のサブパラメーターの名前。名前は最大 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。 説明 パラメーターの定義は、childName パラメーターの定義と同じです。このパラメーターは使用されません。 |
| childDataType | String | いいえ | 構造体内のサブパラメーターのデータ型。 有効な値: INT、FLOAT、DOUBLE、TEXT、DATE、ENUM、BOOL。 |
| childName | String | はい | 構造体内のサブパラメーターの名前。名前は最大 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。 |
| dataSpecs | Object | いいえ | dataType パラメーターを INT、FLOAT、DOUBLE、TEXT、DATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。 説明
|
| dataSpecsList | List | いいえ | dataType パラメーターを ENUM、BOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。 説明
|
| custom | Boolean | はい | TSL 機能がカスタム機能かどうかを指定します。有効な値:
|
extendConfig パラメーターのデータ構造
各プロパティ、イベント、およびサービスで、extendConfig パラメーターを使用して、TSL モデルに関する拡張情報を定義できます。拡張情報は、デバイスの接続プロトコルと標準 TSL モデル間のマッピングを示します。
Modbus、OPC UA、またはカスタムプロトコルがデバイスのゲートウェイ接続プロトコルとして使用されている場合は、デバイスに関する拡張情報を定義できます。拡張情報のタイプによって、データ仕様が異なります。
Modbus タイプ
Modbus がデバイスのゲートウェイ接続プロトコルとして使用されている場合は、プロパティに関する拡張情報のみを定義できます。
{
"identifier":"extend1", // ID
"writeFunctionCode":0, // 書き込みファンクションコード
"writeOnly":0, // 書き込み専用
"registerAddress":"0xFE", // レジスタアドレス
"operateType":"coilStatus", // 操作タイプ
"scaling":0.1, // スケーリング
"pollingTime":1000, // ポーリング時間
"trigger":1, // トリガー
"bitMask":128, // ビットマスク
"originalDataType":{ // 元のデータ型
"type":"uint64", // タイプ
"specs":{ // 仕様
"swap":0, // スワップ
"reverseRegister":0} // 逆レジスタ
}
}| パラメーター | 型 | 説明 |
| identifier | String | プロパティの ID。ID はプロダクト内で一意である必要があります。 |
| registerAddress | String | レジスタのアドレス。アドレスは 0x で始まる必要があります。有効な値: 0x0 ~ 0xFFFF。例: 0xFE。 |
| operateType | String | 操作のタイプ。有効な値:
|
| writeFunctionCode | Integer | 読み取りおよび書き込み操作。値は、operateType パラメーターの値によって異なります。
|
| writeOnly | Integer | 操作が書き込み専用かどうかを指定します。有効な値:
|
| scaling | Number | スケーリング係数。値を 0 にすることはできません。 このパラメーターは、STRING 型と BOOLEAN 型のデータには使用できません。 |
| pollingTime | Integer | 収集の間隔。単位: ミリ秒。このパラメーターを指定する必要はありません。デバイスの指定された収集間隔が使用されます。 |
| trigger | Integer | データを送信する方法。有効な値: 1 と 2。値 1 は、特定の時刻にデータが送信されることを示します。値 2 は、変更が発生したときにデータが送信されることを示します。 |
| bitMask | Integer | マスク。有効な値: 1、2、4、8、16、32、64、128、256、512、1024、2048、4096、8192、16384、32768。 このパラメーターは、BOOLEAN 型のデータに固有です。 |
| originalDataType | Object | 元のデータ型の説明。 |
| type | String | 元のデータの型。型は、INT16、UINT16、INT32、UINT32、INT64、UINT64、FLOAT、DOUBLE、STRING、BOOLEAN、およびカスタマイズ済み (ビッグエンディアン順に戻される 16 進データ) のいずれかの基本データ型である必要があります。 |
| specs | Object | 一部のデータ型に固有のパラメーター。 |
| registerCount | Integer | レジスタの数。 このパラメーターは、STRING 型とカスタマイズ済み型のデータに固有です。 |
| swap | Integer | このパラメーターは、STRING 型とカスタマイズ済み型のデータを除くすべての型のデータに固有です。 レジスタの上位バイトと下位バイトを切り替えるかどうかを指定します。その場合、レジスタ内の 16 ビット整数の最初と最後の 8 ビットが交換されます。有効な値:
|
| reverseRegister | Integer | このパラメーターは、STRING 型とカスタマイズ済み型のデータを除くすべての型のデータに固有です。 レジスタの上位バイトと下位バイトを切り替えるかどうかを指定します。その場合、レジスタ内の 32 ビット整数の最初と最後の 16 ビットが交換されます。有効な値:
|
OPC UA タイプ
OPC UA がデバイスのゲートウェイ接続プロトコルとして使用されている場合は、プロパティ、サービス、およびイベントに関する拡張情報を定義できます。
{
"identifier":"extend2", // ID
"displayName":"Action", // アクション
"inputData":[ // 入力データ
{
"identifier":"xxxx", // ID
"index":1 // インデックス
},
{
"identifier":"xxxx", // ID
"index":2 // インデックス
}
],
"outputData":[ // 出力データ
{
"identifier":"xxxx", // ID
"index":1 // インデックス
},
{
"identifier":"xxxx", // ID
"index":2 // インデックス
}
]
}| パラメーター | 型 | 説明 |
| identifier | String | プロパティ、サービス、またはイベントの ID。ID はプロダクト内で一意である必要があります。 |
| displayName | String | プロパティまたはイベントの場合は displayName パラメーターを指定する必要があります。サービスの場合は displayName パラメーターを指定する必要はありません。 |
| inputData | List | 入力データ。 |
| outputData | List | 出力データ。 |
| identifier | String | 入力データまたは出力データの ID。ID はプロダクト内で一意である必要があります。 |
| index | Integer | インデックス。インデックスは、inputData パラメーターと outputData パラメーターの両方で一意である必要があります。 |
カスタムタイプ
カスタムプロトコルがデバイスのゲートウェイ接続プロトコルとして使用されている場合は、プロパティ、サービス、およびイベントに関する拡張情報を定義できます。
{
"identifier":"xxx", // ID
"customize":{} // カスタマイズ
}| パラメーター | 型 | 説明 |
| identifier | String | プロパティ、サービス、またはイベントの ID。プロダクト内で一意である必要があります。 |
| customize | Object | カスタム JSON ファイル。 |
ThingModelJson パラメーターの検証
ThingModelJson パラメーターの入力パラメーターを検証するには、json-schema ファイルを使用できます。
詳細については、「schema.json」をご参照ください。
ThingModelJson パラメーターの検証例
- json-schema ライブラリをダウンロードするには、Maven プロジェクトに次の依存関係を追加します:
<dependency> <groupId>com.github.everit-org.json-schema</groupId> <artifactId>org.everit.json.schema</artifactId> <version>1.11.0</version> </dependency> - サンプルコード:
package com.aliyun.iot.thingmodel; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import org.everit.json.schema.Schema; import org.everit.json.schema.ValidationException; import org.everit.json.schema.loader.SchemaLoader; import org.json.JSONObject; import org.json.JSONTokener; /** * @author: *** // 作成者 * @date: 2020-01-14 15:11 // 日付 */ public class ThingModelJsonValidator { public static void main(String[] args) throws Exception { try (InputStream inputStream = new URL("https://iotx-thing-model-schema.oss-ap-southeast-1.aliyuncs.com/schema.json").openStream()) { JSONObject rawSchema = new JSONObject(new JSONTokener(inputStream)); Schema schema = SchemaLoader.load(rawSchema); long start = System.currentTimeMillis(); JSONObject object = new JSONObject(); String jsonStr = "{\n" + "\t\t\t\"productKey\": \"a1Q1Yrc****\",\n" // productKey + "\t\t\t\"name\": \"Alert event\",\n" // 名前 + "\t\t\t\"identifier\": \"alarmEvent\",\n" // ID + "\t\t\t\"eventName\": \"Alert event\",\n" // イベント名 + "\t\t\t\"eventType\": \"ALERT_EVENT_TYPE\",\n" // イベントタイプ + "\t\t\t\"outputData\": [\n" // 出力データ + "\t\t\t\t{\n" + "\t\t\t\t\t\"paraOrder\": 0,\n" // パラメーター次数 + "\t\t\t\t\t\"direction\": \"PARAM_OUTPUT\",\n" // 方向 + "\t\t\t\t\t\"dataSpecsList\": [\n" // dataSpecsList + "\t\t\t\t\t\t{\n" + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n" // データ型 + "\t\t\t\t\t\t\t\"name\": \"Anti-detachment alert\",\n" // 名前 + "\t\t\t\t\t\t\t\"value\": 0\n" // 値 + "\t\t\t\t\t\t},\n" + "\t\t\t\t\t\t{\n" + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n" // データ型 + "\t\t\t\t\t\t\t\"name\": \"Anti-detachment alert\",\n" // 名前 + "\t\t\t\t\t\t\t\"value\": 1\n" // 値 + "\t\t\t\t\t\t}\n" + "\t\t\t\t\t],\n" + "\t\t\t\t\t\"dataType\": \"ENUM\",\n" // データ型 + "\t\t\t\t\t\"identifier\": \"alarmType\",\n" // ID + "\t\t\t\t\t\"name\": \"Alert type\",\n" // アラートタイプ + "\t\t\t\t\t\"index\": 0,\n" // インデックス + "\t\t\t\t\t\"custom\": true\n" // カスタム + "\t\t\t\t}\n" + "\t\t\t],\n" + "\t\t\t\"outputParams\": [\n" // 出力パラメーター + "\t\t\t\t{\n" + "\t\t\t\t\t\"index\": 0,\n" // インデックス + "\t\t\t\t\t\"identifier\": \"alarmType\"\n" // ID + "\t\t\t\t}\n" + "\t\t\t],\n" + "\t\t\t\"custom\": true\n" // カスタム + "\t\t}"; object.put("properties", new ArrayList<>()); object.put("services", new ArrayList<>()); object.put("events", Arrays.asList(com.alibaba.fastjson.JSONObject.parseObject(jsonStr))); object.put("productKey", "a1Q1Yrc****"); schema.validate(object); // このオブジェクトが無効な場合、ValidationException がスローされます //} System.out.println(System.currentTimeMillis() - start); } catch (ValidationException exception) { System.out.println(exception); } } }
ThingModelJson パラメーターの指定
このセクションでは、Visual Studio Code ツールを使用して ThingModelJson パラメーターを指定する方法について説明します。
- Visual Studio Code 公式 Web サイト にアクセスして、最新バージョンの Visual Studio Code ツールをダウンロードしてインストールします。
- Visual Studio Code を開き、左下隅にある
ボタンをクリックし、[設定] を選択します。 - [ユーザー設定] タブで、 を選択します。[settings.json で編集][スキーマ] の下の
"json.schemas": [{ "fileMatch": ["/.json"], // .json ファイルに一致 "url": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json" // スキーマの URL }]次に、プロンプトに従って ThingModelJson パラメーターを指定できます。
