すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:ThingModelJson データ構造

最終更新日:Jun 17, 2026

特定の TSL モデル API リクエストおよびレスポンスで使用される ThingModelJson パラメーターは、IoT Platform が TSL モデルの機能定義を内部的に保存する方法を示すものです。この構造は TSL データ構造とは異なり、すべてのフィールドはキーのアルファベット順にソートされています。

製品およびデバイスの TSL 機能定義の制限については、「製品およびデバイスの TSL 機能定義の制限」をご参照ください。

データ構造

デフォルト TSL モジュールとカスタム TSL モジュールでは、データ構造が異なります。

  • デフォルト TSL モジュール
    {
      "_ppk":{
           "description":"test",
           "version":"159244410****"
      }
      "events":[],
      "productKey":"al12345****",
      "properties":[],
      "services":[],
      "functionBlocks":[{
          "productKey":"al12345****",
          "functionBlockId":"location0",
          "functionBlockName":"Location module 0"
        }]
    }
    パラメーター タイプ 説明
    productKey 文字列 TSL モデルが属するプロダクトの productKey です。
    _ppk オブジェクト TSL モデルのバージョン情報です。次のフィールドが含まれます:
    • version:TSL モデルのバージョン番号です。このパラメーターは、公開済みの TSL モデルに対してのみ返されます。
    • description:デフォルト TSL モジュールバージョンの説明です。このパラメーターは、公開済みの TSL モデルに対してのみ返されます。
    properties リスト TSL モデルのプロパティのリストです。プロパティのデータ構造の詳細については、「プロパティデータ構造の仕様」をご参照ください。

    各プロパティのデータ構造で extendConfig を使用して、拡張情報を定義します。詳細については、「extendConfig データ構造の仕様」をご参照ください。プロパティに拡張情報がない場合は、extendConfig を渡す必要はありません。

    services リスト TSL モデルのサービスのリストです。サービスのデータ構造の詳細については、「サービスデータフォーマットの仕様」をご参照ください。

    各サービスのデータ構造で extendConfig を使用して、拡張情報を定義します。詳細については、「extendConfig データ構造の仕様」をご参照ください。サービスに拡張情報がない場合は、extendConfig を渡す必要はありません。

    events リスト TSL モデルのイベントのリストです。イベントのデータ構造の詳細については、「イベントデータフォーマットの仕様」をご参照ください。

    各イベントのデータ構造で extendConfig を使用して、拡張情報を定義します。詳細については、「extendConfig データ構造の仕様」をご参照ください。イベントに拡張情報がない場合は、extendConfig を渡す必要はありません。

    functionBlocks リスト カスタム TSL モジュールのリストです。プロダクトにカスタムモジュールがある場合にのみ含まれます。次のフィールドが含まれます:
    • productKey:TSL モデルが属するプロダクトの productKey です。
    • functionBlockId:プロダクト内のカスタム TSL モジュールの一意の識別子です。
    • functionBlockName:カスタム TSL モジュールの名前です。
  • カスタム TSL モジュール
    {
      "productKey":"al12345****", 
      "identifier":"location0",
      "name":"Location module 0",
      "properties":[],
      "services":[],
      "events":[],
      "description":""
    }

    次の表に、カスタム TSL モジュールの基本パラメーターを示します。その他のパラメーターについては、デフォルト TSL モジュールの説明をご参照ください。

    パラメーター タイプ 説明
    identifier 文字列 プロダクト内のカスタム TSL モジュールの一意の識別子です。

    識別子は最大 30 文字で、大文字、小文字、数字、アンダースコア (_) を使用できます。

    name 文字列 カスタム TSL モジュールの名前です。

    名前は 4~30 文字で、中国語文字、日本語文字、英字、数字、アンダースコア (_) を使用できます。中国語または日本語の文字は、1 文字としてカウントされます。

    description 文字列 最大 100 文字のモジュールの説明です。

