OTA(Over-the-Air Technology)即空中下载技术,是物联网平台的一项基础功能,可基于无线网络对分布在全球各地的设备固件、软件或驱动进行更新升级。本文以MQTT协议下的设备为例,介绍设备进行OTA升级的过程。

背景信息

设备进行OTA升级的工作原理、使用限制和升级步骤的详细内容,请参见OTA升级。设备进行OTA升级的流程和数据格式说明,请参见OTA升级的Topic和数据格式

本示例中,使用阿里云提供的设备端4.x版本C Link SDK,开发设备端接入和OTA升级功能,使设备接入物联网平台,并进行OTA升级。

OTA升级流程

本示例介绍为设备进行整包升级的流程,其中升级包模块使用默认(default)模块,升级包仅含一个文件。

流程图如下。

设备OTA升级

流程说明如下表。

序号

说明

相关文档

1

上报当前OTA版本到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}

  1. 开发设备A,设置OTA固件版本号为1.0.0,激活设备A上线并上报当前固件版本。

  2. 开发设备B(与设备A属于同一产品),设置OTA固件版本号为2.0.0,激活设备B上线并上报当前OTA版本。

上报版本消息示例:

{
  "id": 1,
  "params": {
    "version": "1.0.0"
  }
}

配置设备端OTA升级

2

在物联网平台为目标产品上传高版本(2.0.0)的OTA升级包,然后向低版本(1.0.0)设备推送升级任务,将设备的固件从低版本(1.0.0)升级到高版本(2.0.0)。

推送OTA升级任务给设备

3

设备端订阅物联网平台推送OTA升级通知消息的Topic:/ota/device/upgrade/${YourProductKey}/${YourDeviceName}

升级通知消息示例:

{
    "code":"1000",
    "data":{
        "size":11472299,
        "sign":"83254ac96e141affb8aa42cbfec9****",
        "version":"2.0.0",
        "url":"https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/dbab6f742ae389b40db88fc2500b****/ck0q5lyav00003i7hezxe****.zip?Expires=1568951190&OSSAccessKeyId=cS8uRRy54Rsz****&Signature=nk0sogaxtyp7dYvKZnjNQ%2BZ8Q9****",
        "signMethod":"Md5",
        "md5":"83254ac96e141affb8aa42cbfec9****"
    },
    "id":1568864790381,
    "message":"success"
}

查看设备日志

4

设备端收到升级通知消息中的升级包URL后,调用设备端SDK提供的相关API下载升级包,进行本地升级。

本示例下载单个OTA升级文件,相关API的使用说明,请参见:

5

上报升级进度到Topic:/ota/device/progress/${YourProductKey}/${YourDeviceName}

上报进度消息示例:

{
  "id": 1,
  "params": {
    "step":"1", 
    "desc":"******"
  }   
}

6

上报升级后的OTA版本到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}

上报版本消息示例:

{
  "id": 1,
  "params": {
    "version": "2.0.0"
  }
}

相关文档

  • 设备OTA升级失败的常见问题和解决方法,请参见设备OTA升级失败问题

  • 可以在物联网平台控制台查询云端运行日志。该日志包含了物联网平台、设备、您的应用程序三者之间的交互通信记录。

  • 物联网平台可能返回给设备端的错误码及说明,请参见设备端接收的错误码

  • 如果需要将设备上报的升级信息通过AMQP通道推送至您的服务器,请参见配置AMQP服务端订阅。OTA升级相关Topic数据,经过消息转发后的数据格式,请参见数据格式