OTA包括模組升級和MCU應用升級兩類,待升級設備通過HTTP協定RESTful標準格式與OneNET平台進行資料交互以完成升級。南向設備目前所需的RESTful
API一共有三類:檢測任務、拉取檔、上報狀態。
本部分內容主要介紹網路調試助手使用API測試拉取固件的過程,為研發人員組包測試提供參考。
這裡採用Python來計算Authorization,實際使用時,更改產品id和accesskey即可。
Python代碼如圖1所示。
代碼下載地址:
計算出來的鑒權參數:
version=2018-10-31&res=products%2F198290&et=7555917657&method=sha1&sign=ZUXNMUqvAbuH0uHs0S1pd%2BgflNE%3D
POST http://ota.heclouds.com/ota/device/version?dev_id=522747162 HTTP/1.1
Content-Type: application/json
Authorization:version=2018-10-31&res=products%2F198290&et=7555917657&method=sha1&sign=ZUXNMUqvAbuH0uHs0S1pd%2BgflNE%3D
host:ota.heclouds.com
Content-Length:20
{"s_version":"V1.3"}
dev_id=522747162需要修改為升級的設備id。其他參數不改變。
晶片平台 | 晶片型號 | 廠商編號 | 晶片編號 |
---|---|---|---|
nordic | ESP32 | 101 | 10101 |
樂鑫 | nrf52832 | 102 | 10201 |
兆易 | GD32 | 103 | 10301 |
其他 | 其他 | 100 | 10001 |
GET /ota/south/check?dev_id=522747162&manuf=102&model=10201&type=2&version=V11&cdn=false HTTP/1.1
Authorization:version=2018-10-31&res=products%2F198290&et=7555917657&method=sha1&sign=ZUXNMUqvAbuH0uHs0S1pd%2BgflNE%3D
host: ota.heclouds.com
//此處有個換行,使用時請刪除此行內容,保留分行符號
//此處有個換行,使用時請刪除此行內容,保留分行符號
GET /ota/south/download/ota_JcWgqjwXigKAfRayjjUW HTTP/1.1
Range:bytes=0-5
host: ota.heclouds.com
//此處有個換行,使用時請刪除此行內容,保留分行符號
//此處有個換行,使用時請刪除此行內容,保留分行符號
拉取部分檔時,修改頭部Range欄位。
Range: bytes={start}-{end},目前只支援如下幾種模式:
1、Range: bytes={start}-,獲取第{start}+1個位元組到最後的資料
例如:Range: bytes=0-,獲取所有資料
Range: bytes=2-,獲取第3個資料到最後1個資料
注意:如果{start}>=檔總長度,則默認{start}=0
2、Range: bytes={start}-{end},獲取第{start}+1個位元組到第{end}+1個位元組
例如:Range: bytes=0-99,獲取前100個位元組
注意:若{end}>=文件總長度len,則默認end=len-1
若{start}>{end},start被設置為0
3、Range: bytes=-{end},獲取最後end個位元組資料
例如:Range: bytes=-100,獲取最後100個位元組資料
如果{end}大於檔總長度len,則默認end=len(獲取所有檔)。
分片返回的狀態碼:206
不分片返回的狀態碼:200
POST /ota/south/device/download/ota_3lI1NIMLB6E4u260cLRd/progress?dev_id=522747162 HTTP/1.1
Authorization:version=2018-10-31&res=products%2F198290&et=7555917657&method=sha1&sign=ZUXNMUqvAbuH0uHs0S1pd%2BgflNE%3D
host:ota.heclouds.com
Content-Type: application/json
Content-Length:11
{"step":54}//上報下載進度為54%
POST /ota/south/device/download/ota_3lI1NIMLB6E4u260cLRd/progress?dev_id=522747162 HTTP/1.1
Authorization:version=2018-10-31&res=products%2F198290&et=7555917657&method=sha1&sign=ZUXNMUqvAbuH0uHs0S1pd%2BgflNE%3D
host:ota.heclouds.com
Content-Type: application/json
Content-Length:12
{"step":201}//表示升級完成
1、設備在下載升級包的過程中(分片下載),可以根據需要上報下載進度(設備處於“下載中”,才能上報step=[0,100])
2、如果設備上報的下載進度為100(即step:100),那麼平台會將設備的升級狀態從“正在下載”修改為“正在升級”狀態
3、只有當設備處於“正在下載”狀態時,設備才能夠使用該介面上報下載進度,其他狀態將返回“invalid state”的錯誤
4、step如果大於100,將作為上報狀態使用(設備處於:待升級、下載中、升級中,這三個狀態時,可以通過上報如下狀態碼完成升級流程。其他狀態如:已取消,升級失敗、升級成功、暫停時,不能上報如下狀態):
result碼 | 說明 | result碼 | 說明 |
---|---|---|---|
101 | 升級包下載成功。 | 102 | 下載失敗,空間不足 |
103 | 下載失敗,記憶體溢出 | 104 | 下載失敗,下載請求超時 |
105 | 下載失敗,電量不足 | 106 | 下載失敗,信號不良 |
107 | 下載失敗,未知異常 | - | - |
201 | 升級成功 | 202 | 升級失敗,電量不足 |
203 | 升級失敗,記憶體溢出 | 204 | 升級失敗,版本不一致 |
203 | 升級失敗,記憶體溢出 | 204 | 升級失敗,版本不一致 |
205 | 升級失敗,MD5校驗失敗 | 206 | 升級失敗,未知異常 |
207 | 達到最大重試次數 | 208 | 設備升級過期 |
上報升級成功狀態後,平台會顯示任務狀態為完成。