このトピックでは、Thing Specification Language(TSL)モデルが定義されている JSON ファイルのパラメーターについて説明します。
説明 TSL モデルの完全な構造を示すために、次の例にはすべてのパラメーターが含まれています。ただし、パラメーターは実際のシナリオによって異なる場合があります。各パラメーターの後に続く文字列は、パラメーターの説明です。各パラメーターが使用されるシナリオについては、パラメーターの説明を参照してください。
{
"schema": "TSL モデルの URL。",
"profile": {
"productKey": "プロダクトの ProductKey。"
},
"properties": [
{
"identifier": "プロパティの ID。ID は TSL モジュール内で一意である必要があります。",
"name": "プロパティ名。",
"accessMode": "プロパティへのアクセスレベル。有効な値:r(読み取り専用)および rw(読み取りと書き込み)。",
"required": "プロパティが必要かどうかを指定します。有効な値:true(必須)および false(オプション)。",
"dataType": {
"type": "プロパティのデータ型。有効な値:int、float、double、text、date(文字列形式の UTC タイムスタンプ(ミリ秒単位))、bool(0 または 1)、enum(bool データ型と同じ方法で定義された整数)、struct(前の 7 つのデータ型を含むことができる構造体。「specs」: [{}] を使用して、含まれるオブジェクトを記述します)、および array(int、double、float、text、および struct データ型を含むことができる配列)。",
"specs": {
"min": "最小値。このパラメーターは、int、float、および double データ型のプロパティに対してのみ使用できます。",
"max": "最大値。このパラメーターは、int、float、および double データ型のプロパティに対してのみ使用できます。",
"unit": "オプション。プロパティの単位。このパラメーターは、int、float、および double データ型のプロパティに対してのみ使用できます。",
"unitName": "オプション。単位の名前。このパラメーターは、int、float、および double データ型のプロパティに対してのみ使用できます。",
"size": "配列内の要素の数。最大値:512。このパラメーターは、array データ型のプロパティに対してのみ使用できます。",
"step": "ステップサイズ。このパラメーターは、text および enum データ型のプロパティには使用できません。",
"length": "データの長さ。最大値:10240。このパラメーターは、text データ型のプロパティに対してのみ使用できます。",
"0": "0 の値。このパラメーターは、bool データ型のプロパティに対してのみ使用できます。",
"1": "1 の値。このパラメーターは、bool データ型のプロパティに対してのみ使用できます。",
"item": {
"type": "配列要素の型。このパラメーターは、array データ型のプロパティに対してのみ使用できます。"
}
}
}
}
],
"events": [
{
"identifier": "各イベントの ID。ID は TSL モジュール内で一意である必要があります。post イベントは事前定義されており、プロパティを報告するために使用されます。",
"name": "イベントの名前。",
"desc": "イベントの説明。",
"type": "イベントのタイプ。有効な値:info、alert、および error。",
"required": "イベントが必要かどうかを指定します。有効な値:true(必須)および false(オプション)。",
"outputData": [
{
"identifier": "パラメーターの一意の ID。",
"name": "パラメーターの名前。",
"dataType": {
"type": "パラメーターのデータ型。有効な値:int、float、double、text、date(文字列形式の UTC タイムスタンプ(ミリ秒単位))、bool(0 または 1)、enum(bool データ型と同じ方法で定義された整数)、struct(前の 7 つのデータ型を含むことができる構造体。「specs」: [{}] を使用して、含まれるオブジェクトを記述します)、および array(int、double、float、text、および struct データ型を含むことができる配列)。",
"specs": {
"min": "最小値。このパラメーターは、int、float、および double データ型のイベントパラメーターに対してのみ使用できます。",
"max": "最大値。このパラメーターは、int、float、および double 型のイベントパラメーターに対してのみ使用できます。",
"unit": "オプション。パラメーターの単位。このパラメーターは、int、float、および double データ型のイベントパラメーターに対してのみ使用できます。",
"unitName": "オプション。単位の名前。このパラメーターは、int、float、および double データ型のイベントパラメーターに対してのみ使用できます。",
"size": "配列内の要素の数。最大値:512。このパラメーターは、array データ型のイベントパラメーターに対してのみ使用できます。",
"step": "ステップサイズ。このパラメーターは、text および enum データ型のプロパティには使用できません。",
"length": "データの長さ。最大値:10240。このパラメーターは、text データ型のイベントパラメーターに対してのみ使用できます。",
"0": "0 の値。このパラメーターは、bool データ型のイベントパラメーターに対してのみ使用できます。",
"1": "1 の値。このパラメーターは、bool データ型のイベントパラメーターに対してのみ使用できます。",
"item": {
"type": "配列要素の型。このパラメーターは、array データ型のイベントパラメーターに対してのみ使用できます。"
}
}
}
}
],
"method": "イベントにアクセスできるメソッドの名前。名前は、identifier パラメーターの値に基づいて生成されます。"
}
],
"services": [
{
"identifier": "サービスの ID。ID は TSL モジュール内で一意である必要があります。set サービスと get サービスは、properties で指定された accessMode パラメーターの値に基づいて事前定義されています。",
"name": "サービスの名前。",
"desc": "サービスの説明。",
"required": "サービスが必要かどうかを指定します。有効な値:true(必須)および false(オプション)。",
"callType": "呼び出しタイプ。有効な値:async(非同期呼び出し)および sync(同期呼び出し)。",
"inputData": [
{
"identifier": "入力パラメーターの一意の ID。",
"name": "入力パラメーターの名前。",
"dataType": {
"type": "入力パラメーターのデータ型。有効な値:int、float、double、text、date(文字列形式の UTC タイムスタンプ(ミリ秒単位))、bool(0 または 1)、enum(bool データ型と同じ方法で定義された整数)、struct(前の 7 つのデータ型を含むことができる構造体。「specs」: [{}] を使用して、含まれるオブジェクトを記述します)、および array(int、double、float、text、および struct データ型を含むことができる配列)。",
"specs": {
"min": "最小値。このパラメーターは、int、float、および double データ型の入力パラメーターに対してのみ使用できます。",
"max": "最大値。このパラメーターは、int、float、および double データ型の入力パラメーターに対してのみ使用できます。",
"unit": "オプション。プロパティの単位。このパラメーターは、int、float、および double データ型の入力パラメーターに対してのみ使用できます。",
"unitName": "オプション。単位の名前。このパラメーターは、int、float、および double データ型の入力パラメーターに対してのみ使用できます。",
"size": "配列内の要素の数。最大値:512。このパラメーターは、array データ型の入力パラメーターに対してのみ使用できます。",
"step": "ステップサイズ。このパラメーターは、text および enum データ型の入力パラメーターには使用できません。",
"length": "データの長さ。最大値:10240。このパラメーターは、text データ型の入力パラメーターに対してのみ使用できます。",
"0": "0 の値。このパラメーターは、bool データ型の入力パラメーターに対してのみ使用できます。",
"1": "1 の値。このパラメーターは、bool データ型の入力パラメーターに対してのみ使用できます。",
"item": {
"type": "配列要素の型。このパラメーターは、array データ型の入力パラメーターに対してのみ使用できます。"
}
}
}
}
],
"outputData": [
{
"identifier": "出力パラメーターの ID。",
"name": "出力パラメーターの名前。",
"dataType": {
"type": "出力パラメーターのデータ型。有効な値:int、float、double、text、date(文字列形式の UTC タイムスタンプ(ミリ秒単位))、bool(0 または 1)、enum(bool データ型と同じ方法で定義された整数)、struct(前の 7 つのデータ型を含むことができる構造体。「specs」: [{}] を使用して、含まれるオブジェクトを記述します)、および array(int、double、float、text、および struct データ型を含むことができる配列)。",
"specs": {
"min": "最小値。このパラメーターは、int、float、および double データ型の出力パラメーターに対してのみ使用できます。",
"max": "最大値。このパラメーターは、int、float、および double データ型の出力パラメーターに対してのみ使用できます。",
"unit": "オプション。プロパティの単位。このパラメーターは、int、float、および double データ型の出力パラメーターに対してのみ使用できます。",
"unitName": "オプション。単位の名前。このパラメーターは、int、float、および double データ型の出力パラメーターに対してのみ使用できます。",
"size": "配列内の要素の数。最大値:512。このパラメーターは、array データ型の出力パラメーターに対してのみ使用できます。",
"step": "ステップサイズ。このパラメーターは、text および enum データ型の出力パラメーターには使用できません。",
"length": "データの長さ。最大値:10240。このパラメーターは、text データ型の出力パラメーターに対してのみ使用できます。",
"0": "0 の値。このパラメーターは、bool データ型の出力パラメーターに対してのみ使用できます。",
"1": "1 の値。このパラメーターは、bool データ型の出力パラメーターに対してのみ使用できます。",
"item": {
"type": "配列要素の型。このパラメーターは、array データ型の出力パラメーターに対してのみ使用できます。"
}
}
}
}
],
"method": "サービスにアクセスできるメソッドの名前。名前は、identifier パラメーターの値に基づいて生成されます。"
}
],
// カスタムモジュール内の TSL モデルには、次のパラメーターがあります。
"functionBlockId": "カスタムモジュールの一意の ID。",
"functionBlockName": "カスタムモジュールの名前。",
// プロダクトのカスタムモジュールを作成する場合、デフォルトモジュール内の TSL モデルには次のパラメーターがあります。パラメーターは、カスタムモジュールの詳細を指定します。
"functionBlocks": [
{
"functionBlockId": "カスタムモジュールの一意の ID。",
"functionBlockName": "カスタムモジュールの名前。",
"productKey": "プロダクトの ProductKey。"
}
]
}プロダクトのノードタイプがゲートウェイ サブデバイスで、ゲートウェイ接続プロトコルが Modbus、OPC UA、またはカスタムの場合、TSL モデルに関する拡張情報を表示できます。
たとえば、プロダクトのノードタイプがゲートウェイ サブデバイスで、ゲートウェイ接続プロトコルが Modbus であるとします。TSL モデルに関する拡張情報は、サブデバイスの Link IoT Edge で使用できます。詳細については、「Modbus ドライバー」をご参照ください。
Modbus プロダクトの例:
{
"profile": {
"productKey": "プロダクトの ProductKey。"
},
"properties": [
{
"identifier": "プロパティの ID。ID は TSL モジュール内で一意である必要があります。",
"operateType": "操作タイプ。有効な値:coilStatus、inputStatus、holdingRegister、および inputRegister。",
"registerAddress": "レジスタアドレス。",
"originalDataType": {
"type": "元のデータの型。有効な値:int16、uint16、int32、uint32、int64、uint64、float、double、string、bool、および customized(ビッグエンディアン形式の 16 進値)。",
"specs": {
"registerCount": "レジスタの数。このパラメーターは、string および customized データ型のプロパティに対してのみ使用できます。",
"swap16": "レジスタの上位バイトと下位バイトを切り替えるかどうかを指定します。切り替える場合、レジスタ内の 16 ビット整数の最初の 8 ビットと最後の 8 ビットが交換されます(byte1byte2 から byte2byte1 など)。このパラメーターは、string および bool データ型のプロパティには使用できません。",
"reverseRegister": "レジスタの上位バイトと下位バイトを切り替えるかどうかを指定します。切り替える場合、レジスタ内の 32 ビット整数の最初の 16 ビットと最後の 16 ビットが交換されます(byte1byte2byte3byte4 から byte3byte4byte1byte2 など)。このパラメーターは、string および bool データ型のプロパティには使用できません。"
}
},
"scaling": "ズーム係数。このパラメーターは、string および bool データ型のプロパティには使用できません。",
"trigger": "データレポート方法。有効な値:1 および 2。値 1 は、データが特定の時間に送信されることを示します。値 2 は、データの変更が送信されることを示します。",
"writeFunctionCode": "読み取り/書き込み操作。このパラメーターの有効な値は、operateType パラメーターの値によって異なります。operateType パラメーターが coilStatus に設定されている場合、有効な値は 5(読み取り/書き込み:0x01 を読み取り、0x05 を書き込み)、15(読み取り/書き込み:0x01 を読み取り、0x0F を書き込み)、0(読み取り専用 0x01)、6(書き込み専用 0x05)、および 15(書き込み専用 0x0F)です。operateType パラメーターが inputStatus に設定されている場合、有効な値は 0(読み取り専用 0x02)です。operateType パラメーターが holdingRegister に設定されている場合、有効な値は 6(読み取り/書き込み:0x03 を読み取り、0x06 を書き込み)、16(読み取り/書き込み:0x03 を読み取り、0x10 を書き込み)、0(読み取り専用 0x03)、6(書き込み専用 0x06)、および 16(書き込み専用 0x10)です。operateType パラメーターが inputRegister に設定されている場合、有効な値は 0(読み取り専用 0x04)です。",
"writeOnly": "権限が書き込み専用かどうかを指定します。有効な値:0 および 1。値 0 は、権限が書き込み専用ではないことを示します。値 1 は、権限が書き込み専用であることを示します。",
"pollingTime": "収集間隔。単位:ミリ秒。このパラメーターを設定する必要はありません。デバイスの収集間隔が使用されます。",
"bitMask": "マスク。このパラメーターは、bool データ型のプロパティに対してのみ使用できます。有効な値:1、2、4、8、16、32、64、128、256、512、1024、2048、4096、8192、16384、および 32768。"
}
]
}