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"}
}