4. 车云通信协议

在 T-Box 与车云平台之间,协议选型直接决定了远程控制时延、数据上报成本、弱网可靠性和平台接入复杂度。很多项目把“能连通”当成“选对了”,结果在量产阶段遇到流量费用高、指令下发慢、断网重连丢数据等问题。本节从协议分层、典型特征、适用场景和选型方法四个角度,建立一套可落地的判断框架。

一、先分清协议所处的层次

车云通信不是单一协议,而是一条协议栈。物理层和链路层通常由蜂窝模组完成;网络层使用 IP;传输层在 TCP 与 UDP 之间选择;应用层再叠加 MQTT、HTTP、WebSocket、CoAP 或行业标准协议。JT/T 808 与 GB/T 32960 属于应用层规范,它们既规定了报文格式,也规定了注册、鉴权、心跳、位置上报等业务流程,底层可承载在 TCP 之上。

因此,选型时要先问三个问题:数据是“持续小包”还是“偶发大包”?方向是“车到云单向”还是“云车双向实时”?是否受行业监管强制约束?这三个问题基本能锁定协议族。

车云通信协议分层与选型定位 应用层 MQTT · HTTP/HTTPS · WebSocket · CoAP · JT/T 808 · GB/T 32960 传输层 TCP(可靠、有序) | UDP(低时延、可容忍丢包) 网络层 / 链路层 IP · 蜂窝模组(4G/5G)· 车载以太网 / CAN 网关 MQTT 发布/订阅 · 长连接 QoS 0/1/2 · 遗嘱消息 远程控制、状态推送 HTTP/HTTPS 请求/响应 · 无状态 TLS 加密 · 易调试 OTA 包、日志上传 WebSocket 全双工 · 基于 HTTP 升级 浏览器友好 · 低开销 实时监控大屏、调试 CoAP UDP 之上 · 轻量 适合低功耗、弱网 传感器小数据采集 JT/T 808 部标终端协议 · 注册/鉴权/心跳/位置 营运车辆监管、两客一危 GB/T 32960 新能源汽车远程服务与管理系统 整车数据、电池、电机、报警上报

二、核心协议特征对比

下表从连接方式、时延、开销、可靠性和典型用途五个维度对比常用协议。注意:MQTT 与 WebSocket 都基于 TCP,但 MQTT 有主题路由和 QoS 机制,更适合设备侧;WebSocket 更适合浏览器或需要全双工文本流的场景。

协议 传输层 连接模式 典型时延 报文开销 可靠性机制 典型用途
MQTTTCP长连接/发布订阅低(百毫秒级)小(2 字节起)QoS 0/1/2、遗嘱、保留消息远程控制、状态上报
HTTP/HTTPSTCP短连接/请求响应中(秒级)大(头部冗长)TCP 重传、TLS 加密OTA、文件上传、配置拉取
WebSocketTCP长连接/全双工低小(帧头 2~14 字节)TCP 重传、心跳保活实时监控、调试通道
CoAPUDP请求响应/观察模式极低极小(4 字节头)CON 重传、块传输低功耗传感器采集
JT/T 808TCP长连接/自定义报文低中流水号、重传、心跳营运车辆监管
GB/T 32960TCP长连接/自定义报文低中应答、重传、时间戳新能源车数据上报

三、选型方法与判断流程

选型不是“选一个协议用到底”,而是按业务通道分别决策。推荐按以下流程判断:

  1. 识别业务类型:远程控制、实时状态推送优先 MQTT;大文件传输、OTA 优先 HTTPS;浏览器实时展示优先 WebSocket;低功耗小数据可考虑 CoAP。
  2. 确认监管要求:营运车辆必须支持 JT/T 808;新能源车数据上报必须符合 GB/T 32960,不能只用私有 MQTT 替代。
  3. 评估网络条件:弱网、频繁切换基站时,MQTT 的会话保持和 QoS 1 比 HTTP 短连接更稳;UDP 场景要自行处理丢包与乱序。
  4. 核算流量成本:按“单条报文大小 × 上报频率 × 车辆数”估算月流量,HTTP 头部开销在低频小包场景下可能占比超过 50%。
  5. 确定安全方案:公网传输必须启用 TLS;MQTT 使用用户名密码或双向证书;JT/T 808 与 GB/T 32960 按规范实现鉴权和校验。
实用建议:量产 T-Box 常见组合是“MQTT 负责控制与状态 + HTTPS 负责 OTA 与日志 + GB/T 32960 负责监管上报”。三条通道独立部署、独立降级,避免一个协议异常导致全部业务中断。

四、典型场景与配置示例

以 MQTT 远程控制通道为例,T-Box 作为客户端连接车云 Broker,订阅控制主题,发布状态主题。关键参数包括心跳间隔、QoS 等级和遗嘱主题。

# T-Box MQTT 客户端关键配置示例
broker: mqtts://tbox.example.com:8883
client_id: TBOX_${VIN}
username: ${VIN}
password: ${DEVICE_SECRET}
keepalive: 60            # 心跳间隔,秒
clean_session: false     # 保持会话,断线后恢复订阅
will_topic: vehicle/${VIN}/offline
will_qos: 1
will_payload: {"status":"offline","ts":${TS}}

# 订阅:云端下发控制指令
subscribe: vehicle/${VIN}/cmd      QoS 1
# 发布:车辆状态上报
publish:   vehicle/${VIN}/status   QoS 1

对于 GB/T 32960 上报,需按规范封装命令标识、应答标志、VIN、加密方式和数据单元。下面是一个简化的报文结构示意:

# GB/T 32960 数据单元结构(简化)
起始符(##) | 命令标识 | 应答标志 | VIN(17字节) | 加密方式 | 数据长度 | 数据单元 | 校验码
命令标识 0x02:车辆登入
命令标识 0x03:实时信息上报
命令标识 0x04:补发信息上报
命令标识 0x05:车辆登出

五、常见误区与复盘

  • 误区一:所有数据都走 MQTT。OTA 大包走 MQTT 会阻塞控制通道,且 Broker 对单包大小有限制。应拆分通道,大文件走 HTTPS。
  • 误区二:HTTP 轮询代替长连接。轮询在车辆规模大时会造成平台连接风暴和流量浪费,远程控制时延也不可控。
  • 误区三:忽略 QoS 与幂等。QoS 1 可能重复投递,控制指令必须带唯一指令 ID,车端做去重,避免重复执行。
  • 误区四:只做协议连通,不做弱网测试。应在隧道、地库、高速切换等场景验证重连时间、消息补发和本地缓存策略。
  • 误区五:用私有协议替代国标。监管平台只认 JT/T 808 或 GB/T 32960,私有协议无法完成合规接入。
排障提示:若出现“指令下发成功但车端未执行”,先查 MQTT 订阅主题是否匹配、QoS 是否为 0、车端是否因 clean_session=true 丢失订阅;再查指令 ID 是否被去重逻辑误判。若 GB/T 32960 上报被平台拒绝,优先核对 VIN 长度、校验码算法和数据单元长度字段。

总结来看,车云协议选型的核心是“分通道、按业务、合规范、算成本”。控制类走 MQTT,文件类走 HTTPS,展示类走 WebSocket,低功耗采集可评估 CoAP,监管类必须落地 JT/T 808 与 GB/T 32960。把每条通道的时延、流量、可靠性和合规要求写进设计输入,才能在量产阶段少走弯路。