物联网平台提供固件升级与管理服务。本文介绍固件升级数据上下行Topic和Alink协议下固件升级的上下行数据格式,包括设备上报固件版本、物联网平台推送固件信息、设备上报升级进度和设备请求获取最新固件信息。

关于固件升级开发设置流程,请参见设备端OTA升级推送固件到设备端

设备上报固件版本

数据上行。

Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}

设备通过这个Topic上报当前使用的固件版本信息。

Alink请求数据格式:

{
  "id": "123",
  "params": {
    "version": "1.0.1"
  }
}
表 1. 参数说明
参数 取值 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
version String 设备固件的版本信息。

物联网平台推送固件信息

数据下行。

Topic:/ota/device/upgrade/${YourProductKey}/${YourDeviceName}

物联网平台通过这个Topic推送固件信息, 设备订阅该Topic可以获得固件信息。

Alink请求数据格式:

{
  "code": "1000",
  "data": {
    "size": 432945,
    "version": "2.0.0",
    "url": "https://iotx-ota-pre.oss-cn-shanghai.aliyuncs.com/nopoll_0.4.4.tar.gz?Expires=1502955804&OSSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Signature=XfgJu7P6DWWejstKJgXJEH0qAKU%3D&security-token=CAISuQJ1q6Ft5B2yfSjIpK6MGsyN1Jx5jo6mVnfBglIPTvlvt5D50Tz2IHtIf3NpAusdsv03nWxT7v4flqFyTINVAEvYZJOPKGrGR0DzDbDasumZsJbo4f%2FMQBqEaXPS2MvVfJ%2BzLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fr6%2F5gdc9FcQSkL0B8ZrFsKxBltdUROFbIKP%2BpKWSKuGfLC1dysQcO1wEP4K%2BkkMqH8Uic3h%2Boy%2BgJt8H2PpHhd9NhXuV2WMzn2%2FdtJOiTknxR7ARasaBqhelc4zqA%2FPPlWgAKvkXba7aIoo01fV4jN5JXQfAU8KLO8tRjofHWmojNzBJAAPpYSSy3Rvr7m5efQrrybY1lLO6iZy%2BVio2VSZDxshI5Z3McKARWct06MWV9ABA2TTXXOi40BOxuq%2B3JGoABXC54TOlo7%2F1wTLTsCUqzzeIiXVOK8CfNOkfTucMGHkeYeCdFkm%2FkADhXAnrnGf5a4FbmKMQph2cKsr8y8UfWLC6IzvJsClXTnbJBMeuWIqo5zIynS1pm7gf%2F9N3hVc6%2BEeIk0xfl2tycsUpbL2FoaGk6BAF8hWSWYUXsv59d5Uk%3D",
    "md5": "93230c3bde425a9d7984a594ac55ea1e",
    "sign": "93230c3bde425a9d7984a594ac55ea1e",
    "signMethod": "Md5"
  },
  "id": "1507707025",
  "message": "success"
}
表 2. 参数说明
参数 取值 说明
id String 消息ID号,由物联网平台生成。
message String 结果信息。
code String 状态码。
version String 设备固件的版本信息。
size Long 固件大小,单位:字节。
url String 固件在对象存储(OSS)上的存储地址。
sign String 固件签名。
signMethod String 签名方法, 目前支持Md5,Sha256两种签名方法。
md5 String 作为保留字段,兼容老的设备信息。当签名方法为Md5时,除了会给sign赋值外还会给md5赋值。

设备上报升级进度

数据上行。

Topic:/ota/device/progress/${YourProductKey}/${YourDeviceName}

固件升级过程中,设备可以通过这个Topic上报固件升级的进度百分比。

Alink请求数据格式:

{
  "id": "123",
  "params": {
    "step": "-1",
    "desc": "固件升级失败,请求不到固件信息。"
  }
}
表 3. 参数说明
参数 取值 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
step String

固件升级进度信息。

取值范围:
  • [1,100] 之间的数字:表示升级进度百分比。
  • -1 :表示升级失败。
  • -2: 表示下载失败。
  • -3: 表示校验失败。
  • -4 :表示烧写失败。
desc String 当前步骤的描述信息。如果发生异常,此字段可承载错误信息。

设备请求固件信息

数据上行。

Topic:/ota/device/request/${YourProductKey}/${YourDeviceName}

设备通过这个Topic主动请求固件信息。

Alink请求数据格式:

{
  "id": "123", 
  "params": {
    "version": "1.0.1"
  }
}
表 4. 参数说明
参数 取值 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
version String 设备固件的版本信息。

物联网平台收到设备请求后,响应请求。物联网平台响应数据格式如下:

  • 下发固件信息。返回数据格式如下:
    {
      "code": "1000", 
      "data": {
        "size": 93796291, 
        "sign": "f8d85b250d4d787a9f483d89a9747348", 
        "version": "1.0.1.9.20171112.1432", 
        "url": "https://the_firmware_url", 
        "signMethod": "Md5", 
        "md5": "f8d85b250d4d787a9f483d89a9747348"
      }, 
      "id": "8758548588458", 
      "message": "success"
    }
  • 无固件信息下发。返回数据格式如下:
    {
      "code": 500, 
      "message": "none upgrade operation of the device."
    }

返回参数说明,请参见物联网平台推送固件信息章节中的参数说明