2. OTA系统总体架构设计
农业设备OTA不是“把固件包传到车上”这么简单。一台田间作业的拖拉机或植保无人机,可能处在4G信号边缘、可能正在执行喷药任务、也可能由合作社统一调度。要让升级既安全又不误农时,必须先把系统拆成职责清晰的层次。本节采用端—云—管—用四层架构来组织:端是设备侧代理,云是升级管理平台,管是连接两端并承载升级数据与消息的通道,用是面向机手、合作社管理员和厂家的使用界面。四层各司其职,才能把“发布—下发—传输—校验—安装—回传”串成闭环。
四层职责与边界
用层解决“谁来发起、谁来确认”。机手在车载屏或App上看到“有新版本可用”,合作社管理员按作业季安排升级批次,厂家运维人员负责发布与审批。用层不直接接触固件字节,只做策略选择与结果确认,避免误操作直接触达设备。
云层是升级管理平台,核心是四件事:固件仓库保存整包与差分包并附带签名;版本与机型管理保证“对的包给对的设备”;升级任务编排负责灰度、批次和时间窗;设备台账与状态日志中心记录每台设备的在线状态、当前版本和升级结果。差分引擎在发布新版本时,用旧版本与新版本比对生成差分包,并同时保留整包索引,形成双通道。
管层是连接与传输通道,必须把“消息”和“数据”分开。消息通道走MQTT或HTTPS,承载任务通知、心跳和状态回传,特点是报文小、要求低延迟;数据通道承载固件分块下载,特点是数据量大、需要断点续传和限速;安全通道用TLS双向认证和设备证书保证“只有合法设备能取包”,并对固件做签名验签。
端层是设备端代理,是整套系统唯一真正“动手”的部分。它接收任务后先做鉴权和机型匹配,再分块下载并逐块校验,下载完成后做整体SHA-256比对,然后进入安装与回滚环节,最后把进度、结果和错误码上报。端层还必须做安全条件判断:电量低于阈值、未驻车、正在作业时,一律延后安装。
差分与整包双通道如何选择
差分包体积小,适合网络条件差、流量敏感的田间场景;整包体积大但逻辑简单、可靠性高,适合首次升级、跨大版本升级或差分失败后的兜底。实际策略可以这样定:设备当前版本与目标版本存在可用差分链时优先走差分;差分下载或校验失败一次后自动切换整包;设备存储空间不足或分区表变更时强制整包。平台侧在任务里记录“通道类型”,端侧上报时带上实际使用的通道,便于统计差分命中率。
消息通知与状态回传的闭环
升级任务发布后,平台通过消息通道向目标设备推送“任务通知”,内容包含任务ID、目标版本、包类型、下载地址、校验值和安装窗口。设备代理收到后先回一条“已接收”,再按条件决定立即下载还是排队。下载和安装过程中,代理按固定间隔上报进度,例如每下载10%或每30秒上报一次;安装完成后上报最终状态:成功、失败或已回滚,并附错误码。平台的状态日志中心据此更新设备台账,用层即可看到“哪台设备升到了哪个版本、哪台失败、失败原因是什么”。
这里有一个容易被忽略的工程细节:状态回传必须可重试、可缓存。田间网络可能在上报瞬间断开,代理应把状态写入本地队列,联网后补传,平台按任务ID和设备ID做幂等去重,避免重复计数。只有形成“通知—接收—下载—校验—安装—回传—确认”的完整闭环,OTA才算真正可控。
模块职责速查
| 层次 | 核心模块 | 主要职责 | 关键输出 |
|---|---|---|---|
| 用 | 机手App、合作社后台、厂家控制台 | 发起升级、选择策略、确认结果 | 升级任务、审批记录 |
| 云 | 固件仓库、版本管理、任务编排、差分引擎、设备台账、日志中心 | 发布、匹配、灰度、生成差分、记录状态 | 任务通知、包索引、状态报表 |
| 管 | 消息通道、数据通道、安全通道 | 通知投递、分块传输、断点续传、双向认证 | 可达设备、下载进度、验签结果 |
| 端 | 任务接收、下载校验、安装回滚、状态上报、条件判断 | 鉴权、下载、校验、安装、回退、上报 | 进度、结果、错误码 |
把四层职责定清楚之后,后续的固件包制作、差分算法选择、断点续传实现和安全校验,才有明确的落点。架构不是画给评审看的框图,而是决定“出问题时该查哪一层”的依据:设备收不到通知查管层消息通道,下载中断查数据通道与端层续传逻辑,安装失败查端层回滚与云层版本匹配,结果看不到查状态回传链路。