有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

设备固件升级又称 OTA,是物联网智能视频服务(消费版)的重要组成部分。当物联网设备有新功能或者需要修复漏洞时,设备可以通过 OTA 服务快速的进行固件升级。

约束及限定

版本号规则约定:
正式版本:x.y.z
测试版本:x.y.z.debug
项目
范围
说明
x
0-63
主版本号。
y
0-63
次版本号。
z
1-0x7FFFF
Revision 号,建议取 SVN 或 Github 的版本号。

实现原理

设备物模型中已内置 OTA 升级相关的数据属性。通过对这些物模型的操作,实现 OTA 升级相关的功能。物模型请参见 物模型
IoT Video(Consumer Version) 的设备物模型内置以下 OTA 相关的数据对象:
功能元素
对象名
类型
字段说明
1
ProWritable
_otaMode
int32
OTA 升级模式。
2
Action
_otaVersion
string32
OTA 当前可以升级的版本号。
3
Action
_otaUpgrade
int32
OTA 升级进度。

_otaMode

说明
0
设备不自动检查版本更新。
1
设备周期性自动检查版本更新,手动升级固件(缺省)。
2
设备周期性自动检查版本更新,并自动升级固件(慎用)。

_otaVersion

stVal 的值为检查更新得到的版本号。
控制 ctlVal 为空值时,触发设备执行检查版本更新,执行完毕,stVal 刷新为检查到的版本号。
控制 ctlVal 为非空值,stVal 置为指定的版本号(用于升级固件到指定的版本)。
_otaUpgrade.stVal 不为零时,不允许控制操作。

_otaUpgrade

stVal 值用于描述当前 OTA 升级的进度,状态值说明:
说明
0
初值状态,当前没有 OTA 升级过程。
1
开始升级,设备接收到升级命令后置1。
2 - 30
固件下载中,设备升级过程中刷新进度信息。
31 - 89
固件写入中,设备升级过程中刷新进度信息。
90
设备即将重启,设备重启前置值。
91 - 99
设备重启中(保留给应用端使用)。
100
固件升级成功(设备重新上线后 SDK 置值)。
负值
因件升级失败,值为失败原因。(设备端置值)
说明:
仅在 stVal 非正值时,允许 ctlVal=1 的控制。
stVal 为正时,设备不接受任何控制操作。

固件发布操作

上传设备固件

在控制台中,上传设备固件文件,并设定该固件的版本信息。
注意
开发者应自行审核固件文件的完整性。
开发者应自行审核实际固件版本与设定版本信息的一致性。

测试发布

在控制台中,可针对固件版本进行测试发布。测试发布时,可指定设备 ID 列表,下发该固件版本,被指定的设备列表,可以自动检查到此版本的固件更新。

正式发布

在控制台中,可针对固件版本进行正式发布。正式发布时,可通过设定灰度值的方式实现灰度发布。

指定设备升级

在控制台中,可指定设备升级到指定的版本。开发者可通过此操作实现任意版本的更新,例如:设备版本回退。

OTA 升级流程




说明:
OTA 升级流程中的大部分过程,设备 SDK 已经封装实现,对于设备开发者而言,仅需实现步骤6的应用层逻辑。
手机客户端应用,可通过订阅设备物模型方式,实时刷新 OTA 升级的进度信息。