阿里云OTA升級指南
OTA簡介
OTA是Over-The-Air的縮寫,中文意為“通過空中傳輸”。在計算機和通信技術(shù)領(lǐng)域中,OTA指的是通過無線網(wǎng)絡(luò)等方式將軟件、固件、配置文件等更新、下載、安裝到設(shè)備上的一種技術(shù)手段。它可以實現(xiàn)遠程升級和管理設(shè)備的軟件和配置,無需物理連接設(shè)備,提高了設(shè)備管理的效率和靈活性。
OTA技術(shù)的應(yīng)用非常廣泛,在智能手機、智能電視、智能家居、智能汽車等領(lǐng)域都有廣泛應(yīng)用。通過OTA技術(shù),廠商可以遠程修復(fù)設(shè)備的軟件漏洞或錯誤,升級設(shè)備的功能和性能,提供新的服務(wù)和功能,以及進行設(shè)備配置和管理等操作。同時,用戶也可以通過OTA技術(shù)方便地更新設(shè)備的軟件版本,享受到更好的用戶體驗。
總之,OTA技術(shù)通過無線傳輸方式實現(xiàn)設(shè)備軟件和配置的遠程升級和管理,為設(shè)備廠商和用戶提供了方便和靈活性,有助于提升設(shè)備的功能和性能。
前提概要
本次操作流程目的是想借助MQTT協(xié)議使用ESP32給設(shè)備進行OTA升級,操作使用上位機軟件進行測試,之后再移植到ESP32程序中去
使用軟件
MQTTX
阿里云OTA升級
OTA升級-設(shè)備基礎(chǔ)信息操作
這里需要注意的是每個需要升級的設(shè)備必要反饋給平臺該設(shè)備當前的軟件版本號,否則在后期升級的時候會導(dǎo)致選中設(shè)備
設(shè)備端通過MQTT協(xié)議推送當前設(shè)備OTA模塊版本號到Topic: /ota/device/inform/{YourProductKey}/{YourDeviceName}。消息格式如下:
{
"id": "123",
"params": {
"version": "1.0.1",
"module": "MCU"
}
}
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID號。String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當前設(shè)備中具有唯一性。 |
version | String | OTA模塊版本。 |
module | String | OTA模塊名。說明上報默認(default)模塊的版本號時,可以不上報module參數(shù)。設(shè)備的默認(default)模塊的版本號代表整個設(shè)備的固件版本號。 |
當設(shè)備給平臺發(fā)送相應(yīng)信息后我們找到設(shè)備的詳情就可以看到我們設(shè)備版本號就有信息了
這樣設(shè)備的基礎(chǔ)信息功能我們就弄好了,接下來我們就需要操作OTA的部分了
OTA升級-升級包操作
在添加升級包之前,我們還需要訂閱升級的Topic
設(shè)備端訂閱Topic:/ota/device/upgrade/{YourProductKey}/{YourDeviceName}。物聯(lián)網(wǎng)平臺對設(shè)備發(fā)起OTA升級請求后,設(shè)備端會通過該Topic收到升級包的存儲地址URL。
{
"id": "123",
"code": 200,
"data":{
"size":432945,
"digestsign":"A4WOP***SYHJ6DDDJD9***",
"version":"2.0.0",
"isDiff":1,
"signMethod":"MD5",
"dProtocol":"mqtt",
"streamId":1397345,
"streamFileId":1,
"md5":"93230c3bde***",
"sign":"93230c3bde42***",
"module":"MCU",
"extData":{
"key1":"value1",
"key2":"value2"
}
}
}
這里需要注意的是注意在選擇升級包模塊的時候,默認的情況只有default,所以我們就需要添加對應(yīng)的模塊名稱
訂閱信息獲取升級包信息
/sys/{productKey}/{deviceName}/thing/ota/firmware/get_reply
訂閱MQTT分片下載請求
請求Topic:/sys/{productKey}/{deviceName}/thing/file/download
響應(yīng)Topic:/sys/{productKey}/{deviceName}/thing/file/download_reply
{
"id": "123456",
"version": "1.0",
"params": {
"fileToken":"1bb8***",
"fileInfo":{
"streamId":1234565,
"fileId":1
},
"fileBlock":{
"size":256,
"offset":2
}
}
}
這里的一些數(shù)據(jù)信息根據(jù)之前云平臺下發(fā)的包信息進行更改
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID號。String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本,固定為1.0。 |
params | Object | 請求參數(shù)。 |
fileToken | String | 文件的唯一標識Token,非必填參數(shù)。支持數(shù)字、英文字母、下劃線(_)和英文句號(.),不超過16個字符。使用說明:若傳入該參數(shù),物聯(lián)網(wǎng)平臺響應(yīng)設(shè)備請求時,會返回該參數(shù),便于您在設(shè)備端多文件下載場景下,從響應(yīng)消息中確認下載的對應(yīng)文件。若確認設(shè)備端在下載文件的請求和響應(yīng)周期內(nèi),不需要對其他文件發(fā)起下載請求,可不設(shè)置該參數(shù)。 |
fileInfo | Object | OTA升級包文件信息。 |
streamId | Long | 通過MQTT協(xié)議下載OTA升級包時的唯一標識。 |
fileId | Integer | 單個升級包文件的唯一標識。 |
fileBlock | Object | 文件分片信息。 |
size | Integer | 請求下載的文件分片大小,單位字節(jié),取值范圍為256131072。若為最后一個文件分片,取值范圍為1131072。 |
offset | Integer | 文件分片對應(yīng)字節(jié)的起始地址。取值范圍為0~16777216。 |
這樣升級包里面的所有數(shù)據(jù)流都可以一次性下載下來啦
OTA升級-上報升級進度
建議設(shè)置設(shè)備端上報進度頻率為3秒內(nèi)最多一次。若設(shè)備上報進度頻繁,在物聯(lián)網(wǎng)平臺控制臺的OTA升級包詳情的批次詳情中,可能無法查看到上報的全部進度。
- 設(shè)備發(fā)布消息到Topic:/ota/device/progress/ Y o u r P r o d u c t K e y / {YourProductKey}/ YourProductKey/{YourDeviceName}
{
"id": "123",
"params": {
"step": "-1",
"desc": "OTA升級失敗,請求不到升級包信息。",
"module": "MCU"
}
}
如果要顯示升級成功,就需要上報當前固件的軟件版本文章來源:http://www.zghlxwxcb.cn/news/detail-835839.html
按照上述操作完成了OTA升級的完整流程文章來源地址http://www.zghlxwxcb.cn/news/detail-835839.html
到了這里,關(guān)于阿里云OTA升級指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!