OTA(Over-the-Air Technology)即空中下载技术,是物联网平台的一项基础功能。通过OTA方式,可对分布在全球各地的IoT设备进行OTA升级。本文以MQTT协议下的设备升级包整包升级为例,介绍OTA升级操作流程,及设备端OTA升级配置的示例代码。

前提条件

完成设备端开发,包括OTA升级服务开发,使其成功接入物联网平台,并激活上线。开发方法,请参见设备接入

本示例中,设备端开发使用阿里云提供的C语言Link SDK 3.x。具体操作,请参见快速体验设备OTA开发

OTA升级流程

OTA升级流程如下图所示。

说明 本示例为设备进行整包升级,升级包模块使用默认(default)模块,因此消息中不含moduleisDiff参数。流程和参数说明,请参见设备端OTA升级
设备OTA升级

本示例中,OTA升级流程参见下表。

序号 说明
上报当前OTA版本到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}
  1. 开发设备A,设置OTA固件版本号为1-0-0,激活设备A上线并上报当前OTA版本。
  2. 开发设备B(与设备A属于同一产品),设置OTA固件版本号为2-0-0,激活设备B上线并上报当前OTA版本。

上报版本消息示例:

{
  "id": 1,
  "params": {
    "version": "1-0-0"
  }
}
在物联网平台为目标产品上传高版本(2-0-0)的OTA升级包,然后向低版本(1-0-0)设备推送升级任务,将设备的固件从低版本(1-0-0)升级到高版本(2-0-0)。具体操作,请参见:
  1. 更新设备端OTA升级包
  2. 推送升级任务到设备端
设备端订阅物联网平台推送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"
}
设备端收到升级通知消息中的升级包URL后,需您调用SDK提供的API下载升级包,进行本地升级。

有关设备端SDK如何调用API,请参见设备OTA

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

上报进度消息示例:

{
  "id": 1,
  "params": {
    "step":"1", 
    "desc":"******"
  }   
}
上报升级后的OTA版本到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}

上报版本消息示例:

{
  "id": 1,
  "params": {
    "version": "2-0-0"
  }
}