TCP Absolute Time & GPS Events

This catalog lists every absolute time & GPS TCP event type with an example event.

All of the examples in this catalog show events sent from a device with a Danlaw TCP absolute & GPS time configuration.

Table of Contents

Absolute Time & GPS Trip Start Event

The absolute time Trip Start event provides information about the protocol of the vehicle's bus, and an odometer reading.

{
  "header": {...},
  "body": {
    "type": "TripStartAbsoluteTimeAndGps",    
    "timestamp": "2017-05-13T15:04:49-05:00",
    "tripNumber": 821,
    "gps": {
      "heading": 101,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.51209,
      "longitude": -83.08674,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },   
    "odometer": 81,
    "vehicleProtocol": "CAN11Bit",
    "validity": {
      "gpsRecent": true,
      "kmUnits": false,
      "nonObdTripStart": false,
      "vehicleOdometer": false
    }
  }
}
- 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.
- gps: (number) - (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]) - Indicates 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.
- odometer: (number) - Vehicle odometer or device-calculated odometer (see `validity` object for differentiator).
- vehicleProtocol: (enum[string]) - The type of protocol the device detected on the vehicle bus.
        - Members:
            - VPW1
            - PWM
            - ISO9141
            - ISO14230
            - ISO14230FastInit
            - CAN11Bit
            - CAN29Bit
- validity: (object) - Additional metadata.
  - gpsRecent: (boolean)
    - Members:
            - true - GPS data reported above was gathered at the time shown on the time stamp.
      - false - GPS data reported above is a reading from (up to) 5 seconds ago, because the device has not been able to get a GPS fix for 5 seconds.
  - kmUnits: (boolean) 
    - Members:
      - true - Device is reporting distance in kilometers.
      - false - Device is reporting distance in miles.
  - nonObdTripStart: (boolean) 
    - Members:
      - true - Device detected the trip start while in non-OBD mode.
      - false - Device detected the trip start in OBD mode.
  - vehicleOdometer: (boolean) 
    - Members:
      - true - The odometer reported above was read from the vehicle.
      - false - The odometer reported above was calculated by the device.

Absolute Time & GPS 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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-09-29T11:19:45-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 13,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.55567,
      "longitude": -83.71211,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    }, 
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "BatteryMetricsPerTrip",
                "engineTimeToStart": 42,
        "averageInTripVoltage": 12.199999809265137,
        "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.
- gps: (number) - (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]) - Indicates 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.
- 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 (Abs. Time & GPS)

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

