TCP Relative Time Events

This catalog lists every relative time TCP event type with an example event.

All of the examples in this section show events sent from a device with a Danlaw TCP relative time configuration.

Table of Contents

📘

Platform-Appended Header Not Included in Example Events

The header that the platform adds to every event is not included in the examples for space reasons.

Relative Time Trip Start

The relative time Trip Start event provides a list of all the PIDs that the vehicle supports collection on. It also provides a list of the PIDs that the Datalogger is configured to collect from. The numbers are from the standard OBD-II regulation (e.g. 13 equals Vehicle Speed, etc.)

{
  "header": {...},
  "body": {
    "type": "TripStartRelativeTime",   
    "timestamp": "2017-02-13T15:06:34-05:00",
    "tripNumber": 3,
    "vin": "2FTZF1864WCB87940",
    "vehicleProtocol": "CAN11Bit",    
    "odometer": 8600,
    "obdSupportedPids": {
      "O2S7EquivalenceRatioVolts": false,
      "O2S4EquivalenceRatioVolts": false,
      "EngineCoolantTemp": true,
      "MonitorStatusDriveCycle": true,
      "EngineRpm": true,
      "CatalystTempB1S1": true,
      "AcceleratorPedalPositionE": true,
      "Blank1": false,
      "B2S2OxygenSensorVoltageShortTermFuelTrim": true,
      "IntakeAirTemp": true,
      "B2S1OxygenSensorVoltageShortTermFuelTrim": true,
      "O2S5EquivalenceRatioVolts": false,
      "ControlModuleVoltage": true,
      "TimingAdvance": true,
      "FuelType": true,
      "O2S6EquivalenceRatioCurrent": false,
      "O2S3EquivalenceRatioCurrent": false,
      "EvapSystemVaporPressure": false,
      "CommandEgr": false,
      "B1S4OxygenSensorVoltageShortTermFuelTrim": true,
      "B1S1OxygenSensorVoltageShortTermFuelTrim": true,
      "O2S8EquivalenceRatioCurrent": false,
      "MaxOfMaf": false,
      "FuelRailPressure": true,
      "BarometricPressure": true,
      "CatalystTempB1S2": false,
      "AcceleratorPedalPositionF": false,
      "O2S1EquivalenceRatioVolts": false,
      "PidsSupported65_96": true,
      "RunTimeSinceEngineStart": true,
      "MilStatus": true,
      "HybridBatteryPackLifeRemaining": false,
      "OxygenSensorsPresent2": true,
      "NumWarmupsSinceCodesCleared": true,
      "Blank2": true,
      "AmbientAirTemperature": true,
      "EngineFuelRate": false,
      "DistanceTraveledSinceCodesCleared": true,
      "CommandEquivalenceRatio": true,
      "ObdStandards": true,
      "B2S4OxygenSensorVoltageShortTermFuelTrim": true,
      "RelativeAcceleratorPedalPosition": false,
      "LongTermSecondaryOxygenSensorTrimB2B4": true,
      "EngineOilTemp": false,
      "B1S2OxygenSensorVoltageShortTermFuelTrim": true,
      "FuelRailPressureRelative": false,
      "O2S1EquivalenceRatioCurrent": true,
      "EthanolFuelPrct": false,
      "O2S7EquivalenceRatioCurrent": false,
      "FreezeDtc": true,
      "B1S3OxygenSensorVoltageShortTermFuelTrim": true,
      "B2S3OxygenSensorVoltageShortTermFuelTrim": true,
      "O2S2EquivalenceRatioCurrent": false,
      "ThrottlePosition": true,
      "CommandedSecondaryAirStatus": true,
      "MaxOfErOsvOscMap": false,
      "O2S2EquivalenceRatioVolts": false,
      "OxygenSensorsPresent": true,
      "O2S4EquivalenceRatioCurrent": false,
      "O2S8EquivalenceRatioVolts": false,
      "CalcEngineLoad": true,
      "LongTermFuelPrctB1": true,
      "O2S5EquivalenceRatioCurrent": true,
      "ShortTermSecondaryOxygenSensorTrimB1B3": false,
      "RelativeThrottlePosition": true,
      "FuelLevelInput": false,
      "CatalystTempB2S1": true,
      "PidsSupported33_64": true,
      "AbsoluteLoadValue": true,
      "MafAirFlowRate": true,
      "AuxiliaryInputStatus": true,
      "FuelInjectionTiming": false,
      "AbsEvapVaporPressure": false,
      "ShortTermSecondaryOxygenSensorTrimB2B4": false,
      "EvapVaporPressure": false,
      "FuelRailPressureAbs": false,
      "CommandThrottleActuator": true,
      "ShortTermFuelPrctB2": true,
      "LongTermSecondaryOxygenSensorTrimB1B3": true,
      "ShortTermFuelPrctB1": true,
      "LongTermFuelPrctB2": true,
      "O2S6EquivalenceRatioVolts": false,
      "AbsoluteThrottlePositionC": false,
      "DistanceTraveledMil": true,
      "CatalystTempB2S2": false,
      "TimeRunMilOn": false,
      "IntakeManifoldAbsPressure": true,
      "TimeSinceTroubleCodesCleared": false,
      "CommandedEvaporativePurge": true,
      "FuelStatus": true,
      "AcceleratorPedalPositionD": true,
      "O2S3EquivalenceRatioVolts": false,
      "VehicleSpeed": true,
      "EgrError": false,
      "FuelPressure": true,
      "AbsoluteThrottlePositionB": true
    },
    "pidList": [
      13,
      12,
      128,
      131
    ]
  }
}
- type: (enum[string]) - Indicates a type for this object.
- timestamp: `(string) - ISO 8601-formatted time stamp showing when the event was produced on the device.
- tripNumber: (number) - A sequential number that increases after each trip. Resets after 65,536 trips.
- vin: (string) - Vehicle Identification Number provided by the vehicle. Empty string when VIN is unavailable.
- vehicleProtocol: (enum[string]) - The protocol detected on the vehicle bus.
  - Members:
    - `VPW1`
    - `PWM`
    - `ISO9141`
    - `ISO14230`
    - `ISO14230FastInit`
    - `CAN11Bit`
    - `CAN29Bit`
- odometer: (number) - Vehicle odometer or device-calculated odometer.
- obdSupportedPids: (object) - A map of PID names to boolean. True means the vehicle can provide data for this PID to the device. See the example for the list of PID names.
- pidList: (array[number]) - List of PIDs that the device uses to provide data  during a trip. This list does not indicate the presence of these PIDs in trip data.

Relative Time Trip Data Event

Trip Data events provide OBD-II PID readings at configurable intervals or triggers. Depending on the collection settings in a device's configuration, data from many different PIDs could be contained in the pidData object.

{
  "header": {...},
  "body": {
    "type": "TripData",
    "timestamp": "2017-06-06T12:51:22-04:00",
    "tripNumber": 423,
    "pidData": {
      "EngineCoolantTemp": 60,
      "EngineRpm": 1250,
      "GpsReading": {
        "heading": 0,
        "horizontalDilutionOfPrecision": 0,
        "latitude": 42.47858,
        "longitude": -83.45230,
        "numberOfSatellites": 7,
        "hemisphere": "NorthWest",
        "fixQuality": "Standard"
      },
      "CalcEngineLoad": 35.29411697387695,
      "FuelStatus": {
        "system2Status": {
          "closedLoopO2SensorFault": true,
          "openLoopSystemFault": false,
          "openLoopDrivingConditions": true,
          "openLoopNotYetSatisfied": false,
          "closedLoopO2SensorFuelControl": false
        },
        "system1Status": {
          "openLoopSystemFault": true,
          "openLoopDrivingConditions": false,
          "closedLoopO2SensorFault": false,
          "closedLoopO2SensorFuelControl": false,
          "openLoopNotYetSatisfied": false
        }
      },
      "VehicleSpeed": 10
    }
  }
}
- body: (object)
  - type: (string) - Indicates a type for this object.
  - timestamp: (string) - ISO 8601]-formatted time stamp showing when the event was produced on the device.
  - tripNumber: (number) - A sequential number that increases after each trip. Resets after 65,536 trips.
  - pidData: (object) - Contains the data for individual PIDs that were configured and available at the time the event was generated by the device. See list of PID data types below.

PID Data Types

The collection of PID data depends on 3 factors:

  1. Vehicle support for data collection on each PID.
    Each vehicle is different and may not support collection of all standard OBD-II PIDs.

  2. Datalogger configuration, which tells the device which PIDs to try to collect from.
    The datalogger can be configured to collect data from a maximum of 32 PIDs.

  3. Availability of the vehicle component at the request time.
    The appearance of any PID data in a Trip Data event is uncertain, as it depends on whether the component providing the data was available to answer the device's request at the time. If the component was available, the data appears in the pidData object inside the Trip Data event.

PID List

(PID 0) PIDs Supported 1-32

This ordered list of PIDs 1-32 provides a boolean value to indicate whether the
vehicle supports providing data for each PID number.

{
  "SupportedPids1to32": [
    false,
    false,
    true,
    true,
    true,
    false,
    true,
    true,
    true,
    false,
    true,
    false,
    true,
    false,
    false,
    false,
    true,
    false,
    true,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true
  ]
}
- SupportedPids1to32: (array[boolean]) - Each element in this ordered list indicates vehicle support for data collection on the corresponding PID.

(PID 1) MIL Status

Describes the status of the Malfunction Indicator Lamp, the number of current emissions-related DTCs in the vehicle, and gives information about the availability and completeness of certain on-board tests.

{
  "MilStatus": {
    "commandedOn": true,
    "numCodes": 2,
    "statusSupported": {
      "comprehensiveMonitoringSupported": false,      
      "comprehensiveMonitoringStatus": false,
      "fuelSystemMonitoringSupported": true,      
      "fuelSystemMonitoringStatus": true,
      "misfireMonitoringSupported": false,      
      "misfireMonitoringStatus": false,
      "egrSystemMonitoringStatus1": true,      
      "egrSystemMonitoringStatus2": true,
      "oxygenSensorHeaterMonitoringStatus1": false,
      "oxygenSensorHeaterMonitoringStatus2": false,      
      "oxygenSensorMonitoringStatus1": true,
      "oxygenSensorMonitoringStatus2": true,      
      "acSystemRefrigerantMonitoringStatus1": false,
      "acSystemRefrigerantMonitoringStatus2": false,      
      "secondaryAirSystemMonitoringStatus1": true,
      "secondaryAirSystemMonitoringStatus2": false,      
      "evaporativeSystemMonitoringStatus1": false,
      "evaporativeSystemMonitoringStatus2": false,
      "heatedCatalystMonitoringStatus1": true,   
      "heatedCatalystMonitoringStatus2": true,
      "catalystMonitoringStatus1": false,
      "catalystMonitoringStatus2": false
    }
  }
}
- MilStatus: (object)
  - commandedOn: (boolean) - Whether the malfunction indicator lamp was commanded to turn on by the vehicle.
    - Members:
      - `true` - Indicates that the lamp was commanded to turn on by one of the vehicle's computers.
      - `false` - Probably indicates that a lamp is on because of a faulty wire in the dashboard.
  - numCodes: (number) - Number of current emissions-related diagnostic trouble codes, not just the code(s) triggering the MIL.
  - statusSupported: (object) - Describes the vehicle's support for reporting on its onboard tests and, if supported, whether each test was completed or not.
    - comprehensiveMonitoringSupported: (boolean) - Indicates whether the components test is supported.
    - comprehensiveMonitoringStatus: (boolean) - Indicates whether the components test was completed.     
    - fuelSystemMonitoringSupported: (boolean) - Indicates whether the components onboard test is supported.
    - fuelSystemMonitoringStatus: (boolean) - Indicates whether the fuel system monitoring test was completed.     
    - misfireMonitoringSupported: (boolean) - Indicates whether the misfire monitoring test is supported.
    - misfireMonitoringStatus: (boolean) - Indicates whether the misfire monitoring test was completed.    
    - egrSystemMonitoringStatus1: (boolean) - Indicates whether the EGR monitoring test is supported.
    - egrSystemMonitoringStatus2: (boolean) - Indicates whether the EGR monitoring test was completed.     
    - oxygenSensorHeaterMonitoringStatus1: (boolean) - Indicates whether the oxygen sensor heater monitoring test is supported.
    - oxygenSensorHeaterMonitoringStatus2: (boolean) - Indicates whether the misfire monitoring test was completed.     
    - oxygenSensorMonitoringStatus1: (boolean) - Indicates whether the oxygen sensor monitoring test is supported.
    - oxygenSensorMonitoringStatus2: (boolean) - Indicates whether the oxygen sensor monitoring test was completed.     
    - acSystemRefrigerantMonitoringStatus1: (boolean) - Indicates whether the A/C system monitoring test is supported.
    - acSystemRefrigerantMonitoringStatus2: (boolean) - Indicates whether the A/C system monitoring test was completed.     
    - secondaryAirSystemMonitoringStatus1: (boolean) - Indicates whether the secondary air system monitoring test is supported.
    - secondaryAirSystemMonitoringStatus2: (boolean) - Indicates whether the secondary air system monitoring test was completed.     
    - evaporativeSystemMonitoringStatus1: (boolean) - Indicates whether the evap system monitoring test is supported.
    - evaporativeSystemMonitoringStatus2: (boolean) - Indicates whether the evap monitoring test was completed.    
    - heatedCatalystMonitoringStatus1: (boolean) - Indicates whether the heated catalyst monitoring test is supported.
    - heatedCatalystMonitoringStatus2: (boolean) - Indicates whether the heated catalyst monitoring test was completed.     
    - catalystMonitoringStatus1: (boolean) - Indicates whether the catalyst monitoring test is supported. 
    - catalystMonitoringStatus2: (boolean) - Indicates whether the catalyst monitoring test was completed.

(PID 2) Freeze DTC

Provides the DTC that triggered a freeze frame data storage.

A freeze frame is a data table that provides a snapshot of the vehicle conditions that
were present when an emissions-related DTC was stored. DataLogger cannot obtain the data table,
only the DTC that triggered it.

{
  "FreezeFrameTroubleCode": "B1111"
}
- FreezeFrameTroubleCode: (string) - DTC that triggered a freeze frame data storage.

(PID 3) Fuel System Status

The fuel system status shows whether there were any errors or conditions affecting the fuel feedback control loop.

Open loop refers to a state of the fuel system when the computer is not using input from engine sensors to regulate the air-fuel ratio, and orders a fixed, rich fuel mixture.

Closed loop is the state of the fuel system when the computer is using feedback from the engine sensors to regulate the air-fuel ratio and enhance efficiency.

{
  "FuelStatus": {
    "system2Status": {
      "closedLoopO2SensorFault": true,
      "openLoopSystemFault": false,
      "openLoopDrivingConditions": false,
      "closedLoopO2SensorFuelControl": false,
      "openLoopNotYetSatisfied": false
    },
    "system1Status": {
      "closedLoopO2SensorFault": false,
      "openLoopSystemFault": true,
      "openLoopDrivingConditions": false,
      "closedLoopO2SensorFuelControl": false,
      "openLoopNotYetSatisfied": false
    }
  }
}
- FuelStatus (object)
  - system2Status (object)
    - closedLoop02SensorFault: (boolean)
      - Members:
        - true - Indicates that the computer thinks there is a problem with one of the oxygen sensors. Vehicle will continue to maintain a closed loop state, but with “fault” indicated.
        - false - No problem indicated with the oxygen sensors. The expected value for this field in a healthy vehicle.
    - openLoopSystemFault: (boolean)
      - Members:
        - true - Indicates that the processor thinks there is a problem with multiple engine sensors. Vehicle will maintain an open loop state.
        - false - No problem indicated with any sensors. The expected value for this field in a healthy vehicle.
    - openLoopDrivingConditions: (boolean)
      - Members:
        - true - Indicates that open loop state is maintained due to driving conditions (e.g. power enrichment, enleanment).
        - false - No driving conditions are triggering an open loop. The expected value for this field in a healthy vehicle.
    - closedLoopO2SensorFuelControl: (boolean)
      - Members:
        - true - Indicates that the vehicle is using oxygen sensors as feedback for air-fuel ratio regulation. The expected value for this field in a healthy vehicle.
        - false - Vehicle is not using the oxygen sensors as feedback for air-fuel ratio regulation.
    - openLoopNotYetSatisfied: (boolean)
      - Members:
        - true - Vehicle is pending use of the oxygens sensors as feedback for air-fuel ratio regulation (possibly because the engine is cold or because the computer has been reset or one of the oxygen sensors has been recently replaced). 
        - false - Vehicle is not pending use of the oxygen sensors.

(PID 4) Calculated Engine Load

{
  "CalcEngineLoad": 67
}
- CalcEngineLoad: (number) - Amount of peak available torque in percentage.

(PID 5) Engine Coolant Temperature

The engine coolant temperature is used as feedback to adjust engine controls such as fuel injection and ignition timing.

Values for this field range from -40 to 215.

{
  "EngineCoolantTemp": 93
}
- EngineCoolantTemp: (number) - Temperature of engine coolant in degrees Celsius.

(PID 6-9) Fuel Percent Trim (Short, Long) Banks 1-2

Short-term fuel trim indicates the instantaneous effort of the computer to adjust the air-fuel ratio. Short-term fuel trim is not stored in memory and resets to 0 at the beginning of every trip.

Healthy values for this field typically oscillate between a negative integer and a corresponding postive integer (e.g. -10 and 10).

Long-term fuel trim is calculated over time while the fuel system is in a closed loop state and is stored in the keep-alive memory. In some vehicles, this value is used for open loop fuel calculations (like start-up and wide-open throttle). Long-term fuel trim is a coarser adjustment than short-term, and works to keep short-term fuel trim within specification. Once the vehicle has learned its typical range, it will monitor long-term fuel trim for adherence to this range as an indicator of engine health.

Healthy values for this field typically oscillate between a negative integer and a corresponding postive integer (e.g. -10 and 10).

Values for these fields range from -100 to 99.25.

  • Value = 0 indicates no change to air-fuel ratio.
  • Value > 0 indicates an effort to richen the mixture (decrease the air-fuel ratio).
  • Value < 0 indicates an effor to make the mixture leaner (increase the air-fuel ratio).

There are 4 PIDs that provide this information:

  • (PID 6) ShortTermFuelPrctTrimB1
  • (PID 7) ShortTermFuelPrctTrimB2
  • (PID 8) LongTermFuelPrctTrimB1
  • (PID 9) LongTermFuelPrctTrimB2
{
  "ShortTermFuelPrctTrimB1": 9.2
}
- ShortTermFuelPrctTrimB1: (number) - The short-term fuel trim in Bank 1 in percentage.

(PID 10) Fuel Pressure

The pressure of the fuel in the fuel line. Location of this fuel pressure sensors varies by make and model.

Values for this field range from 0 to 765.

{
  "FuelPressure": 312
}
-  FuelPressure: (number) - Pressure in the fuel line in kilopascals.

(PID 11) Intake Manifold Absolute Pressure

Pressure inside the intake manifold (MAP) is used to calculate the mass flowrate of air into the engine (in conjunction with other sensor readings), which is used to adjust engine controls such as fuel trim and ignition timing.

When the engine is not running, the pressure in the intake manifold is the same as the outside barometric pressure (approx. 101.325 kPa). At engine start, a vacuum is created inside the manifold by the pumping action of the pistons and the air flow restriction created by the throttle plate, and the pressure drops. At wide-open throttle or under light loads, pressure inside the intake manifold nearly equals the outside barometric pressure.

Data from this sensor can be used similarly to the mass air flow (MAF) sensor in PID 16. Most vehicles use either a MAP or a MAF sensor to adjust fuel trim and ignition timing, not both.

Values for this field range from 0 to 255.

{
  "IntakeManifoldAbsPressure": 200
}
-  IntakeManifoldAbsPressure: (number) - Air pressure in the intake manifold in kilopascals.

(PID 12) Engine RPM

Engine RPM refers to the number of rotations of the engine's crank shaft in a minute.

Values for this field range from 0 to 16,383.

{
  "EngineRpm": 2000
}
-  EngineRpm: (number) - Number of rotations of the crank shaft measured in revolutions per minute.

(PID 13) Vehicle Speed

The speed of the vehicle reported from the vehicle speed sensor in the transmission. Note: This speed is generally lower than the speed displayed on the speedometer.

Values for this field range from 0 to 255.

{
  "VehicleSpeed": 85
}
-  VehicleSpeed: (number) - Vehicle speed measured in kilometers per hour.

(PID 14) Timing Advance

Ignition timing sets the timing of the spark in the combustion chamber. Since the size of the combustion chamber is the most important factor for ignition, fuel injection timing is expressed as an angle relative to Top Dead Center, when the piston is nearest the valves and the chamber is its smallest.

Values for this field range from -64 to 63.5.

  • Value = 0 inidicates that ignition is taking place at Top Dead Center.
  • Value > 0 indicates that ignition is taking place After Top Dead Center, when the piston is on its way down the chamber.
  • Value < 0 indicates that ignition is taking place Before Top Dead Center, when the piston is still on its way up the chamber.
{
  "TimingAdvance": -12
}
-  TimingAdvance: (number) - The timing of ignition relative to _Top Dead Center_ in degrees.

(PID 15) Intake Air Temperature

The intake air temperature sensor provides temperature readings taken near the intake manifold. The temperature is used to calculate the mass flowrate of air into the engine (in conjunction with other sensor readings), which is used to adjust engine controls such as fuel trim and ignition timing.

This temperature reading is not the same as the ambient temperature if the engine is warm, but would be the same as ambient temperature in a cold engine that has not been started.

In some vehicles, the intake air temperature is provided by the mass air flow (MAF) sensor described in PID 16.

Values for this field range from -40 to 215.

{
  "IntakeAirTemp": 13
}
-  IntakeAirTemp: (number) - Engine intake air temperature in degrees Celsius.

(PID 16) Mass Air Flow Rate

The readings from the mass air flow (MAF) sensor can be used similarly to the intake manifold absolute pressure (MAP) sensor described in PID 11 and the intake air temperature sensor described in PID 15 to adjust engine controls such as fuel trim and ignition timing.

Most vehicles use either a MAP or a MAF sensor to adjust fuel trim and ignition timing, not both.

Values for this field range from 0 to 655.35.

{
  "MafAirFlowRate": 320
}
-  MafAirFlowRate: (number) - Air flow rate in grams per second.

(PID 17) Throttle Position

The throttle allows varying amounts of air into the engine based on its position. The computer uses this parameter to calculate fuel injection and ignition timing. Throttle position is expressed as a percentage. A wide-open throttle (WOT) is 100%.

Values for this field range from 0 to 100.

There are 3 PIDs that provide absolute throttle position.

  • (PID 17) Throttle Position - The primary sensor.
  • (PID 71) AbsoluteThrottlePositionB - Secondary sensor. May not be present in all vehicles.
  • (PID 72) AbsoluteThrottlePositionC - Secondary sensor. May not be present in all vehicles.
{
  "ThrottlePosition": 45
}
- ThrottlePosition: (number) - The position of the throttle in percentage.

(PID 18) Commanded Secondary Air Status

Secondary air injection is a vehicle emissions control strategy where fresh air
is injected into the exhaust stream to allow for fuller combustion of exhaust
gases. This list shows where air is being injected.

Only one value will be true for all the properties.

{
  "CommandedSecondaryAirStatus": {
    "pumpCommandedOnForDiagnostics": false,
    "fromOutsideAtmosphereOrOff": true,
    "downstreamOfFirstCatalyticConverter": false,
    "upstreamOfFirstCatalyticConverter": false
  }
}
- CommandedSecondaryAirStatus (object)
  - pumpCommandedOnForDiagnostics: (boolean)
  - fromOutsideAtmosphereOrOff: (boolean)
  - downstreamOfFirstCatalyticConverter: (boolean)
  - upstreamOfFirstCatalyticConverter: (boolean)

(PID 19) Oxygen Sensors Present Sensors 1-4

This list of oxygen sensors provides a boolean value to indicate whether the vehicle has the following oxygen sensors.

This list is similar to the list in PID 29, which organizes oxygen sensors by bank. It's important to note that manufacturer reporting on oxygen sensors is highly variable. Using this PID does not mean that the reporting vehicle does not have two banks, and using PID 29 does not necessarily indicate the presence of two banks in the vehicle.

Most vehicles will report the presence of oxygen sensors on either PID 19 or PID 29, but not both.

{
  "OxygenSensorsPresent": {
    "sensor1": true,
    "sensor2": false,
    "sensor3": false,
    "sensor4": false
  }
}
- OxygenSensorsPresent: (object)
  - sensor1: (boolean) - Presence of sensor 1 in the vehicle.
  - sensor2: (boolean) - Presence of sensor 2 in the vehicle.
  - sensor3: (boolean) - Presence of sensor 3 in the vehicle.
  - sensor4: (boolean) - Presence of sensor 4 in the vehicle.

(PID 20-27) Oxygen Sensor Voltage and Trim Banks 1-2 and Sensors 1-4

Oxygen sensors in the exhaust manifold provide data that the computer uses to adjust engine controls such as air-fuel ratio and ignition timing.

An oxygen sensor will typically generate up to about 0.9 volts when the fuel mixture is rich (lower air-fuel ratio) and there is little unburned oxygen in the exhaust. When the mixture is lean (higher air-fuel ratio), the sensor's output voltage will drop down to about 0.1 volts. When the air-fuel mixture is at the equilibrium point (generally 14.7:1), the sensor will read around 0.45 volts.

Values for this field range from 0 to 1.275.

The oxygen sensor also provides short-term fuel trim. Short-term fuel trim indicates the instantaneous effort of the computer to adjust the air-fuel ratio. Healthy values for this field typically oscillate between a negative integer and a corresponding positive integer (e.g. -10 and 10).

Values for this field range from -100 to 99.22.

  • Value = 0 indicates no change to air-fuel ratio.
  • Value > 0 indicates an effort to richen the mixture (decrease the air-fuel ratio).
  • Value < 0 indicates an effort to make the mixture leaner (increase the air-fuel ratio).

There are 8 PIDs that provide this data:

  • (PID 20) OxygenSensorVoltageB1S1
  • (PID 21) OxygenSensorVoltageB1S2
  • (PID 22) OxygenSensorVoltageB1S3
  • (PID 23) OxygenSensorVoltageB1S4
  • (PID 24) OxygenSensorVoltageB2S1
  • (PID 25) OxygenSensorVoltageB2S2
  • (PID 26) OxygenSensorVoltageB2S3
  • (PID 27) OxygenSensorVoltageB2S4

These PIDs provide similar data to that which is provided in PIDs 36-43 and Pids 52-59. Wide variance should be expected as to which sensors report on which PIDs, and because sensor 1 uses PID 20 does not necessarily indicate that sensor 2 would use PID 21.

{
  "OxygenSensorVoltageB1S1": {
    "voltage": 0.418,
    "shortTermFuelTrim": 9.52
  }
}
- OxygenSensorVoltageB1S1: (object)
   - voltage: (number) - The voltage generated at the oxygen sensor in volts.
   - shortTermFuelTrim: (number) - The instantaneous change that the computer is making to the air-fuel ratio in percentage.

(PID 28) OBD Standard Conformation

Lists the OBD standards that the vehicle conforms to.

{
  "ObdStandards": "OBDII"
}
- ObdStandards: (enum[string]) - The OBD standards that the vehicle conforms to.
  - Members
    - `NONE` - The vehicle does not comply with any OBD standard.
    - `OBDI` - Manufacturer-specific protocols for on-board diagnostics. Present in some vehicles before 1996.
    - `OBDII` - Protocol for on-board diagnostics developed by the California Air Resources Board. Present in most American-sold vehicles since 1996.
    - `OBD` - Protocols for on-board diagnostics developed by the Environmental Protection Agency.
    - `OBDAndOBDII`- Utilizes both the EPA-developed and CARB-develped protocols for on-board diagnostics.
    - `EOBD` - Standardized European protocol for on-board diagnostics. Present in most European-sold vehicles since 2001.

(PID 29) Oxygen Sensors Present Banks 1-4

This list of oxygen sensors is organized by bank, and provides a boolean value to indicate whether the vehicle has the following oxygen sensors.

This list is similar to the list in PID 19, which does not organize oxygen sensors by bank. It's important to note that manufacturer reporting on oxygen sensors is highly variable. Using this PID does not mean that the reporting vehicle has two banks, and using PID 19 does not necessarily indicate a single bank in the vehicle.

Most vehicles will report the presence of oxygen sensors on either PID 19 or PID 29, but not both.

{
  "OxygenSensorsPresent2": {
    "bank1": {
      "sensor1": true,
      "sensor2": true
    },
    "bank2": {
      "sensor1": true,
      "sensor2": true
    },
    "bank3": {
      "sensor1": true,
      "sensor2": true
    },
    "bank4": {
      "sensor1": true,
      "sensor2": true
    }
  }
}
- OxygenSensorsPresent2: (object)
  - bank1: (object)
    - sensor1: (boolean) - Presence of sensor 1 in the vehicle.
    - sensor2: (boolean) - Presence of sensor 2 in the vehicle.
  - bank2: (object)
    - sensor1: (boolean) - Presence of sensor 1 in the vehicle.
    - sensor2: (boolean) - Presence of sensor 2 in the vehicle.
  - bank3: (object)
    - sensor1: (boolean) - Presence of sensor 1 in the vehicle.
    - sensor2: (boolean) - Presence of sensor 2 in the vehicle.
  - bank4: (object)
    - sensor1: (boolean) - Presence of sensor 1 in the vehicle.
    - sensor2: (boolean) - Presence of sensor 2 in the vehicle.

(PID 30) Auxiliary Input Status

Auxiliary pumps are present in the transmissions of some heavy-duty vehicles to provide power to run auxiliary tools such as hydraulic pumps.

N/A
N/A

(PID 31) Run-Time Since Engine Start

The time that the engine has been running since the vehicle was started. This value resets at 65,535 seconds (about 18 hours).

Values for this field range from 0 to 65,535.

{
  "RunTimeSinceEngineStart": 250
}
- RunTimeSinceEngineStart: (number) - Time that the engine has been running in seconds.

(PID 32) PIDs Supported 33-64

This ordered list of PIDs 33-64 provides a boolean value to indicate whether the vehicle supports providing data for each PID number.

{
  "SupportedPids33to64": [
    false,
    false,
    true,
    true,
    true,
    false,
    true,
    true,
    true,
    false,
    true,
    false,
    true,
    false,
    false,
    false,
    true,
    false,
    true,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true
  ]
}
- SupportedPids33to64: (array[boolean]) - Each element in this ordered list indicates vehicle support for data collection on the corresponding PID.

(PID 33) Distance Traveled with MIL On

The distance traveled with a malfunction indicator lamp on.

Values for this field range from 0 to 65,535.

{
  "DistanceTraveledMil": 2532
}
- DistanceTraveledMil: (number) - Distance traveled with MIL on in kilometers.

(PID 34) Fuel Rail Pressure (Relative to Manifold Vacuum)

Fuel rail pressure readings (in conjunction with other sensors) are used to calculate fuel injection timing (length of time the fuel injector is open).

The fuel rail pressure relative to the manifold vacuum describes the difference between the pressure in the rail and the pressure in the intake manifold when the piston is on its induction stroke.

Values for this field range from 0 to 5,177.265.

{
  "FuelRailPressureRelative": 2132.247
}
- FuelRailPressureRelative: (number) - The pressure differential between the fuel rail and the intake manifold in kilopascals.

(PID 35) Fuel Rail Pressure (Diesel or Gasoline Direct Injection)

Fuel rail pressure readings, in conjunction with other sensors, are used to calculate fuel injection timing (length of time the fuel injector is open). This is an absolute pressure reading, and the range of values is suitable for reporting fuel rail pressure of direct injection engines (either diesel or gasoline), which are highly pressurized.

Values for this field range from 0 to 655,350.

{
  "FuelRailPressure": 200000
}
- FuelRailPressure: (number) - The pressure in the fuel rail of a direct injection engine in kilopascals.

(PID 36-43) Oxygen Sensors 1-8 Equivalence Ratio and Voltage

Oxygen sensors in the exhaust manifold provide data that the computer uses to adjust engine controls such as air-fuel ratio and ignition timing.

Each sensor indirectly provides the air-fuel ratio by reporting an equivalence ratio. The equivalence ratio represents the percentage of the actual air-fuel ratio compared to the vehicle's equilibrium air-fuel ratio (generally 14.7:1).

To obtain the actual air-fuel ratio, multiply the equilibrium air-fuel ratio (14.7) by the equivalence ratio.

Values for this field range from 0 to 2:

  • Value = 1 indicates that the air-fuel ratio is at equilibrium.
  • Value > 1 indicates that the fuel mixture is rich (lower air-fuel ratio). Most of the oxygen is burned, but much of the fuel is not.
  • Value < 1 indicates that the fuel mixture is lean (higher air-fuel ratio) Most of the fuel is burned, but much of the oxygen is not.

The oxygen sensor also provides its raw voltage.

Values for this field range from 0 to 8.

There are 8 PIDs that can provide this data:

  • (PID 36) OxygenSensor1EquivalenceRatioVoltage
  • (PID 37) OxygenSensor2EquivalenceRatioVoltage
  • (PID 38) OxygenSensor3EquivalenceRatioVoltage
  • (PID 39) OxygenSensor4EquivalenceRatioVoltage
  • (PID 40) OxygenSensor5EquivalenceRatioVoltage
  • (PID 41) OxygenSensor6EquivalenceRatioVoltage
  • (PID 42) OxygenSensor7EquivalenceRatioVoltage
  • (PID 43) OxygenSensor8EquivalenceRatioVoltage

These PIDs provide similar data to that which is provided in PIDs 20-27 and Pids 52-59. Wide variance should be expected as to which sensors report on which PIDs, and because sensor 1 uses PID 36 does not necessarily indicate that sensor 2 would use PID 37.

{
  "OxygenSensor1EquivalenceRatioVoltage": {
    "ratio": 0.954,
    "voltage": 8
  }
}
- OxygenSensor1EquivalenceRatioVoltage: object
  - ratio: (number) - A value showing the air-fuel ratio oriented from the equilibrium value of 1.
  - voltage: (number) - Voltage of oxygen sensor in volts.

(PID 44) Commanded Exhaust Gas Recirculation (EGR)

The exhaust gas recirculation valve is part of EGR system, which reduces nitrogen oxide emissions and reduces the peak combustion temperature in the combustion chamber. The EGR valve is opened and closed by the computer to recirculate a specified amount of exhaust into the air-fuel mixture.

Values for this parameter range from 0 to 100.

  • Value = 0 indicates that the EGR valve is commanded to be fully closed.
  • Value > 0 indicates that EGR valve is commanded to be partially to fully open.

Although values for this PID vary by vehicle, consistently high or low values would indicate a problem.

{
  "CommandEgr": 35
}
- CommandEgr: (number) - The commanded openness of the EGR valve in percentage.

(PID 45) Exhaust Gas Recirculation (EGR) Error

The EGR Error rate represents the obedience of the valve to the command of the computer in regards to its position.

Values range from -100 to 99.2.

  • Value = 0 indicates no error.
  • Value < 0 indicates that the EGR valve some percentage less open than the command.
  • Value > 0 indicates the EGR valve is some percentage more open than commanded.
{
  "EgrError": -40
}
- EgrError: (number) - The EGR valve position error expressed as a percent.

(PID 46) Commanded Evaporative Purge

The evaporative purge valve is part of the evaporative emission control system, which prevents fuel vapors from escaping the fuel tank and polluting the environment.

The evaporative purge valve is opened and closed by the computer to send collected fuel vapors back into the engine for combustion.

Values for this field range from 0 to 100.

  • Value = 0 indicates that the purge valve is commanded to be fully closed.
  • Value > 0 indicates that purge valve is commanded to be partially to fully open.
{
  "CommandEvaporativePurge": 12
}
- CommandEvaporativePurge: (number) - The commanded openness of the EVAP purge valve in percentage.

(PID 47) Fuel Level Input

The fill of the fuel tank as a percentage. This parameter does not reflect the actual quantity of gas in the tank. Fuel level is important because certain vehicle systems can only run diagnostic checks when the tank is between 15 and 85 percent full.

Note: readings can vary wildly during a single trip due to bumps in the road and topography.

Values for this field range from 0 to 100.

{
  "FuelLevelInput": 47
}
- FuelLevelInput: (number) - The fill of the tank in percentage.

(PID 48) Number of Warm-ups Since Codes Cleared

This PID reports the number of warm-ups since all diagnostic trouble codes were cleared. A warm-up is defined as the engine coolant temperature rising at least 4 degrees Celsius above its temperature at engine start, and reaching a minimum temperature of 71 degrees Fahrenheit.

{
  "NumWarmupsSinceCodesCleared": 30
}
- NumWarmupsSinceCodesCleared: (number) - Number of warm-ups since DTCs were cleared.

(PID 49) Distance Traveled Since Codes Cleared

This PID reports distance traveled since all diagnostic trouble codes were cleared.

Values for this field range from 0 to 65,535.

{
  "DistanceTraveledSinceCodesCleared": 840
}
- DistanceTraveledSinceCodesCleared: (number) - Distance traveled since DTCs were cleared in kilometers.

(PID 50) Evaporative System Vapor Pressure

The pressure in the EVAP system (e.g. lines, canister), where fuel vapor is collected while the vehicle is off.

Values for this field range from -8,192 to 8,192.

{
  "EvapSystemVaporPressure": 23
}
- EvapSystemVaporPressure: (number) - Pressure in the EVAP canister in Pascals.

(PID 51) Barometric Pressure

The barometric pressure provides a reading of atmospheric pressure at the vehicle's altitude.

Standard sea-level pressure is 101.325 kPA, and rarely increases or decreases more than 3.386 kPa.

Values for this reading range from 0 to 255.

{
  "BarometricPressure": 101.325
}
- BarometricPressure: (number) - Atmospheric pressure in kilopascals.

(PID 52-59) Oxygen Sensor 1-8 Equivalence Ratio Current

Oxygen sensors in the exhaust manifold provide data that the computer uses to adjust engine controls such as air-fuel ratio and ignition timing.

Each sensor indirectly provides the air-fuel ratio by reporting an equivalence ratio. The equivalence ratio represents the percentage of the actual air-fuel ratio compared to the equilibrium air-fuel ratio (generally 14.7:1).

To obtain the actual air-fuel ratio, multiply the equilibrium air-fuel ratio by the equivalence ratio.

Values for this field range from 0 to 2:

  • Value = 1 indicates that the air-fuel ratio is at equilibrium.
  • Value > 1 indicates that the fuel mixture is rich (lower air-fuel ratio). Most of the oxygen is burned, but much of the fuel is not.
  • Value < 1 indicates that the fuel mixture is lean (higher air-fuel ratio) Most of the fuel is burned, and much of the oxygen is not.

The oxygen sensors also provide feedback on the air-fuel ratio in milliamps.

Values for this field range from -128 to 128 milliamperes.

  • Value = 0 indicates that the air-fuel ratio is at equilibrium.
  • Each milliamp > 0 is a percentage point lean.
  • Each milliamp < 0 is a percentage point rich.

There are 8 PIDs that provide this data:

  • (PID 52) OxygenSensor1EquivalenceRatioCurrent
  • (PID 53) OxygenSensor2EquivalenceRatioCurrent
  • (PID 54) OxygenSensor3EquivalenceRatioCurrent
  • (PID 55) OxygenSensor4EquivalenceRatioCurrent
  • (PID 56) OxygenSensor5EquivalenceRatioCurrent
  • (PID 57) OxygenSensor6EquivalenceRatioCurrent
  • (PID 58) OxygenSensor7EquivalenceRatioCurrent
  • (PID 59) OxygenSensor8EquivalenceRatioCurrent

These PIDs provide similar data to that which is provided in PIDs 20-27 and PIDs 36-43. Wide variance should be expected as to which sensors report on which PIDs, and because sensor 1 uses PID 52 does not necessarily indicate that sensor 2 would use PID 53.

{
  "OxygenSensor1EquivalenceRatioCurrent": {
    "ratio": 1.012,
    "current": 0.7
  }
}
- OxygenSensor1EquivalenceRatioCurrent: (object)
- ratio: (number) - A value showing the air-fuel ratio oriented from the equilibrium value of 1.
- current: (number) - Current in milliamperes.

(PID 60-63) Catalyst Temperature Bank 1-2 Sensor 1-2

Temperature is read by the vehicle's oxygen sensors, and the temperature differential between sensors 1 and 2 of each bank provides information to determine the efficiency of the catalytic converter. The temperature from sensor 2 should provide a higher reading than sensor 1.

Values for each sensor range from -40 to 6,513.5.

There are 4 PIDs that provide this data:

  • (PID 60) CatalystTemperatureBank1Sensor1
  • (PID 61) CatalystTemperatureBank1Sensor2
  • (PID 62) CatalystTemperatureBank2Sensor1
  • (PID 63) CatalystTemperatureBank2Sensor2 - Only present if there are 2 catalytic converters.
{
  "CatalystTemperatureBank1Sensor1": 326.2
}
- CatalystTemperatureBank1Sensor1: (number) - The air temperature in degrees Celsius.

(PID 64) PIDs Supported 65-96

This ordered list of PIDs 65-96 provides a boolean value to indicate whether the
vehicle supports providing data for each PID number.

{
  "SupportedPids65to96": [
    false,
    false,
    true,
    true,
    true,
    false,
    true,
    true,
    true,
    false,
    true,
    false,
    true,
    false,
    false,
    false,
    true,
    false,
    true,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true
  ]
}
- SupportedPids65to96: (array[boolean]) - Each element in this ordered list indicates vehicle support for data collection on the corresponding PID.

(PID 65) Monitor Status this Drive Cycle

Under certain vehicle and driving conditions, the vehicle will run diagnostic tests on its various systems to ensure that they are operating correctly. The definition of a drive cycle is manufacturer-specific.

Each system is listed twice, and a boolean is provided, which indicates the availability of each of the systems, and whether the test was completed.

{
  "MonitorStatusDriveCycle": {
    "misfireTestAvailable": true,
    "fuelSystemTestAvailable": false,
    "componentsTestAvailable": true,
    "catalystTestAvailable": true,
    "heatedCatalystTestAvailable": true,
    "evaporativeSystemTestAvailable": true,
    "secondaryAirSystemTestAvailable": true,
    "acRefrigerantTestAvailable": true,
    "oxygenSensorTestAvailable": true,
    "oxygenSensorHeaterTestAvailable": true,
    "egrSystemTestAvailable": true,
    "misfireTestComplete": true,
    "fuelSystemTestComplete": false,
    "componentsTestComplete": false,
    "catalystTestComplete": false,
    "heatedCatalystTestComplete": false,
    "evaporativeSystemTestComplete": true,
    "secondaryAirSystemTestComplete": false,
    "acRefrigerantTestComplete": false,
    "oxygenSensorTestComplete": false,
    "oxygenSensorHeaterTestComplete": true,
    "egrSystemTestComplete": false
  }
}
- MonitorStatusDriveCycle: (object)
  - misfireTestAvailable: (boolean)
  - fuelSystemTestAvailable: (boolean)
  - componentsTestAvailable: (boolean)
  - catalystTestAvailable: (boolean)
  - heatedCatalystTestAvailable: (boolean)
  - evaporativeSystemTestAvailable: (boolean)
  - secondaryAirSystemTestAvailable: (boolean)
  - acRefrigerantTestAvailable: (boolean)
  - oxygenSensorTestAvailable: (boolean)
  - oxygenSensorHeaterTestAvailable: (boolean)
  - egrSystemTestAvailable: (boolean)
  - misfireTestComplete: (boolean)
  - fuelSystemTestComplete: (boolean)
  - componentsTestComplete: (boolean)
  - catalystTestComplete: (boolean)
  - heatedCatalystTestComplete: (boolean)
  - evaporativeSystemTestComplete: (boolean)
  - secondaryAirSystemTestComplete: (boolean)
  - acRefrigerantTestComplete: (boolean)
  - oxygenSensorTestComplete: (boolean)
  - oxygenSensorHeaterTestComplete: (boolean)
  - egrSystemTestComplete: (boolean)

(PID 66) Control Module Voltage

Control module voltage shows the battery voltage as read by the computer. Any loss of voltage between the battery and the control module should be less than a few tenths of a volt.

Values for this field range from 0 to 65.535.

{
  "ControlModuleVoltage": 12
}
- ControlModuleVoltage: (number) - The voltage arriving at the control module in Volts.

(PID 67) Absolute Load Value

The absolute load value is the air mass per intake stroke displayed as a percent, which indicates the pumping efficiency of the engine for diagnostic purposes. This data is often used to schedule ignition timing and EGR rates.

Values for this field range from 0 to 25,700.

{
  "AbsoluteLoadValue": 66
}
- AbsoluteLoadValue: (number) - The air mass of the intake stroke in percent.

(PID 68) Command Equivalence Ratio

The commanded equivalence ratio compares the commanded air-fuel ratio to the vehicle's equilibrium air-fuel ratio (generally 14.7:1). To obtain the actual air-fuel ratio being commanded by the computer, multiply the equivalence ratio by the equilibrium air-fuel ratio.

e.g. If the fuel control system commands an equivalence ratio of 0.95, the desired air-fuel ratio would be 14.7 * 0.95 = 13.9:1.

Values for this field range from 0 to 2.

{
  "CommandEquivalenceRatio": 0.95
}
- CommandEquivalenceRatio: (number) - The percentage of the equilibrium air-fuel ratio as a decimal.

(PID 69) Relative Throttle Position

Relative throttle position indicates the learned throttle position. The computer controlling the throttle plate remaps the openness of the throttle from 0% to 100% based on the relative position of the accelerator pedal.

e.g. The accelerator pedal in a given vehicle is pressed down as far as it will go: the absolute throttle position may only be 94%, but the relative throttle position is 100%, because this is as far as the throttle actually opens.

Values for this field range from 0 to 100.

{
  "RelativeThrottlePosition": 15
}
- ThrottlePosition: (number) - The openness of the throttle as understood by the ECU.

(PID 70) Ambient Air Temperature

The ambient air temperature sensor takes readings of the temperature of the air outside the vehicle. The computer uses this parameter to control blower speed and air temperature of automated HVAC systems.

Values for this field range from -40 to 215.

{
  "AmbientAirTemperature": 13
}
- AmbientAirTemperature: (number) - The temperature of the air outside the vehicle in degrees Celsius.

(PID 71-72) Absolute Throttle Position

The throttle allows varying amounts of air into the engine based on its position. The computer uses this parameter to calculate the amount of air flow to the engine and the amount of fuel to be injected for the optimum air-fuel ratio. Throttle position is expressed as a percentage. A wide-open throttle (WOT) is 100%.

Absolute throttle position is the throttle position reading provided by the sensor(s), as opposed to the computer.

Values for this field range from 0 to 100.

There are 3 PIDs that provide absolute throttle position.

  • (PID 17) Throttle Position - The primary sensor.
  • (PID 71) AbsoluteThrottlePositionB - Secondary sensor. Not present in all vehicles.
  • (PID 72) AbsoluteThrottlePositionC - Secondary sensor. Not present in all vehicles.
{
  "AbsoluteThrottlePositionB": 35
}
- AbsoluteThrottlePositionB: (number) - Openness of the throttle as a percentage of WOT.

(PID 73-75) Accelerator Pedal Position

The throttle plate is controlled by the accelerator (gas) pedal. The position of the gas pedal is known as the "desired throttle input," and is used by the computer to determine the position of the throttle plate, and may not match the gas pedal position at any given time.

These PIDs provide the gas pedal position as reported by the sensor(s). A vehicle can have up to three pedal position sensors.

Values for this field range from 0 to 100.

There are 3 PIDs that can provide gas pedal position.

  • (PID 73) AcceleratorPedalPositionD
  • (PID 74) AcceleratorPedalPositionE
  • (PID 75) AcceleratorPedalPositionF
{
  "AcceleratorPedalPositionD": 72
}
- AcceleratorPedalPositionD: (number) - The gas pedal position in percent.

(PID 76) Commanded Throttle Actuator

The throttle allows varying amounts of air into the engine based on its position. The computer uses this data to calculate the amount of air flow to the engine and the amount of fuel to be injected for the optimum air-fuel ratio.
Throttle position is expressed as a percentage. A wide-open throttle (WOT) is 100%.

The commanded throttle actuator is the position of the throttle commanded by the computer.

Values for this field range from 0 to 100.

  • Value = 0 indicates that the throttle is commanded to be fully closed.
  • Value > 0 indicates that throttle is commanded to be partially to fully open.
{
  "CommandedThrottleActuator": 63
}
- CommandedThrottleActuator: (number) - The commanded openness of the throttle in percentage.

(PID 77) Time Run with MIL On

The time traveled with a malfunction indicator lamp on. This value is accumulated across trips.

Values for this field range from 0 to 65,535 minutes (approx. 1,092 hours).

{
  "TimeRunMilOn": 2532
}
- TimeRunMilOn: (number) - Time traveled with a MIL on in minutes.

(PID 78) Time Since Trouble Codes Cleared

The time traveled since all diagnostic trouble codes were cleared.

Values for this field range from 0 to 65,535 minutes (approx. 1092 hours).

{
  "TimeSinceTroubleCodesCleared": 200
}
- TimeSinceTroubleCodesCleared: (number) - Time traveled in minutes.

(PID 79) Maximum Value for Equivalence Ratio, Oxygen Sensor Voltage, Oxygen Sensor Current, and Intake Manifold Absolute Pressure

The maximum values for the equivalence ratio, oxygen sensor voltage/current, and intake manifold absolute pressure help determine whether readings coming from respective sensors are normal or abnormal.

{
  "MaxOfErOsvOscMap": {
    "maxEquivalenceRatio": 0.236,
    "maxO2SensorVoltage": 12,
    "max02SensorCurrent": 1.7,
    "maxIntakeMAP": 2
  }
}
- MaxOfErOsvOscMap: (object)
 - maxEquivalenceRatio: (number) - The vehicle's maximum equivalence ratio to 1.
 - maxO2SensorVoltage: (number) - The vehicle's maximum oxygen sensor voltage in volts.
 - max02SensorCurrent: (number) - The vehicle's maximum oxygen sensor current in milliamperes.
 - maxIntakeMAP: (number) - The vehicle's maximum manifold intake pressure in kilopascals.

(PID 80) Maximum Value for Air Flow Rate from MAF Sensor

The maximum values for the MAF sensor help determine whether readings coming from that sensor are normal or abnormal.

{
  "MaxOfMaf": {
    "maxMafAirFlowRate": 12,
    "reservedB": 0,
    "reservedC": 0,
    "reservedD": 0
  }
}
- MaxOfMaf: (object)
 - maxMafAirFlowRate: (number) - The maximum air flow rate expected from the vehicle in grams per second.
 - reservedB: (number) - Ignore
 - reservedC: (number) - Ignore
 - reservedD: (number) - Ignore

(PID 81) Fuel Type

The type(s) of fuel the vehicle can run on. Liquefied petroleum gas, natural gas, ethanol, and gasoline fuels have different equilibrium air-fuel ratios. Gasoline engines generally have an equilibrium air-fuel ratio of 14.7:1.

{
  "FuelType": "Gasoline"
}
- FuelType: (enum[string]) - The type(s) of fuel the vehicle can run on.
  - Members:
    - `Gasoline`
    - `Methanol`
    - `Ethanol`
    - `Diesel`
    - `LPG - Liquefied Petroleum Gas`
    - `CNG - Compressed Natural Gas`
    - `Propane`
    - `Electric`
    - `BifuelRunningGasoline`
    - `BifuelRunningMethanol`
    - `BifuelRunningEthanol`
    - `BifuelRunningLPG`
    - `BifuelRunningCNG`
    - `BifuelRunningPropane`
    - `BifuelRunningElectric`
    - `HybridGasolineElectric`
    - `HybridGasoline`
    - `HybridEthanol`
    - `HybridDiesel`
    - `HybridElectic`
    - `HybridMixed`
    - `HybridRegenerative`

(PID 82) Ethanol Fuel Percent

The percentage of alcohol fuel detected in ethanol or methanol fuels.

Values for this field range from 0 to 100.

{
  "EthanolFuelPrct": 13
}
- EthanolFuelPrct: (number) - The percentage of alcohol fuel detected in ethanol or methanol fuel types.

(PID 83) Absolute Evaporative System Vapor Pressure

The pressure of evaporated fuel vapors obtained from a sensor located in the fuel tank, which helps to detect vaporized fuel leaks.

Values for this field range from 0 to 327.675.

{
  "AbsEvapVaporPressure": 305.420
}
- AbsEvapVaporPressure: (number) - Pressure in kilopascals.

(PID 84) Evaporative System Vapor Pressure

The differential between the pressure of evaporated fuel vapors in the fuel tank and the barometric pressure outside the vehicle.

Values for this field range from -32767 to 32768.

  • Value = 0 indicates that the pressure in the fuel tank is the same as the outside barometric pressure.
  • Value > 0 indicates how much greater the vapor pressure in the tank is than outside barometric pressure.
  • Value < 0 indicates how much less the vapor pressure in the tank is than outside barometric pressure.
{
  "EvapSystemVaporPressure2": 18723
}
- EvapSystemVaporPressure2: (number) - Pressure difference between fuel tank and outside barometric pressure in kilopascals.

(PID 85-88) Secondary Oxygen Sensor Trim Banks

These parameters provide the short-term and long-term fuel trims based on the secondary oxygen sensors.

Short-term fuel trim indicates the instantaneous effort of the computer to adjust the air-fuel ratio. A positive value (expressed as percentage) indicates that the computer is trying to lower the air-fuel ratio (richen the mixture), and a negative value means it is increasing the air-fuel ratio (making the mixture leaner). Short-term fuel trim is not stored in memory and resets to 0 at the next trip.

Healthy values for this parameter are typically between -10 and 10.

Long-term fuel trim is an average of short-term trim values learned over time while the fuel system is in a closed loop state. It is stored in the keep-alive memory and is also used for open loop fuel calculations (like start-up and WOT). Long-term fuel trim is a coarser adjustment than short-term, and works to keep short-term fuel trim within specification.

Healthy values for this parameter are typically between -10 and 10.

In addition to individual values between -10 and 10, the sum of the long-term and short-term fuel trims should also be between -10 and 10 in a healthy system.

Values for this field range from -100 to 99.22.

There are 4 PIDs that can provide fuel trims:

  • (PID 85) ShortTermSecondaryOxygenSensorTrimBank1AndBank3
  • (PID 86) LongTermSecondaryOxygenSensorTrimBank1AndBank3
  • (PID 87) ShortTermSecondaryOxygenSensorTrimBank2AndBank4
  • (PID 88) LongTermSecondaryOxygenSensorTrimBank2AndBank4
{
  "ShortTermSecondaryOxygenSensorTrimBank1AndBank3": {
    "bank1": -5,
    "bank3": -4
  }
}
- ShortTermSecondaryOxygenSensorTrimBank1AndBank3: (object)
  - bank1: (number) - Short-term fuel trim in Bank 1 in percent.
  - bank3: (number) - Short-term fuel trim in Bank 3 in percent.

(PID 89) Absolute Fuel Rail Pressure

Fuel rail pressure readings are used to determine the amount of fuel in the fuel rail and tell the powertrain control module how much fuel to provide to the engine.

Absolute fuel rail pressure is the pressure reported by the sensor(s).

There are several PIDS related to this reading.

  • (PID 34) Fuel Rail Pressure (Relative to Manifold Vacuum)
  • (PID 35) Absolute Fuel Rail Pressure of Direct Injection Engine (Diesel or Gasoline). A vehicle would not support both PID 35 and PID 89.

Values for this field range from 0 to 655,350.

{
  "FuelRailPressureAbs": 2300
}
- FuelPressure: (number) - Pressure in the fuel rail in kilopascals.

(PID 90) Relative Accelerator Pedal Position

Relative accelerator position provides the gas pedal position as calculated by the computer using the absolute readings from the sensor(s).

Values for this field range from 0 to 100.

{
  "RelativeAcceleratorPedalPosition": 34
}
- RelativeAcceleratorPedalPosition: (number) - Gas pedal position calculated by the ECU as a percentage.

(PID 91) Hybrid Battery Pack Remaining Life

The amount of remaining life in a hybrid vehicle's battery pack.

Values for this field range from 0 to 100.

{
  "HybridBatteryPackLifeRemaining": 88
}
- HybridBatteryPackLifeRemaining: (number) - The amount of remaining life in a hybrid vehicle's battery pack in percentage.

(PID 92) Engine Oil Temperature

Engine oil temperature should normally be between 88 and 104 degrees Celsius during vehicle operation.

Values for this field range from -40 to 210.

{
  "EngineOilTemp": 99
}
- EngineOilTemp: (number) - Engine oil temperature in degrees Celsius.

(PID 93) Fuel Injection Timing

Before ignition takes place in the combustion chamber, fuel must be injected. Since the size of the combustion chamber is the most important factor for ignition, fuel injection timing is expressed as an angle relative to Top Dead Center, when the piston is nearest the valves and the chamber is its smallest.

Values for this field range from -210 to 301.992.

  • Value = 0 indicates that fuel injection is taking place at Top Dead Center.
  • Value > 0 indicates that fuel injection is taking place After Top Dead Center, when the piston is on its way down the chamber.
  • Value < 0 indicates that fuel injection is taking place Before Top Dead Center, when the piston is still on its way up the chamber.
{
  "FuelInjectionTiming": -13.5
}
-  FuelInjectionTiming: (number) - The timing of fuel injection in degrees relative to Top Dead Center.

(PID 94) Engine Fuel Rate

Engine fuel consumption measured in liters per hour.

Values for this field range from 0 to 3212.75.

{
  "EngineFuelRate": 2.32
}
- EngineFuelRate: (number) - Fuel consumption in liters per hour.

Device "PIDs"

These PIDs contain data that the device generates, not the vehicle, such as accelerometer and location.

(PID 128) Raw Accelerometer

The Datalogger device is programmed with X, Y and Z axes. Raw accelerometer readings report changes on these axes without reference to the orientation of the vehicle that the device is plugged into.

This PID represents 1 second of Accelerometer samples. The number of samples per second (Hz) is configurable, so the length of the array varies.

{
  "RawAccelerometer": [
        {
            "x": -700,
            "y": -16,
            "z": -750
        },
        {
            "x": -720,
            "y": -16,
            "z": -770
        },
        {
            "x": -700,
            "y": -16,
            "z": -770
        },
        {
            "x": -700,
            "y": -16,
            "z": -770
        }
    ]
}
- NormalizedAccelerometer: (array[object]) - Accelerometer samples for the vehicle's three axes.
  - (object)
    - x: (number) - X-axis reading in mG.
    - y: (number) - Y-axis reading in mG.
    - z: (number) - Z-axis reading in mG.

(PID 129) Normalized Accelerometer

After a few days of driving, the device will reassign its X, Y, and Z axes to be in line with the vehicle, regardless of its orientation inside the vehicle.

Normalized accelerometer readings in mG for a stationary vehicle would be x=0, y=0, z=1000.Normalized accelerometer readings in mG for a stationary vehicle would be x=0, y=0, z=1000.

Normalized accelerometer readings in mG for a stationary vehicle would be x=0, y=0, z=1000.

This PID represents 1 second of Accelerometer samples. The number of samples per second (Hz) is configurable, so the length of the array varies.

{
  "NormalizedAccelerometer": [
    {
      "x": -16,
      "y": -16,
      "z": 980
    },
    {
      "x": -16,
      "y": -16,
      "z": 970
    },
    {
      "x": -31,
      "y": -31,
      "z": 970
    },
    {
      "x": -78,
      "y": -31,
      "z": 970
    }
  ]
}
- NormalizedAccelerometer: (array[object]) - Accelerometer samples for the vehicle's three axes.
  - (object)
    - x: (number) - X-axis reading in mG.
    - y: (number) - Y-axis reading in mG.
    - z: (number) - Z-axis reading in mG.

(PID 131) GPS

This GPS reading is recorded as a device "PID" in the pidData object of a Trip Data event.

{
  "GpsReading": {
    "heading": 132,
    "horizontalDilutionOfPrecision": 0,
    "latitude": 42.28004,
    "longitude": -83.74847,
    "numberOfSatellites": 7,
    "hemisphere": "NorthWest",
    "fixQuality": "Standard"
  }
}
- GpsReading (object)
  - gps: (object) - Contains the location where this event was produced.
    - heading: (number) - The angle between the direction in which the object's nose is pointing and a reference direction (e.g. true north).
    - horizontalDilutionOfPrecision: (number) - Horizontal Dilution of Precision
    - latitude: (number)
    - longitude: (number)
    - numberOfSatellites: (number) - Number of satellites used to determine location for this event.
    - hemisphere: (enum[string]) - The hemisphere of the globe where this event was produced.
      - Members
        - `NorthWest`
        - `NorthEast`
        - `SouthWest`
        - `SouthEast`
    - fixQuality: (enum[string]) - The validity and accuracy of the GPS data.
      - Members
        - `NoFix` - Latitude and longitude are invalid.
        - `Standard` - 2D or 3D fix. Latitude and longitude are valid.
        - `Differential` - Enhanced GPS accuracy.

(PID 251) Fuel Level Input Smoothed

The fill of the fuel tank as a percentage, after a smoothing algorithm has been applied. This parameter does not reflect the actual quantity of gas in the tank. Fuel level is important because certain vehicle systems can only run diagnostic checks when the tank is between 15 and 85 percent full.

Values for this field range from 0 to 100.

{
  "FuelLevelSmoothed": 47
}
- FuelLevelSmoothed: (number) - The fill of the tank in percentage.

Relative Time Trip Events

Trip events are produced when specific conditions are met in the vehicle. The following categories encompass the different types of events you might see:

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-09-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "BatteryMetricsPerTrip",
                "engineTimeToStart": 42,
        "averageInTripVoltage": 12.2,
        "minimumBatteryVoltage": 12,
        "restingVoltage": 12
      }
    }
  }
}
- type: (string) - Indicates a type for this object.
- timestamp: (string) - ISO 8601-formatted time stamp showing when the event was produced on the device.
- tripNumber: (number) - A sequential number that increases after each trip. Resets after 65,536 trips.
- eventData (object) - Contains data for a trip event.
  - type: (enum[string]) - One of 6 possible event types. Other properties in this object vary respective to the type.
    - Members:
      - `AccelerometerEvent`
      - `BluetoothEvent`
      - `FenceEvent`
      - `TripGpsEvent`
      - `ObdPidEvent`
      - `ObdSpeedEvent`

Accelerometer Events (Rel. Time)

This event represents 1 second of Accelerometer samples. The number of samples per second (Hz) is configurable, so the length of the acceleromterSamples array varies.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-08-01T08:31:07-04:00",
    "tripNumber": 49,
    "eventData": {
      "type": "AccelerometerEvent",
      "secondsRelativeToTrigger": 5,
      "accelerometerData": {
        "type": "Triggered",
        "triggeredAxis": "positive-x-axis",
        "accelerometerSamples": [
          {
            "x": -16,
            "y": -31,
            "z": 1000
          },
          {
            "x": 16,
            "y": -47,
            "z": 1000
          },
          {
            "x": 16,
            "y": -47,
            "z": 1000
          },
          {
            "x": 16,
            "y": -47,
            "z": 1000
          }
        ]
      }
    }
  }
}
- type: `AccelerometerEvent` (string) - The specific type of event.
- secondsRelativeToTrigger: (number) - The relative time from the trigger in seconds.
- accelerometerData: (object) - An object that contains the data and metadata for this event.
  - type: (enum[string]) - One of two possible subtypes for this event.
    - Members: 
      - Triggered - A configured threshold value was exceeded, triggering this event.
      - Unknown - An unknown accelerometer event type was received and cannot be decoded.
  - triggeredAxis: (enum[string]) - One of six possible indicators for the plane and direction of the accelerometer event.
    - Members:
      - positive-x-axis
      - negative-x-axis
      - positive-y-axis
      - negative-y-axis
      - positive-z-axis
      - negative-z-axis
  - accelerometerSamples: (array[objects]) - Accelerometer readings for this event. The length of the array is equal to the number of samples the device is configured to collect per second (Hz). 24 Hz is the maximum.
  - (object)
    - x: (number) - The X-axis reading in mG.
    - y: (number) - The Y-axis reading in mG.
    - z: (number) - The Z-axis reading in mG.

Trip GPS Event (Rel. Time)

This event type has several subtypes, which provide information about why the event was generated, e.g. after so much time, or so much distance, or because of a change of course over ground (COG).

{
  "header": {...},
  "body": {
    "timestamp": "2017-02-13T15:04:50-05:00",
    "type": "TripEventRelativeTime",
    "tripNumber": 46,
    "eventData": {
      "type": "TripGpsEvent",
      "gpsEventData": {
        "type": "IgnitionOnPeriodicEvent",
        "gpsData": 4,
        "gpsRecord": {
          "heading": 132,
          "horizontalDilutionOfPrecision": 0,
          "latitude": 42.21804,
          "longitude": -83.09375,
          "numberOfSatellites": 7,
          "hemisphere": "NorthWest",
          "fixQuality": "Standard"
        },
      }
    }
  }
}
- eventData: (object)
 - type: `TripGpsEvent`(string) - The specific type of event.
 - gpsEventData: (object) - An object that contains the data for this type of event.
  - type: (enum[string]) - One of 5 subtypes.
    - Members:
      - `IgnitionOnPeriodicEvent`
      - `CogEvent`
      - `DistanceEvent`
      - `TripStartEvent`
      - `TripEndEvent`
  - gpsData: (number) - Vehicle speed in MPH or KPH. If the value of the `type` field is `TripStartEvent`, this value represents the GPS Fix Quality. `4` represents a valid fix, and `1` represents no fix.
  - gpsRecord: (object)
    - heading: (number) - The angle between the direction in which the object's nose is pointing and a reference direction (e.g. true north).
    - horizontalDilutionOfPrecision: (number) - Horizontal Dilution of Precision.
    - latitude: (number)
    - longitude: (number)
    - numberOfSatellites: (number) - How many satellites the device is tracking for GPS.
    - hemisphere: (enum[string])
       - Members:
          - `NorthWest`
          - `NorthEast`
          - `SouthWest`
          - `SouthEast`
    - fixQuality: (enum[string]) - Determines the validity and accuracy of the GPS data.
        - Members:
          - `NoFix` - Latitude and longitude are invalid.
          - `Standard` - 2D or 3D fix. Latitude and longitude are valid.
          - `Differential` - Enhanced GPS accuracy.

OBD PID Events (Rel. Time)

PID Events are triggered by conditions in the vehicle. This ObdPidEventtype has subtypes for each of the standard OBD-II PIDs and the three device PIDs.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-08-13T15:04:50-05:00",
    "tripNumber": 46,
    "eventData": {
      "type": "ObdPidEvent",
      "pidSize": "2",
      "pidDataType": "MilStatus",
      "pidData": { 
        "commandedOn": true,
        "numCodes": 2,
        "statusSupported": {
        "comprehensiveMonitoringStatus": "true",
        "fuelSystemMonitoringStatus": "true",
        "misfireMonitoringStatus": "true",
        "comprehensiveMonitoringSupported": "false",
        "fuelSystemMonitoringSupported": "true",
        "misfireMonitoringSupported": "false",
        "egrSystemMonitoringStatus1": "true",
        "oxygenSensorHeaterMonitoringStatus1": "false",
        "oxygenSensorMonitoringStatus1": "true",
        "acSystemRefrigerantMonitoringStatus1": "false",
        "secondaryAirSystemMonitoringStatus1": "true",
        "evaporativeSystemMonitoringStatus1": "false",
        "heatedCatalystMonitoringStatus1": "true",
        "catalystMonitoringStatus1": "false",
        "egrSystemMonitoringStatus2": "true",
        "oxygenSensorHeaterMonitoringStatus2": "false",
        "oxygenSensorMonitoringStatus2": "true",
        "acSystemRefrigerantMonitoringStatus2": "false",
        "secondaryAirSystemMonitoringStatus2": "true",
        "evaporativeSystemMonitoringStatus2": "false",
        "heatedCatalystMonitoringStatus2": "true",
        "catalystMonitoringStatus2": "false"
        }
      }
    }
  }
}
- eventData: (object)
 - type: `ObdPidEvent` (string) - The specific type of event.
 - pidSize: (number) - The number of bytes in the raw data.
 - pidDataType: (enum[string]) - One of 97 possible PID names.
   - Members
     - `SupportedPids1to32`
     - `MilStatus`
     - `FreezeFrameTroubleCode`
     - `FuelStatus`
     - `CalcEngineLoad`
     - `EngineCoolantTemp`
     - `ShortTermFuelPrctTrimB1`
     - `ShortTermFuelPrctTrimB2`
     - `LongTermFuelPrctTrimB1`
     - `LongTermFuelPrctTrimB2`
     - `FuelPressure`
     - `IntakeManifoldAbsPressure`
     - `EngineRpm`
     - `VehicleSpeed`
     - `TimingAdvance`
     - `IntakeAirTemp`
     - `MafAirFlowRate`
     - `ThrottlePosition`
     - `CommandedSecondaryAirStatus`
     - `OxygenSensorsPresent`
     - `OxygenSensorVoltageB1S1`
     - `OxygenSensorVoltageB1S2`
     - `OxygenSensorVoltageB1S3`
     - `OxygenSensorVoltageB1S4`
     - `OxygenSensorVoltageB2S1`
     - `OxygenSensorVoltageB2S2`
     - `OxygenSensorVoltageB2S3`
     - `OxygenSensorVoltageB2S4`
     - `ObdStandards`
     - `OxygenSensorsPresent2`
     - `AuxiliaryInputStatus`
     - `RunTimeSinceEngineStart`
     - `SupportedPids33to64`
     - `DistanceTraveledMil`
     - `FuelRailPressureRelative`
     - `FuelRailPressure`
     - `OxygenSensor1EquivalenceRatioVoltage`
     - `OxygenSensor2EquivalenceRatioVoltage`
     - `OxygenSensor3EquivalenceRatioVoltage`
     - `OxygenSensor4EquivalenceRatioVoltage`
     - `OxygenSensor5EquivalenceRatioVoltage`
     - `OxygenSensor6EquivalenceRatioVoltage`
     - `OxygenSensor7EquivalenceRatioVoltage`
     - `OxygenSensor8EquivalenceRatioVoltage`
     - `CommandEgr`
     - `EgrError`
     - `CommandEvaporativePurge`
     - `FuelLevelInput`
     - `NumWarmupsSinceCodesCleared`
     - `DistanceTraveledSinceCodesCleared`
     - `EvapSystemVaporPressure`
     - `BarometricPressure`
     - `OxygenSensor1EquivalenceRatioCurrent`
     - `OxygenSensor2EquivalenceRatioCurrent`
     - `OxygenSensor3EquivalenceRatioCurrent`
     - `OxygenSensor4EquivalenceRatioCurrent`
     - `OxygenSensor5EquivalenceRatioCurrent`
     - `OxygenSensor6EquivalenceRatioCurrent`
     - `OxygenSensor7EquivalenceRatioCurrent`
     - `OxygenSensor8EquivalenceRatioCurrent`
     - `CatalystTemperatureBank1Sensor1`
     - `CatalystTemperatureBank1Sensor2`
     - `CatalystTemperatureBank2Sensor1`
     - `CatalystTemperatureBank2Sensor2`
     - `SupportedPids65to96`
     - `MonitorStatusDriveCycle`
     - `ControlModuleVoltage`
     - `AbsoluteLoadValue`
     - `RelativeThrottlePosition`
     - `AmbientAirTemperature`
     - `AbsoluteThrottlePositionB`
     - `AbsoluteThrottlePositionC`
     - `AcceleratorPedalPositionD`
     - `AcceleratorPedalPositionE`
     - `AcceleratorPedalPositionF`
     - `CommandedThrottleActuator`
     - `TimeRunMilOn`
     - `TimeSinceTroubleCodesCleared`
     - `MaxOfErOsvOscMap`
     - `MaxOfMaf`
     - `FuelType`
     - `EthanolFuelPrct`
     - `AbsEvapVaporPressure`
     - `EvapSystemVaporPressure2`
     - `ShortTermSecondaryOxygenSensorTrimBank1AndBank3`
     - `LongTermSecondaryOxygenSensorTrimBank1AndBank3`
     - `ShortTermSecondaryOxygenSensorTrimBank2AndBank4`
     - `LongTermSecondaryOxygenSensorTrimBank2AndBank4`
     - `FuelRailPressureAbs`
     - `RelativeAcceleratorPedalPosition`
     - `HybridBatteryPackLifeRemaining`
     - `EngineOilTemp`
     - `FuelInjectionTiming`
     - `EngineFuelRate`
     - `RawAccelerometer`
     - `NormalizedAccelerometer`
     - `GpsReading`
  - pidData: (*T*) - The data (object, number, string, or boolean) reported by the PID. Structure depends on the `pidDataType`. See the PID Data list for the expected value associated with each `pidDataType` listed above.

OBD Speed Events (Rel. Time)

The ObdSpeedEvent type has a number of subtypes that provide information about speeding, acceleration, deceleration, and histogram data related to these.

{
    "header": {...},
    "body": {
        "type": "TripEventRelativeTime",
        "timestamp": "2017-07-14T10:20:59-04:00",
        "tripNumber": 10,
        "eventData": {
            "type": "ObdSpeedEvent",
            "obdSpeedEventData": {
                "type": "TimeDrivenInSpeedRange",
                "data": [
                    5,
                    1,
                    1,
                    1,
                    1,
                    1,
                    2,
                    1,
                    1,
                    1,
                    1,
                    14
                ]
            }
        }
    }
}
- type: `ObdSpeedEvent` (string) - The specific type of the event.
- obdSpeedEventData: (object) - An object that contains the data for the `ObdSpeedEvent`. 
  - type: (enum[string]) - One of 16 subtypes. Other fields vary respective to each subtype.
    - Members:
      - `Acceleration`
      - `AccelerationWithAccelerometerConfirmation`
      - `Braking`
      - `BrakingWithAccelerometerConfirmation`
      - `CumulativeSpeedMetrics`
      - `DistanceDrivenInSpeedRange`
      - `DistanceDrivenInTimeRange`
      - `Idling`]
      - `SpeedAccelerationHistogram`
      - `SpeedDecelerationHistogram`
      - `HighSpeedEventEnd`
      - `HighSpeedEventStart`
      - `TimeDriveninSpeed Range`
      - `TimeDriveninTimeRange`
      - `TripSpeedMetrics`
      - `TripBatteryMetrics`

Acceleration

An acceleration event is generated if the vehicle's acceleration is greater than or equal to the device's configured thresholdValue. The acceleration event ends when the vehicle's acceleration falls below the configured thresholdValue.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "Acceleration",
        "thresholdValue": 13.0,
        "maxAcceleration": 14.0
      }
    }
  }
}
- obdSpeedEventData: (object) - An object that contains the data for the `ObdSpeedEvent`. 
  - type: `Acceleration` (enum[string]) - Indicates a type for this object.
  - thresholdValue: (number) - The configured vehicle speed threshold in MPH/s or KPH/s.
  - maxAcceleration: (number) - The maximum acceleration rate recorded during this event in MPH/s or KPH/s.

Acceleration with Accelerometer Confirmation

An acceleration event is generated if the vehicle's acceleration is greater than or equal to the device's configured thresholdValue. The acceleration event ends when the vehicle's acceleration falls below the configured thresholdValue. This event differs from the Acceleration Event only
in the type, which confirms the event through the device's accelerometer.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "AccelerationWithAccelerometerConfirmation",        
        "thresholdValue": 13.0,
        "maxAcceleration": 6.0
      }
    }
  }
}
- obdSpeedEventData: (object) - An object that contains the data for the `ObdSpeedEvent`. 
  - type: `AccelerationWithAccelerometerConfirmation` (enum[string]) - Indicates a type for this object.
  - thresholdValue: (number) - The configured vehicle speed threshold in MPH/s or KPH/s.
  - maxAcceleration: (number) - The maximum acceleration rate recorded during this event in MPH/s or KPH/s.

Braking

A braking event is generated if the vehicle's deceleration is greater than or equal to the device's configured thresholdValue. The braking event ends when the vehicle's deceleration falls below the configured thresholdValue.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-08-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "Braking",        
        "thresholdValue": 6.0,
        "maxBraking": 8.0
      }
    }
  }
}
- obdSpeedEventData: (object) - An object that contains the data for the `ObdSpeedEvent`. 
  - type: `Braking` (enum[string]) - Indicates a type for this object.
  - thresholdValue: (number) - The configured deceleration threshold in MPH/s or KPH/s.
  - maxBraking: (number) - The maximum deceleration rate recorded during this event in MPH/s or KPH/s.

Braking with Accelerometer Confirmation

A braking event is generated if the vehicle's deceleration is greater than or equal to the device's configured thresholdValue. The braking event ends when the vehicle's deceleration falls below the configured thresholdValue. This event differs from the Braking Event only in the type, which confirms the event through the device's accelerometer.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-07-29T17:29:31-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "BrakingWithAccelerationConfirmation",        
        "thresholdValue": 13.0,
        "maxValue": 25.0
      }
    }
  }
}
- obdSpeedEventData: (object) - An object that contains the data for the `ObdSpeedEvent`. 
  - type: `BrakingWithAccelerationConfirmation` (enum[string]) - Indicates a type for this object.
  - thresholdValue: (number) - The configured deceleration threshold in MPH/s or KPH/s.
  - maxBraking: (number) - The maximum deceleration rate recorded during this event in MPH/s or KPH/s.

Cumulative Speed Metrics

Cumulative speed metrics provide a running count of certain interesting speed-related metrics since the device was deployed.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-05-29T23:19:17-05:00",
    "tripNumber": 235,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "CumulativeSpeedMetrics",        
        "hardAccelerationCount": 5,
        "hardBrakingCount": 20,
        "totalIdling": 250,
        "overSpeedCount": 0,
        "tripDistance": 8825,
        "overSpeedDistance": 0,
        "tripTimeHours": 9427
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `CumulativeSpeedMetrics` (enum[string]) - Indicates a type for this object.
  - hardAccelerationCount: (number) - The total number of hard acceleration events since the device was deployed.
  - hardBrakingCount: (number) - The total number of hard braking events since the device was deployed.
  - totalIdling: (number) - The total time spent idling since the device was deployed in hours.
  - overSpeedCount: (number) - The total number of speeding events since the device was deployed.
  - tripDistance: (number) - The total distance traveled in miles or kilometers. Units depends on device configuration.
  - overSpeedDistance: (number) - The total distance traveled in miles or kilometers at a velocity greater than the configured speeding threshold.
  - tripTimeHours: (number) - The total time traveled since the device was deployed in hours.

Distance Driven in Speed Range

This obdSpeedEventData type describes the distance driven (in miles or kilometers based on device configuration) for a configurable set of speed ranges (in miles per hour or kilometers per hour based on device configuration).

There are up to 20 configurable speed buckets (excluding the first and last, which are predefined).

The platform is unable to provide the custom definitions for the speed ranges used in this event type. Please consult the speed range definitions in the device configuration when using data from this event type.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "DistanceDrivenInSpeedRange",        
        "data": [
            0.0,
            0.5,
            1.3,
            2.5,
            10.2,
            4.0,
            0.0
        ]
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `DistanceDrivenInSpeedRange` (enum[string]) - Indicates a type for this object.
  - data: (array[number])
    - Members:
      - (number) - Distance driven in the first speed range, which is zero MPH or KPH.
      - (number) - Distance driven in second speed range: 0 < x =< A (A is a configurable speed in MPH or KPH).
      - (number) - Distance driven in the third speed range: A < x =< B (A and B are configurable speeds in MPH or KPH).
      - (number) - Distance driven in the fourth speed range: B < x =< C (B and C are configurable speeds in MPH or KPH).
      - (number) - Distance driven in the fifth speed range: C < x =< D (C and D are configurable speeds in MPH or KPH).
      - (number) - Distance driven in the sixth speed range: D < x =< E (D and E are configurable speeds in MPH or KPH).
      - (number) - Distance driven in the seventh speed range, which is greater than E (E is a configurable speed in MPH or KPH).

Distance Driven in Time Range

This obdSpeedEventData type records the distance driven during a trip (in miles or kilometers based on device configuration) during each hour of the day. The device uses local time (with Daylight Savings Time when applicable) to record the distance driven in each time range.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-03-11T15:45:38-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "DistanceDrivenInTimeRange",        
        "data": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          20,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ]
      }
    }
  }
}
- obdSpeedEventData (object)
  - type: `DistanceDrivenInTimeRange` (enum[string]) - Indicates a type for this object.
  - data (array[number]) - An array of length 24 where each entry is the number of miles or kilometers (based on device configuration) driven during a trip in each hour-long segment. The time is in local time and includes Daylight Savings Time (when applicable).
    - Members:
      - (number) - Distance driven between 00:00 and 00:59 (midnight and 12:59 AM).
      - 0 (number) - Distance driven between 01:00 and 01:59.
      - 0 (number) - Distance driven between 02:00 and 02:59.
      - 0 (number) - Distance driven between 03:00 and 03:59.
      - 0 (number) - Distance driven between 04:00 and 04:59.
      - 0 (number) - Distance driven between 05:00 and 05:59.
      - 0 (number) - Distance driven between 06:00 and 06:59.
      - 0 (number) - Distance driven between 07:00 and 07:59.
      - 0 (number) - Distance driven between 08:00 and 08:59.
      - 0 (number) - Distance driven between 09:00 and 09:59.
      - 0 (number) - Distance driven between 10:00 and 10:59.
      - 0 (number) - Distance driven between 11:00 and 11:59.
      - 0 (number) - Distance driven between 12:00 and 12:59.
      - 0 (number) - Distance driven between 13:00 and 13:59.
      - 0 (number) - Distance driven between 14:00 and 14:59.
      - 20 (number) - Distance driven between 15:00 and 15:59.
      - 0 (number) - Distance driven between 16:00 and 16:59.
      - 0 (number) - Distance driven between 17:00 and 17:59.
      - 0 (number) - Distance between 18:00 and 18:59.
      - 0 (number) - Distance driven between 19:00 and 19:59.
      - 0 (number) - Distance driven between 20:00 and 20:59.
      - 0 (number) - Distance driven between 21:00 and 21:59.
      - 0 (number) - Distance driven between 22:00 and 22:59.
      - 0 (number) - Distance driven between 23:00 and 23:59.

High Speed Event End

A highSpeedEventEnd event is generated after a highSpeedEventStart event if the vehicle's speed drops below the thresholdValue and stays below the thresholdValue for a configurable number of seconds.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "HighSpeedEventEnd",        
        "thresholdValue": 80.0,
        "triggeredValue": 83.0,
        "maxSpeed": 85.1,
        "avgSpeed": 82.3,
        "overSpeedTime": 200,
        "overSpeedDistance": 3.5
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `HighSpeedEventEnd` (enum[string]) - Indicates a type for this object.
  - thresholdValue: (number) - The configured vehicle speed threshold in MPH or KPH.
  - triggeredValue: (number) - The actual vehicle speed reading that triggered the event (MPH or KPH).
  - maxSpeed: (number) - The maximum vehicle speed read during this event (MPH or KPH).
  - avgSpeed: `(number) - The average vehicle speed during this event (MPH or KPH).
  - overSpeedTime: (number) - The time spent over the `thresholdValue` in seconds.
  - overSpeedDistance: (number) - The distance travelled while over the `thresholdValue` in miles or kilometers.

