queclink-parser 1.9.12 → 1.9.14
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 +39 -0
- package/example.js +110 -106
- package/package.json +1 -1
- package/src/gv310lau.js +173 -241
- package/src/gv57cg.js +4 -4
- package/src/gv58lau.js +837 -1231
- package/src/index.js +11 -2
- package/src/messages/es.json +11 -10
- package/src/utils.js +274 -24
package/src/gv310lau.js
CHANGED
|
@@ -32,14 +32,9 @@ const parse = raw => {
|
|
|
32
32
|
if (command[1] === 'GTFRI') {
|
|
33
33
|
try {
|
|
34
34
|
let number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
35
|
-
let
|
|
36
|
-
let
|
|
37
|
-
|
|
38
|
-
// If get satellites is configured
|
|
39
|
-
if (utils.includeSatellites(parsedData[18])) {
|
|
40
|
-
index = 6 + 13 * number
|
|
41
|
-
satelliteInfo = true
|
|
42
|
-
}
|
|
35
|
+
let satelliteInfo = utils.includeSatellites(parsedData[18])
|
|
36
|
+
let accuracyInfo = utils.includeGnnsAccuracy(parsedData[18]) ? 3 : 0
|
|
37
|
+
let index = 6 + (12 + satelliteInfo + accuracyInfo) * number
|
|
43
38
|
|
|
44
39
|
data = Object.assign(data, {
|
|
45
40
|
alarm: utils.getAlarm(command[1], null),
|
|
@@ -146,8 +141,20 @@ const parse = raw => {
|
|
|
146
141
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
147
142
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
148
143
|
satellites:
|
|
149
|
-
satelliteInfo && parsedData[index] !== ''
|
|
150
|
-
? parseInt(parsedData[index], 10)
|
|
144
|
+
satelliteInfo && parsedData[index - (satelliteInfo + accuracyInfo) + 1] !== ''
|
|
145
|
+
? parseInt(parsedData[index - (satelliteInfo + accuracyInfo) + 1], 10)
|
|
146
|
+
: null,
|
|
147
|
+
Hdop:
|
|
148
|
+
accuracyInfo && parsedData[index - accuracyInfo + 1] !== ''
|
|
149
|
+
? parseFloat(parsedData[index - accuracyInfo + 1])
|
|
150
|
+
: null,
|
|
151
|
+
Vdop:
|
|
152
|
+
accuracyInfo && parsedData[index - accuracyInfo + 2] !== ''
|
|
153
|
+
? parseFloat(parsedData[index - accuracyInfo + 2])
|
|
154
|
+
: null,
|
|
155
|
+
Ddop:
|
|
156
|
+
accuracyInfo && parsedData[index] !== ''
|
|
157
|
+
? parseFloat(parsedData[index])
|
|
151
158
|
: null,
|
|
152
159
|
odometer:
|
|
153
160
|
parsedData[index + 1] !== ''
|
|
@@ -163,7 +170,7 @@ const parse = raw => {
|
|
|
163
170
|
if (number > 1) {
|
|
164
171
|
let moreData = []
|
|
165
172
|
for (let i = 1; i < number; i++) {
|
|
166
|
-
let gnssIx =
|
|
173
|
+
let gnssIx = 7 + (12 + satelliteInfo + accuracyInfo) * i
|
|
167
174
|
moreData.push({
|
|
168
175
|
index: i,
|
|
169
176
|
loc: {
|
|
@@ -214,6 +221,18 @@ const parse = raw => {
|
|
|
214
221
|
satellites:
|
|
215
222
|
satelliteInfo && parsedData[gnssIx + 12] !== ''
|
|
216
223
|
? parseInt(parsedData[gnssIx + 12], 10)
|
|
224
|
+
: null,
|
|
225
|
+
Hdop:
|
|
226
|
+
accuracyInfo && parsedData[gnssIx + 13] !== ''
|
|
227
|
+
? parseFloat(parsedData[gnssIx + 13], 10)
|
|
228
|
+
: null,
|
|
229
|
+
Vdop:
|
|
230
|
+
accuracyInfo && parsedData[gnssIx + 14] !== ''
|
|
231
|
+
? parseFloat(parsedData[gnssIx + 14], 10)
|
|
232
|
+
: null,
|
|
233
|
+
Ddop:
|
|
234
|
+
accuracyInfo && parsedData[gnssIx + 15] !== ''
|
|
235
|
+
? parseFloat(parsedData[gnssIx + 15], 10)
|
|
217
236
|
: null
|
|
218
237
|
})
|
|
219
238
|
}
|
|
@@ -226,14 +245,9 @@ const parse = raw => {
|
|
|
226
245
|
} else if (command[1] === 'GTERI') {
|
|
227
246
|
// GPS with AC100 and/or Bluetoth Devices Connected
|
|
228
247
|
let number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
|
|
229
|
-
let
|
|
230
|
-
let
|
|
231
|
-
|
|
232
|
-
// If get satellites is configured
|
|
233
|
-
if (utils.includeSatellites(parsedData[19])) {
|
|
234
|
-
index = 7 + 13 * number
|
|
235
|
-
satelliteInfo = true
|
|
236
|
-
}
|
|
248
|
+
let satelliteInfo = utils.includeSatellites(parsedData[19])
|
|
249
|
+
let accuracyInfo = utils.includeGnnsAccuracy(parsedData[19]) ? 3 : 0
|
|
250
|
+
let index = 7 + (12 + satelliteInfo + accuracyInfo) * number
|
|
237
251
|
|
|
238
252
|
// External Data
|
|
239
253
|
const digitFuelSensor =
|
|
@@ -353,7 +367,19 @@ const parse = raw => {
|
|
|
353
367
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
354
368
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
355
369
|
satellites:
|
|
356
|
-
satelliteInfo && parsedData[index] !== ''
|
|
370
|
+
satelliteInfo && parsedData[index - (satelliteInfo + accuracyInfo) + 1] !== ''
|
|
371
|
+
? parseInt(parsedData[index - (satelliteInfo + accuracyInfo) + 1])
|
|
372
|
+
: null,
|
|
373
|
+
Hdop:
|
|
374
|
+
accuracyInfo && parsedData[index - accuracyInfo + 1] !== ''
|
|
375
|
+
? parseFloat(parsedData[index - accuracyInfo + 1])
|
|
376
|
+
: null,
|
|
377
|
+
Vdop:
|
|
378
|
+
accuracyInfo && parsedData[index - accuracyInfo + 2] !== ''
|
|
379
|
+
? parseFloat(parsedData[index - accuracyInfo + 2])
|
|
380
|
+
: null,
|
|
381
|
+
Ddop:
|
|
382
|
+
accuracyInfo && parsedData[index] !== ''
|
|
357
383
|
? parseFloat(parsedData[index])
|
|
358
384
|
: null,
|
|
359
385
|
odometer:
|
|
@@ -540,125 +566,8 @@ const parse = raw => {
|
|
|
540
566
|
|
|
541
567
|
// Bluetooth Accessories
|
|
542
568
|
if (bluetoothAccessory) {
|
|
543
|
-
let btDevices = []
|
|
544
569
|
let btIndex = digitFuelSensor ? index + 10 : index + 9
|
|
545
|
-
let
|
|
546
|
-
let btNum = parsedData[btIndex] !== '' ? parseInt(parsedData[btIndex]) : 1
|
|
547
|
-
for (let c = 0; c < btNum; c++) {
|
|
548
|
-
let appendMask = utils.nHexDigit(utils.hex2bin(parsedData[cnt + 4]), 16)
|
|
549
|
-
|
|
550
|
-
let aNameIx = cnt + 4 + parseInt(appendMask[15])
|
|
551
|
-
let aMacIx = aNameIx + parseInt(appendMask[14])
|
|
552
|
-
let aStatIx = aMacIx + parseInt(appendMask[13])
|
|
553
|
-
let aBatIx = aStatIx + parseInt(appendMask[12])
|
|
554
|
-
let aTmpIx = aBatIx + parseInt(appendMask[11])
|
|
555
|
-
let aHumIx = aTmpIx + parseInt(appendMask[10])
|
|
556
|
-
let ioIx = aHumIx + parseInt(appendMask[8])
|
|
557
|
-
let modeIx =
|
|
558
|
-
appendMask[8] === '1' ? ioIx + 2 + parseInt(appendMask[7]) : ioIx
|
|
559
|
-
let aEvIx = appendMask[7] === '1' ? modeIx + 1 : modeIx
|
|
560
|
-
let pressIx = aEvIx + parseInt(appendMask[6])
|
|
561
|
-
let timeIx = pressIx + parseInt(appendMask[5])
|
|
562
|
-
let eTmpIx = timeIx + parseInt(appendMask[4])
|
|
563
|
-
let magIx = eTmpIx + parseInt(appendMask[3])
|
|
564
|
-
let aBatpIx =
|
|
565
|
-
appendMask[3] === '1' ? magIx + 2 + parseInt(appendMask[2]) : eTmpIx
|
|
566
|
-
let relIx = aBatpIx + parseInt(appendMask[1])
|
|
567
|
-
|
|
568
|
-
btDevices.push({
|
|
569
|
-
index: parsedData[cnt],
|
|
570
|
-
type: utils.bluetoothAccessories[parsedData[cnt + 1]],
|
|
571
|
-
model:
|
|
572
|
-
parsedData[cnt + 2] !== ''
|
|
573
|
-
? utils.bluetoothModels[parsedData[cnt + 1]][parsedData[cnt + 2]]
|
|
574
|
-
: utils.bluetoothAccessories[parsedData[cnt + 1]],
|
|
575
|
-
appendMask: parsedData[cnt + 4],
|
|
576
|
-
name:
|
|
577
|
-
parsedData[aNameIx] !== '' && appendMask[15] === '1'
|
|
578
|
-
? parsedData[aNameIx]
|
|
579
|
-
: null,
|
|
580
|
-
mac:
|
|
581
|
-
parsedData[aMacIx] !== '' && appendMask[14] === '1'
|
|
582
|
-
? parsedData[aMacIx]
|
|
583
|
-
: null,
|
|
584
|
-
status:
|
|
585
|
-
parsedData[aStatIx] !== '' && appendMask[13] === '1'
|
|
586
|
-
? parseInt(parsedData[aStatIx])
|
|
587
|
-
: null,
|
|
588
|
-
batteryLevel:
|
|
589
|
-
parsedData[aBatIx] !== '' && appendMask[12] === '1'
|
|
590
|
-
? parseInt(parsedData[aBatIx])
|
|
591
|
-
: null,
|
|
592
|
-
batteryPercentage:
|
|
593
|
-
parsedData[aBatpIx] !== '' && appendMask[2] === '1'
|
|
594
|
-
? parseFloat(parsedData[aBatpIx])
|
|
595
|
-
: null,
|
|
596
|
-
accessoryData: {
|
|
597
|
-
rawData: parsedData[cnt + 3] !== '' ? parsedData[cnt + 3] : null,
|
|
598
|
-
temperature:
|
|
599
|
-
parsedData[aTmpIx] !== '' && appendMask[11] === '1'
|
|
600
|
-
? parseInt(parsedData[aTmpIx])
|
|
601
|
-
: null,
|
|
602
|
-
humidity:
|
|
603
|
-
parsedData[aHumIx] !== '' && appendMask[10] === '1'
|
|
604
|
-
? parseInt(parsedData[aHumIx])
|
|
605
|
-
: null,
|
|
606
|
-
outputStatus:
|
|
607
|
-
parsedData[ioIx] !== '' && appendMask[8] === '1'
|
|
608
|
-
? parsedData[ioIx]
|
|
609
|
-
: null,
|
|
610
|
-
inputStatus:
|
|
611
|
-
parsedData[ioIx + 1] !== '' && appendMask[8] === '1'
|
|
612
|
-
? parsedData[ioIx + 1]
|
|
613
|
-
: null,
|
|
614
|
-
analogInputStatus:
|
|
615
|
-
parsedData[ioIx + 2] !== '' && appendMask[8] === '1'
|
|
616
|
-
? parsedData[ioIx + 2]
|
|
617
|
-
: null,
|
|
618
|
-
mode:
|
|
619
|
-
parsedData[modeIx] !== '' && appendMask[7] === '1'
|
|
620
|
-
? parseInt(parsedData[modeIx])
|
|
621
|
-
: null,
|
|
622
|
-
event:
|
|
623
|
-
parsedData[aEvIx] !== '' && appendMask[7] === '1'
|
|
624
|
-
? parseInt(parsedData[aEvIx])
|
|
625
|
-
: null,
|
|
626
|
-
tirePresure:
|
|
627
|
-
parsedData[pressIx] !== '' && appendMask[6] === '1'
|
|
628
|
-
? parseInt(parsedData[pressIx])
|
|
629
|
-
: null,
|
|
630
|
-
timestamp:
|
|
631
|
-
parsedData[timeIx] !== '' && appendMask[5] === '1'
|
|
632
|
-
? utils.parseDate(parsedData[timeIx])
|
|
633
|
-
: null,
|
|
634
|
-
enhancedTemperature:
|
|
635
|
-
parsedData[eTmpIx] !== '' && appendMask[4] === '1'
|
|
636
|
-
? parseFloat(parsedData[eTmpIx])
|
|
637
|
-
: null,
|
|
638
|
-
magDevice: {
|
|
639
|
-
id:
|
|
640
|
-
parsedData[magIx] !== '' && appendMask[3] === '1'
|
|
641
|
-
? parsedData[magIx]
|
|
642
|
-
: null,
|
|
643
|
-
eventCounter:
|
|
644
|
-
parsedData[magIx + 1] !== '' && appendMask[3] === '1'
|
|
645
|
-
? parseInt(parsedData[magIx + 1])
|
|
646
|
-
: null,
|
|
647
|
-
magnetState:
|
|
648
|
-
parsedData[magIx + 2] !== '' && appendMask[3] === '1'
|
|
649
|
-
? parseInt(parsedData[magIx + 2])
|
|
650
|
-
: null
|
|
651
|
-
},
|
|
652
|
-
relay: {
|
|
653
|
-
state:
|
|
654
|
-
parsedData[relIx] !== '' && appendMask[1] === '1'
|
|
655
|
-
? parseInt(parsedData[relIx])
|
|
656
|
-
: null
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
})
|
|
660
|
-
cnt = appendMask[1] === '1' ? relIx + 1 : relIx + 2
|
|
661
|
-
}
|
|
570
|
+
let btDevices = utils.getBleData(parsedData, btIndex)
|
|
662
571
|
externalData = Object.assign(externalData, {
|
|
663
572
|
btDevices: btDevices
|
|
664
573
|
})
|
|
@@ -672,7 +581,7 @@ const parse = raw => {
|
|
|
672
581
|
if (number > 1) {
|
|
673
582
|
let moreData = []
|
|
674
583
|
for (let i = 1; i < number; i++) {
|
|
675
|
-
let gnssIx =
|
|
584
|
+
let gnssIx = 8 + (12 + satelliteInfo + accuracyInfo) * i
|
|
676
585
|
moreData.push({
|
|
677
586
|
index: i,
|
|
678
587
|
loc: {
|
|
@@ -723,6 +632,18 @@ const parse = raw => {
|
|
|
723
632
|
satellites:
|
|
724
633
|
satelliteInfo && parsedData[gnssIx + 12] !== ''
|
|
725
634
|
? parseInt(parsedData[gnssIx + 12], 10)
|
|
635
|
+
: null,
|
|
636
|
+
Hdop:
|
|
637
|
+
accuracyInfo && parsedData[gnssIx + 13] !== ''
|
|
638
|
+
? parseFloat(parsedData[gnssIx + 13], 10)
|
|
639
|
+
: null,
|
|
640
|
+
Vdop:
|
|
641
|
+
accuracyInfo && parsedData[gnssIx + 14] !== ''
|
|
642
|
+
? parseFloat(parsedData[gnssIx + 14], 10)
|
|
643
|
+
: null,
|
|
644
|
+
Ddop:
|
|
645
|
+
accuracyInfo && parsedData[gnssIx + 15] !== ''
|
|
646
|
+
? parseFloat(parsedData[gnssIx + 15], 10)
|
|
726
647
|
: null
|
|
727
648
|
})
|
|
728
649
|
}
|
|
@@ -815,14 +736,13 @@ const parse = raw => {
|
|
|
815
736
|
) {
|
|
816
737
|
// Common Alarms
|
|
817
738
|
let number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
818
|
-
let
|
|
819
|
-
|
|
739
|
+
let posAppendMask = parsedData[18] ? utils
|
|
740
|
+
.nHexDigit(utils.hex2bin(parsedData[18]), 8) : null
|
|
820
741
|
|
|
821
742
|
// If get satellites is configured
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
}
|
|
743
|
+
let satelliteInfo = posAppendMask && posAppendMask[7] === '1' ? 1 : 0
|
|
744
|
+
let accuracyInfo = posAppendMask && posAppendMask[4] === '1' ? 3 : 0
|
|
745
|
+
let index = 6 + (12 + satelliteInfo + accuracyInfo) * number
|
|
826
746
|
|
|
827
747
|
data = Object.assign(data, {
|
|
828
748
|
alarm: utils.getAlarm(command[1], parsedData[5], 'gv310lau'),
|
|
@@ -852,8 +772,20 @@ const parse = raw => {
|
|
|
852
772
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
853
773
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
854
774
|
satellites:
|
|
855
|
-
satelliteInfo && parsedData[index] !== ''
|
|
856
|
-
? parseInt(parsedData[index])
|
|
775
|
+
satelliteInfo && parsedData[index - (satelliteInfo + accuracyInfo) + 1] !== ''
|
|
776
|
+
? parseInt(parsedData[index - (satelliteInfo + accuracyInfo) + 1])
|
|
777
|
+
: null,
|
|
778
|
+
Hdop:
|
|
779
|
+
accuracyInfo && parsedData[index - accuracyInfo + 1] !== ''
|
|
780
|
+
? parseFloat(parsedData[index - accuracyInfo + 1], 10)
|
|
781
|
+
: null,
|
|
782
|
+
Vdop:
|
|
783
|
+
accuracyInfo && parsedData[index - accuracyInfo + 2] !== ''
|
|
784
|
+
? parseFloat(parsedData[index - accuracyInfo + 2], 10)
|
|
785
|
+
: null,
|
|
786
|
+
Ddop:
|
|
787
|
+
accuracyInfo && parsedData[index] !== ''
|
|
788
|
+
? parseFloat(parsedData[index], 10)
|
|
857
789
|
: null,
|
|
858
790
|
odometer:
|
|
859
791
|
parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null,
|
|
@@ -1531,7 +1463,7 @@ const parse = raw => {
|
|
|
1531
1463
|
: null,
|
|
1532
1464
|
odometer: null,
|
|
1533
1465
|
hourmeter: null,
|
|
1534
|
-
can: utils.getCanData(parsedData, 5)
|
|
1466
|
+
can: utils.getCanData(parsedData, 5)
|
|
1535
1467
|
}
|
|
1536
1468
|
)
|
|
1537
1469
|
} else if (command[1] === 'GTDAT') {
|
|
@@ -2048,18 +1980,18 @@ const parse = raw => {
|
|
|
2048
1980
|
let aTmpIx = aBatIx + parseInt(appendMask[11])
|
|
2049
1981
|
let aHumIx = aTmpIx + parseInt(appendMask[10])
|
|
2050
1982
|
let ioIx = aHumIx + parseInt(appendMask[8])
|
|
2051
|
-
let
|
|
2052
|
-
|
|
2053
|
-
let
|
|
2054
|
-
|
|
1983
|
+
let aEvIx = appendMask[8] === '1' && appendMask[7] === '1'
|
|
1984
|
+
? ioIx + 3 : ioIx + parseInt(appendMask[7])
|
|
1985
|
+
let pressIx = appendMask[7] === '1' && appendMask[6] === '1'
|
|
1986
|
+
? aEvIx + 2 : aEvIx + parseInt(appendMask[6])
|
|
2055
1987
|
let timeIx = pressIx + parseInt(appendMask[5])
|
|
2056
1988
|
let eTmpIx = timeIx + parseInt(appendMask[4])
|
|
2057
1989
|
let magIx = eTmpIx + parseInt(appendMask[3])
|
|
2058
|
-
let aBatpIx =
|
|
2059
|
-
|
|
1990
|
+
let aBatpIx = appendMask[3] === '1' && appendMask[2] === '1'
|
|
1991
|
+
? magIx + 3 : magIx + parseInt(appendMask[2])
|
|
2060
1992
|
let relIx = aBatpIx + parseInt(appendMask[1])
|
|
2061
1993
|
|
|
2062
|
-
let newIndex =
|
|
1994
|
+
let newIndex = relIx + 1 + parseInt(appendMask[1])
|
|
2063
1995
|
let satIndex = newIndex + 11
|
|
2064
1996
|
|
|
2065
1997
|
// If get satellites is configured
|
|
@@ -2068,8 +2000,87 @@ const parse = raw => {
|
|
|
2068
2000
|
satelliteInfo = true
|
|
2069
2001
|
}
|
|
2070
2002
|
|
|
2003
|
+
let bleInfo = {
|
|
2004
|
+
accesory:
|
|
2005
|
+
btAccessory !== '' ? utils.bluetoothAccessories[btAccessory] : null,
|
|
2006
|
+
model: parsedData[6] !== '' ? parseInt(parsedData[6]) : null,
|
|
2007
|
+
name:
|
|
2008
|
+
parsedData[aNameIx] !== '' && appendMask[15] === '1'
|
|
2009
|
+
? parsedData[aNameIx]
|
|
2010
|
+
: null,
|
|
2011
|
+
role: null,
|
|
2012
|
+
type: null,
|
|
2013
|
+
mac:
|
|
2014
|
+
parsedData[aMacIx] !== '' && appendMask[14] === '1'
|
|
2015
|
+
? parsedData[aMacIx]
|
|
2016
|
+
: null,
|
|
2017
|
+
status:
|
|
2018
|
+
parsedData[aStatIx] !== '' && appendMask[13] === '1'
|
|
2019
|
+
? parseInt(parsedData[aStatIx])
|
|
2020
|
+
: null,
|
|
2021
|
+
batteryLevel:
|
|
2022
|
+
parsedData[aBatIx] !== '' && appendMask[12] === '1'
|
|
2023
|
+
? parseInt(parsedData[aBatIx])
|
|
2024
|
+
: null,
|
|
2025
|
+
batteryPercentage:
|
|
2026
|
+
parsedData[aBatpIx] !== '' && appendMask[2] === '1'
|
|
2027
|
+
? parseFloat(parsedData[aBatpIx])
|
|
2028
|
+
: null
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
let bleData = {
|
|
2032
|
+
temperature:
|
|
2033
|
+
parsedData[aTmpIx] !== '' && appendMask[11] === '1'
|
|
2034
|
+
? parseInt(parsedData[aTmpIx])
|
|
2035
|
+
: null,
|
|
2036
|
+
humidity:
|
|
2037
|
+
parsedData[aHumIx] !== '' && appendMask[10] === '1'
|
|
2038
|
+
? parseInt(parsedData[aHumIx])
|
|
2039
|
+
: null,
|
|
2040
|
+
event:
|
|
2041
|
+
parsedData[aEvIx] !== '' && appendMask[7] === '1'
|
|
2042
|
+
? parseInt(parsedData[aEvIx])
|
|
2043
|
+
: null,
|
|
2044
|
+
tirePresure:
|
|
2045
|
+
parsedData[pressIx] !== '' && appendMask[6] === '1'
|
|
2046
|
+
? parseInt(parsedData[pressIx])
|
|
2047
|
+
: null,
|
|
2048
|
+
timestamp:
|
|
2049
|
+
parsedData[timeIx] !== '' && appendMask[5] === '1'
|
|
2050
|
+
? utils.parseDate(parsedData[timeIx])
|
|
2051
|
+
: null,
|
|
2052
|
+
enhancedTemperature:
|
|
2053
|
+
parsedData[eTmpIx] !== '' && appendMask[4] === '1'
|
|
2054
|
+
? parseFloat(parsedData[eTmpIx])
|
|
2055
|
+
: null,
|
|
2056
|
+
magDevice: {
|
|
2057
|
+
id:
|
|
2058
|
+
parsedData[magIx] !== '' && appendMask[3] === '1'
|
|
2059
|
+
? parsedData[magIx]
|
|
2060
|
+
: null,
|
|
2061
|
+
eventCounter:
|
|
2062
|
+
parsedData[magIx + 1] !== '' && appendMask[3] === '1'
|
|
2063
|
+
? parseInt(parsedData[magIx + 1])
|
|
2064
|
+
: null,
|
|
2065
|
+
magnetState:
|
|
2066
|
+
parsedData[magIx + 2] !== '' && appendMask[3] === '1'
|
|
2067
|
+
? parseInt(parsedData[magIx + 2])
|
|
2068
|
+
: null
|
|
2069
|
+
},
|
|
2070
|
+
relay: {
|
|
2071
|
+
configResult:
|
|
2072
|
+
parsedData[relIx] !== '' && appendMask[1] === '1'
|
|
2073
|
+
? utils.relayBLEResults[parsedData[relIx]]
|
|
2074
|
+
: null,
|
|
2075
|
+
state:
|
|
2076
|
+
parsedData[relIx + 1] !== '' && appendMask[1] === '1'
|
|
2077
|
+
? parseInt(parsedData[relIx + 1])
|
|
2078
|
+
: null
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2071
2082
|
data = Object.assign(data, {
|
|
2072
|
-
alarm: utils.getAlarm(command[1], parsedData[7],
|
|
2083
|
+
alarm: utils.getAlarm(command[1], parsedData[7], [parsedData[4], bleInfo.mac, bleData]),
|
|
2073
2084
|
loc: {
|
|
2074
2085
|
type: 'Point',
|
|
2075
2086
|
coordinates: [
|
|
@@ -2142,87 +2153,8 @@ const parse = raw => {
|
|
|
2142
2153
|
? parsedData[aMacIx]
|
|
2143
2154
|
: null
|
|
2144
2155
|
},
|
|
2145
|
-
accessoryInfo:
|
|
2146
|
-
|
|
2147
|
-
btAccessory !== '' ? utils.bluetoothAccessories[btAccessory] : null,
|
|
2148
|
-
model: parsedData[6] !== '' ? parseInt(parsedData[6]) : null,
|
|
2149
|
-
name:
|
|
2150
|
-
parsedData[aNameIx] !== '' && appendMask[15] === '1'
|
|
2151
|
-
? parsedData[aNameIx]
|
|
2152
|
-
: null,
|
|
2153
|
-
role: null,
|
|
2154
|
-
type: null,
|
|
2155
|
-
mac:
|
|
2156
|
-
parsedData[aMacIx] !== '' && appendMask[14] === '1'
|
|
2157
|
-
? parsedData[aMacIx]
|
|
2158
|
-
: null,
|
|
2159
|
-
status:
|
|
2160
|
-
parsedData[aStatIx] !== '' && appendMask[13] === '1'
|
|
2161
|
-
? parseInt(parsedData[aStatIx])
|
|
2162
|
-
: null,
|
|
2163
|
-
batteryLevel:
|
|
2164
|
-
parsedData[aBatIx] !== '' && appendMask[12] === '1'
|
|
2165
|
-
? parseInt(parsedData[aBatIx])
|
|
2166
|
-
: null,
|
|
2167
|
-
batteryPercentage:
|
|
2168
|
-
parsedData[aBatpIx] !== '' && appendMask[2] === '1'
|
|
2169
|
-
? parseFloat(parsedData[aBatpIx])
|
|
2170
|
-
: null
|
|
2171
|
-
},
|
|
2172
|
-
accessoryData: {
|
|
2173
|
-
temperature:
|
|
2174
|
-
parsedData[aTmpIx] !== '' && appendMask[11] === '1'
|
|
2175
|
-
? parseInt(parsedData[aTmpIx])
|
|
2176
|
-
: null,
|
|
2177
|
-
humidity:
|
|
2178
|
-
parsedData[aHumIx] !== '' && appendMask[10] === '1'
|
|
2179
|
-
? parseInt(parsedData[aHumIx])
|
|
2180
|
-
: null,
|
|
2181
|
-
mode:
|
|
2182
|
-
parsedData[modeIx] !== '' && appendMask[7] === '1'
|
|
2183
|
-
? parseInt(parsedData[modeIx])
|
|
2184
|
-
: null,
|
|
2185
|
-
event:
|
|
2186
|
-
parsedData[aEvIx] !== '' && appendMask[7] === '1'
|
|
2187
|
-
? parseInt(parsedData[aEvIx])
|
|
2188
|
-
: null,
|
|
2189
|
-
tirePresure:
|
|
2190
|
-
parsedData[pressIx] !== '' && appendMask[6] === '1'
|
|
2191
|
-
? parseInt(parsedData[pressIx])
|
|
2192
|
-
: null,
|
|
2193
|
-
timestamp:
|
|
2194
|
-
parsedData[timeIx] !== '' && appendMask[5] === '1'
|
|
2195
|
-
? utils.parseDate(parsedData[timeIx])
|
|
2196
|
-
: null,
|
|
2197
|
-
enhancedTemperature:
|
|
2198
|
-
parsedData[eTmpIx] !== '' && appendMask[4] === '1'
|
|
2199
|
-
? parseFloat(parsedData[eTmpIx])
|
|
2200
|
-
: null,
|
|
2201
|
-
magDevice: {
|
|
2202
|
-
id:
|
|
2203
|
-
parsedData[magIx] !== '' && appendMask[3] === '1'
|
|
2204
|
-
? parsedData[magIx]
|
|
2205
|
-
: null,
|
|
2206
|
-
eventCounter:
|
|
2207
|
-
parsedData[magIx + 1] !== '' && appendMask[3] === '1'
|
|
2208
|
-
? parseInt(parsedData[magIx + 1])
|
|
2209
|
-
: null,
|
|
2210
|
-
magnetState:
|
|
2211
|
-
parsedData[magIx + 2] !== '' && appendMask[3] === '1'
|
|
2212
|
-
? parseInt(parsedData[magIx + 2])
|
|
2213
|
-
: null
|
|
2214
|
-
},
|
|
2215
|
-
relay: {
|
|
2216
|
-
configResult:
|
|
2217
|
-
parsedData[relIx] !== '' && appendMask[1] === '1'
|
|
2218
|
-
? parseInt(parsedData[relIx])
|
|
2219
|
-
: null,
|
|
2220
|
-
state:
|
|
2221
|
-
parsedData[relIx + 1] !== '' && appendMask[1] === '1'
|
|
2222
|
-
? parseInt(parsedData[relIx + 1])
|
|
2223
|
-
: null
|
|
2224
|
-
}
|
|
2225
|
-
}
|
|
2156
|
+
accessoryInfo: bleInfo,
|
|
2157
|
+
accessoryData: bleData
|
|
2226
2158
|
}
|
|
2227
2159
|
})
|
|
2228
2160
|
} else if (command[1] === 'GTBID') {
|
|
@@ -2606,12 +2538,12 @@ const parse = raw => {
|
|
|
2606
2538
|
raw: parsedData[5] !== '' ? parsedData[5] : null,
|
|
2607
2539
|
oilLevelLowIndicator: alarmMask1 ? alarmMask1[28] === '1' : null,
|
|
2608
2540
|
serviceCallIndicator: alarmMask1 ? alarmMask1[27] === '1' : null,
|
|
2609
|
-
|
|
2541
|
+
airbagsIndicator: alarmMask1 ? alarmMask1[26] === '1' : null,
|
|
2610
2542
|
checkEngineIndicator: alarmMask1 ? alarmMask1[25] === '1' : null,
|
|
2611
2543
|
ABSFailureIndicator: alarmMask1 ? alarmMask1[23] === '1' : null,
|
|
2612
2544
|
engineHotIndicator: alarmMask1 ? alarmMask1[22] === '1' : null,
|
|
2613
2545
|
oilPressureIndicator: alarmMask1 ? alarmMask1[21] === '1' : null,
|
|
2614
|
-
|
|
2546
|
+
brakeSystemFailureIndicator: alarmMask1
|
|
2615
2547
|
? alarmMask1[20] === '1'
|
|
2616
2548
|
: null,
|
|
2617
2549
|
batteryIndicator: alarmMask1 ? alarmMask1[19] === '1' : null,
|
|
@@ -2836,14 +2768,14 @@ const parse = raw => {
|
|
|
2836
2768
|
? expansionBin[2] === '1'
|
|
2837
2769
|
: null,
|
|
2838
2770
|
batteryIndicator: expansionBin ? expansionBin[3] === '1' : null,
|
|
2839
|
-
|
|
2771
|
+
brakeSystemFailureIndicator: expansionBin
|
|
2840
2772
|
? expansionBin[4] === '1'
|
|
2841
2773
|
: null,
|
|
2842
2774
|
oilPressureIndicator: expansionBin ? expansionBin[5] === '1' : null,
|
|
2843
2775
|
engineHotIndicator: expansionBin ? expansionBin[6] === '1' : null,
|
|
2844
2776
|
ABSFailureIndicator: expansionBin ? expansionBin[7] === '1' : null,
|
|
2845
2777
|
checkEngineIndicator: expansionBin ? expansionBin[9] === '1' : null,
|
|
2846
|
-
|
|
2778
|
+
airbagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
|
|
2847
2779
|
serviceCallIndicator: expansionBin
|
|
2848
2780
|
? expansionBin[11] === '1'
|
|
2849
2781
|
: null,
|
package/src/gv57cg.js
CHANGED
|
@@ -2025,12 +2025,12 @@ const parse = raw => {
|
|
|
2025
2025
|
raw: parsedData[5] !== '' ? parsedData[5] : null,
|
|
2026
2026
|
oilLevelLowIndicator: alarmMask1 ? alarmMask1[28] === '1' : null,
|
|
2027
2027
|
serviceCallIndicator: alarmMask1 ? alarmMask1[27] === '1' : null,
|
|
2028
|
-
|
|
2028
|
+
airbagsIndicator: alarmMask1 ? alarmMask1[26] === '1' : null,
|
|
2029
2029
|
checkEngineIndicator: alarmMask1 ? alarmMask1[25] === '1' : null,
|
|
2030
2030
|
ABSFailureIndicator: alarmMask1 ? alarmMask1[23] === '1' : null,
|
|
2031
2031
|
engineHotIndicator: alarmMask1 ? alarmMask1[22] === '1' : null,
|
|
2032
2032
|
oilPressureIndicator: alarmMask1 ? alarmMask1[21] === '1' : null,
|
|
2033
|
-
|
|
2033
|
+
brakeSystemFailureIndicator: alarmMask1
|
|
2034
2034
|
? alarmMask1[20] === '1'
|
|
2035
2035
|
: null,
|
|
2036
2036
|
batteryIndicator: alarmMask1 ? alarmMask1[19] === '1' : null,
|
|
@@ -2255,14 +2255,14 @@ const parse = raw => {
|
|
|
2255
2255
|
? expansionBin[2] === '1'
|
|
2256
2256
|
: null,
|
|
2257
2257
|
batteryIndicator: expansionBin ? expansionBin[3] === '1' : null,
|
|
2258
|
-
|
|
2258
|
+
brakeSystemFailureIndicator: expansionBin
|
|
2259
2259
|
? expansionBin[4] === '1'
|
|
2260
2260
|
: null,
|
|
2261
2261
|
oilPressureIndicator: expansionBin ? expansionBin[5] === '1' : null,
|
|
2262
2262
|
engineHotIndicator: expansionBin ? expansionBin[6] === '1' : null,
|
|
2263
2263
|
ABSFailureIndicator: expansionBin ? expansionBin[7] === '1' : null,
|
|
2264
2264
|
checkEngineIndicator: expansionBin ? expansionBin[9] === '1' : null,
|
|
2265
|
-
|
|
2265
|
+
airbagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
|
|
2266
2266
|
serviceCallIndicator: expansionBin
|
|
2267
2267
|
? expansionBin[11] === '1'
|
|
2268
2268
|
: null,
|