Update Thing Model


更新模型。

操作权限


确保已获取调用该 API 的权限。更多信息,参见 获取 API 调用权限

请求格式


POST https://{apigw-address}/model-service/v2.1/thing-models?action=update

请求参数(URI)


名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

模型所属的 OU ID。如何获取 orgId 信息>>

isPatchUpdate

Query

可选

Boolean

是否是局部更新,默认为 true

  • 当其值为 true 时,只更新参数中指定字段的值。

  • 当其值为 false 时,更新所有字段的值,即未指定值的字段将被置空。

请求参数(Body)


名称

必需/可选

数据类型

描述

modelId

必需

String

模型标识符。

name

isPatchUpdatefalse 时必填

StringI18n

模型名称,支持国际化。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

desc

可选

String

模型描述。

tags

可选

Map (Key 为 String,Value 为 String)

用户自定义标签。

featuresToDelete

可选

String Array

需要删除的 features ID 列表。只有 isPatchUpdatetrue 的情况下该参数才有效。如果 array 中的 feature 出现在 attributesmeasurepointsservices 中,该 feature 不会被删除。

attributes

可选

Map(Key 为 String,Value 为 ThingAttribute 结构体)

静态属性定义的 map 类型值,key 为静态属性 ID,value 为属性定义。属性定义的结构参见 ThingAttribute 结构体

注:无法在当前模型中添加父模型或子模型中已存在的属性。

measurepoints

可选

Map(Key 为 String,Value 为 ThingMeasurepoint 结构体)

测点定义的 map 类型值,key 为测点 ID,value 为测点定义。测点定义的结构参见 ThingMeasurepoint 结构体

注:无法在当前模型中添加父模型或子模型中已存在的测点。

services

可选

Map(Key 为 String,Value 为 ThingService 结构体)

服务(命令)定义的 map 类型值,key 为服务 ID(即为模型管理中的命令 ID),value 为服务定义。Value 的结构参见 ThingService 结构体

注:无法在当前模型中添加父模型或子模型中已存在的服务。

ThingAttribute 结构体


名称

必需/可选

数据类型

描述

identifier

可选

String

属性 ID。

dataType

可选

String

数据类型。比如:ARRAY、BOOL、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。

dataDefinition

可选

String

本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>>

isRequired

可选

Boolean

是否是必填的属性。如果为 true,则要求在基于该模型创建资产时,必须设置该属性的值,否则会返回校验失败的错误。

defaultValue

可选

根据属性的定义决定

属性的默认值。如果没有设置默认值,则为 null。

注:EnOS Edge 不支持该参数。

name

可选

StringI18n

支持国际化的属性名称。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

i18nDesc

可选

StringI18n

支持国际化的描述。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

tags

可选

Map (Key 为 String,Value 为 String)

用户自定义标签。

unit

可选

Unit 结构体

单位。参见 Unit 结构体

ThingMeasurepoint 结构体


名称

必需/可选

数据类型

描述

identifier

可选

String

测点 ID。

dataType

可选

String

数据类型。比如:ARRAY、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。

dataDefinition

可选

String

本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>>

name

可选

StringI18n

支持国际化的测点名称。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

i18nDesc

可选

StringI18n

支持国际化的描述。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

tags

可选

Map (Key 为 String,Value 为 String)

用户自定义标签。

hasQuality

可选

Boolean

是否有质量位,true 表示是,false 表示否。

signalType

可选

String

数据类型。有如下类型:Generic、AI、PI、DI。

unit

可选

Unit 结构体

单位。参见 Unit 结构体

ThingService 结构体


名称

必需/可选

数据类型

描述

identifier

可选

String

服务 ID(即为模型管理中的命令 ID)。

name

可选

StringI18n

支持国际化的服务名称(即为模型管理中的命令名称)。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

desc

可选

String

模型描述。

i18nDesc

可选

StringI18n

支持国际化的描述。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

tags

可选

Map (Key 为 String,Value 为 String)

用户自定义标签。

inputData

可选

ThingDatapoint 结构体

Service 的入参列表。参见 ThingDatapoint 结构体

outputData

可选

ThingDatapoint 结构体

Service 返回参数列表。参见 ThingDatapoint 结构体

ThingDatapoint 结构体


名称

必需/可选

数据类型

描述

identifier

可选

String

调用该命令时需要提供的对象 ID,可以是属性 ID 或测点 ID。

dataType

可选

String

数据类型。比如:ARRAY、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。

dataDefinition

可选

String

本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>>

name

可选

StringI18n

支持国际化的名称。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

i18nDesc

可选

StringI18n

支持国际化的描述。若指定该参数,则国际化结构中的 defaultValue 字段必填。结构参见 国际化名称结构体

tags

可选

Map (Key 为 String,Value 为 String)

自定义标签。

unit

可选

Unit 结构体

单位。参见 Unit 结构体

isRequired

可选