High Speed Event Start

A highSpeedEventStart event is generated if the vehicle's speed is greater than or equal to the thresholdValue and stays above the thresholdValue for a configurable number of seconds.

When the vehicle's speed drops below the thresholdValue, a highSpeedEventEnd
event is produced (see above).

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "HighSpeedEventStart",        
        "thresholdValue": 80.0,
        "triggeredValue": 80.2
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `HighSpeedEventStart` (enum[string]) - Indicates a type for this object.  
  - thresholdValue: (number) - The configured vehicle speed threshold (MPH or KPH).
  - triggeredValue: (number) - The actual vehicle speed reading that triggered the event (MPH or KPH).

Idling

An idling event is generated if the vehicle's speed is less than or equal to the configured thresholdValue for a configurable number of seconds.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "Idling",        
        "thresholdValue": 2.0,
        "duration": 300
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `Idling` (enum[string]) - Indicates a type for this object.
  - thresholdValue: (number) - The configured vehicle speed threshold in MPH or KPH.
  - duration: (number) - The configured number of seconds that vehicle speed must be below `thresholdValue`.

Speed Acceleration Histogram

This obdSpeedEventData type describes the time driven for a configurable set of acceleration ranges (in miles per hour per second or kilometers per hour per second based on device configuration).

There are up to 20 configurable acceleration buckets (excluding the first and last, which are predefined).

