Skip to content

GB/T 32960 Gateway Data Exchange Format

The GB/T 32960 gateway (emqx_gbt32960) bridges GB/T 32960-compliant electric vehicle terminals to EMQX over MQTT. This page defines the JSON message format used for that data exchange.

Protocol Version Support

The gateway supports both gbt32960-2016 and gbt32960-2025 protocol versions. The protocol version is automatically detected from the frame header:

  • gbt32960-2016: Frame header is 0x23 0x23 (ASCII ##)
  • gbt32960-2025: Frame header is 0x24 0x24 (ASCII $$)

Where fields or behaviors differ between versions, this document notes those differences explicitly.

Convention

  • Payload is assembled in JSON format.
  • JSON key names use UpperCamelCase (PascalCase).

Upstream

Data flow: Terminal → emqx_gbt32960 → EMQX

Vehicle Login

Topic: gbt32960/${vin}/upstream/vlogin

json
// gbt32960-2016
{
    "Cmd": 1,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "ICCID": "12345678901234567890",
        "Id": "C",
        "Length": 1,
        "Num": 1,
        "Seq": 1,
        "Time": {
            "Day": 29,
            "Hour": 12,
            "Minute": 19,
            "Month": 12,
            "Second": 20,
            "Year": 12
        }
    }
}
json
// gbt32960-2025
{
    "Cmd": 1,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "ICCID": "12345678901234567890",
        "Seq": 1,
        "Time": {
            "Day": 29,
            "Hour": 12,
            "Minute": 19,
            "Month": 12,
            "Second": 20,
            "Year": 12
        },
        "BmsNum": 2,
        "BatteryPackCounts": [1, 2],
        "BatteryPackEncodings": [ ["encoding-string-bms1-pack1"], ["encoding-string-bms2-pack1", "encoding-string-bms2-pack2"] ]
    }
}

Top-level fields:

FieldTypeDescription
CmdIntegerCommand identifier; 1 means Vehicle Login
EncryptIntegerData encryption method: 1 = no encryption, 2 = RSA, 3 = AES128; 254 = error; 255 = invalid
VinStringVehicle Identification Number (VIN)
DataObjectData unit, JSON object format

Data fields for gbt32960-2016:

FieldTypeDescription
TimeObjectData collection time (Year, Month, Day, Hour, Minute, Second)
SeqIntegerLogin sequence number
ICCIDString20-character SIM card ICCID
NumIntegerNumber of rechargeable energy storage sub-systems; valid range 0–250
LengthIntegerEncoding length of rechargeable energy storage systems; valid range 0–50
IdStringSystem encodings; length = Num × Length

Data fields for gbt32960-2025:

FieldTypeDescription
TimeObjectData collection time (Year, Month, Day, Hour, Minute, Second)
SeqIntegerLogin sequence number
ICCIDString20-character SIM card ICCID
BmsNumIntegerNumber of battery management systems
BatteryPackCountsArrayNumber of battery packs managed by each BMS
BatteryPackEncodingsArray<Array<String>>Battery pack encoding lists per BMS; each encoding is a 24-character string

Vehicle Logout

Topic: gbt32960/${vin}/upstream/vlogout

The Cmd value is 4. All other fields follow the same structure as Vehicle Login:

json
{
    "Cmd": 4,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Seq": 1,
        "Time": {
            "Day": 1,
            "Hour": 2,
            "Minute": 59,
            "Month": 1,
            "Second": 0,
            "Year": 16
        }
    }
}

Real-Time Data Report

Topic: gbt32960/${vin}/upstream/info

Each report can include multiple info items in the Infos array. The Type field distinguishes the info type.

Vehicle Data

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "AcceleratorPedal": 90,
                "BrakePedal": 0,
                "Charging": 1,
                "Current": 15000,
                "DC": 1,
                "Gear": 5,
                "Mileage": 999999,
                "Mode": 1,
                "Resistance": 6000,
                "SOC": 50,
                "Speed": 2000,
                "Status": 1,
                "Type": "Vehicle",
                "Voltage": 5000
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 2,
            "Minute": 59,
            "Month": 1,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; Vehicle for this structure
