queclink-parser 1.9.28 → 1.9.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +30 -23
- package/package.json +37 -35
- package/src/gl300.js +6 -6
- package/src/gl50.js +2 -2
- package/src/gl533cg.js +25 -9
- package/src/gmt100.js +10 -10
- package/src/gv200.js +56 -58
- package/src/gv300.js +55 -51
- package/src/gv300w.js +77 -73
- package/src/gv310lau.js +215 -200
- package/src/gv350ceu.js +278 -263
- package/src/gv500.js +2 -2
- package/src/gv50p.js +10 -10
- package/src/gv55.js +10 -10
- package/src/gv57cg.js +142 -142
- package/src/gv58lau.js +504 -483
- package/src/gv600w.js +39 -39
- package/src/gv75w.js +71 -67
- package/src/gv800w.js +44 -44
- package/src/index.js +16 -16
- package/src/utils.js +725 -720
package/src/gv57cg.js
CHANGED
|
@@ -23,7 +23,7 @@ const parse = raw => {
|
|
|
23
23
|
imei: parsedData[2],
|
|
24
24
|
protocolVersion: utils.getProtocolVersion(parsedData[1]),
|
|
25
25
|
// temperature: null,
|
|
26
|
-
history
|
|
26
|
+
history,
|
|
27
27
|
sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
|
|
28
28
|
serialId: parseInt(parsedData[parsedData.length - 1], 16)
|
|
29
29
|
}
|
|
@@ -32,10 +32,10 @@ const parse = raw => {
|
|
|
32
32
|
// "+RESP:GTFRI,8020060402,864696060060852,GV57CG,,10,1,0,,,,,,,0730,0001,13EE,0032A502,03,0,0,0.0,0000000:00:00,,,,0,210100,,,,20240925144523,0011$"
|
|
33
33
|
if (command[1] === 'GTFRI') {
|
|
34
34
|
try {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
const number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
36
|
+
const satelliteInfo = utils.includeSatellites(parsedData[18])
|
|
37
|
+
const gnssInfo = utils.includeGnssTrigger(parsedData[18])
|
|
38
|
+
const index = 6 + (12 + satelliteInfo + gnssInfo) * number + 1
|
|
39
39
|
|
|
40
40
|
data = Object.assign(data, {
|
|
41
41
|
alarm: utils.getAlarm(command[1], null),
|
|
@@ -53,29 +53,29 @@ const parse = raw => {
|
|
|
53
53
|
raw: parsedData[index + 6],
|
|
54
54
|
sos: false,
|
|
55
55
|
input: {
|
|
56
|
-
|
|
56
|
+
2:
|
|
57
57
|
utils.nHexDigit(
|
|
58
58
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
59
59
|
8
|
|
60
60
|
)[6] === '1',
|
|
61
|
-
|
|
61
|
+
1:
|
|
62
62
|
utils.nHexDigit(
|
|
63
63
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
64
64
|
8
|
|
65
65
|
)[7] === '1'
|
|
66
66
|
},
|
|
67
67
|
output: {
|
|
68
|
-
|
|
68
|
+
3:
|
|
69
69
|
utils.nHexDigit(
|
|
70
70
|
utils.hex2bin(parsedData[index + 6].substring(4, 6)),
|
|
71
71
|
8
|
|
72
72
|
)[5] === '1',
|
|
73
|
-
|
|
73
|
+
2:
|
|
74
74
|
utils.nHexDigit(
|
|
75
75
|
utils.hex2bin(parsedData[index + 6].substring(4, 6)),
|
|
76
76
|
8
|
|
77
77
|
)[6] === '1',
|
|
78
|
-
|
|
78
|
+
1:
|
|
79
79
|
utils.nHexDigit(
|
|
80
80
|
utils.hex2bin(parsedData[index + 6].substring(4, 6)),
|
|
81
81
|
8
|
|
@@ -124,9 +124,9 @@ const parse = raw => {
|
|
|
124
124
|
|
|
125
125
|
// More than 1 GNSS report in data
|
|
126
126
|
if (number > 1) {
|
|
127
|
-
|
|
127
|
+
const moreData = []
|
|
128
128
|
for (let i = 1; i < number; i++) {
|
|
129
|
-
|
|
129
|
+
const gnssIx = 7 + (12 + gnssInfo + satelliteInfo) * i
|
|
130
130
|
|
|
131
131
|
moreData.push({
|
|
132
132
|
index: i,
|
|
@@ -183,23 +183,23 @@ const parse = raw => {
|
|
|
183
183
|
gnssInfo &&
|
|
184
184
|
parsedData[gnssIx + satelliteInfo + gnssInfo + 11] !== ''
|
|
185
185
|
? utils.gnssTriggerTypes[
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
parsedData[gnssIx + satelliteInfo + gnssInfo + 11]
|
|
187
|
+
]
|
|
188
188
|
: null
|
|
189
189
|
})
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
data = Object.assign(data, { moreData
|
|
192
|
+
data = Object.assign(data, { moreData })
|
|
193
193
|
}
|
|
194
194
|
} catch (err) {
|
|
195
195
|
return { type: 'UNKNOWN', raw: data.raw.toString() }
|
|
196
196
|
}
|
|
197
197
|
} else if (command[1] === 'GTERI') {
|
|
198
198
|
// GPS with AC100 and/or Bluetoth Devices Connected
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
199
|
+
const number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
|
|
200
|
+
const satelliteInfo = utils.includeSatellites(parsedData[19])
|
|
201
|
+
const gnssInfo = utils.includeGnssTrigger(parsedData[19])
|
|
202
|
+
const index = 7 + (12 + satelliteInfo + gnssInfo) * number + 1
|
|
203
203
|
|
|
204
204
|
data = Object.assign(data, {
|
|
205
205
|
alarm: utils.getAlarm(command[1], null),
|
|
@@ -217,29 +217,29 @@ const parse = raw => {
|
|
|
217
217
|
raw: parsedData[index + 6],
|
|
218
218
|
sos: false,
|
|
219
219
|
input: {
|
|
220
|
-
|
|
220
|
+
2:
|
|
221
221
|
utils.nHexDigit(
|
|
222
222
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
223
223
|
8
|
|
224
224
|
)[6] === '1',
|
|
225
|
-
|
|
225
|
+
1:
|
|
226
226
|
utils.nHexDigit(
|
|
227
227
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
228
228
|
8
|
|
229
229
|
)[7] === '1'
|
|
230
230
|
},
|
|
231
231
|
output: {
|
|
232
|
-
|
|
232
|
+
3:
|
|
233
233
|
utils.nHexDigit(
|
|
234
234
|
utils.hex2bin(parsedData[index + 6].substring(4, 6)),
|
|
235
235
|
8
|
|
236
236
|
)[5] === '1',
|
|
237
|
-
|
|
237
|
+
2:
|
|
238
238
|
utils.nHexDigit(
|
|
239
239
|
utils.hex2bin(parsedData[index + 6].substring(4, 6)),
|
|
240
240
|
8
|
|
241
241
|
)[6] === '1',
|
|
242
|
-
|
|
242
|
+
1:
|
|
243
243
|
utils.nHexDigit(
|
|
244
244
|
utils.hex2bin(parsedData[index + 6].substring(4, 6)),
|
|
245
245
|
8
|
|
@@ -288,11 +288,11 @@ const parse = raw => {
|
|
|
288
288
|
const bandData =
|
|
289
289
|
utils.nHexDigit(utils.hex2bin(parsedData[4]), 32)[16] === '1'
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
const externalData = {
|
|
292
292
|
eriMask: {
|
|
293
293
|
raw: parsedData[4],
|
|
294
|
-
canData
|
|
295
|
-
bandData
|
|
294
|
+
canData,
|
|
295
|
+
bandData
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
|
|
@@ -479,14 +479,14 @@ const parse = raw => {
|
|
|
479
479
|
// }
|
|
480
480
|
|
|
481
481
|
data = Object.assign(data, {
|
|
482
|
-
externalData
|
|
482
|
+
externalData
|
|
483
483
|
})
|
|
484
484
|
|
|
485
485
|
// More than 1 GNSS report in data
|
|
486
486
|
if (number > 1) {
|
|
487
|
-
|
|
487
|
+
const moreData = []
|
|
488
488
|
for (let i = 1; i < number; i++) {
|
|
489
|
-
|
|
489
|
+
const gnssIx = 8 + (12 + gnssInfo + satelliteInfo) * i
|
|
490
490
|
moreData.push({
|
|
491
491
|
index: i,
|
|
492
492
|
loc: {
|
|
@@ -542,13 +542,13 @@ const parse = raw => {
|
|
|
542
542
|
gnssInfo &&
|
|
543
543
|
parsedData[gnssIx + satelliteInfo + gnssInfo + 11] !== ''
|
|
544
544
|
? utils.gnssTriggerTypes[
|
|
545
|
-
|
|
546
|
-
|
|
545
|
+
parsedData[gnssIx + satelliteInfo + gnssInfo + 11]
|
|
546
|
+
]
|
|
547
547
|
: null
|
|
548
548
|
})
|
|
549
549
|
}
|
|
550
550
|
|
|
551
|
-
data = Object.assign(data, { moreData
|
|
551
|
+
data = Object.assign(data, { moreData })
|
|
552
552
|
}
|
|
553
553
|
} else if (command[1] === 'GTHBD') {
|
|
554
554
|
// Heartbeat. It must response an ACK command
|
|
@@ -568,16 +568,16 @@ const parse = raw => {
|
|
|
568
568
|
RSSI_quality:
|
|
569
569
|
parsedData[10] !== ''
|
|
570
570
|
? utils.getSignalStrength(
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
571
|
+
utils.networkTypes[parsedData[10]],
|
|
572
|
+
parseInt(parsedData[6], 10)
|
|
573
|
+
)
|
|
574
574
|
: null, // Signal Strength
|
|
575
575
|
RSSI_percentage:
|
|
576
576
|
parsedData[10] !== ''
|
|
577
577
|
? utils.getSignalPercentage(
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
578
|
+
utils.networkTypes[parsedData[10]],
|
|
579
|
+
parseInt(parsedData[6], 10)
|
|
580
|
+
)
|
|
581
581
|
: null, // Signal Percetange
|
|
582
582
|
GSM_quality:
|
|
583
583
|
parsedData[7] !== ''
|
|
@@ -594,13 +594,13 @@ const parse = raw => {
|
|
|
594
594
|
raw: `${parsedData[21]}${parsedData[22]}`,
|
|
595
595
|
sos: false,
|
|
596
596
|
input: {
|
|
597
|
-
|
|
598
|
-
|
|
597
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[6] === '1',
|
|
598
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[7] === '1'
|
|
599
599
|
},
|
|
600
600
|
output: {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
601
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[22]), 8)[5] === '1',
|
|
602
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[22]), 8)[6] === '1',
|
|
603
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[22]), 8)[7] === '1'
|
|
604
604
|
},
|
|
605
605
|
charge: parsedData[12] === '1'
|
|
606
606
|
},
|
|
@@ -629,7 +629,7 @@ const parse = raw => {
|
|
|
629
629
|
command[1] === 'GTHBM'
|
|
630
630
|
) {
|
|
631
631
|
// Common Alarms
|
|
632
|
-
|
|
632
|
+
const number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
633
633
|
let index = 6 + 12 * number // position append mask
|
|
634
634
|
let satelliteInfo = false
|
|
635
635
|
|
|
@@ -715,7 +715,7 @@ const parse = raw => {
|
|
|
715
715
|
})
|
|
716
716
|
} else if (command[1] === 'GTEPS' || command[1] === 'GTAIS') {
|
|
717
717
|
// External low battery and Low voltage for analog input
|
|
718
|
-
|
|
718
|
+
const number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
719
719
|
let index = 6 + 12 * number // position append mask
|
|
720
720
|
let satelliteInfo = false
|
|
721
721
|
|
|
@@ -802,7 +802,7 @@ const parse = raw => {
|
|
|
802
802
|
command[1] === 'GTBTC' ||
|
|
803
803
|
command[1] === 'GTDRM'
|
|
804
804
|
) {
|
|
805
|
-
|
|
805
|
+
let index = 15
|
|
806
806
|
let satelliteInfo = false
|
|
807
807
|
// let includeStatus =
|
|
808
808
|
// parsedData[index] !== '' ? parseInt(parsedData[index]) > 3 : null
|
|
@@ -1066,7 +1066,7 @@ const parse = raw => {
|
|
|
1066
1066
|
} else if (command[1] === 'GTIGN' || command[1] === 'GTIGF') {
|
|
1067
1067
|
let index = 16 // position append mask
|
|
1068
1068
|
let satelliteInfo = false
|
|
1069
|
-
|
|
1069
|
+
const includeStatus =
|
|
1070
1070
|
parsedData[index] !== '' ? parseInt(parsedData[index]) > 3 : null
|
|
1071
1071
|
|
|
1072
1072
|
// If get satellites is configured
|
|
@@ -1110,40 +1110,40 @@ const parse = raw => {
|
|
|
1110
1110
|
: null,
|
|
1111
1111
|
status: includeStatus
|
|
1112
1112
|
? {
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1113
|
+
raw: parsedData[index + 1],
|
|
1114
|
+
sos: false,
|
|
1115
|
+
input: {
|
|
1116
|
+
2:
|
|
1117
1117
|
utils.nHexDigit(
|
|
1118
1118
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1119
1119
|
8
|
|
1120
1120
|
)[6] === '1',
|
|
1121
|
-
|
|
1121
|
+
1:
|
|
1122
1122
|
utils.nHexDigit(
|
|
1123
1123
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1124
1124
|
8
|
|
1125
1125
|
)[7] === '1'
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1126
|
+
},
|
|
1127
|
+
output: {
|
|
1128
|
+
3:
|
|
1129
1129
|
utils.nHexDigit(
|
|
1130
1130
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
1131
1131
|
8
|
|
1132
1132
|
)[5] === '1',
|
|
1133
|
-
|
|
1133
|
+
2:
|
|
1134
1134
|
utils.nHexDigit(
|
|
1135
1135
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
1136
1136
|
8
|
|
1137
1137
|
)[6] === '1',
|
|
1138
|
-
|
|
1138
|
+
1:
|
|
1139
1139
|
utils.nHexDigit(
|
|
1140
1140
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
1141
1141
|
8
|
|
1142
1142
|
)[7] === '1'
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1143
|
+
},
|
|
1144
|
+
charge: null,
|
|
1145
|
+
state: utils.states[parsedData[index + 1].substring(0, 2)]
|
|
1146
|
+
}
|
|
1147
1147
|
: null,
|
|
1148
1148
|
odometer: includeStatus
|
|
1149
1149
|
? parsedData[index + 3] !== ''
|
|
@@ -1713,7 +1713,7 @@ const parse = raw => {
|
|
|
1713
1713
|
// Virtual ignition
|
|
1714
1714
|
let index = 18 // possition append mask
|
|
1715
1715
|
let satelliteInfo = false
|
|
1716
|
-
|
|
1716
|
+
const includeStatus =
|
|
1717
1717
|
parsedData[index] !== '' ? parseInt(parsedData[index]) > 3 : null
|
|
1718
1718
|
|
|
1719
1719
|
// If get satellites is configured
|
|
@@ -1757,40 +1757,40 @@ const parse = raw => {
|
|
|
1757
1757
|
: null,
|
|
1758
1758
|
status: includeStatus
|
|
1759
1759
|
? {
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1760
|
+
raw: parsedData[index + 1],
|
|
1761
|
+
sos: false,
|
|
1762
|
+
input: {
|
|
1763
|
+
2:
|
|
1764
1764
|
utils.nHexDigit(
|
|
1765
1765
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1766
1766
|
8
|
|
1767
1767
|
)[6] === '1',
|
|
1768
|
-
|
|
1768
|
+
1:
|
|
1769
1769
|
utils.nHexDigit(
|
|
1770
1770
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1771
1771
|
8
|
|
1772
1772
|
)[7] === '1'
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1773
|
+
},
|
|
1774
|
+
output: {
|
|
1775
|
+
3:
|
|
1776
1776
|
utils.nHexDigit(
|
|
1777
1777
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
1778
1778
|
8
|
|
1779
1779
|
)[5] === '1',
|
|
1780
|
-
|
|
1780
|
+
2:
|
|
1781
1781
|
utils.nHexDigit(
|
|
1782
1782
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
1783
1783
|
8
|
|
1784
1784
|
)[6] === '1',
|
|
1785
|
-
|
|
1785
|
+
1:
|
|
1786
1786
|
utils.nHexDigit(
|
|
1787
1787
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
1788
1788
|
8
|
|
1789
1789
|
)[7] === '1'
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1790
|
+
},
|
|
1791
|
+
charge: null,
|
|
1792
|
+
state: utils.states[parsedData[index + 1].substring(0, 2)]
|
|
1793
|
+
}
|
|
1794
1794
|
: null,
|
|
1795
1795
|
odometer: includeStatus
|
|
1796
1796
|
? parsedData[index + 3] !== ''
|
|
@@ -1812,7 +1812,7 @@ const parse = raw => {
|
|
|
1812
1812
|
alarm: utils.getAlarm(command[1], null),
|
|
1813
1813
|
fixType: parsedData[3] !== '' ? parsedData[3] : null
|
|
1814
1814
|
})
|
|
1815
|
-
|
|
1815
|
+
const antData = []
|
|
1816
1816
|
let index = 4
|
|
1817
1817
|
for (let i = 0; i < 6; i++) {
|
|
1818
1818
|
antData.push({
|
|
@@ -1834,16 +1834,16 @@ const parse = raw => {
|
|
|
1834
1834
|
rxLevel:
|
|
1835
1835
|
parsedData[index + 4] !== ''
|
|
1836
1836
|
? utils.getSignalStrength(
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1837
|
+
'GSM',
|
|
1838
|
+
parseInt(parsedData[index + 4], 10)
|
|
1839
|
+
)
|
|
1840
1840
|
: null,
|
|
1841
1841
|
rxSignalPercentage:
|
|
1842
1842
|
parsedData[index + 4] !== ''
|
|
1843
1843
|
? utils.getSignalPercentage(
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1844
|
+
'GSM',
|
|
1845
|
+
parseInt(parsedData[index + 4], 10)
|
|
1846
|
+
)
|
|
1847
1847
|
: null
|
|
1848
1848
|
})
|
|
1849
1849
|
index += 6
|
|
@@ -1872,9 +1872,9 @@ const parse = raw => {
|
|
|
1872
1872
|
rxSignalPercentage:
|
|
1873
1873
|
parsedData[index + 4] !== ''
|
|
1874
1874
|
? utils.getSignalPercentage(
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1875
|
+
'GSM',
|
|
1876
|
+
parseInt(parsedData[index + 4], 10)
|
|
1877
|
+
)
|
|
1878
1878
|
: null
|
|
1879
1879
|
})
|
|
1880
1880
|
} else if (command[1] === 'GTCLT') {
|
|
@@ -1882,7 +1882,7 @@ const parse = raw => {
|
|
|
1882
1882
|
let index = 71 // position append mask
|
|
1883
1883
|
let satelliteInfo = false
|
|
1884
1884
|
|
|
1885
|
-
|
|
1885
|
+
const includeStatus =
|
|
1886
1886
|
parsedData[index] !== '' ? parseInt(parsedData[index]) > 3 : null
|
|
1887
1887
|
|
|
1888
1888
|
// If get satellites is configured
|
|
@@ -1891,65 +1891,65 @@ const parse = raw => {
|
|
|
1891
1891
|
satelliteInfo = true
|
|
1892
1892
|
}
|
|
1893
1893
|
|
|
1894
|
-
|
|
1894
|
+
const alarmMask1 =
|
|
1895
1895
|
parsedData[5] !== ''
|
|
1896
1896
|
? utils
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1897
|
+
.nHexDigit(utils.hex2bin(parsedData[5]), 32)
|
|
1898
|
+
.split('')
|
|
1899
|
+
.reverse()
|
|
1900
|
+
.join('')
|
|
1901
1901
|
: null
|
|
1902
|
-
|
|
1902
|
+
const alarmMask2 =
|
|
1903
1903
|
parsedData[6] !== ''
|
|
1904
1904
|
? utils
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1905
|
+
.nHexDigit(utils.hex2bin(parsedData[6]), 32)
|
|
1906
|
+
.split('')
|
|
1907
|
+
.reverse()
|
|
1908
|
+
.join('')
|
|
1909
1909
|
: null
|
|
1910
|
-
|
|
1910
|
+
const alarmMask3 =
|
|
1911
1911
|
parsedData[7] !== ''
|
|
1912
1912
|
? utils
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1913
|
+
.nHexDigit(utils.hex2bin(parsedData[7]), 32)
|
|
1914
|
+
.split('')
|
|
1915
|
+
.reverse()
|
|
1916
|
+
.join('')
|
|
1917
1917
|
: null
|
|
1918
|
-
|
|
1918
|
+
const inicatorsBin =
|
|
1919
1919
|
parsedData[28] !== ''
|
|
1920
1920
|
? utils.nHexDigit(utils.hex2bin(parsedData[28]), 16)
|
|
1921
1921
|
: null
|
|
1922
|
-
|
|
1922
|
+
const lights =
|
|
1923
1923
|
parsedData[29] !== ''
|
|
1924
1924
|
? utils.nHexDigit(utils.hex2bin(parsedData[29]), 8)
|
|
1925
1925
|
: null
|
|
1926
|
-
|
|
1926
|
+
const doors =
|
|
1927
1927
|
parsedData[30] !== ''
|
|
1928
1928
|
? utils.nHexDigit(utils.hex2bin(parsedData[30]), 8)
|
|
1929
1929
|
: null
|
|
1930
|
-
|
|
1930
|
+
const canExpansionMask =
|
|
1931
1931
|
parsedData[33] !== ''
|
|
1932
1932
|
? utils
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1933
|
+
.nHexDigit(utils.hex2bin(parsedData[33]), 32)
|
|
1934
|
+
.split('')
|
|
1935
|
+
.reverse()
|
|
1936
|
+
.join('')
|
|
1937
1937
|
: null
|
|
1938
|
-
|
|
1938
|
+
const expansionBin =
|
|
1939
1939
|
parsedData[54] !== ''
|
|
1940
1940
|
? utils
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1941
|
+
.nHexDigit(utils.hex2bin(parsedData[54]), 16)
|
|
1942
|
+
.split('')
|
|
1943
|
+
.reverse()
|
|
1944
|
+
.join('')
|
|
1945
1945
|
: null
|
|
1946
|
-
|
|
1946
|
+
const tachographBin =
|
|
1947
1947
|
parsedData[27] !== ''
|
|
1948
1948
|
? utils
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1949
|
+
.nHexDigit(utils.hex2bin(parsedData[27]), 8)
|
|
1950
|
+
.split('')
|
|
1951
|
+
.reverse()
|
|
1952
|
+
.join('')
|
|
1953
1953
|
: null
|
|
1954
1954
|
data = Object.assign(data, {
|
|
1955
1955
|
alarm: utils.getAlarm(command[1], parsedData[6]),
|
|
@@ -1983,40 +1983,40 @@ const parse = raw => {
|
|
|
1983
1983
|
: null,
|
|
1984
1984
|
status: includeStatus
|
|
1985
1985
|
? {
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1986
|
+
raw: parsedData[index + 1],
|
|
1987
|
+
sos: false,
|
|
1988
|
+
input: {
|
|
1989
|
+
2:
|
|
1990
1990
|
utils.nHexDigit(
|
|
1991
1991
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1992
1992
|
8
|
|
1993
1993
|
)[6] === '1',
|
|
1994
|
-
|
|
1994
|
+
1:
|
|
1995
1995
|
utils.nHexDigit(
|
|
1996
1996
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1997
1997
|
8
|
|
1998
1998
|
)[7] === '1'
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
1999
|
+
},
|
|
2000
|
+
output: {
|
|
2001
|
+
3:
|
|
2002
2002
|
utils.nHexDigit(
|
|
2003
2003
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
2004
2004
|
8
|
|
2005
2005
|
)[5] === '1',
|
|
2006
|
-
|
|
2006
|
+
2:
|
|
2007
2007
|
utils.nHexDigit(
|
|
2008
2008
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
2009
2009
|
8
|
|
2010
2010
|
)[6] === '1',
|
|
2011
|
-
|
|
2011
|
+
1:
|
|
2012
2012
|
utils.nHexDigit(
|
|
2013
2013
|
utils.hex2bin(parsedData[index + 1].substring(4, 6)),
|
|
2014
2014
|
8
|
|
2015
2015
|
)[7] === '1'
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2016
|
+
},
|
|
2017
|
+
charge: null,
|
|
2018
|
+
state: utils.states[parsedData[index + 1].substring(0, 2)]
|
|
2019
|
+
}
|
|
2020
2020
|
: null,
|
|
2021
2021
|
odometer: null,
|
|
2022
2022
|
hourmeter: null,
|
|
@@ -2443,13 +2443,13 @@ const parse = raw => {
|
|
|
2443
2443
|
satelliteInfo = true
|
|
2444
2444
|
}
|
|
2445
2445
|
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2446
|
+
const maxAcc = parsedData[index + 1] !== '' ? parsedData[index + 1] : null
|
|
2447
|
+
const avgAcc = parsedData[index + 2] !== '' ? parsedData[index + 2] : null
|
|
2448
|
+
const duration =
|
|
2449
2449
|
parsedData[index + 3] !== ''
|
|
2450
2450
|
? parseFloat(parsedData[index + 3]) / 100
|
|
2451
2451
|
: null
|
|
2452
|
-
|
|
2452
|
+
const speed = parsedData[8] !== '' ? parseFloat(parsedData[8]) : null
|
|
2453
2453
|
|
|
2454
2454
|
data = Object.assign(data, {
|
|
2455
2455
|
alarm: utils.getAlarm(
|
|
@@ -2461,7 +2461,7 @@ const parse = raw => {
|
|
|
2461
2461
|
type: 'Point',
|
|
2462
2462
|
coordinates: [parseFloat(parsedData[11]), parseFloat(parsedData[12])]
|
|
2463
2463
|
},
|
|
2464
|
-
speed
|
|
2464
|
+
speed,
|
|
2465
2465
|
gpsStatus: utils.checkGps(
|
|
2466
2466
|
parseFloat(parsedData[11]),
|
|
2467
2467
|
parseFloat(parsedData[12])
|
|
@@ -2551,7 +2551,7 @@ const parse = raw => {
|
|
|
2551
2551
|
? utils.getAccelerationMagnitude(avgAcc.substring(8, 12), 4)
|
|
2552
2552
|
: null
|
|
2553
2553
|
},
|
|
2554
|
-
duration
|
|
2554
|
+
duration,
|
|
2555
2555
|
odometer:
|
|
2556
2556
|
parsedData[index + 4] !== '' ? parseFloat(parsedData[index + 4]) : null
|
|
2557
2557
|
// hourmeter: null
|
|
@@ -2577,5 +2577,5 @@ const parse = raw => {
|
|
|
2577
2577
|
}
|
|
2578
2578
|
|
|
2579
2579
|
module.exports = {
|
|
2580
|
-
parse
|
|
2580
|
+
parse
|
|
2581
2581
|
}
|