The platform is unable to provide the custom definitions for the acceleration ranges
used in this event type. Please consult the acceleration range definitions in the
device configuration when using data from this event type.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-04-15T11:09:42-05:00",
    "tripNumber": 400,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "SpeedAccelerationHistogram",
        "data": [
          101,
          16,
          0,
          0,
          0,
          0
        ]
      }
    }
  }
}
- obdSpeedEventData: (object)
  - data: (array[number])
      - Members
      - (number) - Time in seconds driven in the first acceleration range, which is zero MPH/s or KPH/s.
      - (number) - Time driven in the second acceleration range: 0 < x =< A (A is a configurable acceleration in MPH/s or KPH/s).
      - (number) - Time driven in the third acceleration bucket, which is A-B (A and B are a configurable speeds in MPH/s or KPH/s).
      - (number) - Time driven in the fourth acceleration bucket, which is B-C (B and C are a configurable speeds in MPH/s or KPH/s).
      - (number) - Time driven in the fifth acceleration bucket, which is C-D (C and D are a configurable speeds in MPH/s or KPH/s).
      - (number) - Time driven in the seventh acceleration bucket, which is greater than D (D is a configurable speed in MPH/s or KPH/s).
  - type: `SpeedAccelerationHistogram` (enum[string]) - Indicates a type for this object.