プロパティのデータ構造

次の表に、プロパティを定義するためのパラメーターを示します。

重要 std パラメーターと customFlag パラメーターは非推奨です。既存の API コールには影響せず、新しいコールでは指定する必要はありません。
パラメーター タイプ 必須 説明
productKey 文字列 はい TSL モデルが属するプロダクトの ProductKey。
createTs Long いいえ 機能の作成時刻。13 桁のタイムスタンプです。このパラメーターを指定しない場合、システムが生成します。機能は、このタイムスタンプで昇順にソートされます。
説明 既存の TSL モデルの場合、作成時刻は、TSL モデルの公開後に最初に変更された時刻です。
identifier 文字列 はい プロパティの一意の識別子です。長さは最大 50 文字で、英大文字、英小文字、数字、アンダースコア (_) が使用できます。
説明 識別子には、set、get、post、property、event、time、value などの予約語を使用できません。
dataType 文字列 はい プロパティのデータ型。

有効な値:ARRAYSTRUCTINTFLOATDOUBLETEXTDATEENUMBOOL

指定する必要があるパラメーターは、データ型によって異なります。詳細については、このトピック内の各データ型のデータ仕様を参照してください。

name 文字列 はい プロパティの表示名です。名前の長さは最大 30 文字で、中国語、英大文字、英小文字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.) が使用できます。先頭の文字は、中国語、英字、または数字である必要があります。中国語の文字は 1 文字としてカウントされます。
rwFlag 文字列 はい IoT Platform におけるプロパティのアクセス権限が、読み取り専用か読み取り/書き込みかを指定します。
  • READ_WRITE:読み取り/書き込み。
  • READ_ONLY:読み取り専用。
dataSpecs Object はい dataTypeINTFLOATDOUBLETEXTDATE、または ARRAY の場合、データ仕様は dataSpecs パラメーターに格納されます。例については、この表の下にあるコードブロックを参照してください。
説明
  • データ仕様は、プロパティ、サービス、イベント、およびパラメーターの定義を除くすべてのデータに適用されます。
  • データ型に基づき、dataSpecs パラメーターまたは dataSpecsList パラメーターのいずれかを指定する必要があります。両方を指定することはできません。
dataSpecsList リスト はい dataTypeENUMBOOL、または STRUCT の場合、データ仕様は dataSpecsList パラメーターに格納されます。例については、この表の下にあるコードブロックを参照してください。
説明
  • データ仕様は、プロパティ、サービス、イベント、およびパラメーターの定義を除くすべてのデータに適用されます。
  • データ型に基づき、dataSpecs パラメーターまたは dataSpecsList パラメーターのいずれかを指定する必要があります。両方を指定することはできません。
required ブール値 はい このプロパティが標準カテゴリにおいて必須であるかどうかを指定します。
  • true:はい
  • false:いいえ
custom ブール値 はい カスタム機能かどうかを指定します。
  • true:はい
  • false:いいえ
  • dataTypeINT の場合の dataSpecs の例:
    {
      "dataSpecs": {
        "custom": true,
        "dataType": "INT",
        "defaultValue": "30",
        "max": "1440",
        "min": "0",
        "step": "10",
        "unit": "min"
      }
    }
  • dataTypeTEXT の場合の dataSpecs の例:
    {
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "id": 2412127,
        "length": 2048
      }
    }
  • dataTypeARRAY の場合の dataSpecs の例:
    {
      "dataSpecs": {
        "childDataType": "INT",
        "custom": true,
        "dataType": "ARRAY",
        "size": 1
      }
    }
  • dataTypeENUM の場合の dataSpecsList の例:
    {
      "dataSpecsList": [
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "true",
          "name": "Open",
          "value": 1
        },
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "false",
          "name": "Close",
          "value": 0
        }
      ]
    }
  • dataTypeSTRUCT の場合の dataSpecsList の項目の例:
    {
      "childDataType": "TEXT",
      "childName": "Card number",
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "length": 128
      },
      "dataType": "STRUCT",
      "identifier": "CardNo",
      "name": "NVR chip information"
    }

