设备接入 IOTDA-MQTT协议设备OTA固件升级:业务实现
业务实现
- 使用MQTT.fx模拟设备接入平台,详情请参考连接鉴权。
- 用MQTT.fx订阅平台下行信息Topic,MQTT.fx会收到平台服务端下发的查询版本命令。
Topic
下行: $oc/devices/{device_id}/sys/events/down
参数说明
请参考平台下发获取版本信息通知
图10 订阅通知
- 通过MQTT.fx上报软固件版本信息。
Topic
上行: $oc/devices/{device_id}/sys/events/up
参数说明
请参考设备上报软固件版本
示例
Topic: $oc/devices/{device_id}/sys/events/up 数据格式: { "object_device_id": "{object_device_id}", "services": [{ "service_id": "$ota", "event_type": "version_report", "event_time": "20151212T121212Z", "paras": { "sw_version": "v1.0", "fw_version": "v1.0" } }] }
图11 上报版本号
- 上报完版本号后,模拟器会接收到平台下发的升级通知,通知信息如下:
Topic
上行: $oc/devices/{device_id}/sys/events/down
参数说明
请参考平台下发升级通知
图12 获取升级通知 - 设备收到升级通知后,可通过Http请求下载升级包。
本次演示使用Curl命令代替。
图13 下载升级包示例
curl -X GET -H "Authorization:Bearer ****************************" "https://**.**.**.**:8943/iodm/dev/v2.0/upgradefile/applications/********/devices/********/packages/********" -v -k
- 应在http附加请求消息头(header)字段附加Authorization信息,其值为“Bearer {access_token}”,其中{access_token}为收到的升级通知中的access_token。Bearer和{access_token}之间有一个空格。
- 如果event_type为firmware_upgrade_v2、software_upgrade_v2,则在请求下载软固件包时不需要携带请求头。请求示例如下:
GET https://******.obs.cn-north-4.myhuaweicloud.com:443/test.bin?AccessKeyId=DX5G7W*********
- 设备上报升级状态
Topic
上行: $oc/devices/{device_id}/sys/events/up
参数说明
请参考设备上报升级状态
示例
Topic: $oc/devices/{device_id}/sys/events/up 数据格式: { "object_device_id": "{object_device_id}", "services": [{ "service_id": "$ota", "event_type": "upgrade_progress_report", "event_time": "20151212T121212Z", "paras": { "result_code": 0, "progress": 50, "version": "V1.0", "description": "upgrade processing" } }] }
如下图所示上报升级进度为50%,可以在平台查询到升级进度为50%。
图14 上报升级进度50%图15 任务详情-Test_upgrade_1-升级进度
- 完成升级
上报升级进度为100%,且当前版本为升级的目标版本,可以在平台查询到升级完成。
图16 上报升级进度100%图17 软固件升级-固件升级