简介
项目需要,需要了解下物联网,参照一下jetlinks设计思路,理解一下各模块功能及部分代码实现,此文仅作为学习笔记,以便加深理解,如有不妥之处,欢迎批评指正
参照社区版模块,主要理解设备管理,通知管理,规则引擎部分
用于统一管理设备,设备建模,安全配置等操作
产品是一个JSON格式的文件。它是物理空间中的实体,如传感器、车载装置、楼宇、工厂等在云端的数字化表示,从属性、功能和事件三个维度,分别描述了该实体是什么,能做什么,可以对外提供哪些信息。定义了这三个维度,即完成了产品功能的定义。产品将产品功能类型分为三类:属性、功能、和事件。定义了这三类功能,即完成了产品的定义。
产品定义具体格式如下:
{
"properties":[
{
"id":"标识",
"name":"属性名称",
"valueType":{
"min":"参数最小值(int、float、double类型特有)",
"max":"参数最大值(int、float、double类型特有)",
"step":"步长,字符串类型",
"unit":"属性单位",
"expands":{},//扩展属性
"type":"属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(默认String类型UTC毫秒,可以自定义)、bool(0或1的int类型)、enum(int类型)、object(结构体类型,可包含前面6种类型)、array(数组类型,支持int/double/float/String)、file(文件,支持URL[地址]/base64[base64编码]/binary[二进制])、password(密码)"
},
"expands":{
"readOnly":"是否只读(true/false)",
"report":"设备是否上报(true/false)"
},
"description":"说明"
}
],
"functions":[
{
"id":"标识",
"name":"功能名称",
"inputs":[//输入参数
{
"id":"输入参数标识",
"name":"输入参数名称",
"valueType":{
"min":"参数最小值(int、float、double类型特有)",
"max":"参数最大值(int、float、double类型特有)",
"step":"步长,字符串类型",
"unit":"属性单位",
"type":"属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(默认String类型UTC毫秒,可以自定义)、bool(0或1的int类型)、enum(int类型)、object(结构体类型,可包含前面6种类型)、array(数组类型,支持int/double/float/String)、file(文件,支持URL[地址]/base64[base64编码]/binary[二进制])、password(密码)"
}
}
],
"outputs":{//输出参数
"min":"参数最小值(int、float、double类型特有)",
"max":"参数最大值(int、float、double类型特有)",
"step":"步长,字符串类型",
"unit":"属性单位",
"type":"属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(默认String类型UTC毫秒,可以自定义)、bool(0或1的int类型)、enum(int类型)、object(结构体类型,可包含前面6种类型)、array(数组类型,支持int/double/float/String)、file(文件,支持URL[地址]/base64[base64编码]/binary[二进制])、password(密码)"
},
"isAsync":"是否异步(true/false)",
"description":"说明"
}
],
"events":[
{
"id":"标识",
"name":"事件名称",
"valueType":{
"min":"参数最小值(int、float、double类型特有)",
"max":"参数最大值(int、float、double类型特有)",
"step":"步长,字符串类型",
"unit":"属性单位",
"type":"属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(默认String类型UTC毫秒,可以自定义)、bool(0或1的int类型)、enum(枚举)、object(结构体类型,可包含前面6种类型)、array(数组类型,支持int/double/float/String)、file(文件,支持URL[地址]/base64[base64编码]/binary[二进制])、password(密码)"
},
"expands":{
"level":"事件级别(普通[ordinary]/警告[warn]/紧急[urgent])",
"eventType":"事件类型(数据上报[reportData]/事件上报[reportEvent])"
},
"description":"说明"
}
]
}
所有数据类型对应的valueType的JSON结构如下:
{
" int(原生)、float(原生)、double(原生)":{
"min":"参数最小值(int、float、double类型特有)",
"max":"参数最大值(int、float、double类型特有)",
"step":"步长,字符串类型",
"unit":"属性单位",
"type":"属性类型: int(原生)、float(原生)、double(原生)、text(原生)"
},
"date":{
"dateFormat":"时间格式",
"type":"date"
},
"bool":{
"trueValue":"true值,可自定义",
"trueText":"trueText值,可自定义",
"falseValue":"false值,可自定义",
"falseText":"falseText值,可自定义",
"type":"boolean"
},
"enum":{
"elements":[
{
"value":"1",
"key":"在线"
},{
"value":"0",
"key":"离线"
}
],
"type":"enum"
},
"text":{
"expands":{
"maxLength":"最大长度"
},
"type":"string"
},
"object":{
"properties":[//其它类型结构跟类型结构与外部属性的结构一致
{
"id":"标识",
"name":"名称",
"valueType":{
"min":"最小值",
"max":"最大值",
"step":"步长",
"unit":"单位",
"type":"数据类型"
},
"description":"备注"
}
],
"type":"object"
},
"array":{
"elementType":{
"type":"object",
"properties":[//其它类型结构跟类型结构与外部属性的结构一致
{
"id":"标识",
"name":"名称",
"valueType":{
"min":"最小值",
"max":"最大值",
"step":"步长",
"unit":"单位",
"type":"类型"
},
"description":"备注"
}
]
},
"expands":{
"elementNumber":"元素个数"
},
"type":"array"
},
"file":{
"bodyType":"文件元素类型",
"type":"file"
},
"password":{
"type":"password"
}
}
产品具体详情如下: