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

IoT Platform:ThingModelJson のデータ構造

最終更新日:Mar 22, 2025

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
        }]
    }
    パラメーター説明
    productKeyStringTSL モデルが属するプロダクトの ProductKey。
    _ppkStringTSL モデルバージョンに関する情報。このパラメーターは、次のフィールドで構成されます。
    • version: 現在の TSL モデルのバージョン番号。このフィールドは、公開済みの TSL モデルでのみ使用できます。
    • description: 現在の TSL モデルの説明。このフィールドは、公開済みの TSL モデルでのみ使用できます。
    propertiesListTSL モデルが属するプロダクトのプロパティ。 properties パラメーターのデータ構造の詳細については、「properties パラメーターのデータ構造」をご参照ください。

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

    servicesListTSL モデルが属するプロダクトのサービス。 services パラメーターのデータ構造の詳細については、「services パラメーターのデータ構造」をご参照ください。

    各サービスで、extendConfig パラメーターを使用して、TSL モデルに関する拡張情報を定義できます。詳細については、「extendConfig パラメーターのデータ構造」をご参照ください。拡張情報を定義する必要がない場合は、extendConfig パラメーターを指定する必要はありません。

    eventsListTSL モデルが属するプロダクトのイベント。 events パラメーターのデータ構造の詳細については、「events パラメーターのデータ構造」をご参照ください。

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

    functionBlocksListカスタムモジュールのリスト。このパラメーターは、プロダクトに少なくとも 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 モジュールのパラメーターを示します。

    パラメーター説明
    identifierStringカスタム TSL モジュールの ID。各 ID はプロダクト内で一意です。

    ID は 1 ~ 30 文字で、文字、数字、およびアンダースコア(_)を含めることができます。

    nameStringカスタム TSL モジュールの名前。

    名前は 4 ~ 30 文字で、文字、数字、およびアンダースコア(_)を含めることができます。

    descriptionStringカスタム TSL モジュールの説明。説明は最大 100 文字まで入力できます。

properties パラメーターのデータ構造

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

重要 以前のバージョンの API で使用されていた std パラメーターと customFlag パラメーターは廃止されました。したがって、このセクションでは、これらのパラメーターの説明は提供されていません。API 操作を呼び出すときは、これら 2 つのパラメーターを指定する必要はありません。
パラメーター必須説明
productKeyStringはいTSL モデルが属するプロダクトの ProductKey。
createTsLongいいえ機能が定義された時刻。デフォルトでは、値は 13 桁のタイムスタンプです。このパラメーターを指定できます。このパラメーターを指定しない場合、IoT Platform はタイムスタンプを生成します。機能はタイムスタンプ順に時系列でソートされます。
説明 既存の TSL モデルの場合、作成時刻は、TSL モデルが公開された後に初めて変更された時刻です。
identifierStringはいプロパティの ID。ID は最大 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。
説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。
dataTypeStringはいプロパティ値のデータ型。

有効な値: ARRAYSTRUCTINTFLOATDOUBLETEXTDATEENUMBOOL

異なるデータ型が指定されている場合は、異なるパラメーターを指定する必要があります。詳細については、このトピックの対応する型のデータ構造を参照してください。

nameStringはいプロパティの名前。名前は最大 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。
rwFlagStringはいIoT Platform がプロパティで実行できる操作のタイプ。有効な値:
  • READ_WRITE
  • READ_ONLY
dataSpecsObjectいいえdataTypeINTFLOATDOUBLETEXTDATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。
説明
  • dataSpecs パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
dataSpecsListListいいえdataType パラメーターを ENUMBOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。
説明
  • dataSpecs パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
requiredBooleanはい標準カテゴリにプロパティが必要かどうかを指定します。有効な値:
  • true: はい
  • false: いいえ
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい
  • false: いいえ
  • 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 パラメーターのデータ構造

次の表に、サービスを定義するために使用されるパラメーターを示します。