StatusIntegerVehicle status: 1 = running; 2 = stalled; 3 = other; 254 = error; 255 = invalid
ChargingIntegerCharge state: 1 = parked charging; 2 = driving charging; 3 = not charging; 4 = charge complete; 254 = error; 255 = invalid
ModeIntegerOperating mode: 1 = pure electric; 2 = hybrid; 3 = fuel; 254 = error; 255 = invalid
SpeedIntegerVehicle speed; valid range 0–2200 (0–220.0 km/h); unit: 0.1 km/h
MileageIntegerCumulative mileage; valid range 0–9,999,999 (0–999,999.9 km); unit: 0.1 km
VoltageIntegerTotal voltage; valid range 0–10000 (0–1000 V); unit: 0.1 V
CurrentIntegerTotal current; valid range 0–20000 (offset 1000, representing -1000 A to +1000 A); unit: 0.1 A
SOCIntegerState of charge; valid range 0–100 (0%–100%)
DCIntegerDC/DC status: 1 = working; 2 = disconnected; 254 = error; 255 = invalid
GearIntegerGear position; integer representation of the gear table (see protocol Table A.1)
ResistanceIntegerInsulation resistance; valid range 0–60000 (0–60000 kΩ)
AcceleratorPedalIntegergbt32960-2016 only: Accelerator pedal travel; valid range 0–100
BrakePedalIntegergbt32960-2016 only: Brake pedal state; valid range 0–100

Drive Motor Data

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Motors": [
                    {
                        "CtrlTemp": 125,
                        "DCBusCurrent": 31203,
                        "InputVoltage": 30012,
                        "MotorTemp": 125,
                        "No": 1,
                        "Rotating": 30000,
                        "Status": 1,
                        "Torque": 25000
                    },
                    {
                        "CtrlTemp": 125,
                        "DCBusCurrent": 30200,
                        "InputVoltage": 32000,
                        "MotorTemp": 145,
                        "No": 2,
                        "Rotating": 30200,
                        "Status": 1,
                        "Torque": 25300
                    }
                ],
                "Number": 2,
                "Type": "DriveMotor"
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 2,
            "Minute": 59,
            "Month": 1,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; DriveMotor for this structure
NumberIntegerNumber of drive motors; valid range 1–253
MotorsArrayList of drive motor data

Motor entry fields:

FieldTypeDescription
NoIntegerMotor sequence number; valid range 1–253
StatusIntegerMotor status: 1 = consuming power; 2 = generating; 3 = off; 4 = ready; 254 = error; 255 = invalid
CtrlTempIntegerController temperature; valid range 0–250 (offset 40°C, -40°C to +210°C); unit: 1°C
RotatingIntegerRotor speed; valid range 0–65531 (offset 20000, -20000 to 45531 r/min); unit: 1 r/min
TorqueIntegergbt32960-2016: motor torque; valid range 0–65531 (offset 20000, -2000 to 4553.1 N·m); unit: 0.1 N·m
gbt32960-2025: motor torque; valid range 0–429496729 (offset 200000, -20000 to 229496.729 N·m); unit: 0.001 N·m
MotorTempIntegerMotor temperature; valid range 0–250 (offset 40°C, -40°C to +210°C); unit: 1°C
InputVoltageIntegergbt32960-2016 only: Controller input voltage; valid range 0–60000 (0–6000 V); unit: 0.1 V
DCBusCurrentIntegergbt32960-2016 only: DC bus current; valid range 0–20000 (offset 1000 A, -1000 A to +1000 A); unit: 0.1 A

Fuel Cell Data

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "CellCurrent": 12000,
                "CellVoltage": 10000,
                "DCStatus": 1,
                "FuelConsumption": 45000,
                "H_ConcSensorCode": 11,
                "H_MaxConc": 35000,
                "H_MaxPress": 500,
                "H_MaxTemp": 12500,
                "H_PressSensorCode": 12,
                "H_TempProbeCode": 10,
                "ProbeNum": 2,
                "ProbeTemps": [120, 121],
                "Type": "FuelCell"
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 2,
            "Minute": 59,
            "Month": 1,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; FuelCell for this structure
