设备接入 IOTDA-MQTT协议设备OTA固件升级:业务实现

时间:2024-07-30 11:28:07

业务实现

  1. 使用MQTT.fx模拟设备接入平台,详情请参考连接鉴权
  2. 用MQTT.fx订阅平台下行信息Topic,MQTT.fx会收到平台服务端下发的查询版本命令。

    Topic

    下行: $oc/devices/{device_id}/sys/events/down

    参数说明

    请参考平台下发获取版本信息通知

    图10 订阅通知

  3. 通过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 上报版本号

  4. 上报完版本号后,模拟器会接收到平台下发的升级通知,通知信息如下:

    Topic

    上行: $oc/devices/{device_id}/sys/events/down

    参数说明

    请参考平台下发升级通知

    图12 获取升级通知

  5. 设备收到升级通知后,可通过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*********

  6. 设备上报升级状态

    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-升级进度

  7. 完成升级

    上报升级进度为100%,且当前版本为升级的目标版本,可以在平台查询到升级完成。

    图16 上报升级进度100%

    图17 软固件升级-固件升级

support.huaweicloud.com/bestpractice-iothub/iot_bp_0039.html