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