CellVoltageIntegergbt32960-2016 only: Fuel cell voltage; valid range 0–20000 (0–2000 V); unit: 0.1 V
CellCurrentIntegergbt32960-2016 only: Fuel cell current; valid range 0–20000 (0–2000 A); unit: 0.1 A
FuelConsumptionIntegergbt32960-2016 only: Fuel consumption rate; valid range 0–60000 (0–600 kg/100km); unit: 0.01 kg/100km
ProbeNumIntegergbt32960-2016 only: Total number of fuel cell probes; valid range 0–65531
ProbeTempsArraygbt32960-2016 only: Temperature values for each fuel cell probe
H_MaxTempIntegerMax hydrogen system temperature; valid range 0–2400 (offset 40°C, -40°C to +200°C); unit: 0.1°C
H_TempProbeCodeIntegerProbe code for max hydrogen temperature; valid range 1–252
H_MaxConcIntegerMax hydrogen concentration; valid range 0–60000 (0–50000 mg/kg); unit: 1 mg/kg
H_ConcSensorCodeIntegerSensor code for max hydrogen concentration; valid range 1–252
H_MaxPressIntegerMax hydrogen pressure; valid range 0–1000 (0–100 MPa); unit: 0.1 MPa
H_PressSensorCodeIntegerSensor code for max hydrogen pressure; valid range 1–252
DCStatusIntegerHigh-voltage DC/DC status: 1 = working; 2 = disconnected
RemainingH2Integergbt32960-2025 only: Remaining hydrogen in the hydrogen system; unit: 1 kg
DCDCTempIntegergbt32960-2025 only: High-voltage DCDC temperature; offset 40°C, -40°C to +210°C

Engine Data

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "CrankshaftSpeed": 2000,
                "FuelConsumption": 200,
                "Status": 1,
                "Type": "Engine"
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 22,
            "Minute": 59,
            "Month": 10,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; Engine for this structure
StatusIntegergbt32960-2016 only: Engine status: 1 = running; 2 = off
CrankshaftSpeedIntegerCrankshaft speed; valid range 0–60000 (0–60000 r/min); unit: 1 r/min
FuelConsumptionIntegergbt32960-2016 only: Fuel consumption rate; valid range 0–60000 (0–600 L/100km); unit: 0.01 L/100km

Vehicle Location Data

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Latitude": 100,
                "Longitude": 10,
                "Status": 0,
                "Type": "Location"
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 22,
            "Minute": 59,
            "Month": 10,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; Location for this structure
StatusIntegerPosition status; integer value of all status bits (see protocol Table 15)
CoordinateSystemIntegergbt32960-2025 only: Coordinate system: 1 = WGS-84; 2 = GCJ-02
LongitudeIntegerLongitude in degrees × 10^6; accurate to one millionth of a degree
LatitudeIntegerLatitude in degrees × 10^6; accurate to one millionth of a degree

Extreme Value Data

gbt32960-2016 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "MaxBatteryVoltage": 7500,
                "MaxTemp": 120,
                "MaxTempProbeNo": 12,
                "MaxTempSubsysNo": 14,
                "MaxVoltageBatteryCode": 10,
                "MaxVoltageBatterySubsysNo": 12,
                "MinBatteryVoltage": 2000,
                "MinTemp": 40,
                "MinTempProbeNo": 13,
                "MinTempSubsysNo": 15,
                "MinVoltageBatteryCode": 11,
                "MinVoltageBatterySubsysNo": 13,
                "Type": "Extreme"
            }
        ],
        "Time": {
            "Day": 30,
            "Hour": 12,
            "Minute": 22,
            "Month": 5,
            "Second": 59,
            "Year": 17
        }
    }
}
FieldTypeDescription
TypeStringInfo type; Extreme for this structure
MaxVoltageBatterySubsysNoIntegerSub-system number with highest battery voltage; valid range 1–250
MaxVoltageBatteryCodeIntegerBattery cell code with highest voltage; valid range 1–250
MaxBatteryVoltageIntegerHighest individual cell voltage; valid range 0–15000 (0–15 V); unit: 0.001 V
MinVoltageBatterySubsysNoIntegerSub-system number with lowest battery voltage; valid range 1–250
MinVoltageBatteryCodeIntegerBattery cell code with lowest voltage; valid range 1–250
MinBatteryVoltageIntegerLowest individual cell voltage; valid range 0–15000 (0–15 V); unit: 0.001 V
MaxTempSubsysNoIntegerSub-system number with highest temperature; valid range 1–250
MaxTempProbeNoIntegerProbe number with highest temperature; valid range 1–250
MaxTempIntegerHighest temperature; valid range 0–250 (offset 40, -40°C to +210°C)
MinTempSubsysNoIntegerSub-system number with lowest temperature; valid range 1–250
MinTempProbeNoIntegerProbe number with lowest temperature; valid range 1–250
MinTempIntegerLowest temperature; valid range 0–250 (offset 40, -40°C to +210°C)

