OTA升级
约 870 字大约 3 分钟
2025-03-03
升级步骤

- 管理员在控制台创建升级包:如果是主动推送,则会根据设定的规则主动推送给设备;如果是被动升级,设备通过物模型协议中的设备基础信息上报后符合升级规则就会下发升级包
- 用户确认:如果是需要C端用户确认的,则用户确认后升级包才会生效
- 升级完成:云端推送升级包后,设备升级中可以上报升级的进度,升级完成后上报新的版本(需要与固件版本一致),则升级完成
注意:设备上报固件版本需要参考:物模型协议-设备基础信息上报
通用请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
msgToken | String | 是 | 用于上下行消息配对标识 |
sys.noAsk | bool | 否 | 云端是否回复设备 |
sys.retMsg | bool | 否 | 是否返回错误信息,字段为msg |
示例:
{
"method": "reportInfo",
"msgToken": "1234567",
"sys": {
"noAsk": false,
"retMsg": true
}
}
固件升级推送
云端推送升级包:云端会主动或在设备上报版本号后推送升级包给设备,平台为设备行为的处理设定了默认的 Topic:
- 设备订阅云端Topic获取云端推送的升级包信息:
$ota/down/upgrade/{ProductID}/{DeviceName}
- 设备订阅云端Topic获取云端推送的升级包信息:
请求示例
单文件升级:
{ "msgToken": "123", "method": "upgrade", "timestamp": 1677762028638, "data": { "size": 93796291, "signature": "f8d85b250d4d787a9f483d89a974***", "version": "10.0.1.9.20171112.1432", "isDiff": 1, "name": "xxx.bin", "fileUrl": "https://the_firmware_url", "signMethod": "MD5", "fileMd5": "f8d85b250d4d787a9f48***", "extData": "" } }
多文件升级:
{ "msgToken": "123", "method": "upgrade", "timestamp": 1677762028638, "data": { "signature": "f8d85b250d4d787a9f483d89a974***", "version": "10.0.1.9.20171112.1432", "isDiff": 1, "extData": "", "files": [ { "size": 93796291, "signature": "f8d85b250d4d787a9f483d89a974***", "version": "10.0.1.9.20171112.1432", "isDiff": 1, "name": "xxx.bin", "fileUrl": "https://the_firmware_url", "signMethod": "MD5", "fileMd5": "f8d85b250d4d787a9f48***" } ] } }
请求参数说明
参数 | 类型 | 说明 |
---|---|---|
method | String | action 表示是调用设备的某个行为 |
msgToken | String | 消息Id,回复的消息将会返回该数据,用于请求响应消息的对比 |
timestamp | Integer | 行为调用的当前时间,不填写则默认为调用行为的当前系统时间,单位为毫秒 |
data.version | String | 固件版本 |
data.isDiff | Integer | 是否是差分升级(1:是,2:否) |
data.signMethod | String | 签名方式,只支持MD5 |
data.extra | String | 额外自定义信息 |
data.size | Integer | 固件大小 |
data.name | String | 固件名 |
data.fileUrl | String | 固件下载URL |
data.fileMd5 | String | 固件MD5 |
data.signature | String | 固件签名(MD5) |
设备上报升级进度
上报Topic:OTA升级过程中,设备可以通过这个Topic上报OTA升级的进度百分比:
- 上报 Topic:
$thing/up/progress/{ProductID}/{DeviceName}
- 上报 Topic:
请求示例
远程控制请求消息格式:
{ "msgToken": "123", "params": { "step": "-1", "desc": "OTA升级失败,请求不到升级包信息。", "module": "MCU" } }
请求参数说明
参数 | 类型 | 说明 |
---|---|---|
method | String | control 表示云端向设备发起控制请求 |
msgToken | String | 用于上下行消息配对标识 |
timestamp | Integer | 属性上报的时间,格式为UNIX系统时间戳,不填写该字段表示默认为当前系统时间,单位为毫秒 |
params.step | String | OTA升级进度 取值范围: 1~100的整数:升级进度百分比 -1:升级失败 -2:下载失败 -3:校验失败 -4:烧写失败 |
params.desc | String | 当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息 |
params.module | String | 升级包所属的模块名 |