Files
lingniu-vehicle-ingest/docs/operations/go-vehicle-gateway-verification-result-2026-07-01.md
2026-07-01 22:51:18 +08:00

8.3 KiB
Raw Blame History

Go Vehicle Gateway 旁路验证记录

验证时间2026-07-01 22:00-22:10 CST

部署版本

  • Git commit60ca42e
  • 镜像: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.v1vehicle.event.go.unified.v1 均消费到统一 JSON envelope。

样例解析结果包含:

  • protocol=JT808
  • message_id=0x0200
  • phone=013307795425
  • longitude=121.069881
  • latitude=30.590151
  • speed_kmh=23
  • total_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=LNBSCB3D4R1234567
  • protocols=["GB32960"]
  • online=true
  • speed_kmh=30
  • total_mileage_km=10000
  • soc_percent=85
  • longitude=121
  • latitude=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 commit5f4f4fd
  • 镜像:crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-5f4f4fd-20260701222128

本轮补充验证内容:

  • JT808 支持 2019 版 versioned header真实帧 0x0200 可解析出 phone=14894135060longitude=117.178187latitude=30.570155speed_kmh=33.4total_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.8longitude=120.800326latitude=31.634907total_mileage_km=53490.9
  • Realtime API GET /api/realtime/vehicles/LB9A32A21R0LS1707 已返回上述经纬度和氢耗字段。
  • TDengine vehicle_locationsvehicle_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 commita15de91
  • 镜像:crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-a15de91-20260701222743

本轮补充验证内容:

  • GB32960 真实燃料电池帧 VIN=LB9A32A21R0LS1707 的 vendor 尾部已从 unknown_unit 补为结构化块: 0x30 gd_fc_stack0x31 gd_fc_auxiliary0x32 gd_fc_dcdc0x33 gd_fc_air_conditioner0x34 gd_fc_vehicle_info0x80 gd_fc_demo_extension0x83 gd_fc_vendor_tlv
  • Kafka vehicle.raw.go.gb32960.v1 最新消息包含上述 block并输出关键扁平字段 gd_fc_stack_hydrogen_inlet_pressure_kpa=97gd_fc_stack_cell_count=108gd_fc_vehicle_hydrogen_mass_kg=4.3gd_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 commit6b55694
  • 镜像: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_idplate 降级。

真实帧复验样本:

  • 归档帧:/opt/lingniu/vehicle-ingest/gb32960/archive/2026/07/01/JT808/unknown/1782903942845000.bin
  • 消息:0x0200 位置信息汇报
  • 包头 phone013079963379
  • 绑定表 phone13079963379
  • 解析 VINLKLG7C4E3NA774736

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 的非零总里程连续位置点。