Alarm Data

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "FaultChargeableDeviceNum": 1,
                "FaultChargeableDeviceList": ["00C8"],
                "FaultDriveMotorNum": 0,
                "FaultDriveMotorList": [],
                "FaultEngineNum": 1,
                "FaultEngineList": ["006F"],
                "FaultOthersNum": 0,
                "FaultOthersList": [],
                "GeneralAlarmFlag": 3,
                "MaxAlarmLevel": 1,
                "Type": "Alarm"
            }
        ],
        "Time": {
            "Day": 20,
            "Hour": 22,
            "Minute": 23,
            "Month": 12,
            "Second": 59,
            "Year": 17
        }
    }
}
FieldTypeDescription
TypeStringInfo type; Alarm for this structure
MaxAlarmLevelIntegerHighest alarm level. gbt32960-2016: valid range 0–3 ("0" = no fault, "1" = level 1 fault).
gbt32960-2025: valid range 0–4, new value "4" = thermal event fault
GeneralAlarmFlagIntegerGeneral alarm flag bits (see protocol Table 18)
FaultChargeableDeviceNumIntegerTotal faults in rechargeable energy storage devices; valid range 0–252
FaultChargeableDeviceListArrayFault code list for rechargeable energy storage devices
FaultDriveMotorNumIntegerTotal drive motor faults; valid range 0–252
FaultDriveMotorListArrayDrive motor fault code list
FaultEngineNumIntegerTotal engine faults; valid range 0–252
FaultEngineListArrayEngine fault code list
FaultOthersNumIntegerTotal other faults
FaultOthersListArrayOther fault code list
FaultGeneralNumIntegergbt32960-2025 only: Total general fault count
FaultGeneralListArraygbt32960-2025 only: General fault list; each entry is a JSON object {"No": integer, "Level": integer}

Rechargeable Energy Storage Voltage Data

gbt32960-2016 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Number": 2,
                "SubSystems": [
                    {
                        "CellsTotal": 2,
                        "CellsVoltage": [5000],
                        "ChargeableCurrent": 10000,
                        "ChargeableSubsysNo": 1,
                        "ChargeableVoltage": 5000,
                        "FrameCellsCount": 1,
                        "FrameCellsIndex": 0
                    },
                    {
                        "CellsTotal": 2,
                        "CellsVoltage": [5001],
                        "ChargeableCurrent": 10001,
                        "ChargeableSubsysNo": 2,
                        "ChargeableVoltage": 5001,
                        "FrameCellsCount": 1,
                        "FrameCellsIndex": 1
                    }
                ],
                "Type": "ChargeableVoltage"
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 22,
            "Minute": 59,
            "Month": 10,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; ChargeableVoltage for this structure
NumberIntegerNumber of rechargeable energy storage sub-systems; valid range 1–250
SubSystemsArrayList of sub-system voltage data

Sub-system voltage fields:

FieldTypeDescription
ChargeableSubsysNoIntegerSub-system number; valid range 1–250
ChargeableVoltageIntegerSub-system voltage; valid range 0–10000 (0–1000 V); unit: 0.1 V
ChargeableCurrentIntegerSub-system current; valid range 0–20000 (offset 1000 A, -1000 A to +1000 A); unit: 0.1 A
CellsTotalIntegerTotal number of battery cells; valid range 1–65531
FrameCellsIndexIntegerStarting cell index (1-based) of the cells reported in this frame; valid range 1–65531. Frames are split when the total cell count exceeds 200 per frame.
FrameCellsCountIntegerNumber of cells in this frame; valid range 1–200
CellsVoltageArrayIndividual cell voltages; valid range 0–60000 (0–60.000 V); unit: 0.001 V

