MQTT物聯網套件支援用戶以數據流-數據點模型(模型詳情)將數據上載至平台並進行存儲,設備可以通過數據點topic簇調用數據點存儲服務存儲數據,可以通過訂閱系統topic獲取數據處理結果通知,如下圖所示:
數據點topic 簇topic 列表如下:
系統topic | 用途 | QoS | 可訂閱 | 可發佈 |
---|---|---|---|---|
$sys/{pid}/{device- name}/dp/post/json | 設備上載數據點 | 01 | √ | |
$sys/{pid}/{device- name}/dp/post/json/accepted | 系統通知"設備上載數據點成功" | 0 | √ | |
$sys/{pid}/{device- name}/dp/post/json/rejected | 系統通知"設備上載數據點失敗" | 0 | √ |
設備可以通過向系統固定topic:$sys/{pid}/{device-name}/dp/post/json發送數據點存儲消息,消息中payload欄位數據內容僅支援json格式,示例如下:
{
"id": 123,
"dp": {
"temperatrue": [{
"v": 30,
"t": 1552289676
}],
"power": [{
"v": 4.5,
"t": 1552289676
}],
"status": [{
"v": {
"color": "blue"
},
"t": 1552289677
},
{
"v": {
"color": "red"
},
"t": 1552289678
}
]
}
}
其中,參數說明如下:
參數 | 類型 | 是否必填 | 說明 |
---|---|---|---|
id | int | Yes | 消息ID,大於0的整數,數值範圍為,4位元組有符號數取值範圍 |
dp | object | Yes | 數據點內容,key-value格式,key為數據流名稱,value為list格式的一個或者多個數據點值 上例中向temperatrue、power、status三個數據流中上載帶時間戳記的數據 |
v | - | Yes | 數據點值,可以為int/float/string/object多種格式 |
t | int | No | 數據點時間戳記,unix時間,單位為秒,若不攜帶,則系統將以數據到達平台時間作為其數據時間 |
設備數據點上載,支援QoS1,若publish QoS=1,則平台回復publish ack
消息處理完成後,平台通過系統topic 向設備發送上載結果通知,若設備訂閱了該topic,則能收到該消息
當上載數據處理成功時
返回消息至:$sys/${pid}/${device-name}/dp/post/json/accepted
數據格式為:
{
"id": 123 //对应数据上报时的消息ID
}
當上載數據處理失敗時
返回消息至:$sys/${pid}/${device-name}/dp/post/json/rejected
若不能成功解析合法id,錯誤時,返回數據格式為:
{
"id": -1,
"err_code": 98,
"err_msg":"Illegal Data"
}
若能成功解析合法id,由其他格式問題導致的錯誤,返回數據格式為:
{
"id": 123,
"err_code": 98,
"err_msg":"Illegal Data"
}
上載數據處理失敗時,錯誤碼如下:
錯誤碼 err_code | 錯誤消息 err_msg | 說明 |
---|---|---|
98 | Illegal Data | payload格式有誤,平台解析失敗 |