Jump to content

Device Configuration Packet: Difference between revisions

From Transight Wiki
Tag: Manual revert
 
Line 346: Line 346:
   const timezoneRaw = bitsToSignedInt(bits.slice(112, 120));
   const timezoneRaw = bitsToSignedInt(bits.slice(112, 120));
   const offsetMins = timezoneRaw * 15;
   const offsetMins = timezoneRaw * 15;
 
   const localDate = new Date((timestamp + offsetMins * 60) * 1000).toISOString().replace("T", " ").replace(".000Z", "");
   const localDate = new Date((timestamp + offsetMins * 60) * 1000)
    .toISOString()
    .replace("T", " ")
    .replace(".000Z", "");
 
   show("DateTime", timestamp);
   show("DateTime", timestamp);
   show("TimeZone", `UTC${offsetMins >= 0 ? '+' : ''}${offsetMins / 60}`);
   show("TimeZone", `UTC${offsetMins >= 0 ? '+' : ''}${offsetMins / 60}`);
Line 366: Line 361:
   show("OneWireSensorCount", bitsToInt(bits.slice(150, 153)));
   show("OneWireSensorCount", bitsToInt(bits.slice(150, 153)));
   show("OdometerMode", bitsToInt(bits.slice(153, 154)));
   show("OdometerMode", bitsToInt(bits.slice(153, 154)));
 
   show("SpeedThreshold", bitsToInt(bits.slice(154, 163)));
   // ==============================
   show("HAT", bitsToInt(bits.slice(163, 175)));
  //  CORRECTED CALCULATIONS
   show("HBT", bitsToInt(bits.slice(175, 187)));
  // ==============================
   show("RTT", bitsToInt(bits.slice(187, 196)));
  const speedThresholdRaw = bitsToInt(bits.slice(154, 163));
   show("TAT", bitsToInt(bits.slice(196, 205)));
   show("SpeedThreshold", (speedThresholdRaw / 2).toFixed(0));
   show("ImmobilizerStatus", bitsToInt(bits.slice(205, 206)));
 
   show("ImmobilizerSpeed", bitsToInt(bits.slice(206, 215)));
  const hatRaw = bitsToInt(bits.slice(163, 175));
   show("HAT", (hatRaw / 100).toFixed(2));
 
  const hbtRaw = bitsToInt(bits.slice(175, 187));
   show("HBT", (hbtRaw / 100).toFixed(2));
 
  const rttRaw = bitsToInt(bits.slice(187, 196));
   show("RTT", (rttRaw / 10).toFixed(1));
 
  const tatRaw = bitsToInt(bits.slice(196, 205));
   show("TAT", (tatRaw / 10).toFixed(1));
 
  const immStatus = bitsToInt(bits.slice(205, 206));
   show("ImmobilizerStatus", immStatus);
 
  const immSpeedRaw = bitsToInt(bits.slice(206, 215));
  show("ImmobilizerSpeed", (immSpeedRaw / 10).toFixed(0));
 
  // Remaining fields unchanged
   show("DigitalInStatus", bitsToInt(bits.slice(215, 219)));
   show("DigitalInStatus", bitsToInt(bits.slice(215, 219)));
   show("DigitalOutStatus", bitsToInt(bits.slice(219, 221)));
   show("DigitalOutStatus", bitsToInt(bits.slice(219, 221)));
Line 406: Line 382:
   show("APN", bitsToAscii(apnBits));
   show("APN", bitsToAscii(apnBits));


  // End Byte and CRC (last 2 bytes)
   const endByte = hex.slice(-4, -2);
   const endByte = hex.slice(-4, -2);
   const crc = hex.slice(-2);
   const crc = hex.slice(-2);
   show("End Byte", String.fromCharCode(parseInt(endByte, 16)));
   show("End Byte", String.fromCharCode(parseInt(endByte, 16)));
   show("CRC", `0x${crc}`);
   show("CRC", `0x${crc}`);
   show("CRC Status", "Valid");
   show("CRC Status", "Valid"); // CRC logic can be added
}
}
</script>
</script>
</body>
</body>
</html>
</html>

