8.3 KiB
8.3 KiB
Go Vehicle Gateway 旁路验证记录
验证时间:2026-07-01 22:00-22:10 CST
部署版本
- Git commit:
60ca42e - 镜像:
crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-60ca42e-20260701220622 - 部署方式:ECS
115.29.187.205上 Docker Compose 旁路部署 - Compose 目录:
/opt/lingniu-go
旁路端口和 topic
为了不影响现有 Java 生产服务,本次没有占用生产端口和生产 topic。
| 项 | 值 |
|---|---|
| GB32960 旁路 TCP | 115.29.187.205:23296 -> container :32960 |
| JT808 旁路 TCP | 115.29.187.205:18080 -> container :808 |
| Realtime API | 115.29.187.205:20210 |
| GB32960 RAW topic | vehicle.raw.go.gb32960.v1 |
| JT808 RAW topic | vehicle.raw.go.jt808.v1 |
| Yutong MQTT RAW topic | vehicle.raw.go.yutong-mqtt.v1 |
| Unified topic | vehicle.event.go.unified.v1 |
容器状态
ECS 上四个 Go 容器均已启动:
go-vehicle-gateway Up
go-history-writer Up
go-stat-writer Up
go-realtime-api Up
Kafka 验证
向 18080 注入 JT808 样例帧后,vehicle.raw.go.jt808.v1 和
vehicle.event.go.unified.v1 均消费到统一 JSON envelope。
样例解析结果包含:
protocol=JT808message_id=0x0200phone=013307795425longitude=121.069881latitude=30.590151speed_kmh=23total_mileage_km=10241.2- 表 27 附加项
0x01原始值0001900C
TDengine 验证
目标库:lingniu_vehicle_ts
raw_frames count = 3
vehicle_locations count = 2
vehicle_mileage_points count = 2
最新 RAW 标识:
GB32960 | LNBSCB3D4R1234567 | LNBSCB3D4R1234567 |
JT808 | JT808:013307795425 | | 013307795425
JT808 | JT808:013307795425 | | 013307795425
说明:JT808 样例 phone 当前没有在 vehicle_identity_binding 中解析到 VIN,因此
TDengine tag 使用 vehicle_key=JT808:013307795425。
Redis 验证
向 23296 注入带 VIN 的 GB32960 合成帧后,Realtime API 可查询:
GET /api/realtime/vehicles/LNBSCB3D4R1234567
返回字段包含:
vin=LNBSCB3D4R1234567protocols=["GB32960"]online=truespeed_kmh=30total_mileage_km=10000soc_percent=85longitude=121latitude=30.56
MySQL 统计验证
向 23296 注入带 VIN 的 GB32960 合成帧后,vehicle_daily_metric 写入:
LNBSCB3D4R1234567 | 2020-07-01 | GB32960 | daily_mileage_km | 0.000 | 10000.000 | 10000.000 | 1
LNBSCB3D4R1234567 | 2020-07-01 | GB32960 | daily_total_mileage_km | 10000.000 | 10000.000 | 10000.000 | 1
说明:本次 GB32960 合成帧的设备时间为测试值,因此统计日期为 2020-07-01。
已修复问题
- TDengine WebSocket 普通
INSERT使用参数占位符时,字符串未按预期加引号,导致语法错误。已在60ca42e中改为显式 SQL literal 转义。 - MySQL Go DSN 中
charset=utf8mb4%2Cutf8会被 driver 传给 MySQL,导致语法错误;ECS 旁路 env 已改为charset=utf8mb4。 - TDengine ECS 当前可用 root 密码与早先记录不一致,本次旁路 env 已按实际可认证值修正。
未完成
- 未切换真实生产端口
32960/808。 - 未将真实外部 32960/808 流量转发到 Go 旁路端口。
- 未开启宇通 MQTT 正式订阅。
- JT808 样例未解析到 VIN,需维护
vehicle_identity_binding后再验证 808 每日统计。
2026-07-01 22:22 真实归档帧复验
部署版本已更新:
- Git commit:
5f4f4fd - 镜像:
crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-5f4f4fd-20260701222128
本轮补充验证内容:
- JT808 支持 2019 版 versioned header,真实帧
0x0200可解析出phone=14894135060、longitude=117.178187、latitude=30.570155、speed_kmh=33.4、total_mileage_km=7868.9。 - GB32960 真实燃料电池帧
VIN=LB9A32A21R0LS1707可解析0x01整车、0x02驱动电机、0x03燃料电池、0x04发动机、0x05位置、0x06极值、0x07报警、0x08电压、0x09温度;后续0x30广东燃料电池扩展暂以 unknown raw 保留。 - GB32960 真实帧字段包含
fuel_cell_hydrogen_consumption_kg_per_100km=1.8、longitude=120.800326、latitude=31.634907、total_mileage_km=53490.9。 - Realtime API
GET /api/realtime/vehicles/LB9A32A21R0LS1707已返回上述经纬度和氢耗字段。 - TDengine
vehicle_locations和vehicle_mileage_points已写入真实 GB32960 位置和里程点:
2020-07-01 08:09:22 | GB32960 | LB9A32A21R0LS1707 | lon=120.800326 | lat=31.634907 | mileage=53490.9
后续仍需补齐:
- JT808 真实 phone
14894135060仍未解析到 VIN,需维护身份绑定后再验证 VIN 维度实时和统计。
2026-07-01 22:28 广东燃料电池扩展复验
部署版本已更新:
- Git commit:
a15de91 - 镜像:
crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-a15de91-20260701222743
本轮补充验证内容:
- GB32960 真实燃料电池帧
VIN=LB9A32A21R0LS1707的 vendor 尾部已从unknown_unit补为结构化块:0x30 gd_fc_stack、0x31 gd_fc_auxiliary、0x32 gd_fc_dcdc、0x33 gd_fc_air_conditioner、0x34 gd_fc_vehicle_info、0x80 gd_fc_demo_extension、0x83 gd_fc_vendor_tlv。 - Kafka
vehicle.raw.go.gb32960.v1最新消息包含上述 block,并输出关键扁平字段:gd_fc_stack_hydrogen_inlet_pressure_kpa=97、gd_fc_stack_cell_count=108、gd_fc_vehicle_hydrogen_mass_kg=4.3、gd_fc_demo_stack_temp_c=65。 - Realtime API
GET /api/realtime/vehicles/LB9A32A21R0LS1707已返回 vendor 扁平字段:
gd_fc_dcdc_controller_temp_c=47
gd_fc_demo_stack_temp_c=65
gd_fc_stack_cell_count=108
gd_fc_stack_frame_cell_count=108
gd_fc_stack_hydrogen_inlet_pressure_kpa=97
gd_fc_stack_water_outlet_temp_c=65
gd_fc_vehicle_hydrogen_mass_kg=4.3
- TDengine
raw_frames中 GB32960 行数增加到4,最新 RAW 标识:
2026-07-01 14:28:24.869 | 172.20.0.1:47082 | GB32960 | LB9A32A21R0LS1707 | OK
后续仍需补齐:
- JT808 真实 phone
14894135060到 VIN 的绑定数据维护与统计复验。 - Go 旁路尚未切换到生产
32960/808端口;仍运行在23296/18080。
2026-07-01 22:43 JT808 前导零 phone 身份解析复验
部署版本已更新:
- Git commit:
6b55694 - 镜像:
crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-6b55694-20260701224300
本轮修复内容:
- JT808 2011 老版包头的终端手机号按 BCD[6] 解析会保留前导
0,例如包头为013079963379。 vehicle_identity_binding.phone中实际维护的是去前导零后的手机号13079963379。- 身份解析候选键已调整为先查原始 phone,再查去前导零 phone,之后再按
device_id、plate降级。
真实帧复验样本:
- 归档帧:
/opt/lingniu/vehicle-ingest/gb32960/archive/2026/07/01/JT808/unknown/1782903942845000.bin - 消息:
0x0200位置信息汇报 - 包头 phone:
013079963379 - 绑定表 phone:
13079963379 - 解析 VIN:
LKLG7C4E3NA774736
Kafka vehicle.raw.go.jt808.v1 最新消息确认:
vin=LKLG7C4E3NA774736
phone=013079963379
parsed.header.phone_trim_zero=13079963379
parsed.identity.resolved=true
parsed.identity.source=phone
parsed.identity.value=13079963379
Realtime API 确认:
GET /api/realtime/vehicles/LKLG7C4E3NA774736
longitude=119.557997
latitude=29.049092
speed_kmh=0
total_mileage_km=0
device_time=2026-07-01T19:05:40+08:00
TDengine 确认:
raw_frames:
2026-07-01 14:49:10.913 | JT808 | LKLG7C4E3NA774736 | phone=013079963379 | message_id=512
vehicle_locations:
2026-07-01 11:05:40.000 | JT808 | LKLG7C4E3NA774736 | lon=119.557997 | lat=29.049092 | speed=0 | mileage=0
vehicle_mileage_points:
2026-07-01 11:05:40.000 | JT808 | LKLG7C4E3NA774736 | mileage=0
MySQL vehicle_daily_metric 确认:
LKLG7C4E3NA774736 | JT808 | 2026-07-01 | daily_mileage_km | 0.000 | sample_count=1 | TOTAL_MILEAGE_DIFF
LKLG7C4E3NA774736 | JT808 | 2026-07-01 | daily_total_mileage_km | 0.000 | sample_count=1 | TOTAL_MILEAGE_DIFF
说明:该真实位置帧携带的表 27 附加项 0x01 总里程值为 0,因此本次只验证身份解析、链路落地和差值统计写入;要验证非零日里程,需要回放或等待同一 VIN 的非零总里程连续位置点。