Speed Deceleration Histogram

This obdSpeedEventData type describes the time driven for a configurable set of deceleration ranges (in miles per hour per second or kilometers per hour per second based on device configuration).

There are up to 20 configurable deceleration buckets (excluding the first and last, which are predefined).

The platform is unable to provide the custom definitions for the deceleration ranges used in this event type. Please consult the deceleration range definitions in the device configuration when using data from this event type.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2017-02-28T14:27:10-05:00",
    "tripNumber": 115,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "SpeedDecelerationHistogram",
        "data": [
            189,
            400,
            237,
            15,
            3,
            0
        ],

      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `SpeedDecelerationHistogram` (enum[string]) - Indicates a type for this object.
  - data: (array[number])
      - Members
      - (number) - Time in seconds driven in the first deceleration range, which is zero MPH/s or KPH/s.
      - (number) - Time driven in the second deceleration range: 0 < x =< A (A is a configurable acceleration in MPH/s or KPH/s).
      - (number) - Time driven in the third deceleration bucket, which is A-B (A and B are a configurable speeds in MPH/s or KPH/s).
      - (number) - Time driven in the fourth deceleration bucket, which is B-C (B and C are a configurable speeds in MPH/s or KPH/s).
      - (number) - Time driven in the fifth deceleration bucket, which is C-D (C and D are a configurable speeds in MPH/s or KPH/s).
      - (number) - Time driven in the seventh deceleration bucket, which is greater than D (D is a configurable speed in MPH/s or KPH/s).

