一、准备工作
·下载好 MQTTX 工具 来模拟设备端 OTA。
·了解设备端 OTA 升级具体 Topic,可参见 OTA 升级协议。
二、操作步骤
注意:说明:
注意:这篇以产品 ID 为 D1S742XVM1,DeviceName 为123456的设备为例,来模拟设备 OTA 升级流程。你在订阅时,需更换成你自己账号所创建的产品 ID 与 DeviceName。
三、步骤1:设备上报当前版本
设备启动后,通过 MQTT 协议向 Topic: $ota/report/D1S742XVM1/123456 上报当前固件版本,这里需要同时订阅版本上报回复的 Topic:$ota/update/D1S742XVM1/123456。
如图上所示,上报后收到类似的消息回复则表明版本上报成功,若无回复则需确认当前设备是否有订阅 OTA 的Topic。
注意:说明:
注意:设备中的"fw_type"字段对应设备中的"lbs"升级包模块,一个设备可对应多个fw_type类型。
四、步骤2:验证设备版本号
登录 物联网开发平台控制台,进入目标实例,找到对应设备信息的固件版本,默认只有 mcu 固件版本的模块。下图展示的 Lbs、wifi 固件版本模块为自定义创建的模块,当前示例为上报 Lbs 固件版本。
五、步骤3:创建升级任务
在物联网开发平台控制台上,添加模块、添加升级包并发起批量升级任务,具体操作请参见 OTA 升级包。
这里以静默升级模式来给设备1.1版本升级到1.2版本为例,若升级状态显示“升级失败”则需检查设备是否在线。排查故障后可取消后再重试,平台会再次推送。
六、步骤4:查看平台下发升级包任务
在 MQTTX 工具中可查到平台下发至设备的升级任务消息。
如上图所示,设备端拿到消息中的 url 地址即可进入 OTA 升级阶段。
七、步骤5:设备上报升级包升级进度
根据 OTA 升级协议,在 MQTTX 工具中模拟设备上报升级包进度。
上报格式如下所示,version 和 fw_type 参数需要与当前升级任务一致,否则上报进度无效。
·当 state 为“downloading”时升级状态显示为“下载中”,同时状态详情也会显示当前下载百分比。
·当 state 为“burning”时升级状态显示为“烧录中”,同时状态详情也会显示当前烧录百分比。
·当 state 为“updating”时升级状态显示为“更新中”,表明设备正在升级中。
·当 state 为“fail”时升级状态显示为“升级失败”,这边根据状态详情中的错误码 -1,可查到失败原因为下载超时。
·当 state 为“done”时升级状态显示为“升级成功”,说明该设备已经完成升级。
注意:说明:
注意:当升级任务显示“升级失败”时,设备根据错误码排除问题后,可在设备详情 > 升级失败中找到对应设备再操作重试。平台会继续给当前设备下发升级包,设备可继续走升级流程。
八、步骤6:设备升级成功上报最新版本
完成 OTA 升级后,设备端会自动推送最新的版本信息到平台。
回到 物联网开发平台控制台,进入对应实例,找到对应设备信息,验证固件版本是否为最新版本。
九、相关 API 能力
·查询设备可升级固件版本
·查询设备固件升级状态
·确认固件升级任务
·修改 OTA 模块
·删除 OTA 模块
·新建 OTA 模块
·获取产品 OTA 模块列表
·获取 OTA 模块列表
·批量升级固件