Rechargeable Energy Storage Temperature Data

gbt32960-2016 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Number": 2,
                "SubSystems": [
                    {
                        "ChargeableSubsysNo": 1,
                        "ProbeNum": 10,
                        "ProbesTemp": [0, 0, 0, 0, 0, 0, 0, 0, 19, 136]
                    },
                    {
                        "ChargeableSubsysNo": 2,
                        "ProbeNum": 1,
                        "ProbesTemp": [100]
                    }
                ],
                "Type": "ChargeableTemp"
            }
        ],
        "Time": {
            "Day": 1,
            "Hour": 22,
            "Minute": 59,
            "Month": 10,
            "Second": 0,
            "Year": 16
        }
    }
}
FieldTypeDescription
TypeStringInfo type; ChargeableTemp for this structure
NumberIntegerNumber of sub-systems in the temperature info list
SubSystemsArrayList of sub-system temperature data

Sub-system temperature fields:

FieldTypeDescription
ChargeableSubsysNoIntegerSub-system number; valid range 1–250
ProbeNumIntegerNumber of temperature probes in this sub-system
ProbesTempArrayTemperature readings for each probe

Power Battery Pack Voltage Data

gbt32960-2025 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Type": "MinVoltageOfPowerBattery",
                "Number": 2,
                "SubSystems": [
                    {
                        "BatteryPackNo": 1,
                        "BatteryPackVoltage": 3000,
                        "BatteryPackCurrent": 1000,
                        "MinParallelUnitTotal": 2,
                        "MinParallelUnitVoltage": [1200, 1201]
                    },
                    {
                        "BatteryPackNo": 2,
                        "BatteryPackVoltage": 3100,
                        "BatteryPackCurrent": 1100,
                        "MinParallelUnitTotal": 2,
                        "MinParallelUnitVoltage": [1300, 1301]
                    }
                ]
            }
        ],
        "Time": {
            "Day": 13,
            "Hour": 15,
            "Minute": 30,
            "Month": 11,
            "Second": 0,
            "Year": 25
        }
    }
}
FieldTypeDescription
TypeStringMinVoltageOfPowerBattery
NumberIntegerNumber of power battery packs
SubSystemsArrayList of battery packs
BatteryPackNoIntegerBattery pack sequence number
BatteryPackVoltageIntegerBattery pack voltage; unit: 0.1 V
BatteryPackCurrentIntegerBattery pack current; offset 1000 A; unit: 0.1 A
MinParallelUnitTotalIntegerTotal number of minimum parallel units
MinParallelUnitVoltageArrayVoltage list for minimum parallel units; offset 4 V; unit: 1 mV

Power Battery Pack Temperature Data

gbt32960-2025 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Type": "TempOfPowerBattery",
                "Number": 2,
                "SubSystems": [
                    {
                        "BatteryPackNo": 1,
                        "ProbeNum": 5,
                        "ProbesTemp": [120, 121, 122, 123, 124]
                    },
                    {
                        "BatteryPackNo": 2,
                        "ProbeNum": 3,
                        "ProbesTemp": [130, 131, 132]
                    }
                ]
            }
        ],
        "Time": {
            "Day": 13,
            "Hour": 15,
            "Minute": 30,
            "Month": 11,
            "Second": 0,
            "Year": 25
        }
    }
}
FieldTypeDescription
TypeStringTempOfPowerBattery
NumberIntegerNumber of power battery packs
SubSystemsArrayList of battery packs
BatteryPackNoIntegerBattery pack sequence number
ProbeNumIntegerNumber of temperature probes
ProbesTempArrayProbe temperature list; offset 40°C; unit: 1°C

Fuel Cell Stack Data