Time Driven in Speed Range

This obdSpeedEventData type describes the time driven in seconds for a configurable set of speed ranges (in miles per hour or kilometers per hour based on device configuration).

There are up to 20 configurable speed buckets (excluding the first and last, which are predefined).

The platform is unable to provide the custom definitions for the speed ranges used in this event type. Please consult the speed range definitions in the device configuration when using data from this event type.

{
  "obdSpeedEventData": {
      "type": "TimeDrivenInSpeedRange",    
      "data": [
          62,
          142,
          95,
          20,
          0,
          0,
          0
      ]
  }
}
- obdSpeedEventData: (object)
  - data: (array[number])
      - Members
      - (number) - Time in seconds driven in the first speed range, which is zero MPH/s or KPH/s.
      - (number) - Time driven in the second speed range: 0 < x =< A (A is a configurable speeds in MPH or KPH).
      - (number) - Time driven in the third speed bucket, which is A-B (A and B are a configurable speeds in MPH or KPH).
      - (number) - Time driven in the fourth speed bucket, which is B-C (B and C are a configurable speeds in MPH or KPH).
      - (number) - Time driven in the fifth speed bucket, which is C-D (C and D are a configurable speeds in MPH or KPH).
      - (number) - Time driven in the seventh speed bucket, which is greater than D (D is a configurable speed in MPH or KPH).
  - type: `TimeDrivenInSpeedRange` (enum[string]) - Indicates a type for this object.

