设备镜像是OneNET为每一个设备分配的用于存储设备最新状态/配置信息的json文档
设备镜像可以应用于以下场景:
设备镜像json文档包含如下信息:
系统属性
系统为设备定义的属性,例如,设备ID、创建时间、在线状态等,对设备不可见,对应用层为只读
标记(tags)
用于标记设备类别,例如,部署区域、应用项目,对设备不可见,对应用层为可读写
期望属性(desired)
用于应用层表达设备所期望达到的某个状态/配置,对应用层与设备均为可读写
报告属性(reported)
用于设备上报当前的状态/配置信息,与期望属性结合使用,当设备报告属性与期望属性存在差异,平台可以发送该差异给设备,可实现同步设备配置/状态,对应用层与设备均为可读写
属性差异(delta)
用于表达报告属性与期望属性之间的差异值,每次镜像json更新后,均会触发差异计算,若存在差异值,平台可以发送该差异消息给设备,该差异对于应用层与设备均为只读
在实际应用场景中可以参考如下使用方式:
设备镜像json示例如下:
{
"deviceId": "638612",
"createTime": 1469564492,
"connectionState": "online",
"tags": {
"building": "43",
"floor": "1"
},
"properties": {
"state": {
"desired": {
"lights": {
"color": "RED"
},
"engine": "ON"
},
"reported": {
"lights": {
"color": "GREEN"
},
"engine": "ON"
},
"delta": {
"lights": {
"color": "RED"
}
}
},
"metadata": {
"desired": {
"lights": {
"color": {
"timestamp": 1469564492
}
},
"engine": {
"timestamp": 1469564492
}
},
"reported": {
"lights": {
"color": {
"timestamp": 1469564492
}
},
"engine": {
"timestamp": 1469564492
}
}
},
"version": 10,
"timestamp": 1469564492
}
}
json中,系统属性字段说明如下:
key | value类型 | 说明 |
---|---|---|
deviceId | string | 设备ID |
createTime | int | 设备创建时间,unix时间戳,单位为秒 |
connectionState | string | 设备连接状态:online / offline |
tags | object | 设备标签,key-value格式,不支持json嵌套 |
properties | object | 包含state、metadata、version、timestamp等属性 state:包含设备报告属性、期望属性、属性差异 metadata:state中个属性的最近时间记录 version:版本记录,每次更新累加1 timestamp:properties最近更新时间记录 |
设备镜像json对象具有以下使用限制:
{
"state": {
"reported": {
"one": {
"two": {
"three": {
"four": {
"key": "value"
}
}
}
}
}
}
}