パラメーター必須説明
productKeyStringはいTSL モデルが属するプロダクトの ProductKey。
createTs
Long
いいえ
機能が定義された時刻。デフォルトでは、値は 13 桁のタイムスタンプです。このパラメーターを指定できます。このパラメーターを指定しない場合、IoT Platform はタイムスタンプを生成します。機能はタイムスタンプ順に時系列でソートされます。
説明 既存の TSL モデルの場合、作成時刻は、TSL モデルが公開された後に初めて変更された時刻です。
identifierStringはいサービスの ID。ID は 1 ~ 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。
説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。
serviceNameStringはいサービスの名前。名前は 1 ~ 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。
inputParamsListいいえサービスの入力パラメーター。データ構造の詳細については、「入力パラメーターと出力パラメーターのデータ構造」をご参照ください。
outputParamsListいいえサービスの出力パラメーター。データ構造の詳細については、「入力パラメーターと出力パラメーターのデータ構造」をご参照ください。
requiredBooleanはい標準カテゴリにサービスが必要かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。
callTypeStringはいサービスの呼び出しに使用されるメソッド。
  • ASYNC: サービスを非同期的に呼び出します。
  • SYNC: サービスを同期的に呼び出します。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

events パラメーターのデータ構造

次の表に、イベントを定義するために使用されるパラメーターを示します。

パラメーター必須説明
productKeyStringはいTSL モデルが属するプロダクトの ProductKey。
createTs
Long
いいえ
機能が定義された時刻。デフォルトでは、値は 13 桁のタイムスタンプです。このパラメーターを指定できます。このパラメーターを指定しない場合、IoT Platform はタイムスタンプを生成します。機能はタイムスタンプ順に時系列でソートされます。
説明 既存の TSL モデルの場合、作成時刻は、TSL モデルが公開された後に初めて変更された時刻です。
identifierStringはいイベントの ID。ID は 50 文字で、大文字、小文字、数字、およびアンダースコア(_)を含めることができます。
説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。
eventNameStringはい1 つ以上のイベント名のリスト。名前は 1 ~ 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。
eventTypeStringはいイベントのタイプ。有効な値:
  • INFO_EVENT_TYPE: 情報。
  • ALERT_EVENT_TYPE: アラート。
  • ERROR_EVENT_TYPE: エラー。
outputdataListいいえイベントの出力パラメーター。データ構造の詳細については、「入力パラメーターと出力パラメーターのデータ構造」をご参照ください。
requiredBooleanはい標準カテゴリにイベントが必要かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

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

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

パラメーター必須説明
dataTypeStringはいパラメーター値のデータ型。

有効な値: ARRAYSTRUCTINTFLOATDOUBLETEXTDATEENUMBOOL

詳細については、このトピックの対応する型のデータ構造を参照してください。

identifierStringはいパラメーターの ID。ID は 1 ~ 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。
説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。
nameStringはいリクエストパラメーターの名前。名前は 1 ~ 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。
directionStringはいパラメーターが入力パラメーターか出力パラメーターかを指定します。有効な値:
  • PARAM_INPUT: 入力パラメーター。
  • PARAM_OUTPUT: 出力パラメーター。
paraOrderIntegerはいパラメーターのシリアル番号。シリアル番号は 0 から始まり、一意である必要があります。
dataSpecsObjectいいえdataType パラメーターを INTFLOATDOUBLETEXTDATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。
説明
  • dataSpecs パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
dataSpecsListListいいえdataType パラメーターを ENUMBOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。
説明
  • dataSpecsList パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
customBooleanはいパラメーターがカスタム TSL 機能に属しているかどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

INT、FLOAT、または DOUBLE 型のデータ構造

次の表に、INTFLOAT、および DOUBLE 型のデータを定義するために使用されるパラメーターを示します。

パラメーター必須説明
dataTypeStringはいデータの型。有効な値: INTFLOATDOUBLE
maxStringはいパラメーターの最大値。最大値は、INTFLOATDOUBLEdataType パラメーターで指定されているように、

