
一、流程概述
HTTPS 方式 OTA 升級流程描述
結(jié)合 MQTT 服務(wù)、設(shè)備和 Web 端總結(jié)的主題發(fā)送情況:
云端下發(fā)升級包信息給設(shè)備:
主題:
/${serialNumber}/http/upgrade/set
方向:云端 -> 設(shè)備
觸發(fā)時機:在 Web 端判斷 OTA 版本可升級且用戶確認升級后
消息內(nèi)容:包含升級包的 URL、版本和狀態(tài),如
{ "taskId": 26, "url": "/profile/iot/1/2024-0824-001954.bin", "version": 1.2, "status": 1 }
設(shè)備上報升級進度:
- 主題:
/${serialNumber}/http/upgrade/reply
- 方向:設(shè)備 -> 云端
- 觸發(fā)時機:設(shè)備下載升級包過程中定時上報
- 消息內(nèi)容:包含升級進度和狀態(tài),如
{ "taskId": 26, "progress": 100, "version": "1.2", "status": 2 }
- 主題:
設(shè)備升級完成后上報最新版本以及狀態(tài):
主題:
/${serialNumber}/http/upgrade/reply
方向:設(shè)備 -> 云端
觸發(fā)時機:設(shè)備端升級完成后
消息內(nèi)容:包含最新版本和狀態(tài),如
{ "taskId": 26, "version": "1.2", "status": 3 }
模擬的整體交互流程:
// status狀態(tài)字段定義
AWAIT(0, "等待升級","未推送固件到設(shè)備"),
SEND(1, "已發(fā)送","已發(fā)送設(shè)備"),
REPLY(2, "升級中","設(shè)備OTA升級中"),
SUCCESS(3, "成功","升級成功"),
FAILED(4, "失敗","升級失敗"),
STOP(5, "停止","設(shè)備離線停止推送"),
UNKNOWN(404, "未知","未知錯誤碼");
//主題定義
${taskId}/ws/ota/status 是云端后臺推送給云端前臺的一個展示狀態(tài)主題
${serialNumber}/http/upgrade/set 是云端推送給設(shè)備的主題
${serialNumber}/http/upgrade/reply 是設(shè)備上給云端的主題
左邊是云端上報 , 右邊是設(shè)備上報
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 0,
"timestamp": 1724482221250
}
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 1,
"timestamp": 1724482221251
}
Topic: /D1832O34Z5M1/http/upgrade/set
{
"taskId": 26,
"url": "/profile/iot/1/2024-0824-001954.bin",
"version": 1.2,
"status": 1
}
Topic: /D1832O34Z5M1/http/upgrade/reply
{
"taskId": 26,
"progress": 5,
"version": "1.2",
"status": 2
}
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 2,
"timestamp": 1724482231404,
"progress": 5
}
Topic: /D1832O34Z5M1/http/upgrade/reply
{
"taskId": 26,
"progress": 50,
"version": "1.2",
"status": 2
}
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 2,
"timestamp": 1724482251326,
"progress": 50
}
Topic: /D1832O34Z5M1/http/upgrade/reply
{
"taskId": 26,
"progress": 70,
"version": "1.2",
"status": 2
}
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 2,
"timestamp": 1724482290405,
"progress": 70
}
Topic: /D1832O34Z5M1/http/upgrade/reply
{
"taskId": 26,
"progress": 100,
"version": "1.2",
"status": 2
}
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 2,
"timestamp": 1724482302296,
"progress": 100
}
Topic: /D1832O34Z5M1/http/upgrade/reply
{
"taskId": 26,
"progress": 100,
"version": "1.2",
"status": 3
}
Topic: /26/ws/ota/status
{
"serialNumber": "D1832O34Z5M1",
"status": 3,
"timestamp": 1724482308749
}
二進制包方式OTA升級
一、引言
OTA(Over-the-Air)升級是一種通過無線網(wǎng)絡(luò)對設(shè)備進行遠程升級的技術(shù)。本文檔旨在詳細描述 OTA 升級的流程,包括升級啟動、升級包傳輸?shù)拳h(huán)節(jié)。
二、OTA 升級流程概述
- 平臺自行拼裝 OTA 格式,啟動 OTA 升級。
- 云端向設(shè)備發(fā)送升級啟動指令。
- 設(shè)備收到升級啟動指令后,進行校驗和驗證,若通過則向云端回復(fù)指令。
- 云端收到設(shè)備的正確回復(fù)后,開始 OTA 升級包傳輸。
- 云端向設(shè)備發(fā)送升級包傳輸指令。
- 設(shè)備收到升級包傳輸指令后,進行校驗和驗證,若通過則向云端回復(fù)指令。
- 云端根據(jù)設(shè)備的回復(fù)判斷是否所有升級包都已傳輸完成,若未完成則繼續(xù)發(fā)送下一個升級包傳輸指令,直至升級完成。
三、具體流程步驟