Time Driven in Time Range

Describes the time driven (seconds) during each hour of the day. The device uses local time (with Daylight Savings Time when applicable) to record the time driven in each time range. If a device moves time zones, the event reports from the time zone the trip began in.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "data": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          235,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "type": "TimeDrivenInTimeRange"
          }
        }
      }
    }
- obdSpeedEventData: (object)
  - data: (array[number]) - An array of length 24 where each entry is the number of seconds driven during each hour. The time is in local time and includes Daylight Savings Time (when applicable).
    - Members
      - (number) - Number of seconds driven between 00:00 and 00:59 (midnight and 12:59 AM).
      - (number) - Number of seconds driven between 01:00 and 01:59.
      - (number) - Number of seconds driven between 02:00 and 02:59.
      - (number) - Number of seconds driven between 03:00 and 03:59.
      - (number) - Number of seconds driven between 04:00 and 04:59.
      - (number) - Number of seconds driven between 05:00 and 05:59.
      - (number) - Number of seconds driven between 06:00 and 06:59.
      - (number) - Number of seconds driven between 07:00 and 07:59.
      - (number) - Number of seconds driven between 08:00 and 08:59.
      - (number) - Number of seconds driven between 09:00 and 09:59.
      - (number) - Number of seconds driven between 10:00 and 10:59.
      - (number) - Number of seconds driven between 11:00 and 11:59.
      - (number) - Number of seconds driven between 12:00 and 12:59.
      - (number) - Number of seconds driven between 13:00 and 13:59.
      - (number) - Number of seconds driven between 14:00 and 14:59.
      - (number) - Number of seconds driven between 15:00 and 15:59.
      - (number) - Number of seconds driven between 16:00 and 16:59.
      - (number) - Number of seconds driven between 17:00 and 17:59.
      - (number) - Number of seconds driven between 18:00 and 18:59.
      - (number) - Number of seconds driven between 19:00 and 19:59.
      - (number) - Number of seconds driven between 20:00 and 20:59.
      - (number) - Number of seconds driven between 21:00 and 21:59.
      - (number) - Number of seconds driven between 22:00 and 22:59.
      - (number) - Number of seconds driven between 23:00 and 23:59.
  - type: `TimeDrivenInTimeRange` (enum[string]) - Indicates a type for this object.

