設備鏡像是OneNET為每一個設備分配的用於存放裝置最新狀態/配置信息的json文檔
設備鏡像可以應用於以下場景:
設備鏡像json文檔包含如下信息:
系統屬性 系統為設備定義的屬性,例如,設備ID、創建時間、在線狀態等,對設備不可見,對應用層為只讀
標記(tags) 用於標記設備類別,例如,部署區域、應用項目,對設備不可見,對應用層為可讀寫
期望屬性(desired) 用於應用層表達設備所期望達到的某個狀態/配置,對應用層與設備均為可讀寫
報告屬性(reported) 用於設備上報當前的狀態/配置信息,與期望屬性結合使用,當設備報告屬性與期望屬性存在差異,平台可以發送該差異給設備,可實現同步設備配置/狀態,對應用層與設備均為可讀寫
屬性差異(delta) 用於表達報告屬性與期望屬性之間的差異值,每次鏡像json更新後,均會觸發差異計算,若存在差異值,平台可以發送該差異消息給設備,該差異對於應用層與設備均為只讀
在實際應用場景中可以參考如下使用方式:
設備鏡像json示例如下:
{
"deviceId": "638612",
"createTime": 1469564492,
"status": "enabled",
"statusReason": "created",
"statusUpdateTime": 1469564492,
"connectionState": "online",
"lastActivityTime": 1469564492,
"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時間戳記,單位為秒 |
status | string | 設備狀態(暫未實現) |
statusReason | string | 設備狀態變更原因(暫未實現) |
statusUpdateTime | int | 設備狀態變更時間(暫未實現) |
connectionState | string | 設備連接狀態:online / offline |
lastActivityTime | int | 設備最近活躍時間(暫未實現) |
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"
}
}
}
}
}
}
}