max パラメーターの値は、STRING 型のデータに変換する必要があります。dataType パラメーターが INT に設定されている場合、たとえば、200 の値は 200 ではなく "200" として表現する必要があります。

minStringはいパラメーターの最小値。最小値は、INTFLOATDOUBLEdataType パラメーターで指定されているように、

ステップ パラメーターの値は、STRING 型のデータに変換する必要があります。詳細については、「max パラメーターの説明」をご参照ください。

stepStringはいステップサイズ。データの各変更の増分を示します。ステップサイズは、INTFLOATDOUBLEdataType パラメーターで指定されているように、

ステップ パラメーターの値は、STRING 型のデータに変換する必要があります。詳細については、「max パラメーターの説明」をご参照ください。

preciseStringいいえdataType パラメーターが FLOAT または DOUBLE に設定されている場合に、このパラメーターを指定できます。値の精度。
defaultValueStringいいえこのパラメーターを指定して、デフォルト値を設定できます。
unitStringはい単位の記号。
unitNameStringはい単位の名前。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

DATE または TEXT 型のデータ構造

次の表に、DATE および TEXT 型のデータを定義するために使用されるパラメーターを示します。

パラメーター必須説明
dataTypeStringはいデータの型。有効な値: DATE および TEXT
lengthLongはいデータの長さ。最大値: 2048。単位: バイト。dataType パラメーターが TEXT に設定されている場合は、このパラメーターを指定する必要があります。
defaultValueStringいいえこのパラメーターを指定して、デフォルト値を設定できます。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

ARRAY 型のデータ構造

次の表に、ARRAY 型のデータを定義するために使用されるパラメーターを示します。

重要 ARRAY 型のデータと STRUCT 型のデータが相互にネストされている場合、最大 2 層の再帰ネストがサポートされます。
パラメーター必須説明
dataTypeStringはいデータの型。値を ARRAY に設定します。
sizeLongはい配列内の要素の数。
childDataTypeStringはい配列内の要素のデータ型。有効な値: STRUCTINTFLOATDOUBLETEXT
dataSpecsObjectいいえdataType パラメーターを INTFLOATDOUBLETEXTDATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。
説明
  • dataSpecs パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
dataSpecsListListいいえdataType パラメーターを ENUMBOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。
説明
  • dataSpecsList パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

ENUM または BOOL 型のデータ構造

次の表に、BOOL および ENUM 型のデータを定義するために使用されるパラメーターを示します。

パラメーター必須説明
dataTypeStringはいデータの型。有効な値: BOOL および ENUM
nameStringはいENUM 項目の名前。名前は 1 ~ 20 文字で、文字、数字、アンダースコア(_)、およびハイフン(-)を含めることができます。文字または数字で始める必要があります。
valueIntegerはいENUM 項目の値。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい。
  • false: いいえ。

STRUCT 型のデータ構造

次の表に、STRUCT 型のデータを定義するために使用されるパラメーターを示します。

重要
  • 以前のバージョンの API で使用されていた childSpecsDTOchildEnumSpecsDTO は廃止されました。したがって、このセクションでは、これらのパラメーターの説明は提供されていません。API 操作を呼び出すときは、これら 2 つのパラメーターを指定する必要はありません。2 つのパラメーターの代わりに dataSpecsList パラメーターを使用することをお勧めします。
  • ARRAY 型のデータと STRUCT 型のデータが相互にネストされている場合、最大 2 層の再帰ネストがサポートされます。
パラメーター必須説明
dataTypeStringはいデータの型。値を STRUCT に設定します。
identifierStringはい構造体内のサブパラメーターの ID。ID は最大 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。
説明 ID には、set、get、post、property、event、time、value のいずれかの単語を使用できません。
nameStringはい構造体内のサブパラメーターの名前。名前は最大 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。
説明 パラメーターの定義は、childName パラメーターの定義と同じです。このパラメーターは使用されません。
childDataTypeStringいいえ構造体内のサブパラメーターのデータ型。

有効な値: INTFLOATDOUBLETEXTDATEENUMBOOL

childNameStringはい構造体内のサブパラメーターの名前。名前は最大 30 文字で、文字、数字、ハイフン(-)、アンダースコア(_)、およびピリオド(.)を含めることができます。文字または数字で始める必要があります。
dataSpecsObjectいいえ

dataType パラメーターを INTFLOATDOUBLETEXTDATE、または ARRAY に設定した場合、データ仕様は dataSpecs パラメーターに含まれます。

説明
  • dataSpecs パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
dataSpecsListListいいえdataType パラメーターを ENUMBOOL、または STRUCT に設定した場合、データ仕様は dataSpecsList パラメーターに含まれます。
説明
  • dataSpecs パラメーターは、プロパティ、サービス、イベント、およびパラメーターの定義に使用されるデータを除くすべてのデータに適用されます。
  • データ型に基づいて、dataSpecs パラメーターまたは dataSpecsList パラメーターを指定する必要があります。
customBooleanはいTSL 機能がカスタム機能かどうかを指定します。有効な値:
  • true: はい
  • false: いいえ

extendConfig パラメーターのデータ構造

各プロパティ、イベント、およびサービスで、extendConfig パラメーターを使用して、TSL モデルに関する拡張情報を定義できます。拡張情報は、デバイスの接続プロトコルと標準 TSL モデル間のマッピングを示します。

説明 configCode パラメーターは、IoT Platform によって生成される一意の ID を示します。ID は、TSL 機能に関する拡張情報を定義するために使用されます。

Modbus、OPC UA、またはカスタムプロトコルがデバイスのゲートウェイ接続プロトコルとして使用されている場合は、デバイスに関する拡張情報を定義できます。拡張情報のタイプによって、データ仕様が異なります。

Modbus タイプ

Modbus がデバイスのゲートウェイ接続プロトコルとして使用されている場合は、プロパティに関する拡張情報のみを定義できます。

説明 extendConfig パラメーターのデータ構造を完全に示すために、次の例にはすべてのパラメーターが含まれています。ただし、パラメーターは実際のシナリオによって異なる場合があります。次の表に、これらのパラメーターを示します。
{
  "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} // 逆レジスタ
  }
}
パラメーター説明
identifierStringプロパティの ID。ID はプロダクト内で一意である必要があります。
registerAddressStringレジスタのアドレス。アドレスは 0x で始まる必要があります。有効な値: 0x0 ~ 0xFFFF。例: 0xFE。
operateTypeString操作のタイプ。有効な値:
  • coilStatus: コイルの状態。
  • inputStatus: デジタル入力。
  • holdingRegister: 保持レジスタ。
  • inputRegister: 入力レジスタ。
writeFunctionCodeInteger読み取りおよび書き込み操作。値は、operateType パラメーターの値によって異なります。
  • coilStatus:
    • 5: 読み取りおよび書き込み (読み取り 0x01、書き込み 0x05)。
    • 15: 読み取りおよび書き込み (読み取り 0x01、書き込み 0x0F)。
    • 0: 読み取り専用 (0x01)。
    • 6: 書き込み専用 (0x05)。
    • 15: 書き込み専用 (0x0F)。
  • operateType パラメーターが inputStatus に設定されている場合、有効な値は 0 です (読み取り専用 0x02)。
  • holdingRegister:
    • 6: 読み取りおよび書き込み (読み取り 0x03、書き込み 0x06)。
    • 16: 読み取りおよび書き込み (読み取り 0x03、書き込み 0x10)。
    • 0: 読み取り専用 (0x03)。
    • 6: 書き込み専用 (0x06)。
    • 16: 書き込み専用 (0x10)。
  • operateType パラメーターが inputRegister に設定されている場合、有効な値は 0 です (読み取り専用 0x04)。