Trip Battery Metrics

Battery metrics during a trip.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "engineTimeToStart": 42,
        "averageInTripVoltage": 12.2,
        "minimumBatteryVoltage": 12,
        "restingVoltage": 12,
        "type": "BatteryMetricsPerTrip"
          }
        }
      }
    }
- obdSpeedEventData: (object)
  - engineTimeToStart: `42` (number) - The time it took the engine to start in milliseconds. 
  - averageInTripVoltage: `12.199999809265137` (number) - The average battery voltage during the trip.
  - minimumBatteryVoltage: `12` (number) - The minimum battery voltage. This value almost always reflects the battery voltage during crank (key-on).
  - restingVoltage: `12` (number) - The resting voltage of the battery. This value was collected at a configured interval after the previous trip end.
   - type: `BatteryMetricsPerTrip` (enum[string]) - Indicates a type for this event.

Trip Speed Metrics

Trip speed metrics provide a snapshot of certain interesting speed-related metrics. This event is sent at the end of a trip.

{
  "header": {...},
  "body": {
    "type": "TripEventRelativeTime",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 503,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "hardAccelerationCount": 0,
        "hardBrakingCount": 0,
        "totalIdling": 0,
        "overSpeedCount": 0,
        "tripDistance": 0.10,
        "averageDriveSpeed": 6.2,
        "overSpeedDistance": 0,
        "maxSpeed": 10.2,
        "tripTimeSeconds": 105,
        "type": "SpeedMetricsPerTrip"
          }
        }
      }
    }
