物模型数据类型
物模型主要结构
JSON结构概览
1.JSON结构-properties
如上图物模型json结构概览所示,如果该模型有11个属性,那么在properties节点上就会有长度为11的数组
如下图所示,为属性节点结构的概览,和对应的xmind图解
type 中的值对应着10中不同的数据类型,不同类型的 specs (类型规格说明)都会有不同的结构
目前就现阶段使用的 int long float double date text bool enum array 进行规格结构说明
int(对应页面的int32)
int 类型结构里包含 min max step unit unitName 属性
剩下的 long(对应页面的int64) float double 结构和int一致
date
由上图所示,date类型节点的 specs 是个空对象
bool
bool 类型 的 true 和 false 在节点中值的体现为 1 和 0
enum
对于 enum 类型,specs 结构的属性名称(即key)用的是数字,对应的属性值 是文本类型,例如我定义一个状态枚举,1表示状态1,2表示状态2,3表示状态3,该定义对应的枚举如下图所示
text
text 类型 的 specs 结构 中只有长度属性 length
array
对于 array 类型,除了type节点值为struct外,结构都是一致的,对于struct数组,结构会比较复杂。由于目前业务上用不到这么复杂的结构,暂不进行说明
2.JSON结构-events
事件节点结构如下图所示
type 对应的三种事件类型为:info (信息),alert(告警),error(故障)
属性上报事件
该事件属于默认事件,只要用户定义了属性项,对应的属性上报事件中就有该属性的属性上报定义,例如,该产品的物模型有两条属性,那么对应的属性上报事件中,outputData 数组也有对应的两条属性的说明(除了outputData节点外的其他节点值都是固定值,不允许修改),则结构如下
{
"identifier": "post",
"name": "post",
"type": "info",
"required": true,
"desc": "属性上报",
"method": "thing.event.property.post",
"outputData": [
{
"identifier": "RunningState",
"name": "运行状态",
"dataType": {
"type": "int",
"specs": {
"min": "-1024",
"max": "1024",
"unit": "ph",
"unitName": "PH值",
"step": "1"
}
}
},
{
"identifier": "Brightness",
"name": "亮度百分比",
"dataType": {
"type": "int",
"specs": {
"min": "0",
"max": "100",
"step": "1"
}
}
}
]
}
其他类型事件
其他的事件对应的结构中,method的命名格式为 thing.event.${identifier}.post, 与identifier关联,例如定义一个 更新完成 事件 identifier 值为 updateSuccess,对应的method值为 thing.event.updateSuccess.post
outputData
outputData中节点的数据结构,是 JSON结构-properties 中属性节点的简化版本
3.JSON结构-services
services 节点的json数据结构如下图所示
set服务
当物模型中有一个可写入的属性时,set服务中就会有对应属性的配置
对于set服务,json数据格式如下所示
identifier、name、required、desc、callType、method 值为固定值
inputData 中节点的数据结构,是 JSON结构-properties 中属性节点的简化版本
outputData 节点固定为空数组
get服务
当物模型中有属性时,get服务中就会有对应属性的配置
对于get服务,json数据格式如下所示
identifier、name、required、desc、callType、method 值为固定值
inputData 中节点的数据结构是一个字符串数组,物模型有4个属性,该get服务中inputData中的数组长度为4,里面的内容是4个属性节点中identifier对应的值
"inputData": [
"RunningState",
"Brightness",
"qwer",
"dasdas"
]
outputData 中节点的数据结构,是 JSON结构-properties 中属性节点的简化版本
其他类型服务
其他的服务对应的结构中,method的命名格式为 thing.service.${identifier}, 与identifier关联,例如定义一个 删除数据 服务 identifier 值为 deleteData,对应的method值为 thing.service.deleteData
对应的 inputData outputData 中节点的数据结构,是 JSON结构-properties 中属性节点的简化版本