gbt32960-2025 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Type": "FuelCellStack",
                "Number": 1,
                "Stacks": [
                    {
                        "FuelCellStackNo": 1,
                        "Voltage": 2000,
                        "Current": 300,
                        "H2InletPressure": 1200,
                        "AirInletPressure": 1100,
                        "AirInletTemp": 50,
                        "StackProbeNum": 3,
                        "StackProbeTemp": [100, 101, 102]
                    }
                ]
            }
        ],
        "Time": {
            "Day": 13,
            "Hour": 15,
            "Minute": 30,
            "Month": 11,
            "Second": 0,
            "Year": 25
        }
    }
}
FieldTypeDescription
TypeStringFuelCellStack
NumberIntegerNumber of fuel cell stacks
StacksArrayList of fuel cell stacks
FuelCellStackNoIntegerFuel cell stack sequence number
VoltageIntegerFuel cell stack voltage; unit: 0.1 V
CurrentIntegerFuel cell stack current; unit: 0.1 A
H2InletPressureIntegerHydrogen inlet pressure; unit: 0.1 bar
AirInletPressureIntegerAir inlet pressure; unit: 0.1 bar
AirInletTempIntegerAir inlet temperature; offset 40°C; unit: 1°C
StackProbeNumIntegerNumber of stack temperature probes
StackProbeTempArrayStack temperature probe readings

Supercapacitor Data

gbt32960-2025 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Type": "SuperCapacitor",
                "ManagerSysNo": 1,
                "TotalVoltage": 1000,
                "TotalCurrent": 2000,
                "CellsTotal": 3,
                "CellsVoltage": [1200, 1201, 1202],
                "ProbeNum": 2,
                "ProbeTemp": [100, 101]
            }
        ],
        "Time": {
            "Day": 13,
            "Hour": 15,
            "Minute": 30,
            "Month": 11,
            "Second": 0,
            "Year": 25
        }
    }
}
FieldTypeDescription
TypeStringSuperCapacitor
ManagerSysNoIntegerManagement system number
TotalVoltageIntegerTotal voltage; unit: 0.1 V
TotalCurrentIntegerTotal current; offset 1000 A; unit: 0.1 A
CellsTotalIntegerTotal number of cells
CellsVoltageArrayCell voltage list; unit: 1 mV
ProbeNumIntegerNumber of temperature probes
ProbeTempArrayProbe temperature list; offset 40°C; unit: 1°C

Supercapacitor Extreme Value Data

gbt32960-2025 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Type": "SuperCapacitorExtreme",
                "MaxVoltageManagerSysNo": 1,
                "MaxVoltageCellCode": 10,
                "MaxVoltageCellValue": 7500,
                "MinVoltageManagerSysNo": 2,
                "MinVoltageCellCode": 11,
                "MinVoltageCellValue": 2000,
                "MaxTempManagerSysNo": 3,
                "MaxTempProbeCode": 12,
                "MaxTempValue": 120,
                "MinTempManagerSysNo": 4,
                "MinTempProbeCode": 13,
                "MinTempValue": 40
            }
        ],
        "Time": {
            "Day": 13,
            "Hour": 15,
            "Minute": 30,
            "Month": 11,
            "Second": 0,
            "Year": 25
        }
    }
}
FieldTypeDescription
TypeStringSuperCapacitorExtreme
MaxVoltageManagerSysNoIntegerManagement system number with max voltage
MaxVoltageCellCodeIntegerCell code with max voltage
MaxVoltageCellValueIntegerMax voltage value; unit: 1 mV
MinVoltageManagerSysNoIntegerManagement system number with min voltage
MinVoltageCellCodeIntegerCell code with min voltage
MinVoltageCellValueIntegerMin voltage value; unit: 1 mV
MaxTempManagerSysNoIntegerManagement system number with max temperature
MaxTempProbeCodeIntegerProbe code with max temperature
MaxTempValueIntegerMax temperature value
MinTempManagerSysNoIntegerManagement system number with min temperature
MinTempProbeCodeIntegerProbe code with min temperature
MinTempValueIntegerMin temperature value

Digital Signature

gbt32960-2025 only

json
{
    "Cmd": 2,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Infos": [
            {
                "Type": "Signature",
                "SignatureType": 1,
                "RLength": 32,
                "RValue": "5256414C5256414C5256414C5256414C5256414C5256414C5256414C5256414C",
                "SLength": 32,
                "SValue": "5356414C5356414C5356414C5356414C5356414C5356414C5356414C5356414C"
            }
        ],
        "Time": {
            "Day": 13,
            "Hour": 15,
            "Minute": 30,
            "Month": 11,
            "Second": 0,
            "Year": 25
        }
    }
}
FieldTypeDescription
TypeStringSignature
SignatureTypeIntegerSignature type
RLengthIntegerLength of R value
RValueStringR value (hex-encoded string)
SLengthIntegerLength of S value
SValueStringS value (hex-encoded string)

