Search Thing Model¶
根据组织ID搜索物模型。
请求格式¶
http://{apigw-address}/model-service/v2.1/thing-models?action=search
请求参数(URI)¶
名称 | 位置(Path/Query) | 是否必须 | 数据类型 | 描述 |
---|---|---|---|---|
orgId | Query | True | String | 资产所属的组织ID。如何获取orgId信息>> |
scope | Query | False | Integer | 查询范围。 0:只从orgId 指定的组织搜索; 1:从orgId 指定的组织和公有模型所在的组织搜索。默认为1。 |
expression | Query | False | String | 查询表达式,支持类sql的查询。目前支持查询的字段是modelId (支持算术运算符in)。如何使用查询表达式>> |
pagination | Query | False | Pagination请求结构体 | 分页参数。见Pagination请求结构体>> |
响应参数¶
名称 | 数据类型 | 描述 |
---|---|---|
data | ThingModel结构体 | 物模型列表。 物模型定义请见ThingModel结构体>> |
ThingModel结构体 ¶
名称 | 数据类型 | 描述 |
---|---|---|
modelId | String | 资产所属模型ID |
modelIdPath | String | 模型继承路径 |
orgId | String | 资产所属的组织ID |
name | StringI18n | 模型名称 |
desc | String | 模型描述 |
tags | Map (Key为String,Value为String) | 用户自定义标签 |
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,则要求资产在实例化的时候必须设置该属性的值,否则资产在创建的时候会返回校验失败的错误 |
name | StringI18n | 支持国际化的资产名称 |
desc | String | 模型描述 |
tags | Map (Key为String,Value为String) | 用户自定义标签 |
unit | Unit结构体 | 单位。见 Unit结构体。 |
ThingMeasurepoint结构体 ¶
名称 | 数据类型 | 描述 |
---|---|---|
identifier | String | 测点ID |
dataType | String | 数据类型。比如:ARRAY、BOOL、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE |
dataDefinition | String | 本结构体内 datatype 的数据定义,是一个JSON字符串。如对于String的数据类型,需要定义长度。对于enum的数据类型需要定义取值及描述。详见 如何使用dataDefinition>> |
name | StringI18n | 支持国际化的资产名称 |
desc | String | 模型描述 |
tags | Map (Key为String,Value为String) | 用户自定义标签 |
hasQuality | Boolean | 是否有质量位 |
signalType | String | 信号类型。有如下类型:Generic、AI、PI、DI |
unit | Unit结构体 | 单位。见 Unit结构体。 |
ThingService结构体 ¶
名称 | 数据类型 | 描述 |
---|---|---|
identifier | String | 服务ID |
name | StringI18n | 支持国际化的资产名称 |
desc | String | 模型描述 |
tags | Map (Key为String,Value为String) | 用户自定义标签 |
intputData | ThingDatapoint结构体 | Service的入参列表。 参数定义见ThingDatapoint结构体。 |
outputData | ThingDatapoint结构体 | Service返回参数列表。参数定义见ThingDatapoint结构体。 |
callType | String | 调用类型 |
ThingEvent结构体 ¶
名称 | 数据类型 | 描述 |
---|---|---|
identifier | String | 事件ID |
name | StringI18n | 支持国际化的资产名称 |
desc | String | 模型描述 |
tags | Map (Key为String,Value为String) | 用户自定义标签 |
outputData | ThingDatapoint结构体 | Event返回参数列表。参数定义见ThingDatapoint结构体。 |
eventType | String | 事件类型。有INFO、WARN、ERROR三种取值 |
ThingDatapoint结构体 ¶
名称 | 数据类型 | 描述 |
---|---|---|
identifier | String | 点ID |
dataType | String | 数据类型。比如:ARRAY、BOOL、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE |
dataDefinition | String | 本结构体内 datatype 的数据定义,是一个JSON字符串。如对于String的数据类型,需要定义长度。对于enum的数据类型需要定义取值及描述。详见 如何使用dataDefinition>> |
name | StringI18n | 支持国际化的资产名称 |
desc | String | 模型描述 |
tags | Map (Key为String,Value为String) | 用户自定义标签 |
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
错误码¶
示例¶
请求示例¶
POST http://{apigw-address}/model-service/v2.1/thing-models?action=search
{
"expression": "modelId in ( \"planet\", \"noiseSensor\" )",
"pagination": {
"pageNo": 1,
"pageSize": 10
},
"orgId": "yourOrgId"
}
返回示例¶
{
"code": 0,
"msg": "OK",
"requestId": "c6594307-bc30-4380-9869-b8a88b9494de",
"data": [
{
"modelId": "planet",
"modelIdPath": "/planet",
"orgId": "yourOrgId",
"name": {
"defaultValue": "行星",
"i18nValue": {
"en_US": "planet"
}
},
"desc": "test",
"tags": {},
"attributes": {
"starsystem": {
"identifier": "starsystem",
"name": {
"defaultValue": "星系",
"i18nValue": {
"en_US": "star system"
}
},
"desc": "",
"tags": {},
"dataType": "STRING",
"unit": null,
"dataDefinition": "{\n \"maxLength\": 100\n}",
"isRequired": false
}
},
"measurepoints": {
"temperature": {
"identifier": "temperature",
"name": {
"defaultValue": "temperature",
"i18nValue": {
"en_US": "temperature"
}
},
"desc": "kdkdkkd",
"tags": {},
"dataType": "FLOAT",
"unit": {
"unitId": "°C",
"multiplier": "ONE"
},
"dataDefinition": null,
"hasQuality": false,
"signalType": "Generic"
}
},
"services": {
"speedup": {
"identifier": "speedup",
"name": {
"defaultValue": "speedup",
"i18nValue": {
"en_US": "speedup"
}
},
"desc": "t",
"tags": null,
"outputData": [
{
"identifier": "delta",
"name": {
"defaultValue": "delta",
"i18nValue": {
"en_US": "delta"
}
},
"desc": "",
"tags": {},
"dataType": "INT",
"unit": null,
"dataDefinition": null
}
],
"inputData": [
{
"identifier": "delta",
"name": {
"defaultValue": "delta",
"i18nValue": {
"en_US": "delta"
}
},
"desc": "",
"tags": {},
"dataType": "INT",
"unit": {
"unitId": "rpm",
"multiplier": "ONE"
},
"dataDefinition": null
}
],
"callType": "ASYNC"
}
},
"events": {
"alert": {
"identifier": "alert",
"name": {
"defaultValue": "alert",
"i18nValue": {
"en_US": "alert"
}
},
"desc": "e",
"tags": null,
"outputData": [
{
"identifier": "event1",
"name": {
"defaultValue": "event1",
"i18nValue": {
"en_US": "event1"
}
},
"desc": "",
"tags": {},
"dataType": "INT",
"unit": null,
"dataDefinition": null
}
],
"eventType": "ERROR"
}
}
},
{
"modelId": "noiseSensor",
"modelIdPath": "/noiseSensor",
"orgId": "yourOrgId",
"name": {
"defaultValue": "Noise Sensor",
"i18nValue": {
"en_US": "Noise Sensor"
}
},
"desc": "噪声传感器",
"tags": {},
"attributes": {},
"measurepoints": {},
"services": {},
"events": {}
}
],
"pagination": {
"pageNo": 1,
"pageSize": 10,
"totalSize": 2
}
}
Java SDK调用示例¶
public class SearchThingModel {
private static String accessKey = "4ced4f38-1ced-476e0a446215-a602-4307";
private static String secretKey = "0a446215-a602-4307-9ff2-3feed3e983ce";
private static String orgId = "1c499110e8800000";
private static String url = "http://{apigw-address}";
public static void main(String[] args) {
SearchThingModelRequest request = new SearchThingModelRequest();
request.setOrgId(orgId);
request.setExpression("modelId in ( \"planet\" )");
Projection projection = new Projection();
projection.add("modelId");
projection.add("name.defaultValue");
request.setProjection(projection);
SearchThingModelResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
.url(url)
.getResponse(request, request.getResponseClass());
System.out.println(response.getData());
}
}