主題:
- 云端 -> 設(shè)備:/{deviceNum}/fetch/upgrade/set
- 設(shè)備 -> 云端:/{deviceNum}/fetch/upgrade/reply
報文示例:
- 升級啟動階段:
- 云端 -> 設(shè)備:
0x55aa 0x00 0x0A 0x0004 [固件包字節(jié)數(shù)] [校驗和]
- 設(shè)備 -> 云端:
0x55aa [0x00 - 0xFF] 0x0A 0x0001 [升級包分包傳輸大小] [校驗和]
- 升級包傳輸階段:
- 云端 -> 設(shè)備:
0x55aa 0x00 0x0B 0x0004 + [數(shù)據(jù)包長度] [包偏移][數(shù)據(jù)包內(nèi)容] [校驗和]
- 設(shè)備 -> 云端:
0x55aa [0x00 - 0xFF] 0x0B 0x0000 [校驗和]
- 升級啟動
- 云端 -> 設(shè)備:云端向設(shè)備發(fā)送升級啟動指令,指令包含幀頭(0x55aa)、版本號(0x00)、指令類型(0x0A)、子指令(0x0004)、固件包字節(jié)數(shù)和校驗和(從幀頭開始,按字節(jié)求和,對 256 求余)。
- 設(shè)備 -> 云端:設(shè)備收到升級啟動指令后,進行校驗和驗證。若校驗和驗證通過,設(shè)備向云端回復(fù)指令,指令包含幀頭(0x55aa)、版本號(0x00 - 0xFF)、指令類型(0x0A)、子指令(0x0001)、升級包分包傳輸大小(0x00:256byte(默認);0x01:512byte;0x02:1024byte)和校驗和(計算方式同云端發(fā)送的指令)。
- 升級包傳輸
- 云端 -> 設(shè)備:云端向設(shè)備發(fā)送升級包傳輸指令,指令包含幀頭(0x55aa)、版本號(0x00)、指令類型(0x0B)、子指令(0x0004 + 數(shù)據(jù)包長度)、前四字節(jié)為包偏移,后面為數(shù)據(jù)包內(nèi)容(若包偏移大于等于固件包大小,則包傳輸結(jié)束)和校驗和(從幀頭開始,按字節(jié)求和,對 256 求余)。
- 設(shè)備 -> 云端:設(shè)備收到升級包傳輸指令后,進行校驗和驗證。若校驗和驗證通過,設(shè)備向云端回復(fù)指令,指令包含幀頭(0x55aa)、版本號(0x00 - 0xFF)、指令類型(0x0B)、子指令(0x0000)、空內(nèi)容和校驗和(計算方式同云端發(fā)送的指令)。
- 升級完成判斷
- 云端收到設(shè)備的回復(fù)后,判斷是否所有升級包都已傳輸完成。
- 若已完成,OTA 升級結(jié)束。
- 若未完成,繼續(xù)發(fā)送下一個升級包傳輸指令,回到升級包傳輸步驟。
二、注意事項
- 在整個升級過程中,校驗和的驗證是確保數(shù)據(jù)準確性和完整性的重要環(huán)節(jié),任何校驗和不匹配的指令都應(yīng)被視為錯誤并進行相應(yīng)的處理。
- 升級包的傳輸過程中,需要確保無線網(wǎng)絡(luò)的穩(wěn)定性,以避免數(shù)據(jù)丟失或傳輸中斷。
- 若升級過程中出現(xiàn)異常情況,應(yīng)具備相應(yīng)的錯誤處理機制,例如重試、回滾等操作,以保證設(shè)備的正常運行。
三、操作流程
HTTPS 方式 OTA 升級流程操作
1. 運維管理-產(chǎn)品固件:添加固件,選擇產(chǎn)品:

2. 固件詳情添加任務(wù):
- 產(chǎn)品固件列表點擊固件詳情


3. 實時觀察任務(wù)升級進度:
查看任務(wù)詳情:
等待預(yù)定升級時間開始升級:
設(shè)備升級中:
設(shè)備升級成功: