概述
OTA(Over-the-Air Technology)即空中下载技术。阿里云物联网平台支持通过OTA方式进行设备固件升级。本文以MQTT协议下的固件升级为例,介绍OTA固件升级流程、数据流转使用的Topic和数据格式。本文使用MQTT.fx客户端模拟设备,进行固件升级流程的操作演示。MQTT.fx接入物联网平台
官方文档:固件升级
OTA固件升级流程
- 流程图如下:
- 相关Topic如下:
- 设备端通过以下Topic上报固件版本给物联网平台。
/ota/device/inform/${YourProductKey}/${YourDeviceName}
- 设备端订阅以下Topic接收物联网平台的固件升级通知。
/ota/device/upgrade/${YourProductKey}/${YourDeviceName}
- 设备端通过以下Topic上报固件升级进度。
/ota/device/progress/${YourProductKey}/${YourDeviceName}
操作演示
- 在物联网平台控制台的“监控运维”—“固件升级”中添加固件
- 设备端通过MQTT协议推送当前设备固件版本号到Topic: /ota/device/inform/${YourProductKey}/${YourDeviceName}。消息格式
- 设备端订阅Topic: /ota/device/upgrade/${YourProductKey}/${YourDeviceName}。控制台对设备发起固件升级请求后,设备端会通过该Topic收到固件的存储地址URL。
- 控制台触发升级操作。
- 设备收到物联网平台OTA服务推送的固件的URL地址。
- 设备通过HTTPS协议根据URL下载固件。下载固件过程中,设备端向服务端推送升级进度到Topic: /ota/device/progress/${YourProductKey}/${YourDeviceName}。消息格式
- 设备端完成固件升级后,推送最新的固件版本信息到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。如果上报的版本与OTA服务要求的版本一致就认为升级成功,反之失败。
- 控制台查看升级结果
说明
- 设备固件版本号只需要在系统启动过程中上报一次即可,不需要周期循环上报。
- 从物联网平台控制台发起批量升级后,设备升级操作记录状态是待升级。实际升级以物联网平台OTA系统接收到设备上报的升级进度开始。设备升级操作记录状态是升级中。
- 根据版本号来判断设备端OTA升级是否成功。
- 设备离线时,不能接收服务端推送的升级消息。通过MQTT协议接入物联网平台的设备再次上线后,物联网平台系统自动检测到设备上线,OTA服务端验证该设备是否需要升级。如果需要升级,再次推送升级消息给设备, 否则,不推送消息。
- 设备需在固件URL下发后的24小时内下载固件,否则该URL失效。
- 升级成功的唯一判断标志是设备上报正确的版本号。即使升级进度上报为100%,如果不上报新固件版本号,也视为升级失败。