{
  "header": {...},
  "body": {
    "type": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-08-01T08:31:07-04:00",
    "tripNumber": 49,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.55666,
      "longitude": -83.74121,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },
    "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
          }
        ]
      }
    }
  }
}
- eventData (object) - Contains data for a trip event.
  - type: `AccelerometerEvent` (enum[string]) - One of 6 possible event types.
  - secondsRelativeToTrigger: (number) -  The number of seconds relative to the trigger time.      
  - 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 (Abs. Time & GPS)

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": {
    "type": "TripEventAbsoluteTimeAndGps",    
    "timestamp": "2017-06-03T23:14:48-04:00",
    "tripNumber": 46,    
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.28004,
      "longitude": -83.74847,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },
    "eventData": {
      "type": "TripGpsEvent",
      "gpsEventData": {
        "type": "IgnitionOnPeriodicEvent",
        "gpsData": 4,
        "gpsRecord": null
      }
    }
  }
}
- gps: (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.
- 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: null

OBD PID Events (Abs. Time & GPS)

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

Visit the Relative Time PID examples to see what is contained in each pidData object for each PID.

{
  "header": {...},
  "body": {
    "type": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-08-13T15:04:50-05:00",
    "tripNumber": 46,
    "gps": {
      "heading": 38,
      "horizontalDilutionOfPrecision": 1,
      "latitude": 42.28055,
      "longitude": -83.74421,
      "numberOfSatellites": 6,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "eventData": {
      "type": "ObdPidEvent",
      "pidSize": "2",
      "pidDataType": "EngineRpm",
      "pidData": { 
        "2000"
      }
    }
  }
}
- 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: (undetermined) - 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 (Abs. Time & GPS)

The ObdSpeedEvent type has a number of subtypes.

{
  "header": {...},
  "body": {
    "type": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-07-14T10:20:59-04:00",
    "tripNumber": 10,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.00445,
      "longitude": -83.74129,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },
    "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 (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-09-29T11:19:45-05:00",
    "tripNumber": 5,
    "gps": {
        "heading": 132,
        "horizontalDilutionOfPrecision": 0,
        "latitude": 42.28006,
        "longitude": -83.74095,
        "numberOfSatellites": 7,
        "hemisphere": "NorthWest",
        "fixQuality": "Standard"
      },
    "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 the event in MPH/s or KPH/s.

Acceleration with Accelerometer Confirmation (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-06-29T11:21:48-04:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },
    "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 the event in MPH/s or KPH/s.

Braking (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-08-29T23:54:02-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 the event in MPH/s or KPH/s.

Braking with Accelerometer Confirmation (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-07-29T17:29:31-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 the event in MPH/s or KPH/s.

Cumulative Speed Metrics (Abs. Time & GPS)

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

{
  "header": {...},
  "body": {
    "type": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-07-29T23:19:17-05:00",
    "tripNumber": 235,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 number of idling events since the device was deployed.
  - overSpeedCount: (number) - The total number of speeding events since the device was deployed.
  - tripDistance: (number) - The total distance travelled in miles or kilometers. Units depends on device configuration.
  - overSpeedDistance: (number) - The total distance travelled in miles or kilometers at a velocity greater than the configured speeding threshold.
  - tripTimeHours: (number) - The total time travelled in hours since the device was deployed.

Distance Driven in Speed Range (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-03-31T10:33:12-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-03-11T15:45:38-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 (Abs. Time & GPS)

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": "TripEventAbsoluteTimeandGps",
    "timestamp": "2016-12-29T11:19:58-05:00",
    "tripNumber": 5,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 (Abs. Time & GPS)

An idling event is generated if the vehicle's speed is less than or equal to the configured thresholdValue for the number of seconds specified in the duration field.

{
  "header": {...},
  "body": {
    "type": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-01-07T15:12:02-05:00",
    "tripNumber": 553,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "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 (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2017-04-15T11:09:42-05:00",
    "tripNumber": 400,
    "gps": {
      "heading": 132,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 42.74095,
      "longitude": -83.74095,
      "numberOfSatellites": 7,
      "hemisphere": "NorthWest",
      "fixQuality": "Standard"
    },    
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "SpeedAccelerationHistogram",
        "data": [
          101,
          16,
          0,
          0,
          0,
          0
        ]
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `SpeedAccelerationHistogram` (enum[string]) - Indicates a type for this object.
  - data: (array[number])
      - Members
      - `101` - 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).
      - `0` - Time driven in the fourth acceleration bucket, which is B-C (B and C are a configurable speeds in MPH/s or KPH/s).
      - `0` - Time driven in the fifth acceleration bucket, which is C-D (C and D are a configurable speeds in MPH/s or KPH/s).
      - `0` - Time driven in the seventh acceleration bucket, which is greater than D (D is a configurable speed in MPH/s or KPH/s).

Speed Deceleration Histogram (Abs. Time)

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": "TripEventAbsoluteTimeAndGps",
    "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: `SpeedAccelerationHistogram` (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 (Abs. Time & GPS)

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)
  - type: `TimeDrivenInSpeedRange` (enum[string]) - Indicates a type for this 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).

Time Driven in Time Range (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "type": "TimeDrivenInTimeRange",
        "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
        ]
      }
    }
  }
}
- obdSpeedEventData: (object)
  - type: `TimeDrivenInTimeRange` (enum[string]) - Indicates a type for this 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.

Trip Speed Metrics (Abs. Time & GPS)

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": "TripEventAbsoluteTimeAndGps",
    "timestamp": "2016-12-29T11:19:45-05:00",
    "tripNumber": 5,
    "eventData": {
      "type": "ObdSpeedEvent",
      "obdSpeedEventData": {
        "hardAccelerationCount": 0,
        "hardBrakingCount": 0,
        "totalIdling": 0,
        "overSpeedCount": 0,
        "tripDistance": 0.10,
        "averageDriveSpeed": 6.2,
        "overSpeedDistance": 0,
        "maxSpeed": 15.4,
        "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.

Trip Battery Metrics (Abs. Time & GPS)

Battery metrics during a trip.

{
  "header": {...},
  "body": {
    "type": "TripEventAbsoluteTimeAndGps",
    "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.

Absolute Time & GPS Trip End Event

{
  "header": {...},
  "body": {
    "type": "TripEndRecordAbsoluteTimeAndGps",
    "timestamp": "2016-12-08T15:46:21-05:00",
    "tripNumber": 39,
    "odometer": 6,
    "gps": {
      "heading": 0,
      "horizontalDilutionOfPrecision": 0,
      "latitude": 0,
      "longitude": 0,
      "numberOfSatellites": 0,
      "hemisphere": "NorthWest",
      "fixQuality": "NoFix"
    },
    "fuelConsumed": 0.019,
    "validity": {
      "gpsRecent": false,
      "kmUnits": false,
      "nonObdTripStart": false,
      "vehicleOdometer": false
    }
  }
}
- type: 'TripEndRecordAbsoluteTimeAndGps` - (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.
- validity: (object) - Additional metadata about the fields in this object.
- remaining: (number) - For BitBrew purposes only.