Telemetry Packet
| Field | Size (bits) | Bit Range | Description | Breakdown |
|---|---|---|---|---|
| Header (10 bytes) | ||||
| Start byte | 8 | 0–7 | Starting character $ (ASCII value 36) | $ |
| Data length | 12 | 08–19 | 2-byte length of the data following the header | |
| Num of data packets | 5 | 20–24 | Number of packets (0–32) | 0–32 |
| IMEI | 50 | 25–74 | Unique device identifier | e.g., 887744556677882 |
| packet type | 5 | 75–79 | Integer type:
| |
| Data (= 55 bytes × number of packets) | ||||
| Packet Status | 1 | — | Type of packet | |
| Frame Number | 16 | — | Frame number | |
| AlertID | 8 | — | Alert identifier | |
| Operator | 4 | — | Network operator | 00-Airtel, 01-BSNL, 02-VI, 04-JIO |
| Signal Strength | 5 | — | Signal strength | Integer (0–31) |
| MCC | 10 | — | Mobile country code | Integer |
| MNC | 6 | — | Mobile network code | Integer |
| Cell Id | 16 | — | Cell tower ID | Integer |
| Location Area Code | 16 | — | Location area code | Integer |
| Fix_status | 1 | — | GPS fix status | 0: No fix, 1: Valid Fix |
| Start byte | 1 | — | Latitude coordinate | Divide by 1,000,000 for float value |
| NS_Indication | 1 | — | N or S | 0: N, 1: S |
| Longitude | 29 | — | Longitude coordinate | Divide by 1,000,000 for float value |
| EW_Indication | 1 | — | East/West Indication | 0: E, 1: W |
| HDOP | 10 | — | Horizontal dilution | Divide by 10 for float value |
| PDOP | 10 | — | Position dilution | Divide by 10 for float value |
| Speed | 10 | — | Speed in km/h | Divide by 10 for float value |
| Altitude | 15 | — | Altitude in meters | Divide by 10 for float value |
| Power Status | 1 | — | Power connection status | 0: Power disconnected, 1: Power connected |
| Ignition Status | 1 | — | Ignition status | 0: OFF, 1: ON |
| Immobilizer Status | 1 | — | Immobilizer status | 0: OFF, 1: ON |
| Tamper | 1 | — | Wire Tamper detection | 0: Tamper clear, 1: Tamper alert ON |
| Supply Voltage | 6 | — | External battery voltage | Divide by 10 for float value |
| Internal Battery Voltage | 6 | — | Internal battery voltage | Divide by 10 for float value |
| Fuel SensorValue 1 | 16 | — | Fuel sensor value | Divide by 10 if float |
| Fuel Percentage 1 | 16 | — | Fuel level percentage | Divide by 10 for float value |
| Fuel SensorValue 2 | 16 | — | Fuel sensor value | Divide by 10 if float |
| Fuel Percentage 2 | 16 | — | Fuel level percentage | Divide by 10 for float value |
| Fuel SensorValue 3 | 16 | — | Fuel sensor value | Divide by 10 if float |
| Fuel Percentage 3 | 16 | — | Fuel level percentage | Divide by 10 for float value |
| Analog Input | 10 | — | Analog input | Divide by 10 for float value |
| Analog Input 1 | 10 | — | Analog input 1 | Divide by 10 for float value |
| Digital Input 1 | 1 | — | Digital input 1 | 0 or 1 |
| Digital Input 2 | 1 | — | Digital input 2 | 0 or 1 |
| Digital Output 1 | 1 | — | Digital output 1 | 0 or 1 |
| Digital Output 2 | 1 | — | Digital output 2 | 0 or 1 |
| Temperature sensor status 1 | 1 | — | Status of temperature sensor 1 | 1 if connected, 0 if not connected |
| Temperature 1 | 12 | — | Temperature in °C | Signed, divide by 10 |
| Temperature sensor status 2 | 1 | — | Status of temperature sensor 2 | 1 if connected, 0 if not connected |
| Temperature 2 | 12 | — | Temperature in °C | Signed, divide by 10 |
| Temperature sensor status 3 | 1 | — | Status of temperature sensor 3 | 1 if connected, 0 if not connected |
| Temperature 3 | 12 | — | Temperature in °C | Signed, divide by 10 |
| Humidity | 8 | — | Humidity percentage | |
| Odometer | 35 | — | Odometer value in meters | |
| DateTime UTC | 32 | — | Timestamp | UTC time in seconds |
| TimeZone | 8 | — |
Timezone in quarter-hours (e.g., 22 = +5:30). Each unit = 15 mins. Value 22 = 22 × 15 mins = 330 mins = +5:30 Range: -48 to 56, 2's complement || | |
| Tail | ||||
| End Character | 8 | 0–7 | Starting character * (ASCII value 42) | * |
| CRC | 8 | 8–15 | 8-bit XOR CRC of data starting from $ to * (excluding $ and *) | |