サービスデータフォーマット

以下の表は、サービスを定義するためのパラメーターを示しています。

パラメーター タイプ 必須 説明
productKey 文字列 はい TSL モデルを含む製品の ProductKey です。
createTs
Long
いいえ
機能の作成時刻。13 桁のタイムスタンプです。このパラメーターを指定しない場合、システムが生成します。機能は、このタイムスタンプで昇順にソートされます。
説明 既存の TSL モデルの場合、作成時刻は、TSL モデルの公開後に最初に変更された時刻です。
identifier 文字列 はい サービスの識別子は最大 50 文字で、大文字、小文字、数字、アンダースコア (_) を使用できます。
説明 識別子として、set、get、post、property、event、time、value などの予約語は使用できません。
serviceName 文字列 はい サービス名は最大 30 文字で、中国語文字、大文字と小文字の英字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.) を使用できます。先頭は、中国語文字、英字、または数字である必要があります。中国語文字は 1 文字としてカウントされます。
inputParams List いいえ 入力パラメーターのリストです。データ構造の詳細については、入力パラメーターと出力パラメーターのデータ構造をご参照ください。
outputParams List いいえ 出力パラメーターのリストです。データ構造の詳細については、入力パラメーターと出力パラメーターのデータ構造をご参照ください。
required ブール値 はい 標準カテゴリでサービスが必須かどうかを指定します。
  • true: はい
  • false: いいえ
callType 文字列 はい サービスの呼び出しタイプです。
  • ASYNC: 非同期呼び出し
  • SYNC: 同期呼び出し
custom ブール値 はい カスタムサービスかどうかを指定します。
  • true: はい
  • false: いいえ

イベントデータフォーマット

以下の表は、イベントを定義するためのパラメーターを示しています。

パラメーター タイプ 必須 説明
productKey 文字列 はい TSL モデルを含むプロダクトの ProductKey です。
createTs
Long
いいえ
機能の作成時刻。13 桁のタイムスタンプです。このパラメーターを指定しない場合、システムが生成します。機能は、このタイムスタンプで昇順にソートされます。
説明 既存の TSL モデルの場合、作成時刻は、TSL モデルの公開後に最初に変更された時刻です。
identifier 文字列 はい イベントの識別子です。最大 50 文字で、大文字、小文字、数字、アンダースコア (_) を含めることができます。
説明 識別子には、set, get, post, property, event, time, value などの予約語は指定できません。
eventName 文字列 はい イベント名です。最大 30 文字で、中国語文字、英字、または数字で始まる必要があります。中国語文字、大文字、小文字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.) を含めることができます。中国語文字は 1 文字としてカウントされます。
eventType 文字列 はい イベントタイプです。有効な値:
  • INFO_EVENT_TYPE:情報
  • ALERT_EVENT_TYPE:アラート
  • ERROR_EVENT_TYPE:エラー
outputdata List いいえ イベントの出力パラメーターです。データ構造の詳細については、入力パラメーターと出力パラメーターのデータ構造をご参照ください。
required ブール値 はい 標準カテゴリで必須のイベントかどうかを指定します。有効な値:
  • true:はい
  • false:いいえ
custom ブール値 はい カスタムイベントかどうかを指定します。有効な値:
  • true:はい
  • false:いいえ

入力パラメーターと出力パラメーターの構造

次の表に、サービスまたはイベントの入力パラメーターと出力パラメーターを定義するためのフィールドを示します。

パラメーター データ型 必須 説明
dataType 文字列 はい パラメーターのデータ型です。

有効な値:ARRAYSTRUCTINTFLOATDOUBLETEXTDATEENUM、および BOOL

各データ型のデータ仕様については、本トピックの該当セクションをご参照ください。

