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());
    }
}