Appearance
OTA流式升级
设备管理平台提供OTA流式升级与流式固件包管理服务,使用该服务首先要确保设备端支持OTA流式功能服务,然后在设备管理平台控制台的OTA升级页面选择流式升级,上传新的流式升级包并指定需要升级的设备和策略。设备管理平台会将OTA流式升级消息推送给设备,设备即可下载OTA流式升级包,并进行流式升级。本文主要介绍OTA流式升级的使用限制和操作流程。
OTA流式升级说明
- 支持通过MQTT协议接入设备管理平台的设备使用OTA流式升级功能。
- 文件大小不能超过5,000 MB,且仅支持.bin、.tar、.gz、.zip、.gzip、.apk、.tar.gz格式的文件。
工作原理

OTA流式升级步骤

OTA流式升级流程
设备管理平台OTA流式升级流程如下:
- 设备端开发OTA流式升级功能:配置设备远程OTA流式升级能力。
- 添加流式升级包:在产品下添加OTA模块和流式升级包。
- 发起OTA流式升级任务:设备管理平台向设备批量下发流式升级相关信息(流式升级config.json)。
- 设备端OTA流式升级:设备端获取设备管理平台发起的OTA流式升级相关信息,使用流式升级包URL下载流式升级包,完成OTA流式升级。
- 设备端上报日志:设备端上报OTA流式升级情况日志。
- 查看流式升级情况:查看目标设备流式升级状态、流式升级包信息等。
- 查看升级版本和成功情况:查看流式升级后的版本和成功情况,分析OTA流式升级失败原因,进而使设备升级成功。
设备上报当前版本
上报topic定义
Topic:tlink/${productKey}/${deviceName}/ota/device/inform
设备通过这个Topic上报当前的OTA版本信息。
注意 如果是子设备的版本信息,topic为子设备的productKey和子设备的deviceName。
上报数据体格式
javascript
{
"reqid": "0020fdf71f0d491da12ba3cd38b205be",
"v": "1",
"t": 1630054074378,
"data": {
"version": "10.00.01"
}
}
上报参数说明
参数名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
reqid | String | 否 | 消息ID号。全局唯一,用于系统消息追踪 |
v | String | 否 | 协议版本号,目前协议版本号唯一取值为1 |
t | Long | 否 | 消息发送时间戳 |
data | Object | 是 | 上报参数。 |
version | String | 是 | OTA模块的版本。 |
平台推送OTA流式升级包信息
设备管理平台通过这个Topic推送OTA流式升级包信息给设备端, 设备订阅该Topic可以获得升级包信息。
推送topic定义
Topic:tlink/${productKey}/${deviceName}/ota/stream/upgrade
推送数据体格式
数据协议如下。
javascript
{
"reqid": "0020fdf71f0d491da12ba3cd38b205be",
"code": 200,
"data": {
"configUrl": "https://***/config.json"
}
}
推送参数说明
参数名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
reqid | String | 是 | 消息ID号。全局唯一,用于系统消息追踪 |
code | Integer | 是 | 结果状态码。成功为200,其他为失败 |
data | Object | 是 | 推送数据体。 |
configUrl | String | 是 | 流式升级config.json的url下载地址。 |
设备上报OTA流式升级进度
OTA流式升级过程中,设备可以通过这个Topic上报OTA流式升级的进度百分比。
上报topic定义
Topic:tlink/${productKey}/${deviceName}/ota/device/progress
上报数据体格式
javascript
{
"reqid": "0020fdf71f0d491da12ba3cd38b205be",
"v": "1",
"t": 1630054074378,
"data": {
"step": "-1",
"desc": "OTA流式升级失败,请求不到流式升级包信息。"
}
}
上报参数说明
参数名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
reqid | String | 否 | 消息ID号。注意:请使用下发流式升级包时给的reqid,方便追踪对应请求 |
v | String | 否 | 协议版本号,目前协议版本号唯一取值为1 |
t | Long | 否 | 消息发送时间戳 |
data | Object | 是 | 上报参数。 |
step | String | 是 | OTA流式升级进度。 1~100的整数:升级进度百分比 ; 100表示升级成功,-1:升级失败 -2: 下载失败 -3: 校验失败 -4:烧写失败.-5:电量, -6:网络, -7:存储不够。 200:下载开始, 201:下载成功。设备上报的进度值及其描述信息,可根据设备实际升级场景在设备端配置。 |
desc | String | 否 | 当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息 |
设备请求OTA流式升级包信息
请求topic定义
Topic:tlink/${productKey}/${deviceName}/ota/stream/get
数据流向:设备发布消息,平台监听消息
请求数据体格式
javascript
{
"reqid": "0020fdf71f0d491da12ba3cd38b205be",
"v": "1",
"t": 1630054074378,
"data": {
}
}
请求参数说明
参数名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
reqid | String | 否 | 消息ID号。全局唯一,用于系统消息追踪 |
v | String | 否 | 协议版本号,目前协议版本号唯一取值为1 |
t | Long | 否 | 消息发送时间戳 |
data | Object | 是 | 上报参数。 |
平台响应设备请求的OTA流式升级包信息
设备管理平台收到设备请求后,响应请求。下发流式升级包信息
响应topic定义
Topic:tlink/${productKey}/${deviceName}/ota/stream/upgrade
数据流向:平台发布消息,设备监听消息
响应数据体格式
响应数据协议如下。
javascript
{
"reqid": "0020fdf71f0d491da12ba3cd38b205be",
"code": 200,
"data": {
"configUrl": "https://***/config.json"
}
}
响应参数说明
参数名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
reqid | String | 是 | 消息ID号。和请求的对应 |
code | Integer | 是 | 结果状态码。成功为200,其他为失败 |
data | Object | 是 | 推送数据体。 |
configUrl | String | 是 | 流式升级config.json的url下载地址。当值为空时表示没有升级任务 |