writeOnlyInteger操作が書き込み専用かどうかを指定します。有効な値:
  • 0: 書き込み専用ではありません。
    • writeFunctionCode パラメーターが 0 に設定されていない場合、extendConfig パラメーターは読み取りおよび書き込み操作をサポートします。writeOnly パラメーターを 0 に設定すると、extendConfig パラメーターは読み取りおよび書き込み操作をサポートします。
    • writeFunctionCode パラメーターが 0 に設定されている場合、extendConfig パラメーターは読み取り操作のみをサポートします。writeOnly パラメーターを 0 に設定する必要があります。
  • 1: 書き込み専用。

    writeFunctionCode パラメーターが 0 に設定されていない場合、extendConfig パラメーターは読み取りおよび書き込み操作をサポートします。writeOnly パラメーターを 1 に設定すると、extendConfig パラメーターは書き込み操作のみをサポートします。

scalingNumberスケーリング係数。値を 0 にすることはできません。

このパラメーターは、STRING 型と BOOLEAN 型のデータには使用できません。

pollingTimeInteger収集の間隔。単位: ミリ秒。このパラメーターを指定する必要はありません。デバイスの指定された収集間隔が使用されます。
triggerIntegerデータを送信する方法。有効な値: 1 と 2。値 1 は、特定の時刻にデータが送信されることを示します。値 2 は、変更が発生したときにデータが送信されることを示します。
bitMaskIntegerマスク。有効な値: 1、2、4、8、16、32、64、128、256、512、1024、2048、4096、8192、16384、32768。

このパラメーターは、BOOLEAN 型のデータに固有です。

originalDataTypeObject元のデータ型の説明。
typeString元のデータの型。型は、INT16、UINT16、INT32、UINT32、INT64、UINT64、FLOAT、DOUBLE、STRING、BOOLEAN、およびカスタマイズ済み (ビッグエンディアン順に戻される 16 進データ) のいずれかの基本データ型である必要があります。
specsObject一部のデータ型に固有のパラメーター。
registerCountIntegerレジスタの数。

このパラメーターは、STRING 型とカスタマイズ済み型のデータに固有です。

swapIntegerこのパラメーターは、STRING 型とカスタマイズ済み型のデータを除くすべての型のデータに固有です。

レジスタの上位バイトと下位バイトを切り替えるかどうかを指定します。その場合、レジスタ内の 16 ビット整数の最初と最後の 8 ビットが交換されます。有効な値:

  • 0: 上位バイトと下位バイトは交換されません。
  • 1: 上位バイトと下位バイトは交換されます。
reverseRegisterIntegerこのパラメーターは、STRING 型とカスタマイズ済み型のデータを除くすべての型のデータに固有です。
レジスタの上位バイトと下位バイトを切り替えるかどうかを指定します。その場合、レジスタ内の 32 ビット整数の最初と最後の 16 ビットが交換されます。有効な値:
  • 0: 上位バイトと下位バイトは交換されません。
  • 1: 上位バイトと下位バイトは交換されます。

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 // インデックス
    }
  ]
}
パラメーター説明
identifierStringプロパティ、サービス、またはイベントの ID。ID はプロダクト内で一意である必要があります。
displayNameStringプロパティまたはイベントの場合は displayName パラメーターを指定する必要があります。サービスの場合は displayName パラメーターを指定する必要はありません。
inputDataList入力データ。
outputDataList出力データ。
identifierString入力データまたは出力データの ID。ID はプロダクト内で一意である必要があります。
indexIntegerインデックス。インデックスは、inputData パラメーターと outputData パラメーターの両方で一意である必要があります。

カスタムタイプ

カスタムプロトコルがデバイスのゲートウェイ接続プロトコルとして使用されている場合は、プロパティ、サービス、およびイベントに関する拡張情報を定義できます。

{
  "identifier":"xxx", // ID
  "customize":{} // カスタマイズ
}
パラメーター説明
identifierStringプロパティ、サービス、またはイベントの ID。プロダクト内で一意である必要があります。
customizeObjectカスタム 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 パラメーターを指定する方法について説明します。

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

    次に、プロンプトに従って ThingModelJson パラメーターを指定できます。

    Prompt