固件升级
更新时间: 2023-04-19
# 概述
设备端对接OTA分为下载和上报两个核心接口,设备端主动请求接口下载及在升级过程中主动更新升级状态。 升级过程示意如下:
# 接口说明
设备端请求OTA服务接口时需使用平台分配的产品线密钥进行加密鉴权,产品密钥、产品线ID在平台控制台获得。
鉴权方式:业务加密数据base64(AES(plain)),AES秘钥为产品线秘钥
# 固件下载请求接口
项目 | 描述 |
---|---|
域名 | 从平台获得 |
path | /openapi/delivery |
http方法 | post |
headers | Content-Type: application/json |
body | json格式数据 |
# 请求消息示例
// 请求
{
"pt":3, // 请求协议类型,固定为3,表示AES加密
"pid":2000002601, // 产品线ID
"data":"xxx" // 业务加密数据base64(AES(plain)),AES秘钥为产品线秘钥
}
// data内容
{
"did":"deviceid", // 设备ID
"chs":"ota", // 请求通道,固定为ota
"softid":184, // 端类型,默认为184
"sdkver":"3.0.48.2018091216", // sdk版本号
"ota": {
"ver":"0.25.1.201906212006" // 系统版本号
}
}
# 响应格式
// 返回
{
"errno": 0, // 错误码,成功为0
"msg": "", // 错误信息,成功为空字符串
"data": "xx" // 业务加密数据
}
// data解密后内容
{
"url": "https://xxx", // 下载url
"filesize": 106851440, // 包大小
"sha1": "e8ca1a72d2ebc0f2afb21b7b64636538d14db4f0", // sha1
"taskid": "137342", // 任务id
"version": "2.0.0.0" // 包版本号
}
# 升级状态上报接口
项目 | 描述 |
---|---|
域名 | 从平台获得 |
path | /openapi/devreport |
http方法 | post |
headers | Content-Type: application/json |
body | json格式数据 |
# 通用格式
接口请求通用格式如下,其中data字段为业务加密数据base64(AES(plain)),AES秘钥为产品线秘钥
// 请求
{
"pt":3, // 请求协议类型,固定为3,表示AES加密
"pid":1, // 产品线ID
"data":"xxx" // 业务加密数据base64(AES(plain)),AES秘钥为产品线秘钥
}
// data解密后内容 为下面业务格式数据
{
...
}
# 请求成功上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1001,
"unixtime": 1659689112000,
"data": {
"taskid": xxx,
}
}
# 下载开始上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1006,
"unixtime": 1659689112000,
"data": {
"taskid": xxx,
}
}
# 下载成功上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1002,
"unixtime": 1659689112000,
"data": {
"taskid": xxx,
"time": xxx,
"reason_code": 0,
"reason": ""
}
}
# 下载失败上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1002,
"unixtime": 1659689112000,
"data": {
"taskid": xxx,
"time": xxx,
"reason_code": xxx,
"reason": "xxx"
}
}
# 升级开始上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1003,
"unixtime": 1659689112000,
"data": {
"taskid": xxx
}
}
# 升级成功上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1004,
"unixtime": 1659689112000,
"data": {
"taskid": xxx,
"reason_code": 0,
"reason": "xxx"
}
}
# 升级失败上报示例
{
"productid": "xxx",
"deviceid": "xxx",
"sdkver": "x.x.x.x",
"softid": 184,
"osver": "x.x.x.x",
"cmdid": 1004,
"unixtime": 1659689112000,
"data": {
"taskid": xxx,
"reason_code": xxx,
"reason": "xxx"
}
}