identifier 文字列 はい パラメーターの一意の識別子です。長さは 50 文字以内で、大文字、小文字、数字、およびアンダースコア (_) を使用できます。
説明 識別子には、set、get、post、property、event、time、value などの予約語は使用できません。
name 文字列 はい パラメーターの表示名です。長さは 30 文字以内で、漢字、大文字、小文字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.) を使用できます。名前は漢字、英字、または数字で始まる必要があります。各漢字を 1 文字としてカウントします。
direction 文字列 はい パラメーターが入力パラメーターか出力パラメーターかを示します。
  • PARAM_INPUT:入力パラメーター。
  • PARAM_OUTPUT:出力パラメーター。
paraOrder 整数 はい 0 から始まる、パラメーターの一意なシーケンス番号です。
dataSpecs オブジェクト いいえ dataTypeINTFLOATDOUBLETEXTDATEBOOL などの単純型の場合、データ仕様は dataSpecs パラメーターに保存されます。
説明
  • これらの仕様はパラメーターのデータに適用され、プロパティ、サービス、イベントなどの他の TSL コンポーネントの定義には適用されません。
  • データ型に基づいて、dataSpecs または dataSpecsList パラメーターのいずれかを指定する必要があります。両方を指定することはできません。
dataSpecsList リスト いいえ dataTypeENUMARRAYSTRUCT などの複合型の場合、データ仕様は dataSpecsList パラメーターに保存されます。
説明
  • これらの仕様はパラメーターのデータに適用され、プロパティ、サービス、イベントなどの他の TSL コンポーネントの定義には適用されません。
  • データ型に基づいて、dataSpecs または dataSpecsList パラメーターのいずれかを指定する必要があります。両方を指定することはできません。
custom ブール値 はい パラメーターがカスタム TSL 機能に属するかどうかを示します。
  • true:はい
  • false:いいえ

INT、FLOAT、DOUBLE のデータ構造

機能またはパラメーターのデータ型が INTFLOAT、または DOUBLE の場合、そのデータ構造には次のパラメーターが含まれます。

パラメーター データ型 必須 説明
dataType 文字列 はい データ型。有効な値: INTFLOAT、または DOUBLE
max 文字列 はい 最大値。この値は、dataType パラメーターで指定された型である必要があります。

値は文字列として渡す必要があります。たとえば、dataTypeINT の場合は、"max":200 の代わりに "max":"200" を使用します。

min 文字列 はい 最小値。この値は、dataType パラメーターで指定された型である必要があります。

値は文字列として渡す必要があります。詳細については、max の説明をご参照ください。

step 文字列 はい ステップサイズ(値の増分)。この値は、dataType パラメーターで指定された型である必要があります。

値は文字列として渡す必要があります。詳細については、max の説明をご参照ください。

precise 文字列 いいえ 精度。このパラメーターは、FLOAT および DOUBLE データ型でのみ使用します。
defaultValue 文字列 いいえ パラメーターのデフォルト値。
unit 文字列 はい 単位記号。
unitName 文字列 はい 単位名。
custom ブール値 はい カスタム機能かどうかを示します。
  • true :はい
  • false :いいえ

DATE および TEXT のデータ構造

DATE および TEXT データ型のデータ構造には、次のパラメーターが含まれます。

パラメーター タイプ 必須 説明
dataType 文字列 はい データ型。有効な値は DATE または TEXT です。
length Long いいえ 最大データ長は 2,048 バイトです。dataTypeTEXT の場合、このパラメーターは必須です。
defaultValue 文字列 いいえ デフォルト値。
custom ブール値 はい カスタム機能かどうかを示します。
  • true:はい
  • false:いいえ

ARRAY データ仕様

機能またはパラメーターのデータ型が ARRAY の場合、そのデータ仕様には次のパラメーターが含まれます。

