177 lines
6.2 KiB
Markdown
177 lines
6.2 KiB
Markdown
# 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 容器均已启动:
|
||
|
||
```text
|
||
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=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`
|
||
|
||
```text
|
||
raw_frames count = 3
|
||
vehicle_locations count = 2
|
||
vehicle_mileage_points count = 2
|
||
```
|
||
|
||
最新 RAW 标识:
|
||
|
||
```text
|
||
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 可查询:
|
||
|
||
```text
|
||
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` 写入:
|
||
|
||
```text
|
||
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 位置和里程点:
|
||
|
||
```text
|
||
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 扁平字段:
|
||
|
||
```text
|
||
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 标识:
|
||
|
||
```text
|
||
2026-07-01 14:28:24.869 | 172.20.0.1:47082 | GB32960 | LB9A32A21R0LS1707 | OK
|
||
```
|
||
|
||
后续仍需补齐:
|
||
|
||
- JT808 真实 phone `14894135060` 到 VIN 的绑定数据维护与统计复验。
|
||
- Go 旁路尚未切换到生产 `32960/808` 端口;仍运行在 `23296/18080`。
|