Files
gps-backend/services/index-tt-7722.js
pringgosutono 84dfa4f5ee update 1
2026-04-27 13:24:03 +07:00

909 lines
27 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const net = require("net")
const fs = require("fs")
const path = require("path")
const axios = require("axios")
const https = require("https")
const PORT = 7722
const HOST = "0.0.0.0"
const LOG_FILE = path.join(__dirname, `tcp_${PORT}_log.txt`)
const isLogFile = false
const isLogconsole = true
const logIMEI = ['353742374763571']
function logToFile(message, tipe = "log") {
if (isLogFile) {
const timestamp = new Date().toISOString()
fs.appendFileSync(LOG_FILE, `[${timestamp}] ${message}\n`)
}
if (isLogconsole && tipe === "log") console.log(message)
if (isLogconsole && tipe === "error") console.error(message)
}
// ---------------------------------------------------------------
// decodeAvlData(buf) returns a friendly JS object
// ---------------------------------------------------------------
function decodeAvlData(buf) {
if (!Buffer.isBuffer(buf)) throw new Error("Input must be a Buffer")
let offset = 0
// ---- 1. Preamble (4 bytes) ---------------------------------
const preamble = buf.readUInt32BE(offset)
if (preamble !== 0) throw new Error("Invalid preamble (must be 0x00000000)")
offset += 4
// ---- 2. Data length (4 bytes) -------------------------------
const dataLength = buf.readUInt32BE(offset)
offset += 4
// ---- 3. Codec ID (1 byte) -----------------------------------
const codecId = buf.readUInt8(offset++)
if (codecId !== 0x8e) throw new Error(`Unsupported codec 0x${codecId.toString(16)}`)
// ---- 4. Number of records (1 byte) -------------------------
const recordCount = buf.readUInt8(offset++)
if (recordCount === 0) throw new Error("Zero records")
const records = []
// ---- 5. Parse each record -----------------------------------
for (let i = 0; i < recordCount; i++) {
const rec = {}
// Timestamp
rec.timestampMs = Number(buf.readBigUInt64BE(offset))
rec.timestamp = new Date(rec.timestampMs).toISOString()
offset += 8
// Priority
rec.priority = buf.readUInt8(offset++)
// GNSS
const gnss = {}
gnss.timestamp = rec.timestampMs
gnss.longitude = buf.readInt32BE(offset) / 10000000
gnss.latitude = buf.readInt32BE(offset + 4) / 10000000
gnss.altitude = buf.readInt16BE(offset + 8)
gnss.angle = buf.readUInt16BE(offset + 10)
gnss.satellites = buf.readUInt8(offset + 12)
gnss.speed = buf.readUInt16BE(offset + 13)
offset += 15
rec.gnss = gnss
// console.log("gnss:", gnss)
// Event IO ID
rec.eventioID = buf.readUInt16BE(offset)
offset += 2
// Total I/O count
const totalIo = buf.readUInt16BE(offset)
offset += 2
const io = {
"Event IO ID": rec.eventioID,
}
// 1-byte I/O
const n1 = buf.readUInt16BE(offset)
offset += 2
for (let j = 0; j < n1; j++) {
const id = ioID[buf.readUInt16BE(offset)] || buf.readUInt16BE(offset)
offset += 2
const val = buf.readUInt8(offset++)
io[id] = val
}
// 2-byte I/O
const n2 = buf.readUInt16BE(offset)
offset += 2
for (let j = 0; j < n2; j++) {
const id = ioID[buf.readUInt16BE(offset)] || buf.readUInt16BE(offset)
offset += 2
const val = buf.readUInt16BE(offset)
offset += 2
io[id] = val
}
// 4-byte I/O
const n4 = buf.readUInt16BE(offset)
offset += 2
for (let j = 0; j < n4; j++) {
const id = ioID[buf.readUInt16BE(offset)] || buf.readUInt16BE(offset)
offset += 2
const val = buf.readUInt32BE(offset)
offset += 4
io[id] = val
}
// 8-byte I/O
const n8 = buf.readUInt16BE(offset)
offset += 2
for (let j = 0; j < n8; j++) {
const id = ioID[buf.readUInt16BE(offset)] || buf.readUInt16BE(offset)
offset += 2
const val = Number(buf.readBigUInt64BE(offset))
offset += 8
io[id] = val
}
// 8-byte I/O
const nx = buf.readUInt16BE(offset)
offset += 2
for (let j = 0; j < nx; j++) {
const id = ioID[buf.readUInt16BE(offset)] || buf.readUInt16BE(offset)
offset += 2
const len = buf.readUInt16BE(offset)
offset += 2
const val = Number(buf.readBigUInt64BE(offset))
offset += len
io[id] = val
}
rec.io = io
records.push(rec)
}
// ---- 6. Number of records again (must match) ---------------
const recordCount2 = buf.readUInt8(offset++)
if (recordCount2 !== recordCount) throw new Error("Record count mismatch")
// ---- 7. CRC-16 (4 bytes) ------------------------------------
const crcReceived = buf.readUInt32BE(offset)
const crc = buf.readUInt32BE(offset)
const crcStr = "0x" + crc.toString(16)
// console.log(`CRC: ${crcStr}`)
return { codec: "8E", count: recordCount, records, crcStr }
}
// --- TCP Server ---
const server = net.createServer((socket) => {
const addr = `${socket.remoteAddress}:${socket.remotePort}`
logToFile(`✅ Client connected: ${addr}`)
let imeiReceived = null
socket.on("data", async (data) => {
// logToFile("\n📩 Received data:")
const hex = data.toString("hex")
// logToFile(`Data from ${addr}: ${hex}`)
// Step 1: IMEI
if (!imeiReceived && hex.startsWith("000f")) {
// const imei = Buffer.from(hex.slice(4), "hex").toString()
// const imei = hex
imeiReceived = Buffer.from(hex.slice(4), "hex").toString("ascii")
if (logIMEI == null || logIMEI.includes(imeiReceived))
logToFile("📡 IMEI detected:" + imeiReceived)
socket.write(Buffer.from([0x01]))
if (logIMEI == null || logIMEI.includes(imeiReceived))
logToFile("✅ Sent ACK (0x01)")
return
}
// Step 2: AVL Data
if (imeiReceived && hex.startsWith("000000")) {
// Decode AVL Data
let errData = ''
try {
const avl = decodeAvlData(data)
// avl.imei = imeiReceived
if (logIMEI == null || logIMEI.includes(imeiReceived))
logToFile(`📊 Decoded ${avl.records.length} record(s) || IMEI : ${imeiReceived}`)
// logToFile(`📊 Hex : ${hex}`)
for (const rec of avl.records) {
if (logIMEI == null || logIMEI.includes(imeiReceived))
logToFile(
`${rec.timestamp} ${imeiReceived} | GNSS: ${JSON.stringify(rec.gnss)} || IO: ${JSON.stringify(
rec.io
)}`
)
}
// ACK (number of records)
const ack = Buffer.alloc(4)
ack.writeUInt32BE(avl.count)
socket.write(ack)
if (logIMEI == null || logIMEI.includes(imeiReceived))
logToFile(`✅ Sent AVL ACK (${avl.count})`)
// Send to API
try {
const data = {
imei: imeiReceived,
records: avl.records,
}
errData = JSON.stringify(data)
const response = await axios.post(
"https://api-gateway.timortelecom.tl/gps-svc/tracking/listen/teltonika/",
// "http://localhost:3400/tracking/listen/teltonika/",
data,
{
// timeout: 5000,
headers: {
"Content-Type": "application/json",
},
httpsAgent: new https.Agent({
rejectUnauthorized: false, // ⛔ Jangan gunakan ini di production
}),
}
)
socket.write("ack")
logToFile(`✅API success ${avl.crcStr}: ${response.status} ${JSON.stringify(response.data)}`)
} catch (axiosErr) {
const errMsg = axiosErr.response
? `HTTP ${axiosErr.response.status} ${JSON.stringify(axiosErr.response.data)}`
: axiosErr.request
? `No response ${axiosErr.message}`
: `Axios setup error ${axiosErr.message}`
// console.error(`API error ${avl.crcStr}:`, errMsg)
logToFile(`API error ${avl.crcStr}: ${errMsg}`, "error")
fs.appendFileSync(path.join(__dirname, `error_data_log.txt`), errData + `\n`)
}
} catch (err) {
// console.error("❌ Decode error:", err.message)
logToFile(`❌ Decode error: ${err.message}`, "error")
}
}
})
socket.on("close", () => {
logToFile(`🔌 Client disconnected: ${addr}`)
})
socket.on("error", (err) => {
console.error("❌ Socket error:", err.message)
logToFile(`❌ Socket error: ${err.message}`)
})
})
server.listen(PORT, HOST, () => {
console.log(`🚀 TCP Server listening on ${HOST}:${PORT}`)
})
const ioID = {
1: "Digital Input 1",
2: "Digital Input 2",
3: "Digital Input 3",
4: "Pulse Counter Din1",
5: "Pulse Counter Din2",
6: "Analog Input 2",
9: "Analog Input 1",
10: "SD Status",
11: "ICCID1",
12: "Fuel Used GPS",
13: "Fuel Rate GPS",
15: "Eco Score",
16: "Total Odometer",
17: "Axis X",
18: "Axis Y",
19: "Axis Z",
21: "GSM Signal",
24: "Speed",
66: "External Voltage",
67: "Battery Voltage",
68: "Battery Current",
69: "GNSS Status",
71: "Dallas Temperature ID 4",
72: "Dallas Temperature 1",
73: "Dallas Temperature 2",
74: "Dallas Temperature 3",
75: "Dallas Temperature 4",
76: "Dallas Temperature ID 1",
77: "Dallas Temperature ID 2",
78: "iButton",
79: "Dallas Temperature ID 3",
80: "Data Mode",
113: "Battery Level",
179: "Digital Output 1",
180: "Digital Output 2",
181: "GNSS PDOP",
182: "GNSS HDOP",
199: "Trip Odometer",
200: "Sleep Mode",
201: "LLS 1 Fuel Level",
202: "LLS 1 Temperature",
203: "LLS 2 Fuel Level",
204: "LLS 2 Temperature",
205: "GSM Cell ID",
206: "GSM Area Code",
207: "RFID",
210: "LLS 3 Fuel Level",
211: "LLS 3 Temperature",
212: "LLS 4 Fuel Level",
213: "LLS 4 Temperature",
214: "LLS 5 Fuel Level",
215: "LLS 5 Temperature",
237: "Network Type",
238: "User ID",
239: "Ignition",
240: "Movement",
241: "Active GSM Operator",
263: "BT Status",
264: "Barcode ID",
303: "Instant Movement",
327: "UL202-02 Sensor Fuel level",
329: "AIN Speed",
380: "Digital output 3",
381: "Ground Sense",
383: "AXL Calibration Status",
387: "ISO6709 Coordinates",
403: "Driver Name",
404: "Driver card license type",
405: "Driver Gender",
406: "Driver Card ID",
407: "Driver card expiration date",
408: "Driver Card place of issue",
409: "Driver Status Event",
451: "BLE RFID #1",
452: "BLE RFID #2",
453: "BLE RFID #3",
454: "BLE RFID #4",
455: "BLE Button 1 state #1",
456: "BLE Button 1 state #2",
457: "BLE Button 1 state #3",
458: "BLE Button 1 state #4",
459: "BLE Button 2 state #1",
460: "BLE Button 2 state #2",
461: "BLE Button 2 state #3",
462: "BLE Button 2 state #4",
483: "UL202-02 Sensor Status",
500: "MSP500 vendor name",
501: "MSP500 vehicle number",
502: "MSP500 speed sensor",
622: "Frequency DIN1",
623: "Frequency DIN2",
636: "UMTS/LTE Cell ID",
637: "Wake Reason",
10800: "EYE Temperature 1",
10801: "EYE Temperature 2",
10802: "EYE Temperature 3",
10803: "EYE Temperature Liza4",
10804: "EYE Humidity 1",
10805: "EYE Humidity 2",
10806: "EYE Humidity 3",
10807: "EYE Humidity 4",
10808: "EYE Magnet 1",
10809: "EYE Magnet 2",
10810: "EYE Magnet 3",
10811: "EYE Magnet 4",
10812: "EYE Movement 1",
10813: "EYE Movement 2",
10814: "EYE Movement 3",
10815: "EYE Movement 4",
10816: "EYE Pitch 1",
10817: "EYE Pitch 2",
10818: "EYE Pitch 3",
10819: "EYE Pitch 4",
10820: "EYE Low Battery 1",
10821: "EYE Low Battery 2",
10822: "EYE Low Battery 3",
10823: "EYE Low Battery 4",
10824: "EYE Battery Voltage 1",
10825: "EYE Battery Voltage 2",
10826: "EYE Battery Voltage 3",
10827: "EYE Battery Voltage 4",
10832: "EYE Roll 1",
10833: "EYE Roll 2",
10834: "EYE Roll 3",
10835: "EYE Roll 4",
10836: "EYE Movement count 1",
10837: "EYE Movement count 2",
10838: "EYE Movement count 3",
10839: "EYE Movement count 4",
10840: "EYE Magnet count 1",
10841: "EYE Magnet count 2",
10842: "EYE Magnet count 3",
10843: "EYE Magnet count 4",
1148: "Connectivity quality",
14: "ICCID2",
20: "BLE Battery #2",
22: "BLE Battery #3",
23: "BLE Battery #4",
25: "BLE Temperature #1",
26: "BLE Temperature #2",
27: "BLE Temperature #3",
28: "BLE Temperature #4",
29: "BLE Battery #1",
30: "Number of DTC",
31: "Engine Load",
32: "Coolant Temperature",
33: "Short Fuel Trim",
34: "Fuel pressure",
35: "Intake MAP",
36: "Engine RPM",
37: "Vehicle Speed",
38: "Timing Advance",
39: "Intake Air Temperature",
40: "MAF",
41: "Throttle Position",
42: "Runtime since engine start",
43: "Distance Traveled MIL On",
44: "Relative Fuel Rail Pressure",
45: "Direct Fuel Rail Pressure",
46: "Commanded EGR",
47: "EGR Error",
48: "Fuel Level",
49: "Distance Since Codes Clear",
50: "Barometic Pressure",
51: "Control Module Voltage",
52: "Absolute Load Value",
53: "Ambient Air Temperature",
54: "Time Run With MIL On",
55: "Time Since Codes Cleared",
56: "Absolute Fuel Rail Pressure",
57: "Hybrid battery pack life",
58: "Engine Oil Temperature",
59: "Fuel injection timing",
60: "Fuel Rate",
61: "Geofence zone 06",
62: "Geofence zone 07",
63: "Geofence zone 08",
64: "Geofence zone 09",
65: "Geofence zone 10",
70: "Geofence zone 11",
81: "Vehicle Speed",
82: "Accelerator Pedal Position",
83: "Fuel Consumed",
84: "Fuel Level",
85: "Engine RPM",
86: "BLE Humidity #1",
87: "Total Mileage",
88: "Geofence zone 12",
89: "Fuel level",
90: "Door Status",
91: "Geofence zone 13",
92: "Geofence zone 14",
93: "Geofence zone 15",
94: "Geofence zone 16",
95: "Geofence zone 17",
96: "Geofence zone 18",
97: "Geofence zone 19",
98: "Geofence zone 20",
99: "Geofence zone 21",
100: "Program Number",
101: "Module ID 8B",
102: "Engine Worktime",
103: "Engine Worktime (counted)",
104: "BLE Humidity #2",
105: "Total Mileage (counted)",
106: "BLE Humidity #3",
107: "Fuel Consumed (counted)",
108: "BLE Humidity #4",
110: "Fuel Rate",
111: "AdBlue Level",
112: "AdBlue Level",
114: "Engine Load",
115: "Engine Temperature",
118: "Axle 1 Load",
119: "Axle 2 Load",
120: "Axle 3 Load",
121: "Axle 4 Load",
122: "Axle 5 Load",
123: "Control State Flags",
124: "Agricultural Machinery Flags",
125: "Harvesting Time",
126: "Area of Harvest",
127: "Mowing Efficiency",
128: "Grain Mown Volume",
129: "Grain Moisture",
130: "Harvesting Drum RPM",
131: "Gap Under Harvesting Drum",
132: "Security State Flags",
133: "Tachograph Total Vehicle Distance",
134: "Trip Distance",
135: "Tachograph Vehicle Speed",
136: "Tacho Driver Card Presence",
137: "Driver 1 States",
138: "Driver 2 States",
139: "Driver 1 Continuous Driving Time",
140: "Driver 2 Continuous Driving Time",
141: "Driver 1 Cumulative Break Time",
142: "Driver 2 Cumulative Break Time",
143: "Driver 1 Selected Activity Duration",
144: "Driver 2 Selected Activity Duration",
145: "Driver 1 Cumulative Driving Time",
146: "Driver 2 Cumulative Driving Time",
147: "Driver 1 ID High",
148: "Driver 1 ID Low",
149: "Driver 2 ID High",
150: "Driver 2 ID Low",
151: "Battery Temperature",
152: "HV Battery Level",
153: "Geofence zone 22",
154: "Geofence zone 23",
155: "Geofence zone 01",
156: "Geofence zone 02",
157: "Geofence zone 03",
158: "Geofence zone 04",
159: "Geofence zone 05",
160: "DTC Faults",
161: "Slope of Arm",
162: "Rotation of Arm",
163: "Eject of Arm",
164: "Horizontal Distance Arm Vehicle",
165: "Height Arm Above Ground",
166: "Drill RPM",
167: "Amount Of Spread Salt Square Meter",
168: "Battery Voltage",
169: "Amount Of Spread Fine Grained Salt",
170: "Amount Of Coarse Grained Salt",
171: "Amount Of Spread DiMix",
172: "Amount Of Spread Coarse Grained Calcium",
173: "Amount Of Spread Calcium Chloride",
174: "Amount Of Spread Sodium Chloride",
175: "Auto Geofence",
176: "Amount Of Spread Magnesium Chloride",
177: "Amount Of Spread Gravel",
178: "Amount Of Spread Sand",
183: "Width Pouring Left",
184: "Width Pouring Right",
185: "Salt Spreader Working Hours",
186: "Distance During Salting",
187: "Load Weight",
188: "Retarder Load",
189: "Cruise Time",
190: "Geofence zone 24",
191: "Geofence zone 25",
192: "Geofence zone 26",
193: "Geofence zone 27",
194: "Geofence zone 28",
195: "Geofence zone 29",
196: "Geofence zone 30",
197: "Geofence zone 31",
198: "Geofence zone 32",
208: "Geofence zone 33",
209: "Geofence zone 34",
216: "Geofence zone 35",
217: "Geofence zone 36",
218: "Geofence zone 37",
219: "Geofence zone 38",
220: "Geofence zone 39",
221: "Geofence zone 40",
222: "Geofence zone 41",
223: "Geofence zone 42",
224: "Geofence zone 43",
225: "Geofence zone 44",
226: "Geofence zone 45",
227: "Geofence zone 46",
228: "Geofence zone 47",
229: "Geofence zone 48",
230: "Geofence zone 49",
231: "Geofence zone 50",
232: "CNG Status",
233: "CNG Used",
234: "CNG Level",
235: "Oil Level",
236: "Alarm",
243: "Green driving event duration",
246: "Towing",
247: "Crash detection",
248: "Immobilizer",
249: "Jamming",
250: "Trip",
251: "Idling",
252: "Unplug",
253: "Green driving type",
254: "Green Driving Value",
255: "Over Speeding",
256: "VIN",
257: "Crash trace data",
258: "EcoMaximum",
259: "EcoAverage",
260: "EcoDuration",
270: "BLE Fuel Level #1",
273: "BLE Fuel Level #2",
276: "BLE Fuel Level #3",
279: "BLE Fuel Level #4",
281: "Fault Codes",
282: "Fault Codes",
283: "Driving State",
284: "Driving Records",
285: "Blood alcohol content",
304: "Vehicles Range On Battery",
305: "Vehicles Range On Additional Fuel",
306: "BLE Fuel Frequency #1",
307: "BLE Fuel Frequency #2",
308: "BLE Fuel Frequency #3",
309: "BLE Fuel Frequency #4",
317: "Crash event counter",
318: "GNSS Jamming",
325: "VIN",
331: "BLE 1 Custom #1",
332: "BLE 2 Custom #1",
333: "BLE 3 Custom #1",
334: "BLE 4 Custom #1",
335: "BLE Luminosity #1",
336: "BLE Luminosity #2",
337: "BLE Luminosity #3",
338: "BLE Luminosity #4",
385: "Beacon",
388: "Module ID 17B",
389: "OBD OEM Total Mileage",
390: "OBD OEM Fuel Level",
391: "Private mode",
400: "Distance to Next Service",
402: "OEM Distance Until Service",
411: "OEM Battery charge level",
449: "Ignition On Counter",
450: "CNG Level Kg",
463: "BLE 1 Custom #2",
464: "BLE 1 Custom #3",
465: "BLE 1 Custom #4",
466: "BLE 1 Custom #5",
467: "BLE 2 Custom #2",
468: "BLE 2 Custom #3",
469: "BLE 2 Custom #4",
470: "BLE 2 Custom #5",
471: "BLE 3 Custom #2",
472: "BLE 3 Custom #3",
473: "BLE 3 Custom #4",
474: "BLE 3 Custom #5",
475: "BLE 4 Custom #2",
476: "BLE 4 Custom #3",
477: "BLE 4 Custom #4",
478: "BLE 4 Custom #5",
517: "Security State Flags P4",
518: "Control State Flags P4",
519: "Indicator State Flags P4",
520: "Agricultural State Flags P4",
521: "Utility State Flags P4",
522: "Cistern State Flags P4",
540: "Throttle position group",
541: "Commanded Equivalence R",
542: "Intake MAP 2 bytes",
543: "Hybrid System Voltage",
544: "Hybrid System Current",
548: "Advanced BLE Beacon data",
652: "SSF KeyInIgnitionLock",
653: "SSF Handbrake Is Active",
654: "SSF Front Left Door Open",
655: "SSF Front Right Door Open",
656: "SSF Rear Left Door Open",
657: "SSF Rear Right Door Open",
658: "SSF Trunk Door Open",
659: "SSF Neutral Gear Active (automatic gear box)",
660: "SSF Parking Gear Active (automatic gear box)",
661: "SSF Reverse Gear Active",
662: "SSF Car Is Closed",
755: "OEM Remaining distance",
759: "Fuel Type",
855: "LNG Used",
856: "LNG Used (counted)",
857: "LNG Level",
858: "LNG Level",
859: "Distance from need of service",
860: "Distance from last service",
861: "Time to next service",
862: "Time from need of service",
863: "Time from last serivce",
864: "Distance to next oil service",
865: "Time to next oil service",
866: "LVCAN Vehicle Range",
867: "LVCAN Total CNG counted",
898: "SSF Ignition",
899: "SSF Webasto",
900: "SSF Engine Working",
901: "SSF Standalone Engine",
902: "SSF Ready To Drive",
903: "SSF Engine Working On CNG",
904: "SSF Work Mode",
905: "SSF Operator",
906: "SSF Interlock",
907: "SSF Engine Lock Active",
908: "SSF Request To Lock Engine",
909: "SSF Roof Open",
910: "SSF Footbrake Is Active",
911: "SSF Clutch Pushed",
912: "SSF Hazard Warning Lights",
913: "SSF Engine Cover Open",
914: "SSF Charging Wire Plugged",
915: "SSF Batttery Charging",
916: "SSF Electric Engine State",
917: "SSF Car Closed Factory Remote",
918: "SSF Factory Alarm Actuated",
919: "SSF Factory Alarm Emulated",
920: "SSF Signal Close Factory Remote",
921: "SSF Signal Open Factory Remote",
922: "SSF Rearming Signal",
923: "SSF Trunk Door Opened Factory Remote",
924: "SSF CAN Module In Sleep",
925: "SSF Factory Remote 3x",
926: "SSF Factory Armed",
927: "SSF Drive Is Active (automatic gear box)",
928: "CSF Parking Lights",
929: "CSF Dipped Head lights",
930: "CSF Full Beam Headlights",
931: "CSF Rear Fog Lights",
932: "CSF Front Fog Lights",
933: "CSF Additional Front Lights",
934: "CSF Additional Rear Lights",
935: "CSF Light Signal",
936: "CSF Air Conditioning",
937: "CSF Cruise Control",
938: "CSF Automatic Retarder",
939: "CSF Manual Retarder",
940: "CSF Driver's Seatbelt Fastened",
941: "CSF Front Driver's Seatbelt Fastened",
942: "CSF Left Driver's Seatbelt Fastened",
943: "CSF Right Driver's Seatbelt Fastened",
944: "CSF Centre Driver's Seatbelt Fastened",
945: "CSF Front Passenger Present",
946: "CSF PTO",
947: "CSF Front Differential Locked",
948: "CSF Rear Differential Locked",
949: "CSF Central Differential 4HI Locked",
950: "CSF Rear Differential 4LO Locked",
951: "CSF Trailer Axle 1 Lift Active",
952: "CSF Trailer Axle 2 Lift Active",
953: "ISF Check Engine Indicator",
954: "ISF ABS Indicator",
955: "ISF ESP Indicator",
956: "ISF ESP Turned Off",
957: "ISF Stop Indicator",
958: "ISF Oil Level Indicator",
959: "ISF Coolant liquid level",
960: "ISF Battery Not Charging Indicator",
961: "ISF Handbrake System Indicator",
962: "ISF AIRBAG Indicator",
963: "ISF EPS Indicator",
964: "ISF Warning Indicator",
965: "ISF Lights Failure Indicator",
966: "ISF Low Tire Pressure Indicator",
967: "ISF Wear Of Brake Pads Indicator",
968: "ISF Low Fuel Level Indicator",
969: "ISF Maintenence required Indicator",
970: "ISF Glow Plug Indicator",
971: "ISF FAP Indicator",
972: "ISF EPC (Electronic Power Control) Indicator",
973: "ISF Clogged Engine Oil Filter Indicator",
974: "ISF Low Engine Oil Pressure Indicator",
975: "ISF Too High Engine Oil Temperature Indicator",
976: "ISF Low Coolant Level Indicator",
977: "ISF Clogged Hydraulic System Oil filter Indicator",
978: "ISF Hydraulic System Low Pressure Indicator",
979: "ISF Hydraulic Oil Low Level Indicator",
980: "ISF Hydraulic System High Temperature Indicator",
981: "ISF Oil Overflow In Hydraulic Chamber Indicator",
982: "ISF Clogged Air Filter Indicator",
983: "ISF Clogged Fuel Filter Indicator",
984: "ISF Water in Fuel Indicator",
985: "ISF Clogged Brake System Filter Indicator",
986: "ISF Low Washer Fluid Level Indicator",
987: "ISF Low AdBlue Level Indicator",
988: "ISF Low Trailer Tyre Pressure Indicator",
989: "ISF Wear Of Trailer Brake Lining Indicator",
990: "ISF High Trailer Brake Temperature Indicator",
991: "ISF Incorrect Trailer Pneumatic Supply Indicator",
992: "ISF Low CNG Level Indicator",
993: "ASF Right Joystick Moved Right Active",
994: "ASF Right Joystick Moved Left Active",
995: "ASF Right Joystick Moved Forward Active",
996: "ASF Right Joystick Moved Back Active",
997: "ASF Left Joystick Moved Right Active",
998: "ASF Left Joystick Moved Left Active",
999: "ASF Left Joystick Moved Forward Active",
1000: "ASF Left Joystick Moved Back Active",
1001: "ASF First Rear hydraulic",
1002: "ASF Second Rear hydraulic",
1003: "ASF Third Rear hydraulic",
1004: "ASF Fourth Rear hydraulic",
1005: "ASF First Front hydraulic",
1006: "ASF Second Front hydraulic",
1007: "ASF Third Front hydraulic",
1008: "ASF Fourth Front hydraulic",
1009: "ASF Front Three-point Hitch",
1010: "ASF Rear Three-point Hitch",
1011: "ASF Front Power Take-off",
1012: "ASF Rear Power Take-off",
1013: "ASF Mowing Active",
1014: "ASF Threshing Active",
1015: "ASF Grain Release From Hopper",
1016: "ASF Grain Tank Is 100% Full",
1017: "ASF Grain Tank Is 70% Full",
1018: "ASF Grain Tank Is Opened",
1019: "ASF Unloader Drive",
1020: "ASF Cleaning Fan Control Turned Off",
1021: "ASF Threshing Drum Control Turned Off",
1022: "ASF Straw Walker Is Clogged",
1023: "ASF Excessive Clearance Under The Threshing Drum",
1024: "ASF Low Temperature Of Drive System Hydraulics Less Than 5 Grades",
1025: "ASF High Temperature Of Drive System Hydraulics Greater Than 86 Grades",
1026: "ASF Ear Auger Speed Below The Norm",
1027: "ASF Grain Auger Speed Below The Norm",
1028: "ASF Straw Chooper Speed Below The Norm",
1029: "ASF Straw Shaker Speed Below The Norm",
1030: "ASF Feeder Speed Below The Norm",
1031: "ASF Straw Chopper Switched On",
1032: "ASF Corn Header Connected",
1033: "ASF Grain Header Connected",
1034: "ASF Feeder Reverse Switched On",
1035: "ASF The Pressure Filter Of The Hydraulic Pump Is Clogged",
1036: "USF Spreading",
1037: "USF Pouring Chemicals",
1038: "USF Conveyor Belt",
1039: "USF Salt Spreader's Drive Wheel",
1040: "USF Brushes",
1041: "USF Vacuum Cleaner",
1042: "USF Water Supply",
1043: "USF Spreading",
1044: "USF Liquid pump",
1045: "USF Unloading From The Hopper",
1046: "USF Low Salt (Sand) Level In Container Indicator",
1047: "USF Low Water Level in Container Indicator",
1048: "USF Chemicals",
1049: "USF Compressor",
1050: "USF Water Valve Is Opened",
1051: "USF Cabin Moved Up Status Active",
1052: "USF Cabin Moved Down Status Active",
1053: "CiSF Section 1 Presence Of Fluid In The Downpipe",
1054: "CiSF Section 1 Filled",
1055: "CiSF Section 1 Overfilled",
1056: "CiSF Section 2 Presence Of Fluid In The Downpipe",
1057: "CiSF Section 2 Filled",
1058: "CiSF Section 2 Overfilled",
1059: "CiSF Section 3 Presence Of Fluid In The Downpipe",
1060: "CiSF Section 3 Filled",
1061: "CiSF Section 3 Overfilled",
1062: "CiSF Section 4 Presence Of Fluid In The Downpipe",
1063: "CiSF Section 4 Filled",
1064: "CiSF Section 4 Overfilled",
1065: "CiSF Section 5 Presence Of Fluid In The Downpipe",
1066: "CiSF Section 5 Filled",
1067: "CiSF Section 5 Overfilled",
1068: "CiSF Section 6 Presence Of Fluid In The Downpipe",
1069: "CiSF Section 6 Filled",
1070: "CiSF Section 6 Overfilled",
1071: "CiSF Section 7 Presence Of Fluid In The Downpipe",
1072: "CiSF Section 7 Filled",
1073: "CiSF Section 7 Overfilled",
1074: "CiSF Section 8 Presence Of Fluid In The Downpipe",
1075: "CiSF Section 8 Filled",
1076: "CiSF Section 8 Overfilled",
1079: "Total Bale Count",
1080: "Bale Count",
1081: "Cut Bale Count",
1082: "Bale Slices",
1083: "SSF Engine Working On Dual Fuel",
1084: "SSF Engine Working On LPG",
1085: "CSF Trailer Connected",
1086: "CSF Start Stop System Inactive",
1087: "ASF Adapter Pressure Filter Sensor",
1088: "ASF Service 2 Required Indicator",
1089: "ASF Drain Filter Clogged Indicator",
1090: "ASF Section 1 Spraying",
1091: "ASF Section 2 Spraying",
1092: "ASF Section 3 Spraying",
1093: "ASF Section 4 Spraying",
1094: "ASF Section 5 Spraying",
1095: "ASF Section 6 Spraying",
1096: "ASF Section 7 Spraying",
1097: "ASF Section 8 Spraying",
1098: "ASF Section 9 Spraying",
1099: "USF Hydraulics Work Not Permitted",
1100: "Total LPG Used",
1101: "Total LPG Used Counted",
1102: "LPG Level Proc",
1103: "LPG Level Liters",
1116: "LVCAN MaxRoadSpeed",
1117: "LVCAN ExceededRoadSpeed",
1151: "OEM Battery State Of Health",
1152: "OEM Battery Temperature",
1205: "LVCAN RSF SpeedLimitSign",
1206: "LVCAN RSF EndOfSpeedLimitSign",
1207: "LVCAN RSF SpeedExceeded",
1208: "LVCAN RSF TimeSpeedLimitSign",
1209: "LVCAN RSF WthrSpeedLimitSign",
1412: "Motorcycle Fall Detection",
}