重要 ネストされた ARRAY および STRUCT データ型は、最大 2 レベルの再帰的なネスト (親と子) に対応しています。
パラメーター データ型 必須 説明
dataType 文字列 はい 値は ARRAY である必要があります。
size Long はい 配列内の要素の数です。
childDataType 文字列 はい 配列内の要素のデータ型です。有効な値: STRUCTINTFLOATDOUBLE、または TEXT
dataSpecs Object いいえ childDataTypeINTFLOATDOUBLETEXT などの非構造体型の場合、この dataSpecs パラメーターを使用してデータ仕様を定義します。
説明
  • データ仕様は、プロパティ、サービス、イベント、およびパラメーターの定義を除くすべてのデータに適用されます。
  • 子データ型に応じて、dataSpecs または dataSpecsList パラメーターのいずれかを指定する必要があります。両方を指定することはできません。
dataSpecsList List いいえ childDataTypeSTRUCT の場合、この dataSpecsList パラメーターを使用してデータ仕様を定義します。
説明
  • データ仕様は、プロパティ、サービス、イベント、およびパラメーターの定義を除くすべてのデータに適用されます。
  • 子データ型に応じて、dataSpecs または dataSpecsList パラメーターのいずれかを指定する必要があります。両方を指定することはできません。
custom ブール値 はい 機能がカスタムであるかどうかを示します。
  • true: はい
  • false: いいえ

ENUM および BOOL タイプ

機能またはパラメーターのデータ型が BOOL または ENUM の場合、そのデータ構造には次のパラメーターが含まれます。

パラメーター タイプ 必須 説明
dataType String はい 値は BOOL または ENUM である必要があります。
name String はい ENUM 項目の名前です。名前は最大 20 文字で、漢字、英字、または数字で始まる必要があります。漢字、英字、数字、アンダースコア (_)、およびハイフン (-) を使用できます。各漢字は 1 文字としてカウントされます。
value Integer はい ENUM の値です。
custom Boolean はい これがカスタム機能であるかどうかを指定します。
  • true:カスタム機能です。
  • false:カスタム機能ではありません。

構造体のデータ構造

機能またはパラメーターのデータ型が構造体の場合、そのデータ構造には次のパラメーターが含まれます。

重要
  • childSpecsDTO および childEnumSpecsDTO パラメーターは非推奨です。これは既存の API コールには影響しません。新しいコールでは、これらのパラメーターを渡さないでください。代わりに dataSpecsList パラメーターを使用してください。
  • 配列および構造体データ型がネストされている場合、最大 2 レベルの再帰的な入れ子 (親と子) がサポートされます。
パラメーター データ型 必須 説明
dataType String はい 値は構造体である必要があります。
identifier String はい 構造体内のサブパラメーターの識別子です。大文字、小文字、数字、アンダースコア (_) を使用できます。最大長は 50 文字です。
説明 識別子には、setgetpostpropertyeventtimevalue などの予約語は使用できません。
name String いいえ 構造体内のサブパラメーターの名前です。名前は、漢字、英字、または数字で始まる必要があります。漢字、大文字、小文字、数字、ハイフン (-)、アンダースコア (_)、およびピリオド (.) を使用できます。最大長は 30 文字です。各漢字は 1 文字としてカウントされます。
説明 このパラメーターは childName と同じ定義であり、現在は使用されていません。
childDataType String いいえ 構造体内のサブパラメーターのデータ型です。

有効な値: INTFLOATDOUBLETEXTDATEENUMBOOL

childName String はい 構造体内のサブパラメーターの名前です。名前は、漢字、英字、または数字で始まる必要があります。漢字、大文字、小文字、数字、ハイフン (-)、アンダースコア (_)、およびピリオド (.) を使用できます。最大長は 30 文字です。各漢字は 1 文字としてカウントされます。
dataSpecs Object いいえ

INTFLOATDOUBLETEXTDATE配列などの非リストデータ型 (dataType) のデータ仕様は dataSpecs に保存されます。

