一、什么是物模型
在物联云平台中,物模型(全称为Things Model Language,物模型描述语言,简称为TML)是一个JSON格式的文件,是物理空间中的实体(如传感器、车载装置、楼宇、工厂等)在云端的数字化表示。
物模型从属性、服务和事件三个维度,分别描述了其在物理空间中指代的实体是什么,能够做什么,能够对外提供哪些信息。从这三个维度定义好产品相应的物模型之后,也代表定义好了该产品的功能定义。在完成产品功能定义后,系统将自动生成该产品的物模型。
1、物模型规范
在物联网平台中,物模型由命名空间、元数据、属性、事件、服务这几个部分组成。
组成部分 | 说明 |
---|---|
命名空间 | 在TML中,命名空间是用来标识指代某一类物体,如云平台的接入智能设备是一个命名空间、某个城市天气数据也是一个命名空间;通过命名空间可以知道该TML是表示一种明确的“物”。 |
元数据 | 元数据是作为TML命名空间的一个补充。元数据是一个可选的信息配置, |
属性 | 设备可读取和设置的能力。一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。属性支持GET和SET请求方式。应用系统可发起对属性的读取和设置请求。 |
事件 | 设备运行时,主动上报给云端的事件。事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数。例如,某项任务完成的信息,或者设备发生故障或告警时的温度等。 |
服务 | 设备可被外部调用的能力或方法,可设置输入参数和输出参数。产品提供了什么功能供云端调用。相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务。 |
2、规范定义
TML定义(JSON格式)
{
"xnms": "....",
"metadata": {
"...": "...."
},
"attributes": [
{
"field": "state",
"field_name": {
"cn": "工作状态",
"en": "work state"
},
"type": {
"type": "int",
"specs": {
"1": "正常",
"2": "异常"
}
},
"min": "1",
"max": "2",
"symbol": "-",
"default": "1",
"access": "r/w/rw"
}
],
"events": [
{
"event": "attribute_sync",
"event_name": {
"cn": "属性上报事件",
"en": "attribute sync event"
},
"extra": [
{
"field": "state",
"field_name": {
"cn": "工作状态",
"en": "work state"
},
"type": {
"specs": {
"1": "正常",
"2": "异常"
},
"type": "bool"
},
"require": false,
"min": "最小值",
"max": "最大值"
}
]
}
],
"services": [
{
"service": "set",
"service_name": {
"cn": "设置属性",
"en": "set attribute"
},
"input": [
{
"field": "target_state",
"field_name": {
"cn": "工作状态",
"en": "work state"
},
"type": {
"specs": {
"1": "正常",
"2": "异常"
},
"type": "int"
},
"require": false
}
],
"code": {
"specs": {
"200": "成功",
"202": "设备不在线",
"203": "设备未响应",
"400": "参数错误",
"403": "签名错误",
"503": "系统出错"
}
},
"output": [
{
"field": "result",
"field_name": {
"cn": "调用结果",
"en": "call result"
},
"type": {
"specs": {
"true": "成功",
"false": "失败"
},
"type": "bool"
},
"require": false
}
]
}
]
}
3、字段说明
字段 | 是否必填 | 类型 | 说明 |
---|---|---|---|
xnms | True | String | 命名空间 |
metadata | True | Object | 元数据信息 |
metadata.{field} | False | String | 元数据字段值 |
attributes | True | Array | 属性列表 |
attributes.field | True | String | 属性字段名 |
attributes.field_name | True | Object | 字段描述显示 |
attributes.field_name.cn | True | String | 字段中文显示名称 |
attributes.field_name.en | True | String | 字段英文显示名称 |
attributes.type | True | Object | 类型信息 |
attributes.type.type | True | String | 数据类型 |
attributes.type.specs | False | Object | 规格信息 |
attributes.type.specs.{key} | False | String | 不同规格描述 |
attributes.min | False | String | 字段最小值 |
attributes.max | False | String | 字段最大值 |
attributes.symbol | False | String | 符号 |
attributes.default | False | String | 默认值 |
attributes.access | True | String | 访问权限,支持3种,r:读;w:写;rw:读写; |
events | True | Array | 事件列表 |
events.event | True | String | 事件名 |
events.event_name | True | Object | 事件名描述显示 |
events.event_name.cn | True | String | 事件名中文描述 |
events.event_name.en | True | String | 事件名英文描述 |
events.extra | True | Array | 事件附加信息 |
events.extra.field | True | String | 附加信息字段名 |
events.extra.field_name | True | Object | 附加信息字段描述显示 |
events.extra.field_name.cn | True | String | 附加信息字段中文描述 |
events.extra.field_name.en | True | String | 附加信息字段英文描述 |
events.extra.type | True | Object | 附加信息字段类型信息 |
events.extra.type.type | True | String | 附加信息字段数据类型 |
events.extra.type.specs | False | Object | 附加信息字段规格信息 |
events.extra.type.specs.{key} | False | String | 附加信息字段规格信息 |
events.extra.require | True | Boolean | 附加信息字段是否必须 |
events.extra.min | False | Int | 附加信息字段最小值 |
events.extra.max | False | Int | 附加信息字段最大值 |
services | True | Array | 服务列表 |
services.service | True | String | 服务名,用于调用 |
services.service_name | True | Object | 服务名称描述显示 |
services.service_name.cn | True | String | 服务名称中文描述 |
services.service_name.en | True | String | 服务名称英文描述 |
services.input | True | Array | 服务调用输入参数列表 |
services.input.field | True | String | 输入参数字段名 |
services.input.field_name | True | Object | 输入参数字段描述 |
services.input.field_name.cn | True | String | 输入参数中文描述 |
services.input.field_name.en | True | String | 输入参数英文描述 |
services.input.type | True | Object | 输入参数字段类型信息 |
services.input.type.type | True | String | 输入参数字段数据类型 |
services.input.type.specs | False | Object | 输入参数字段规格信息 |
services.input.type.specs.{key} | False | String | 输入参数字段规格信息 |
services.input.require | True | Boolean | 输入参数字段是否必须 |
services.output | True | Array | 服务调用输出参数列表 |
services.output.field | True | String | 输出参数字段名 |
services.output.field_name | True | Object | 输出参数字段描述 |
services.output.field_name.cn | True | String | 输出参数中文描述 |
services.output.field_name.en | True | String | 输出参数英文描述 |
services.output.type | True | Object | 输出参数字段类型信息 |
services.output.type.type | True | String | 输出参数字段数据类型 |
services.output.type.specs | False | Object | 输出参数字段规格信息 |
services.output.type.specs.{key} | False | String | 输出参数字段规格信息 |
services.ouput.require | True | Boolean | 输出参数字段是否必须 |
code | True | Object | 服务调用返回错误码信息 |
code.specs | True | Object | 错误码信息 |
code.specs.{code} | True | String | 某个错误码描述 |
二、物联平台物模型库
在物联云平台中,我们向各位平台租户提供了一些标准的物模型。需要查看物联平台提供支持的物模型库时,可以登录物联云平台在设备中心菜单中, 点击左侧菜单栏的物模型库子菜单,即可打开物模型库页面查看。
物模型库可以根据产品品类查看具体的物模型库详情。