Skip to main content

固件升级(OTA)

OTA全称"Over-The-Airtechnology",即空中下载技术,通过移动通信的接口实现对软件进行远程管理,简单来说就是对固件的远程升级。

功能说明

  • 升级包管理:给不同的产品的不同的版本添加升级包
  • 任务管理:创建升级任务,可设定升级时间(立即或定时),选择升级的设备(全部或者部分)
  • 升级报表:查看待推送、已推送、升级中、升级成功、升级失败、已取消的统计。查看升级进度,对失败的可重新升级。

OTA升级流程

MQTT协议下OTA升级流程如下图所示。 OTA升级流程

OTA升级说明

  • 若设备需要在首次升级前上报版本号,建议只在系统启动过程中上报一次,不需要周期循环上报。设备升级成功后,需要第一时间上报版本。
  • 设备端接收到物联网平台推送的升级通知后,可立即下载升级包进行升级,也可在业务空闲后,主动获取升级信息进行升级。
  • 物联网平台根据设备端上报的进度是否是100%来判断设备端OTA升级是否成功。
  • 升级中的设备,当设备主题推送版本与升级的版本不一致的时候,推送最新的版本信息给设备,默认推送3次,第四次按升级失败算(可重新升级)
  • 支持断点续传,具体查看接口文档

数据格式说明

OTA升级流程及使用的Topic和数据格式如下:

  1. (可选)设备连接OTA服务,上报版本号。
    设备端通过MQTT协议推送当前设备OTA模块版本号到Topic: ota/device/inform。消息格式如下:
    {
    "id": "147258369",
    "params": {
    "version": "v1.0.1",
    "module": "default"
    }
    }
    参数类型说明
    idString消息ID号。String类型的数字,长度10,且每个消息ID在当前设备中具有唯一性。
    versionStringOTA模块版本。
    moduleStringOTA模块名。设备的默认(default)模块的版本号代表整个设备的固件版本号。
  2. 您在控制台触发升级操作之后,设备会收到物联网平台OTA服务推送的升级包的URL地址。 设备端订阅Topic:ota/device/inform/${AccessToken}。物联网平台对设备发起OTA升级请求后,设备端会通过该Topic收到升级包的存储地址URL。 消息格式如下:
    {
    "id":"147258369",
    "code": 200,
    "params":{
    "version":"v1.1",
    "size":432945,
    "url":"http://dev.thingspane.cn/files/ota/s121jg3245gg.zip",
    "signMethod":"Md5",
    "sign":"a243fgh4b9v",
    "module":"MCU",
    "extData":{
    "key1":"value1",
    "key2":"value2"
    }
    }
    }
    参数类型说明
    idLong消息ID号。每个消息ID在当前设备中具有唯一性。
    codeString状态码。
    versionString设备升级包的版本信息。
    sizeLong升级包文件大小,单位:字节。 OTA升级包中仅有一个升级包文件时,包含该参数。
    urlString升级包在对象存储(OSS)上的存储地址。 OTA升级包中仅有一个升级包文件,且下载协议为HTTPS时,包含该参数。
    signStringOTA升级包文件的签名。 OTA升级包中仅有一个升级包文件时,包含该参数。
    signMethodString签名方法。取值:SHA256、MD5。对于Android差分升级包类型,仅支持MD5签名方法。
    moduleString升级包所属的模块名。模块名为default时,物联网平台不下发module参数。
    extDataObject升级批次标签列表和推送给设备的自定义信息。_package_udi表示自定义信息的字段。单个标签格式:"key":"value"。
  3. 升级过程中,设备端向服务端推送升级进度到Topic:ota/device/progress。 消息格式如下:
    {
    "step":"100",
    "desc":"升级进度100%",
    "module": "MCU"
    }
    参数类型说明
    stepStringOTA升级进度。取值范围:1~100的整数字符串:升级进度百分比。-1:升级失败。-2:下载失败。-3:校验失败。-4:烧写失败。
    descString当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息。
    moduleString升级包所属的模块名。可选

操作步骤

  1. 产品管理->固件升级->添加升级包,如下表单。 添加升级包
  2. 点击查看按钮进入升级任务列表页面 固件升级-查看
  3. 点击添加升级任务按钮,填写表单。 添加升级任务
  4. 点击查看按钮,进入设备升级详情页面,可以在这里查看设备升级进度;对于升级失败的设备可进行重新升级操作,也可进行取消升级操作 升级详情