Vehicle Telemetry Internal Fields
This document defines the internal telemetry field model for Lingniu hydrogen
vehicle operations. Protocol fields such as GB/T 32960, JT808, MQTT, and vendor
extensions must be mapped into these fields before storage, statistics, or
business reporting.
Design Rules
- Business statistics use internal fields, not protocol field names.
- Every internal field has one stable unit and one business meaning.
- Protocol-specific raw values remain traceable through
source_protocol,
protocol_version, metadata, and raw archive references.
- Core operational fields are stored as typed columns or typed payload fields.
- Unstable vendor-specific fields can stay in extension metadata until promoted.
- Hydrogen leak safety is a first-class critical safety event, not a generic
alarm count.
Identity And Time
| Internal field |
Type |
Unit |
Meaning |
GB/T 32960 source |
vin |
string |
- |
Vehicle VIN and partition key |
header VIN |
event_time |
instant |
- |
Device collection time |
command body timestamp |
ingest_time |
instant |
- |
Platform receive time |
ingest server clock |
source_protocol |
enum |
- |
Source adapter |
GB32960 |
protocol_version |
string |
- |
Source protocol version |
V2016 / V2025 |
Real-Time Vehicle State
| Internal field |
Type |
Unit |
Meaning |
GB/T 32960 source |
vehicle_state |
enum |
- |
Started, shutdown, other, invalid |
vehicle block vehicleState |
charging_state |
enum |
- |
Charging state |
vehicle block chargingState |
running_mode |
enum |
- |
Electric, hybrid, fuel, other |
vehicle block runningMode |
speed_kmh |
double |
km/h |
Current speed |
vehicle block speedKmh |
total_mileage_km |
double |
km |
Odometer mileage |
vehicle block totalMileageKm |
gear_level |
integer |
- |
Gear value |
vehicle block gearRaw low 4 bits |
accelerator_pedal |
double |
% |
Accelerator pedal opening |
V2016 vehicle block |
brake_pedal |
double |
% |
Brake pedal opening |
V2016 vehicle block |
Location
| Internal field |
Type |
Unit |
Meaning |
GB/T 32960 source |
longitude |
double |
deg |
Longitude |
position block |
latitude |
double |
deg |
Latitude |
position block |
altitude_m |
double |
m |
Altitude when available |
extension or other protocol |
direction_deg |
double |
deg |
Direction when available |
extension or other protocol |
location_status_raw |
long |
- |
Raw location status bits |
position block statusFlag |
Battery And Electricity
| Internal field |
Type |
Unit |
Meaning |
GB/T 32960 source |
battery_soc |
double |
% |
Battery SOC |
vehicle block socPercent |
battery_voltage_v |
double |
V |
Battery total voltage |
vehicle block totalVoltageV |
battery_current_a |
double |
A |
Battery total current |
vehicle block totalCurrentA |
battery_power_kw |
double |
kW |
Derived instantaneous battery power |
voltage * current / 1000 in statistics |
battery_temperature_max_c |
integer |
C |
Max battery temperature |
temperature or extreme blocks |
battery_temperature_min_c |
integer |
C |
Min battery temperature |
temperature or extreme blocks |
daily_electricity_kwh |
double |
kWh |
Daily electricity usage |
statistics time integral |
Daily electricity must be computed in the statistics layer from typed telemetry
points. Do not accumulate protocol raw values directly.
Hydrogen And Fuel Cell
| Internal field |
Type |
Unit |
Meaning |
GB/T 32960 source |
fc_voltage_v |
double |
V |
Fuel cell voltage |
fuel cell block |
fc_current_a |
double |
A |
Fuel cell current |
fuel cell block |
fc_temp_c |
double |
C |
Fuel cell or hydrogen system temperature |
fuel cell block |
hydrogen_remaining_kg |
double |
kg |
Remaining hydrogen mass |
vendor extension or capacity conversion |
hydrogen_remaining_percent |
double |
% |
Remaining hydrogen percent |
V2025 fuel cell block |
hydrogen_high_pressure_mpa |
double |
MPa |
Hydrogen high pressure |
fuel cell block |
hydrogen_low_pressure_mpa |
double |
MPa |
Hydrogen low pressure when available |
extension or other protocol |
daily_hydrogen_kg |
double |
kg |
Daily hydrogen consumed |
statistics layer |
hydrogen_mileage_efficiency |
double |
km/kg |
Mileage per kg hydrogen |
statistics layer |
Daily hydrogen usage should be calculated from adjacent hydrogen remaining
values. A rising value indicates refueling and must not be counted as negative
consumption.
Hydrogen Tank Safety
| Internal field |
Type |
Unit |
Meaning |
GB/T 32960 source |
safety_category |
enum |
- |
GENERAL, TANK_PRESSURE, TANK_TEMPERATURE, HYDROGEN_LEAK |
alarm bit classification |
hydrogen_leak_detected |
boolean |
- |
Whether hydrogen leak is detected |
general alarm bit HYDROGEN_LEAK |
hydrogen_leak_level |
enum |
- |
NONE, WARNING, CRITICAL, UNKNOWN |
internal rule |
hydrogen_leak_action_required |
boolean |
- |
Whether immediate handling is required |
internal rule |
tank_pressure_status |
enum |
- |
Normal, warning, critical |
hydrogen pressure bit or threshold rule |
tank_temperature_status |
enum |
- |
Normal, warning, critical |
hydrogen temp bit or threshold rule |
Safety rule:
Hydrogen leak overrides otherwise normal vehicle, speed, battery, or hydrogen
state. It must be counted independently from generic alarms.
Daily Operation Statistics
Daily statistics are generated by stat_date + vin.
| Internal field |
Type |
Unit |
Meaning |
stat_date |
date |
- |
Statistics date |
vin |
string |
- |
Vehicle VIN |
first_event_time |
instant |
- |
First valid telemetry time |
last_event_time |
instant |
- |
Last valid telemetry time |
online_minutes |
double |
min |
Online duration |
running_minutes |
double |
min |
Running duration |
daily_mileage_km |
double |
km |
Daily mileage |
daily_electricity_kwh |
double |
kWh |
Daily electricity usage |
daily_hydrogen_kg |
double |
kg |
Daily hydrogen usage |
hydrogen_added_kg |
double |
kg |
Refueled hydrogen |
km_per_kg_hydrogen |
double |
km/kg |
Hydrogen efficiency |
kwh_per_100km |
double |
kWh/100km |
Electricity efficiency |
alarm_count |
integer |
- |
Generic alarm count |
tank_safety_alarm_count |
integer |
- |
Tank safety alarm count |
hydrogen_leak_alarm_count |
integer |
- |
Hydrogen leak alarm count |
hydrogen_leak_duration_seconds |
long |
s |
Hydrogen leak duration |
data_quality_level |
enum |
- |
Good, partial, bad |
Implementation Status
RealtimePayload already uses internal operational field names for state,
location, battery, fuel cell, and hydrogen fields.
AlarmPayload carries internal hydrogen safety fields.
Gb32960EventMapper maps GB/T 32960 alarm bits into internal safety fields.
TelemetrySnapshot publishes full-field internal telemetry values through the
Kafka protobuf envelope.
event-history-service, vehicle-state-service, and vehicle-stat-service
consume the same full-field telemetry snapshot contract.
event-history-service CSV export can flatten selected internal fields with
fields=field_a,field_b; media archive references are exposed through
rawArchiveUri by falling back to MediaMeta.archiveRef.