在使用推送服務時,OneNET作為用戶端,而用戶的第三方應用是作為伺服器,第三方應用需要支援URL驗證以及數據接收兩部分服務。
URL驗證流程如下圖所示:
用戶在配置頁面完成配置並點擊“提交”時,OneNET平台會向填寫URL地址發送
HTTP GET請求進行URL驗證,請求形式示例如下:
http://url?msg=xxx&nonce=xxx&signature=xxx
其中,ur/為用戶在頁面配置時填寫的URL,nonce、msg、signature用於URL及token的驗證
token驗證過程如下:
將配置頁面中配置的token與nonce、msg的值計算MD5,並且編碼為Base64字串值
將上一步中Base64字串值通過URL Decode計算後的值與請求參數signature的值進行對比,如果相等則表示token驗證成功
如果token驗證成功,返回msg參數值,表示URL驗證通過。
如果用戶不想驗證token,可以選擇跳過MD5計算過程,直接返回msg參數值
平台以HTTP POST請求形式向第三方平台URL地址推送數據,第三方平台接收到數據後需要返回 HTTP 200,否則OneNET會認為此次推送無效並重試
推送數據相關信息以JSON串的形式置於HTTP請求中的body部分,其中各個欄位的含義如下
字段 | 類型 | 字段說明 |
---|---|---|
type | int | 標識消息類型 1:設備上載數據點消息 2:設備上下線消息 7:緩存命令下發後結果上報(僅支援NB設備) |
dev_id | int | 設備ID |
ds_id | string | 數據流名稱 |
at | int | 平台時間戳記,單位ms |
value | 具體數據部分,為設備上載至平台或觸發的相關數據 | |
status | int | 設備上下線標識 0:設備下線 1:設備上線 |
login_type | int | 設備登入協議類型 1-EDP,6-MODBUS,7-MQTT,10-NB-IoT |
cmd_type | int | 命令回應的類型 1:設備收到cmd的ACK回應信息 2:設備收到cmd的Confirm回應信息 |
cmd_id | string | 命令ID |
msg_signature | string | 消息摘要 |
nonce | string | 用於計算消息摘要的隨機串 |
enc_msg | string | 加密密文消息體,對明文JSON串(msg欄位)的加密 |
示例1:數據點消息
{
"msg": {
"type": 1,
"dev_id": 2016617,
"ds_id": "datastream_id",
"at": 1466133706841,
"value": 42
},
"msg_signature": "message signature",
"nonce": "abcdefgh"
}
示例2:批量數據點消息(需要配置數據緩存)
{
"msg": [{
"type": 1,
"dev_id": 2016617,
"ds_id": "datastream_id",
"at": 1466133706841,
"value": 42
},
{
"type": 1,
"dev_id": 2016617,
"ds_id": "datastream_id",
"at": 1466133706842,
"value": 43
},
...
],
"msg_signature": "message signature ",
"nonce": "abcdefgh"
}
示例3:設備上下線消息
{
"msg": {
"type": 2,
"dev_id": 2016617,
"status": 0,
"login_type": 1,
"at": 1466133706841
},
"msg_signature": "message signature",
"nonce": "abcdefgh"
}
示例4:緩存命令下發後結果上報(僅支援NB設備)
{
"msg": {
"type": 7,
"cmd_id": "3a351323-c4fe-5f21-9e9e-a9adc321182f",
"imei": "865820060031939",
"dev_id": 2016690,
"cmd_type": 0,
"send_time": 1466133706841,
"send_status": 5,
"confirm_time": 146613371921,
"confirm_status": 0,
"confirm_body": {
"obj_id": 3,
"obj_inst": [{
"obj_inst_id": 0,
"res": [{
"res_inst": [{
"val": 0,
"res_inst_id": 0
}],
"res_id": 11
},
{
"val": 1530496927000,
"res_id": 13
}
]
}]
}
},
"msg_signature": "message signature",
"nonce": "abcdefgh"
}
說明:
用戶在配置推送服務時,可配置為數據加密傳輸,OneNET支援AES對稱加密,用戶可通過頁面配置金鑰,並在應用端通過該金鑰進行解密操作
示例:密文格式
{
"enc_msg": "XXXXXXXXXXX",
"msg_signature": "message signature",
"nonce": "abcdefgh"
}
183.230.102.83 | 183.230.102.84 | 183.230.102.85 | 183.230.102.86 |
218.201.45.1 | 218.201.45.2 | 218.201.45.3 | 218.201.45.4 |