物模型说明

设备模型分为: 属性(properties),功能(function),事件(event).

设备模型使用场景:

  1. 前端通过模型定义动态展示设备运行状态或者设备操作界面
  2. 服务端可通过统一的API获取设备模型并进行相关操作,如: 在发送设备消息时进行参数校验, 在收到设备消息进行类型转换处理.

数据结构:

  1. {
  2. "id":"设备ID",
  3. "name":"设备名称",
  4. "properties":[...属性],
  5. "functions":[...功能],
  6. "events":[...事件]
  7. }

属性

用于定义设备属性,运行状态等如: 设备SN,当前CPU使用率等. 平台可主动下发消息获取设备属性,设备也通过事件上报属性.

数据结构:

  1. {
  2. "id": "cpu_usage", //属性标识
  3. "name": "CPU使用率",
  4. "valueType": { //值类型
  5. "type": "double", //类型标识,见类型表
  6. "maxValue":100,
  7. "minValue":0,
  8. "unit":"percent", //单位
  9. "expands":{"key1":"value1"} //其他自定义拓展定义
  10. },
  11. "expands":{"key1":"value1"} //其他自定义拓展定义
  12. }

功能

用于定义设备功能,平台可主动调用,例如: 播放语音,开关操作等.

数据结构:

  1. {
  2. "id": "playVoice", //功能标识
  3. "name": "播放声音", //名称
  4. "inputs": [ //输入参数
  5. {
  6. "id": "text",
  7. "name": "文字内容",
  8. "valueType": { //参数类型
  9. "type": "string"
  10. },
  11. "expands":{"key1":"value1"} //其他自定义拓展定义
  12. }
  13. ],
  14. "output": { //输出
  15. "type": "boolean" //输出类型
  16. },
  17. "expands":{"key1":"value1"} //其他自定义拓展定义
  18. }

事件

用于定义设备事件, 如: 定时上报设备属性, 设备报警等.

数据结构:

  1. {
  2. "id": "fire_alarm", //事件标识
  3. "name": "火警",
  4. "valueType": {
  5. "type": "object", //对象(结构体)类型
  6. "properties": [ //对象属性(结构与属性定义相同)
  7. {
  8. "id": "location",
  9. "name": "地点",
  10. "valueType": {
  11. "type": "string"
  12. }
  13. },
  14. {
  15. "id": "lng",
  16. "name": "经度",
  17. "valueType": {
  18. "type": "double"
  19. },
  20. "expands":{"gis":"lng"} //其他自定义拓展定义
  21. },
  22. {
  23. "id": "lat",
  24. "name": "纬度",
  25. "valueType": {
  26. "type": "double"
  27. },
  28. "expands":{"gis":"lat"} //其他自定义拓展定义
  29. }
  30. ]
  31. },
  32. "expands":{"key1":"value1"} //其他自定义拓展定义
  33. }

数据类型

所有类型共有属性:

  • id 唯一标识
  • name 名称
  • description 描述
  • expands 自定义配置

数字类型

  1. int 整型

  2. long 长整型

  3. float 单精度浮点型

  4. double 双精度浮点型

    以上均为数字类型,共有属性:

    • max 最大值
    • min 最小值
    • unit 单位

    例:

    1. {
    2. "type":"double",
    3. "max":100,
    4. "min":0,
    5. "unit":"percent",
    6. "expands":{"readonly":true}
    7. }

boolean 布尔类型

  1. 属性
  2. - trueText true时的文本,默认为`是`
  3. - falseText false时的文本,默认为`否`
  4. - trueValue true时的值,默认为`true`
  5. - falseValue false时的值,默认为`false`
  6. 例:
  7. {
  8. "type":"boolean",
  9. "trueText":"开启",
  10. "falseText":"关闭",
  11. "trueValue":"1",
  12. "falseValue":"0"
  13. }

string 字符类型

  1. 例:
  2. {
  3. "type":"string",
  4. "expands":{"maxLen":"255"}
  5. }

enum 枚举类型

  1. 属性:
  2. - elements (Element)枚举中的元素
  3. Element:
  4. - value 枚举值
  5. - text 枚举文本
  6. - description 说明
  7. 例:
  8. {
  9. "type":"enum",
  10. "elements":[
  11. {"value":"1","text":"正常"},
  12. {"value":"-1","text":"警告"},
  13. {"value":"0","text":"未知"}
  14. ]
  15. }

date 时间类型

  1. 属性:
  2. - format 格式,如: yyyy-MM-dd
  3. - tz 时区,如: Asia/Shanghai
  4. 例:
  5. {
  6. "type":"date",
  7. "format":"yyyy-MM-dd",
  8. "tz": "Asia/Shanghai"
  9. }

password 密码类型

  1. string类型相同

file 文件类型

  1. 属性:
  2. - bodyType 类型: url,base64,binary
  3. 例:
  4. {
  5. "type":"file",
  6. "bodyType":"url"
  7. }

array 数组(集合)类型

  1. 属性:
  2. - elementType 元素类型
  3. 例:
  4. {
  5. "type":"array",
  6. "elementType":{
  7. "type":"string"
  8. }
  9. }

object 对象(结构体)类型

  1. 属性:
  2. - properties 属性列表
  3. 例:
  4. {
  5. "type":"object",
  6. "properties":[
  7. {
  8. "id": "location",
  9. "name": "地点",
  10. "valueType": {
  11. "type": "string"
  12. }
  13. },
  14. {
  15. "id": "lng",
  16. "name": "经度",
  17. "valueType": {
  18. "type": "double"
  19. },
  20. "expands":{"gis":"lng"}
  21. },
  22. {
  23. "id": "lat",
  24. "name": "纬度",
  25. "valueType": {
  26. "type": "double"
  27. },
  28. "expands":{"gis":"lat"}
  29. }
  30. ]
  31. }

geoPoint Geo地理位置类型

支持以逗号分割的经纬度字符串以及map类型. 默认支持3种格式转换: 逗号分割字符:145.1214,126.123 ,json格式:{"lat":145.1214,"lon":126.123}.

  1. 例:
  2. {
  3. "type":"geoPoint"
  4. }