Update Thing Model¶
更新模型。使用此 API 前,确保当前环境已安装 EnOS 2.3 CU 2。
操作权限¶
需授权的资源 | 所需操作权限 |
---|---|
模型管理 | Full Access |
请求格式¶
POST https://{apigw-address}/model-service/v2.1/thing-models?action=update
请求参数(URI)¶
名称 | 位置(Path/Query) | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|---|
orgId | Query | 必需 | String | 模型所属的 OU ID。如何获取 orgId 信息>> |
isPatchUpdate | Query | 可选 | Boolean | 是否是局部更新,默认为
|
请求参数(Body)¶
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
modelId | 必需 | String | 模型标识符。 |
name | isPatchUpdate 为 false 时必填 |
StringI18n | 模型名称,其结构参见 国际化名称结构体。 |
desc | 可选 | String | 模型描述。 |
category | 可选 | String | 模型分类。 |
tags | 可选 | Map (Key 为 String,Value 为 String) | 用户自定义标签。 |
featuresToDelete | 可选 | String Array | 需要删除的 features ID 列表。只有 isPatchUpdate 为 true 的情况下该参数才有效。如果 array 中的 feature 出现在 attributes ,measurepoints ,events 或 services 中,该 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,value 为服务定义。服务定义的结构参见 ThingService 结构体。
|
events | 可选 | Map(Key 为 String,Value 为 ThingEvent 结构体) |
事件定义的 map 类型值,key 为事件 ID,value 为事件定义。事件定义的结构参见 ThingEvent 结构体。
|
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 | 支持国际化的属性名称。结构参见 国际化名称结构体。 |
desc | 可选 | String | 属性描述。 |
i18nDesc | 可选 | StringI18n | 支持国际化的描述。结构参见 国际化名称结构体。 |
tags | 可选 | Map (Key 为 String,Value 为 String) | 用户自定义标签。 |
isStdElement | 可选 | Boolean | 是否是标准元素。 注:EnOS Edge 不支持该参数。 |
stdElementId | 可选 | String | 当元素是标准元素时,标准元素的URN,其命名格式为 urn:enos:modelelement:std: 如果提供了 注:EnOS Edge 不支持该参数。 |
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 | 支持国际化的测点名称。结构参见 国际化名称结构体。 |
desc | 可选 | String | 测点描述。 |
i18nDesc | 可选 | StringI18n | 支持国际化的描述。结构参见 国际化名称结构体。 |
tags | 可选 | Map (Key 为 String,Value 为 String) | 用户自定义标签。 |
isStdElement | 可选 | Boolean | 是否是标准元素。 注:EnOS Edge 不支持该参数。 |
stdElementId | 可选 | String | 当元素是标准元素时,标准元素的 URN,其命名格式为 urn:enos:modelelement:std: 如果提供了 注:EnOS Edge 不支持该参数。 |
hasQuality | 可选 | Boolean | 是否有质量位。 |
signalType | 可选 | String | 信号类型。有如下类型:Generic、AI、PI、DI。 |
unit | 可选 | Unit 结构体 | 单位。参见 Unit 结构体。 |
ThingService 结构体 ¶
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
identifier | 可选 | String | 服务 ID。 |
name | 可选 | StringI18n | 支持国际化的服务名称。结构参见 国际化名称结构体。 |
desc | 可选 | String | 服务描述。 |
i18nDesc | 可选 | StringI18n | 支持国际化的描述。结构参见 国际化名称结构体。 |
tags | 可选 | Map (Key 为 String,Value 为 String) | 用户自定义标签。 |
isStdElement | 可选 | Boolean | 是否是标准元素。 注:EnOS Edge 不支持该参数。 |
stdElementId | 可选 | String | 当元素是标准元素时,标准元素的 URN,其命名格式为 urn:enos:modelelement:std: 如果提供了 注:EnOS Edge 不支持该参数。 |
inputData | 可选 | ThingDatapoint 结构体 | Service 的入参列表。参见 ThingDatapoint 结构体。 |
outputData | 可选 | ThingDatapoint 结构体 | Service 返回参数列表。参见 ThingDatapoint 结构体。 |
callType | 可选 | String | 注意:callType 已废弃,未来会删除,请不要使用。调用类型。SYNC 表示同步,ASYNC 表示异步。 |
ThingEvent 结构体 ¶
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
identifier | 可选 | String | 事件 ID。 |
name | 可选 | StringI18n | 支持国际化的事件名称。结构参见 国际化名称结构体。 |
desc | 可选 | String | 事件描述。 |
i18nDesc | 可选 | StringI18n | 支持国际化的描述。结构参见 国际化名称结构体。 |
tags | 可选 | Map (Key 为 String,Value 为 String) | 用户自定义标签。 |
isStdElement | 可选 | Boolean | 是否是标准元素。 注:EnOS Edge 不支持该参数。 |
stdElementId | 可选 | String | 当元素是标准元素时,标准元素的URN,其命名格式为 urn:enos:modelelement:std: 如果提供了 注:EnOS Edge 不支持该参数。 |
outputData | 可选 | ThingDatapoint 结构体 | Event 返回参数列表。参见 ThingDatapoint 结构体。 |
eventType | 可选 | String | 事件类型。有 INFO 、 WARN 、 ERROR 三种取值。 |
ThingDatapoint 结构体 ¶
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
identifier | 可选 | String | 点 ID。 |
dataType | 可选 | String | 数据类型。比如:ARRAY、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。 |
dataDefinition | 可选 | String | 本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>> |
name | 可选 | StringI18n | 支持国际化的测点名称。结构参见 国际化名称结构体。 |
desc | 可选 | String | 测点描述。 |
i18nDesc | 可选 | StringI18n | 支持国际化的描述。结构参见 国际化名称结构体。 |
tags | 可选 | Map (Key 为 String,Value 为 String) | 用户自定义标签。 |
isStdElement | 可选 | Boolean | 是否是标准元素。 注:EnOS Edge 不支持该参数。 |
stdElementId | 可选 | String | 当元素是标准元素时,标准元素的 URN,其命名格式为 urn:enos:modelelement:std: 注:EnOS Edge 不支持该参数。 |
unit | 可选 | Unit 结构体 | 单位。参见 Unit 结构体。 |
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",
"category": "system",
"tags": {
"group": "1"
},
"attributes": {
"capacity": {
"identifier": "capacity",
"name": {
"defaultValue": "capacity",
"i18nValue": {
"en_US": "capacity",
"zh_CN": "容量"
}
},
"desc": "Capacity",
"i18nDesc": {
"defaultValue": "Capacity description",
"i18nValue": {
"en_US": "Capacity description",
"zh_CN": "容量描述"
}
},
"tags": {
"cap": "1"
},
"stdElementId": "urn:user:modelelement:std:atom-property-int:1.0",
"isStdElement": true,
"dataType": "INT",
"unit": {
"unitId": "G",
"multiplier": "ONE"
},
"dataDefinition": null,
"isRequired": true,
"defaultValue": 111
}
},
"measurepoints": {
"ActiveSC": {
"identifier": "ActiveSC",
"name": {
"defaultValue": "活动状态字",
"i18nValue": {
"en_US": "ActiveSC_Name"
}
},
"desc": "ActiveSC desc",
"i18nDesc": {
"defaultValue": "ActiveSC desc",
"i18nValue": {
"en_US": "ActiveSC desc",
"zh_CN": "活动状态描述"
}
},
"tags": {},
"stdElementId": null,
"isStdElement": false,
"dataType": "INT",
"unit": null,
"dataDefinition": null,
"hasQuality": false,
"signalType": "DI"
}
},
"services": {
"speedup": {
"identifier": "speedup",
"name": {
"defaultValue": "speedup",
"i18nValue": {
"en_US": "speedup"
}
},
"desc": "Speedup",
"i18nDesc": {
"defaultValue": "Speedup",
"i18nValue": {
"en_US": "Speedup",
"zh_CN": "加速"
}
},
"tags": null,
"stdElementId": null,
"isStdElement": false,
"outputData": [
{
"identifier": "delta",
"name": {
"defaultValue": "delta",
"i18nValue": {
"en_US": "delta"
}
},
"desc": "Delta",
"i18nDesc": {
"defaultValue": "Delta",
"i18nValue": {
"en_US": "Delta",
"zh_CN": "Delta 描述"
}
},
"tags": {},
"stdElementId": null,
"isStdElement": false,
"dataType": "INT",
"unit": null,
"dataDefinition": null
}
],
"inputData": [
{
"identifier": "delta",
"name": {
"defaultValue": "delta",
"i18nValue": {
"en_US": "delta"
}
},
"desc": "Delta",
"i18nDesc": {
"defaultValue": "Delta",
"i18nValue": {
"en_US": "Delta",
"zh_CN": "Delta 描述"
}
},
"tags": {},
"stdElementId": null,
"isStdElement": false,
"dataType": "INT",
"unit": {
"unitId": "rpm",
"multiplier": "ONE"
},
"dataDefinition": null
}
],
"callType": "ASYNC"
}
},
"events": {
"alert": {
"identifier": "alert",
"name": {
"defaultValue": "alert",
"i18nValue": {
"en_US": "alert"
}
},
"desc": "Alert",
"i18nDesc": {
"defaultValue": "Alert",
"i18nValue": {
"en_US": "Alert",
"zh_CN": "告警"
}
},
"tags": null,
"stdElementId": null,
"isStdElement": false,
"outputData": [
{
"identifier": "event1",
"name": {
"defaultValue": "event1",
"i18nValue": {
"en_US": "event1"
}
},
"desc": "Event 1",
"i18nDesc": {
"defaultValue": "Event 1",
"i18nValue": {
"en_US": "Event 1",
"zh_CN": "事件"
}
},
"tags": {},
"stdElementId": null,
"isStdElement": false,
"dataType": "INT",
"unit": null,
"dataDefinition": null
}
],
"eventType": "ERROR"
}
}
}
返回示例¶
{
"code": 0,
"msg": "OK",
"requestId": "fa11232e-7e45-4176-a382-963c1240a27f"
}
Java SDK 调用示例¶
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.common.StringI18n;
import com.envisioniot.enos.model_service.v2_1.UpdateThingModelRequest;
import com.envisioniot.enos.model_service.v2_1.UpdateThingModelResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UpdateThingModel {
public static void main(String[] args) {
String appKey = "yourAppAccessKey";
String appSecret = "yourAppSecretKey";
String serverUrl = "https://{apigw-address}";
String orgId = "yourOrgId";
UpdateThingModelRequest request = new UpdateThingModelRequest();
request.setModelId("yourModelId");
request.setIsPatchUpdate(true);
StringI18n i18n = new StringI18n();
i18n.setDefaultValue("Device Name");
request.setName(i18n);
Map<String, String> tags = new HashMap<>();
tags.put("group", "1");
request.setTags(tags);
request.setDesc("jw-1112");
request.setOrgId(orgId);
List<String> featuresToDelete = new ArrayList<>();
featuresToDelete.add("test_measure_point");
request.setFeaturesToDelete(featuresToDelete);
UpdateThingModelResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
.url(serverUrl)
.getResponse(request, request.getResponseClass());
if (response.success()) {
System.out.println("update is successful!");
}else{
System.out.println(response.toString());
}
}
}