説明
  • データ仕様は、プロパティ、サービス、イベント、およびパラメーターの定義以外のすべてのデータ定義を指します。
  • データ型に対応するパラメーターを使用し、dataSpecs または dataSpecsList のいずれかに値を指定する必要があります。両方を指定することはできません。
dataSpecsList List いいえ サブパラメーターの dataType がリスト型 (たとえば、ENUMBOOL、または構造体) の場合、そのデータ仕様は dataSpecsList パラメーターに保存されます。
説明
  • データ仕様は、プロパティ、サービス、イベント、およびパラメーターの定義以外のすべてのデータ定義を指します。
  • データ型に対応するパラメーターを使用し、dataSpecs または dataSpecsList のいずれかに値を指定する必要があります。両方を指定することはできません。
custom ブール型 はい これがカスタム機能であるかどうかを指定します。
  • true :はい
  • false :いいえ

extendConfig のデータ構造

各プロパティ、イベント、またはサービスのデータ構造では、extendConfig を使用して、デバイス通信プロトコルを標準 TSL モデルにマッピングするための拡張情報を定義します。

説明 応答の configCode フィールドは、システムが単一機能の拡張情報に対して生成する一意の識別子です。

IoT Platform は、Modbus、OPC UA、またはカスタムゲートウェイプロトコルを使用するデバイスの拡張情報をサポートします。データ仕様はプロトコルによって異なります。

Modbus タイプ

Modbus は、プロパティの拡張情報のみをサポートします。

説明 以下の例には、extendConfig の構造を示すために、考えられるすべてのパラメーターが含まれています。実際のパラメーターは、ユースケースによって異なります。
{
  "identifier":"extend1",
  "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 文字列 プロダクト内のプロパティの一意の識別子です。
registerAddress 文字列 レジスタアドレスです。値は 0x で始まり、0x0 から 0xFFFF の範囲内である必要があります。例: 0xFE
operateType 文字列 操作タイプです。有効な値は次のとおりです:
  • coilStatus:コイルステータス
  • inputStatus:ディスクリート入力
  • holdingRegister:保持レジスタ
  • inputRegister:入力レジスタ
writeFunctionCode 整数 書き込み操作のファンクションコードです。有効な値は、指定された operateType によって異なります。
  • coilStatus:
    • 5:読み取りおよび書き込み (読み取り:0x01、書き込み:0x05)
    • 15:読み取りおよび書き込み (読み取り:0x01、書き込み:0x0F)
    • 0:読み取り専用 (読み取り:0x01)
  • inputStatus:0:読み取り専用 (読み取り:0x02)
  • holdingRegister:
    • 6:読み取りおよび書き込み (読み取り:0x03、書き込み:0x06)
    • 16:読み取りおよび書き込み (読み取り:0x03、書き込み:0x10)
    • 0:読み取り専用 (読み取り:0x03)
  • inputRegister:0:読み取り専用 (読み取り:0x04)
writeOnly 整数 操作が書き込み専用かどうかを指定します。
  • 0:書き込み専用ではありません。
    • writeFunctionCode が 0 でない場合 (読み取りおよび書き込みを示す)、writeOnly が 0 のときは、読み取りと書き込みの両方の操作がサポートされることを意味します。
    • writeFunctionCode が 0 の場合 (読み取り専用を示す)、writeOnly は 0 である必要があります。
  • 1:書き込み専用です。

    writeFunctionCode が 0 でない場合 (読み取りおよび書き込みを示す) にのみ、writeOnly を 1 に設定して書き込み専用に指定できます。

scaling 数値 スケーリング係数です。値に 0 は指定できません。

このパラメーターは、文字列またはブール値のデータ型には適用されません。

pollingTime 整数 収集間隔です。ミリ秒 (ms) 単位で指定します。このパラメーターが指定されていない場合、デバイスのデフォルトの収集間隔が使用されます。
trigger 整数 データ報告方法です。1:定期的にデータを報告します。2:変更時にデータを報告します。
bitMask 整数 ブール値データ型に固有のパラメーターです。

マスクです。有効な値:1、2、4、8、16、32、64、128、256、512、1024、2048、4096、8192、16384、32768。これらの値は 1<<(0 から 15) に対応します。

originalDataType オブジェクト 元のデータ型です。
type 文字列 元のデータ型です。値は、次の基本型のいずれかである必要があります:int16、uint16、int32、uint32、int64、uint64、float、double、string、bool、またはカスタムデータ (ビッグエンディアン順序で 16 進数データを返します)。
specs オブジェクト 特定のデータ型に固有のパラメーターです。
registerCount 整数 文字列およびカスタムデータ型に固有のパラメーターです。

レジスタの数です。

swap 整数 文字列およびカスタムデータを除くすべてのデータ型のパラメーターです。

16 ビットレジスタ内の上位バイトと下位バイトを入れ替えるかどうかを指定します (例: byte1byte2 が byte2byte1 になります)。

  • 0:入れ替えません。
  • 1:入れ替えます。
reverseRegister 整数 文字列およびカスタムデータを除くすべてのデータ型のパラメーターです。
32 ビットデータ内の 16 ビットレジスタの順序を逆にするかどうかを指定します (例: byte1byte2byte3byte4 が byte3byte4byte1byte2 になります)。
  • 0:逆にしません。
  • 1:逆にします。

OPC UA タイプ

OPC UA は、プロパティ、サービス、およびイベントの拡張情報をサポートします。

{
  "identifier":"extend2",
  "displayName":"Action",
  "inputData":[
    {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2 
    }
  ],
  "outputData":[
     {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2
    }
  ]
}
パラメーター タイプ 説明
identifier 文字列 プロダクト内のプロパティ、サービス、またはイベントの一意の識別子です。
displayName 文字列 表示名です。このパラメーターは、プロパティおよびイベントには必須ですが、サービスにはオプションです。
inputData リスト 入力データのパラメーターです。
outputData リスト 出力データのパラメーターです。
identifier 文字列 プロダクト内の入力または出力パラメーターの一意の識別子です。
index 整数 親リスト (inputData または outputData) におけるパラメーターの一意のインデックスです。

カスタムタイプ

カスタムタイプは、プロパティ、サービス、およびイベントの拡張情報をサポートします。

{
  "identifier":"xxx",
  "customize":{}
}
パラメーター タイプ 説明
identifier 文字列 プロダクト内のプロパティ、サービス、またはイベントの一意の識別子です。
customize オブジェクト JSON オブジェクト形式のユーザー定義データです。

バリデーション

json-schema を使用して、ThingModelJson の入力パラメーターを検証できます。

スキーマ定義については、schema.json をご参照ください。

次の例は、バリデーションを実行する方法を示します。

  • 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;
    /**
     * @作成者: ***
     * @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"
                        + "\t\t\t\"name\": \"Alert event\",\n"
                        + "\t\t\t\"identifier\": \"alarmEvent\",\n"
                        + "\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"
                        + "\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 resolved\",\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"
                        + "\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"
                        + "\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 を作成します。

  1. Visual Studio Code 公式サイト にアクセスし、最新バージョンの Visual Studio Code をダウンロードしてインストールします。
  2. Visual Studio Code を開き、左下隅にある 设置 ボタンをクリックして、[設定] を選択します。
  3. [ユーザー設定] タブで、[拡張機能] > [JSON] を選択します。[スキーマ] の下で [settings.json で編集] をクリックし、次の設定を追加してファイルを保存します。
     "json.schemas": [{
            "fileMatch": ["*.json"],
            "url": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    }]

    設定を保存すると、Thing モデルを定義する際に自動補完プロンプトが表示されます。

    "$schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    ""
      events
      functionBlockId
      functionBlockName
      functionBlocks
      properties
      services