物联网产品设计,聊聊设备OTA的升级
物联网产品设计部分的OTA设备固件是一个非常重要的部分,能够实现升级用户服务、保障系统安全等功能。
在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。
随着物联网技术发展,一个技术变得极为重要,即OTA空中下载技术。物联网平台支持通过OTA方式进行设备固件升级,是智能设备修复系统漏洞、实现系统升级的手段,通过固件升级用户提供更好的服务。OTA固件升级功能不仅能够更新固件,而且还能重新配置片上硬件资源。同时,设备固件可通过OTA固件升级流程获得更新的补丁和更多安全算法防范病毒攻击。
一、OTA固件升级对设备的重要性
物联网领域具有多样性,应用和最终解决方案需求也是如此。面对和传统设备的需求差异,OTA升级显得尤其重要,主要体现在以下几方面:
1. 市场端的快速上线需求
天下武功唯快不破,物联网设备产品往往留给设计者的时间不长,并且市场需要持续不断地创新和更新功能。在设备设计时,往往会预留一些后加载的需求,先期快速实现一些功能即开始上线,上线后可以通过OTA升级的方式更新更多功能,实现渐进式部署,有那么一点类似于互联网的敏捷研发了。只要在架构设计阶段,在硬件层面考虑到了未来的足够需求,就不可以源源不断地优化完善设备功能。
2. 设备部署需求的多样性
在物联网产品应用过程中,有个很有意思的事情,设备需要确定推送信息的云主机。那么问题就来了,有可能是一个通用的云主机,也有可能因为部署需要又需要更新推送的云主机,这个时候如果设备已经生产出来了,已经在渠道或者客户手中,那么OTA固件升级就显得很重要了。
还有一个比较常见的现象,一些设备在安装以后,对于输入输出部件的控制模式需要变更,那么可能需要对部分设备进行固件升级。比如,一开始在一个城市部署了相同智能路灯的设备,但是某些区域的设备关于灯光强度或者时间性需要做变更,那么OTA固件升级也可以帮助解决灯光控制方式的变更。
备注:如果预留了远程下行控制指令,且已经支持的,也可以不用升级固件。
3. 设备安全性及完善性
任何物联网设备不外乎都是两部分组成的:硬件+固件程序。在基于SoC的应用中,OTA固件升级功能不仅能够更新固件,而且还能重新配置片上硬件资源。
有了OTA固件升级的备案,那么产品不一定等到完全没有缺陷再上市,只要在不存在较为致命的缺陷下,就可以提前上市,解决问题后在远程完成升级修补缺陷。同时基于日益严峻的安全形势威胁,备固件可通过OTA固件升级流程获得最新补丁和更多安全算法,做到不断加固的。
二、OTA固件升级流程
1. 升级步骤
step1:云控制平台添加估计升级需求。
step2:设备在唤醒后上报自己的固件版本。
step3:云端判断是否需要升级后,下发升级固件包URL。
step4:设备下载固件后进行升级,下载成功后上报结果。
step5:设备升级成功后,上报升级结果及最新版本,云端更新为升级成功。
2. 注意事项及设计要点
1. 设备固件版本信息不需要单独设置周期性上报事件,在设备重新启动或者心跳时上报即可。
2. 物联网平台添加新的固件版本启动升级需求后,一直为待升级,直到设备上报升级进度。
3. 升级成功唯一判断标准是上报的版本号。
4. 设备离线状态下不能进行升级,需要等到设备上线后上报数据。
5. 设备下载固件后对于升级结果需要上报。
三、云端控制系统设计
1. 固件新增
固件新增主要面向产品进行设计,按照单个产品为单位进行添加,添加固件时不用考虑设备升级的范围,仅仅作为产品的一个固件包。但是,尤其要主要固件版本的管理,不能低于当前所有该产品运行的设备版本号,并且命名的版本号要与新增填写时的相同。
新增固件的字段:名称、版本号、所属产品、备注。
2. 验证固件
固件新增加成功后,就可以进行验证固件操作了。验证固件是指在系统内小范围查找一两个设备进行升级测试,验证通过后再考虑批量进行操作处理。验证固件的操作就是在现存该产品的不同版本号的产品中分别选择最低一个产品进行升级。
验证固件字段:版本号(采用下来筛选,仅筛选现有产品存在的版本号)、产品编号(通过产品唯一识别号进行查找添加)。
备注:选择产品编号前需要先确定版本号。
3. 选择设备批量升级
固件验证通过后就可以进行批量处理了,批量处理就是在现有的设备范围内选择需要升级的设备,同时设置升级策略,比如升级时间、重复次数等。
批量升级可以采用页面方式按照特定条件进行筛选后处理,也需要能够采用excel文件导入形式进行处理,excel导入形式主要是为了定向对某一些设备升级,升级设备没有一定的共性,或者系统内暂时无法通过筛选方式查找出共性。
主要涉及的字段:升级范围、升级时间、升级策略(失败后再次间隔时间、重复次数、定时升级等)
4. 查看升级结果
批量执行升级后,回到管理固件的列表,就可以实时查看升级结果,获取升级情况!
5. 统计数据
在设计固件管理时,还可以对产品的固件分布、升级设备的状态分布占比等进行一些数据可视化设计,帮助管理员更好的查看和分析。
四、安全性考虑
以上部分其实我们都在说为什么需要OTA固件升级、固件升级的原理是什么、流程是什么、云端控制系统如何设计,但是我们没有强调其中的一个重要事情“安全性”!安全性希望引起产品和技术人员的足够重视!
1. 对设备固件进行OTA升级时,通过在空中传输,容易遭受攻击。因此,必需确保主机设备只与相关目标设备通信。
2. 应对空中传输的数据进行加密,以便让其它监听方无法解码这些数据。
3. OTA服务是智能设备修复系统漏洞、实现系统升级的手段,拥有非常高的权限,掌握着系统更新的安全命脉。如果OTA升级出现安全问题,可能导致用户隐私泄露,甚至给用户带来生命危险。
五、总结
至此呢,我们就将物联网产品设计部分的OTA设备固件讲完了,希望对其他童鞋有所帮助,也欢迎各路大神指点完善。
ps:最近我们正在筹备成都物联网&智能硬件产品经验交流组,组内互帮互助,共同成长,经验交流欢迎加我个人微信号:liu58liu
作者:Kent,微信公众号:Liuke2019
本文由 @Kent 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
还有没???怎么不发了
非常nice!希望答主再写一篇统计升级结果的帖子!!!!
感谢分享!有一点疑惑,对于一次升级任务来说,如何判断升级任务完成,设置升级时限,还是根据设备上报的状态?
文中有叙述,根据该设备下一次上传的版本号。但需要考虑的是,设备在升级中尽量需要不影响设备正常使用或超过某一时间阈值,自行断开升级状态,回滚之前状态。
做过一些物联网硬件对接工作,这块写的没毛病
好棒呀,最近刚好要设计OTA的功能~感谢~
有启发就好 🙂
要是补充点原型就好了
我们主要总结思路,原型给出来干什么呢
估计你会这样回复我这个小菜鸟 😥
说思路就可以了,原型也需要…
写的很好,很详尽啊 😉
前两天刚上网查了一遍。。。想问一下,固件升级在终端是怎样的形式?是强制升级吗?是静默升级吗?不知道我问清楚了没 😥
终端通常都是根据云端需求了,通常强制升级!因为有些设备你跟本无法操作,有些升级必须强制!当然这个主要看你产品属性和升级需求啊,你也可以设计成可以需要终端确认的方式,或者两者方式兼容!终端和云端协调设置好就ok