Latest revision as of 15:28, 21 November 2025

Field Size (bits) Bit Range Description Breakdown
Header (10 Bytes)
Start byte 8 0 - 7 Starting character $ ASCII value 36
Data length 12 8 - 19 2-byte length of the data following the header
Number of data packets 5 20 - 24 Number of packets 0–32
IMEI 50 25 - 74 Unique device identifier
Packet Type 5 75 - 79 Type of packet 04 - Device configuration packet
Data
Time 32 80-111 UTC Timestamp UTC time in seconds
Timezone 8 112-119 Timezone in quarter-hours 22 = +5:30 (22 × 15min = 330min = 5.5hr)
IGN Source 2 120-121 Source of ignition detection 0 - IGN PIN, 1 – Vibration, 2 - Voltage, 3 - GPS
Cell Operator 4 122-125 Operator name
Fuel Sensor Count 2 126-127 Number of fuel sensors
Fuel Sensor Name 4 128-131 Fuel Sensor Name
Fuel Sensor Baudrate 12 132-143 up to 115200
Fuel Sensor Mode 2 144-145 Request/ Passive
Onewire Status 1 146 Enable or disable
Onewire Sensor Type 3 147-149 Name of the sensor
Onewire Sensor Count 3 150-152 Number of onewire sensors 1,2 or 3
Odometer Mode 1 153 0 or 1 (Accumulated or Differential)
Speed Threshold 9 154-162 Configured Speed limit in km/h 0–360
HAT 12 163-174 Configured Harsh acceleration Threshold 50–3500
HBT 12 175-186 Configured Harsh Breaking Threshold 50–3500
RTT 9 187-195 Configured Rash Turn Threshold 5–480
Tilt Angle Threshold 9 196-204 Configured Tilt Angle Threshold 5–359
Immobilizer Status 1 205 ON/OFF Status 0 - OFF, 1 - ON
Immobilizer Speed 9 206-214
Digital Input Status 4 215-218 3
Digital Output Status 2 219-220 0–3
Analog Input Status 2 221-222 0 or 1
SMS M1 51 223-273 MSB 1 - country code included, MSB 0 - no country code Remaining 50 bits = mobile number
SMS M2 51 274-324 Same format as SMS M1
Number of IPs 3 325-327 0–5
IMOBSRC 3 328-330 Immobilizer source
APN Length 5 331-335 Length in bytes
APN Variable 336 (336+N*8-1) Access Point Name Length defined by APN length
Tail (2 Bytes)
End Character 8 0 - 7 Ending character * ASCII value 42
CRC 8 8 - 15 XOR CRC from $ to * Excludes $ and *

Sample Packet

{HEX : "2402e0e21aeb7abfd58468ac2cec160400002408c03203c1e168280100357c8b0712a00000000000020e61697274656c677072732e636f6d2aea" "imei": 862942074896044, "packet_type": 4, "no_packets": 1, "dateTime": 1756114156, "timezone": 22, "dateTime_tz": "2025-08-25 14:59:16", "ign_source": 0, "cell_op": 1, "fs_count": 0, "fs_name": 0, "fs_baudrate": 0, "fs_mode": 0, "onewire_status": 1, "onewire_type": 1, "onewire_count": 0, "odometer_mode": 0, "speed_threshold": 70, "hat": 25, "hbt": 30, "rtt": 30, "tilt_angle_threshold": 45, "imbz_status": 0, "immobilizer_speed": 20, "di_status": 0, "do_status": 0, "ai_status": 0, "sms_m1": "+918891011146", "sms_m2": "+0", "no_ips": 2, "imobsrc": 0, "apn_length": 14, "apn": "airtelgprs.com", "error_code": 0}


Device Configuration Packet Parser


Parsed Output:

FieldValue