概述
OTA(Over-the-Air Technology)即空中下載下傳技術。阿裡雲物聯網平台支援通過OTA方式進行裝置固件更新。本文以MQTT協定下的固件更新為例,介紹OTA固件更新流程、資料流轉使用的Topic和資料格式。本文使用MQTT.fx用戶端模拟裝置,進行固件更新流程的操作示範。
MQTT.fx接入物聯網平台官方文檔:
固件更新OTA固件更新流程
- 流程圖如下:
物聯網平台OTA固件更新使用說明 - 相關Topic如下:
- 裝置端通過以下Topic上報固件版本給物聯網平台。
/ota/device/inform/${YourProductKey}/${YourDeviceName}
- 裝置端訂閱以下Topic接收物聯網平台的固件更新通知。
/ota/device/upgrade/${YourProductKey}/${YourDeviceName}
- 裝置端通過以下Topic上報固件更新進度。
/ota/device/progress/${YourProductKey}/${YourDeviceName}
操作示範
- 在物聯網平台控制台的“監控運維”—“固件更新”中添加強件
物聯網平台OTA固件更新使用說明 - 裝置端通過MQTT協定推送目前裝置固件版本号到Topic: /ota/device/inform/${YourProductKey}/${YourDeviceName}。 消息格式
物聯網平台OTA固件更新使用說明 - 裝置端訂閱Topic: /ota/device/upgrade/${YourProductKey}/${YourDeviceName}。控制台對裝置發起固件更新請求後,裝置端會通過該Topic收到固件的存儲位址URL。
物聯網平台OTA固件更新使用說明 - 控制台觸發更新操作。
物聯網平台OTA固件更新使用說明 - 裝置收到物聯網平台OTA服務推送的固件的URL位址。
物聯網平台OTA固件更新使用說明 - 裝置通過HTTPS協定根據URL下載下傳固件。下載下傳固件過程中,裝置端向服務端推送更新進度到Topic: /ota/device/progress/${YourProductKey}/${YourDeviceName}。
物聯網平台OTA固件更新使用說明 - 裝置端完成固件更新後,推送最新的固件版本資訊到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。如果上報的版本與OTA服務要求的版本一緻就認為更新成功,反之失敗。
物聯網平台OTA固件更新使用說明 - 控制台檢視更新結果
物聯網平台OTA固件更新使用說明
說明
- 裝置固件版本号隻需要在系統啟動過程中上報一次即可,不需要周期循環上報。
- 從物聯網平台控制台發起批量更新後,裝置更新操作記錄狀态是待更新。實際更新以物聯網平台OTA系統接收到裝置上報的更新進度開始。裝置更新操作記錄狀态是更新中。
- 根據版本号來判斷裝置端OTA更新是否成功。
- 裝置離線時,不能接收服務端推送的更新消息。通過MQTT協定接入物聯網平台的裝置再次上線後,物聯網平台系統自動檢測到裝置上線,OTA服務端驗證該裝置是否需要更新。如果需要更新,再次推送更新消息給裝置, 否則,不推送消息。
- 裝置需在固件URL下發後的24小時内下載下傳固件,否則該URL失效。
- 更新成功的唯一判斷标志是裝置上報正确的版本号。即使更新進度上報為100%,如果不上報新固件版本号,也視為更新失敗。