Freematics Packed Data Format is a text based data format used for data transmission to Freematics Hub by UDP or HTTP POST. The stream is chunks of PID/value pairs separated by comma. PID is a hex format (0~FFFF) that identifies the type of data. Value can be integer number, floating number, or consisting of multiple numbers (e.g. accelerometer data). Multiple elements of data are separated by commas.

<PID 1>:<value 1>,<PID 2>:<value 2>,<PID 3>:<value 3 part 1>;<data 3 part 1>;<value 3 part 3>,...

Standard OBD-II PIDs are used straight. In addition, a set of custom PIDs are defined for 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

Custom defined PIDs in mode 0 (0~FF) 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 – Number of satellites in use
  • 0x20 – Accelerometer data (x:y:z)
  • 0x21- Gyroscope data (x:y:z)
  • 0x22 – Magnitude field data (x/y/z)
  • 0x23 – MEMS temperature (in 0.1 Celsius degree)
  • 0x24 – Battery voltage (in 0.01V)
  • 0x25 – Orientation data  (yaw/pitch/roll)
  • 0x81 – Cellular network signal level (dB)
  • 0x82 – CPU temperature (in 0.1 Celsius degree)
  • 0x83 – CPU hall sensor data

PID 0 is reserved for indication of the timestamp of following data whereas followed value is a 32-bit integer data in milliseconds (usually the device system timer).

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>:<value 1>,<PID 2>:<value 2>,<PID 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