Freematics Packed Data Format is a text based data format used for both data transmission to Freematics Hub by UDP or HTTP POST. A data entry includes data type and data value separated by equal sign. Multiple data entries are is separated by a comma delimiter  or a white space character. The format of a data entry is like following.

<PID 1>=<data 1>,<PID 2>=<data 2>,<PID 3>=<data 3 value 1>;<data 3 value 2>;<data 3 value 3>,…

PID (Parameter ID) is represented as a hex number that identifies the type of data. Standard OBD-II PIDs are used in addition to defined PIDs GPS, MEMS  as well as other sensor data and stats data. Following are some commonly used Mode 01 PIDs in OBD-II standard.

  • 0x104 – Engine load
  • 0x105 – Engine coolant temperature
  • 0x10a – Fuel pressure
  • 0x10b – Intake manifold absolute pressure
  • 0x10c – Engine RPM
  • 0x10d – Vehicle speed
  • 0x10e – Timing advance
  • 0x10f – Intake air temperature
  • 0x110 – MAF air flow rate
  • 0x111 – Throttle position
  • 0x11f – Run time since engine start
  • 0x121 – Distance traveled with malfunction indicator lamp
  • 0x12f – Fuel Level Input
  • 0x131 – Distance traveled since codes cleared
  • 0x133 – Barometric pressure
  • 0x142 – Control module voltage
  • 0x143 – Absolute load value
  • 0x15b – Hybrid battery pack remaining life
  • 0x15c – Engine oil temperature
  • 0x15e – Engine fuel rate

Some custom defined PIDs (all in mode 0 which OBD-II does not use)

  • 0x11 – UTC Date (DDMMYY)
  • 0x10 – UTC Time (HHMMSSmm)
  • 0xA – Latitude
  • 0xB – Longitude
  • 0xC – Altitude (m)
  • 0xD – Speed (km/h)
  • 0xE – Course (degree)
  • 0xF – Satellite number
  • 0x20 – Accelerometer data (x/y/z)
  • 0x21- Gyroscope data (x/y/z)
  • 0x22 – Magitude field data (x/y/z)
  • 0x23 – Device temperature (unit is 0.1 Celsius degree)
  • 0x24 – Battery voltage (unit is 0.01V)
  • 0x30 – Trip distance (meter)
  • 0x81 – Cellular network signal level (dB)

A special PID of 0 indicates its value is the timestamp (a continuous timer counter in ms) for all the subsequent data.

If multiple values are present, they are separated by semicolon marks (e.g. X/Y/Z data of accelerometer).

Example:

0=68338,10D=79,30=1010,105=199,10C=4375,104=56,111=62,20=0;-1;95,10=6454200,A=-32.727482,B=150.150301,C=159,D=0,F=5,24=1250

For UDP transmission, a header of Feed ID and a tail of checksum are added like following. Both are represented in hexadecimal.

<Feed ID>#<PID 1>=<data 1>,<PID 2>=<data 2>,<PID 3>=<data 3 value 1>;<data 3 value 2>;<data 3 value 3>,…$<Checksum>

Example:

1#0=68338,10D=79,30=1010,105=199,10C=4375,104=56,111=62,20=0;-1;95,10=6454200,A=-32.727482,B=150.150301,C=159,D=0,F=5,24=1250*7A