- obdSpeedEventData: (object)
  - hardAccelerationCount: `0` (number) - The total number of hard acceleration events during the trip.
  - hardBrakingCount: `0` (number) - The total number of hard braking events during the trip.
  - totalIdling: `0` (number) - The total number of idling events during the trip.
  - overSpeedCount: `0` (number) - The total number of speeding events during the trip.
  - tripDistance: `0.10000000149011612` (number) - The total distance travelled during the trip in miles or kilometers. Units depends on device configuration.
  - averageDriveSpeed: `6.199999809265137` (number) - The average vehicle speed in MPH or KMH during the trip. Units depends on device configuration.
  - overSpeedDistance: `0` (number)- The total distance travelled in miles or kilometers at a velocity greater than the configured speeding threshold. Units depends on device configuration.
  - maxSpeed: `6.199999809265137` (number) - The maximum vehicle speed recorded during the trip.
  - tripTimeSeconds: `105` (number) - The duration of the trip in seconds.
  - type: `SpeedMetricsPerTrip` (enum[string]) - Indicates a type for this object.

Relative Time Trip End Event

This event provides a notification that a trip has ended and provides some summary information.

{
  "header": {...},
  "body": {
    "type": "TripEndRecordRelativeTime",
    "timestamp": "2017-04-27T17:06:36-04:00",
    "tripNumber": 1736,
    "odometer": 23,
    "fuelConsumed": 0.038,
    "vehicleOdometerSupported": true,
    "remaining": "1300"
  }
}
type: 'TripEndRecordRelativeTime` - (string) - Indicates a type for this event.
timestamp: (string) - ISO 8601-formatted time stamp showing when the event was produced on the device.
tripNumber: (number) - A sequential number that increases after each trip. Resets after 65,536 trips.
odometer: (number) - Device-calculated odometer.
fuelConsumed: (number) - Fuel consumed during trip in gallons.
vehicleOdometerSupported: (boolean) - Indicates if this trips includes actual vehicle odometer or calculated mileage
remaining: (number) - For BitBrew purposes only.