Boolean

仅支持模型服务的 inputData,如果为 true(默认),要求调用命令时, 必须提供这个参数,除非 defaultValue 设置了非 null 值。

注:EnOS Edge 不支持该参数。

defaultValue

可选

根据点的数据类型决定

默认值。如果没有设置默认值,则为 null。仅支持模型服务的 inputData

注:EnOS Edge 不支持该参数。

Unit 结构体


名称

必需/可选

数据类型

描述

unitId

可选

String

单位的标识符。

multiplier

可选

String

单位的乘数。参见 Multiplier

Multiplier


单位的乘数有如下取值:

YOTTA ,//Y     10^24
ZETTA ,//Z     10^21
EXA   ,//E     10^18
PETA  ,//P     10^15
TERA  ,//T     10^12
GIGA  ,//G     10^9
MEGA  ,//M     10^6
KILO  ,//k     10^3
HECTO ,//h     10^2
DECA  ,//da    10^1
ONE   ,//      10^0
DECI  ,//d     10^-1
CENTI ,//c     10^-2
MILLI ,//m     10^-3
MICRO ,//μ     10^-6
NANO  ,//n     10^-9
PICO  ,//p     10^-12
FEMTO ,//f     10^-15
ATTO  ,//a     10^-18
ZEPTO ,//z     10^-21
YOCTO ,//y     10^-24

错误码


代码

描述

10404

模型不存在。

10945

模型元素与父子模型冲突。

10952

模型四要素的数量超过限制。

示例

请求示例


url: https://{apigw-address}/model-service/v2.1/thing-models?action=update&orgId=yourOrgId&isPatchUpdate=true
method: POST
requestBody:
{
  "modelId": "yourModelId",
  "name": {
    "defaultValue": "Device Name",
    "i18nValue": {
      "zh_CN": "设备名称",
      "en_US": "Device Name"
    }
  },
  "desc": "jw-1112",
  "tags": {
    "group": "1"
  },
  "attributes": {
    "capacity": {
      "identifier": "capacity",
      "name": {
        "defaultValue": "capacity",
        "i18nValue": {
          "en_US": "capacity",
          "zh_CN": "容量"
        }
      },
      "i18nDesc": {
        "defaultValue": "Capacity description",
        "i18nValue": {
          "en_US": "Capacity description",
          "zh_CN": "容量描述"
        }
      },
      "tags": {
        "cap": "1"
      },
      "dataType": "INT",
      "unit": {
          "unitId": "G",
          "multiplier": "ONE"
      },
      "dataDefinition": null,
      "isRequired": true,
      "defaultValue": 111
    }
  },
  "measurepoints": {
    "ActiveSC": {
      "identifier": "ActiveSC",
      "name": {
        "defaultValue": "活动状态字",
        "i18nValue": {
          "en_US": "ActiveSC_Name"
        }
      },
      "i18nDesc": {
        "defaultValue": "ActiveSC desc",
        "i18nValue": {
          "en_US": "ActiveSC desc",
          "zh_CN": "活动状态描述"
        }
      },
      "tags": {},
      "dataType": "INT",
      "unit": null,
      "dataDefinition": null,
      "hasQuality": false,
      "signalType": "DI"
    }
  },
  "services": {
    "speedup": {
      "identifier": "speedup",
      "name": {
        "defaultValue": "speedup",
        "i18nValue": {
          "en_US": "speedup"
        }
      },
      "i18nDesc": {
        "defaultValue": "Speedup",
        "i18nValue": {
          "en_US": "Speedup",
          "zh_CN": "加速"
        }
      },
      "tags": null,
      "outputData": [
        {
          "identifier": "delta",
          "name": {
            "defaultValue": "delta",
            "i18nValue": {
              "en_US": "delta"
            }
          },
          "i18nDesc": {
            "defaultValue": "Delta",
            "i18nValue": {
              "en_US": "Delta",
              "zh_CN": "Delta 描述"
            }
          },
          "tags": {},
          "dataType": "INT",
          "unit": null,
          "dataDefinition": null
        }
      ],
      "inputData": [
        {
          "identifier": "delta",
          "name": {
            "defaultValue": "delta",
            "i18nValue": {
              "en_US": "delta"
            }
          },
          "i18nDesc": {
            "defaultValue": "Delta",
            "i18nValue": {
              "en_US": "Delta",
              "zh_CN": "Delta 描述"
            }
          },
          "tags": {},
          "dataType": "INT",
          "unit": {
            "unitId": "rpm",
            "multiplier": "ONE"
          },
          "dataDefinition": null,
          "isRequired": false,
          "defaultValue": null
        }
      ]
    }
  }
}

返回示例


{
  "code": 0,
  "msg": "OK",
  "requestId": "fa11232e-7e45-4176-a382-963c1240a27f"
}

SDK 示例


你可以在 Github 上获取模型服务的 SDK 示例: