操作场景
设备固件升级又称 OTA,是物联网智能视频服务(消费版)的重要组成部分。当物联网设备有新功能或者需要修复漏洞时,设备可以通过 OTA 服务快速的进行固件升级。
约束及限定
版本号规则约定:
正式版本:x.y.z
测试版本:x.y.z.debug
项目 | 范围 | 说明 |
x | 0-63 | 主版本号。 |
y | 0-63 | 次版本号。 |
z | 1-0x7FFFF | Revision 号,建议取 SVN 或 Github 的版本号。 |
实现原理
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 升级的进度信息。