Historical Data Retransmission

Topic: gbt32960/${vin}/upstream/reinfo

Data format: same as Real-Time Data Report.

Activation

gbt32960-2025 only

Topic: gbt32960/${vin}/upstream/activation

json
{
    "Cmd": 9,
    "Encrypt": 1,
    "Vin": "VIN12345678901234",
    "Data": {
        "Time": {
            "Day": 1,
            "Hour": 12,
            "Minute": 0,
            "Month": 1,
            "Second": 0,
            "Year": 25
        },
        "ChipID": "CHIP123456789012",
        "PubKeyLen": 15,
        "PubKey": "5055424C49434B4559313233343536",
        "VIN": "VIN12345678901234",
        "Signature": {
            "SignatureType": 1,
            "RLength": 32,
            "RValue": "5252525252525252525252525252525252525252525252525252525252525252",
            "SLength": 32,
            "SValue": "5353535353535353535353535353535353535353535353535353535353535353"
        }
    }
}
FieldTypeDescription
CmdIntegerCommand identifier; 9 = Activation
ChipIDString16-byte chip identifier
PubKeyLenIntegerPublic key length
PubKeyStringPublic key (hex-encoded)
VINStringVehicle Identification Number
SignatureObjectDigital signature (same structure as Signature info type)

Downstream

Request flow: EMQX → emqx_gbt32960 → Terminal

Response flow: Terminal → emqx_gbt32960 → EMQX

Downstream topic: gbt32960/${vin}/dnstream

Upstream response topic: gbt32960/${vin}/upstream/response

Parameter Query

Request:

json
{
    "Action": "Query",
    "Total": 2,
    "Ids": ["0x01", "0x02"]
}
FieldTypeDescription
ActionStringCommand type; Query for this operation
TotalIntegerTotal number of parameters to query
IdsArrayList of parameter IDs; see protocol Table B.10 for ID meanings

Response:

json
{
    "Cmd": 128,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Total": 2,
        "Params": [
            {"0x01": 6000},
            {"0x02": 10}
        ],
        "Time": {
            "Day": 2,
            "Hour": 11,
            "Minute": 12,
            "Month": 2,
            "Second": 12,
            "Year": 17
        }
    }
}

Parameter Setting

Request:

json
{
    "Action": "Setting",
    "Total": 2,
    "Params": [{"0x01": 5000},
               {"0x02": 200}]
}
FieldTypeDescription
ActionStringCommand type; Setting for this operation
TotalIntegerTotal number of parameters to set
ParamsArrayList of parameter IDs and their values to set

Response:

json
{
    "Cmd": 129,
    "Encrypt": 1,
    "Vin": "1G1BL52P7TR115520",
    "Data": {
        "Total": 2,
        "Params": [
            {"0x01": 5000},
            {"0x02": 200}
        ],
        "Time": {
            "Day": 2,
            "Hour": 11,
            "Minute": 12,
            "Month": 2,
            "Second": 12,
            "Year": 17
        }
    }
}

Terminal Control

Different commands carry different parameters; commands with no parameters omit the Param field.

Remote Upgrade request:

json
{
    "Action": "Control",
    "Command": "0x01",
    "Param": {
        "DialingName": "hz203",
        "Username": "user001",
        "Password": "password01",
        "Ip": "192.168.199.1",
        "Port": 8080,
        "ManufacturerId": "BMWA",
        "HardwareVer": "1.0.0",
        "SoftwareVer": "1.0.0",
        "UpgradeUrl": "ftp://emqtt.io/ftp/server",
        "Timeout": 10
    }
}
FieldTypeDescription
ActionStringCommand type; Control for this operation
CommandStringCommand ID (see protocol Table B.15)
ParamObjectCommand parameters (varies by command; omitted when empty)

Vehicle terminal shutdown (0x02, no parameters):

json
{
    "Action": "Control",
    "Command": "0x02"
}

Vehicle terminal alarm (0x06):

json
{
    "Action": "Control",
    "Command": "0x06",
    "Param": {"Level": 0, "Message": "alarm message"}
}