queclink-parser 1.9.18 → 1.9.22
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 +65 -0
- package/example.js +10 -6
- package/package.json +3 -2
- package/src/gl300.js +56 -14
- package/src/gl50.js +32 -8
- package/src/gl533cg.js +523 -0
- package/src/gmt100.js +88 -22
- package/src/gv200.js +144 -36
- package/src/gv300.js +112 -28
- package/src/gv300w.js +152 -38
- package/src/gv310lau.js +296 -115
- package/src/gv500.js +104 -26
- package/src/gv50p.js +88 -22
- package/src/gv55.js +88 -22
- package/src/gv58lau.js +1228 -679
- package/src/gv600w.js +144 -36
- package/src/gv75w.js +152 -38
- package/src/gv800w.js +144 -36
- package/src/index.js +75 -9
- package/src/messages/es.json +15 -1
- package/src/utils.js +559 -285
package/src/gv800w.js
CHANGED
|
@@ -125,8 +125,14 @@ const parse = raw => {
|
|
|
125
125
|
adc: parsedData[23] !== '' ? parseFloat(parsedData[23]) / 1000 : null,
|
|
126
126
|
add: parsedData[24] !== '' ? parseFloat(parsedData[24]) / 1000 : null
|
|
127
127
|
},
|
|
128
|
-
mcc:
|
|
129
|
-
|
|
128
|
+
mcc:
|
|
129
|
+
parsedData[14] !== ''
|
|
130
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
131
|
+
: null,
|
|
132
|
+
mnc:
|
|
133
|
+
parsedData[15] !== ''
|
|
134
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
135
|
+
: null,
|
|
130
136
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
131
137
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
132
138
|
odometer: parsedData[19] !== '' ? parseFloat(parsedData[19]) : null,
|
|
@@ -233,8 +239,14 @@ const parse = raw => {
|
|
|
233
239
|
adc: parsedData[24] !== '' ? parseFloat(parsedData[24]) / 1000 : null,
|
|
234
240
|
add: parsedData[25] !== '' ? parseFloat(parsedData[25]) / 1000 : null
|
|
235
241
|
},
|
|
236
|
-
mcc:
|
|
237
|
-
|
|
242
|
+
mcc:
|
|
243
|
+
parsedData[15] !== ''
|
|
244
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
245
|
+
: null,
|
|
246
|
+
mnc:
|
|
247
|
+
parsedData[16] !== ''
|
|
248
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
249
|
+
: null,
|
|
238
250
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
239
251
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
240
252
|
odometer: parsedData[20] !== '' ? parseFloat(parsedData[20]) : null,
|
|
@@ -319,8 +331,14 @@ const parse = raw => {
|
|
|
319
331
|
ada: null,
|
|
320
332
|
adb: null
|
|
321
333
|
},
|
|
322
|
-
mcc:
|
|
323
|
-
|
|
334
|
+
mcc:
|
|
335
|
+
parsedData[14] !== ''
|
|
336
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
337
|
+
: null,
|
|
338
|
+
mnc:
|
|
339
|
+
parsedData[15] !== ''
|
|
340
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
341
|
+
: null,
|
|
324
342
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
325
343
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
326
344
|
odometer: parsedData[19] !== '' ? parseFloat(parsedData[19]) : null,
|
|
@@ -353,8 +371,14 @@ const parse = raw => {
|
|
|
353
371
|
adc: null,
|
|
354
372
|
add: null
|
|
355
373
|
},
|
|
356
|
-
mcc:
|
|
357
|
-
|
|
374
|
+
mcc:
|
|
375
|
+
parsedData[14] !== ''
|
|
376
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
377
|
+
: null,
|
|
378
|
+
mnc:
|
|
379
|
+
parsedData[15] !== ''
|
|
380
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
381
|
+
: null,
|
|
358
382
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
359
383
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
360
384
|
odometer: parsedData[19] !== '' ? parseFloat(parsedData[19]) : null,
|
|
@@ -420,8 +444,14 @@ const parse = raw => {
|
|
|
420
444
|
adc: null,
|
|
421
445
|
add: null
|
|
422
446
|
},
|
|
423
|
-
mcc:
|
|
424
|
-
|
|
447
|
+
mcc:
|
|
448
|
+
parsedData[11] !== ''
|
|
449
|
+
? utils.latamMcc[parseInt(parsedData[11], 10)]
|
|
450
|
+
: null,
|
|
451
|
+
mnc:
|
|
452
|
+
parsedData[12] !== ''
|
|
453
|
+
? utils.getMNC(parsedData[11], parsedData[12])
|
|
454
|
+
: null,
|
|
425
455
|
lac: parsedData[13] !== '' ? parseInt(parsedData[13], 16) : null,
|
|
426
456
|
cid: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
427
457
|
odometer: null,
|
|
@@ -456,8 +486,14 @@ const parse = raw => {
|
|
|
456
486
|
adc: null,
|
|
457
487
|
add: null
|
|
458
488
|
},
|
|
459
|
-
mcc:
|
|
460
|
-
|
|
489
|
+
mcc:
|
|
490
|
+
parsedData[12] !== ''
|
|
491
|
+
? utils.latamMcc[parseInt(parsedData[12], 10)]
|
|
492
|
+
: null,
|
|
493
|
+
mnc:
|
|
494
|
+
parsedData[13] !== ''
|
|
495
|
+
? utils.getMNC(parsedData[12], parsedData[13])
|
|
496
|
+
: null,
|
|
461
497
|
lac: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
462
498
|
cid: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
463
499
|
odometer: null,
|
|
@@ -488,8 +524,14 @@ const parse = raw => {
|
|
|
488
524
|
adc: null,
|
|
489
525
|
add: null
|
|
490
526
|
},
|
|
491
|
-
mcc:
|
|
492
|
-
|
|
527
|
+
mcc:
|
|
528
|
+
parsedData[12] !== ''
|
|
529
|
+
? utils.latamMcc[parseInt(parsedData[12], 10)]
|
|
530
|
+
: null,
|
|
531
|
+
mnc:
|
|
532
|
+
parsedData[13] !== ''
|
|
533
|
+
? utils.getMNC(parsedData[12], parsedData[13])
|
|
534
|
+
: null,
|
|
493
535
|
lac: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
494
536
|
cid: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
495
537
|
odometer: null,
|
|
@@ -520,8 +562,14 @@ const parse = raw => {
|
|
|
520
562
|
adc: null,
|
|
521
563
|
add: null
|
|
522
564
|
},
|
|
523
|
-
mcc:
|
|
524
|
-
|
|
565
|
+
mcc:
|
|
566
|
+
parsedData[12] !== ''
|
|
567
|
+
? utils.latamMcc[parseInt(parsedData[12], 10)]
|
|
568
|
+
: null,
|
|
569
|
+
mnc:
|
|
570
|
+
parsedData[13] !== ''
|
|
571
|
+
? utils.getMNC(parsedData[12], parsedData[13])
|
|
572
|
+
: null,
|
|
525
573
|
lac: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
526
574
|
cid: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
527
575
|
odometer: parsedData[18] !== '' ? parseFloat(parsedData[18]) : null,
|
|
@@ -555,8 +603,14 @@ const parse = raw => {
|
|
|
555
603
|
adc: null,
|
|
556
604
|
add: null
|
|
557
605
|
},
|
|
558
|
-
mcc:
|
|
559
|
-
|
|
606
|
+
mcc:
|
|
607
|
+
parsedData[13] !== ''
|
|
608
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
609
|
+
: null,
|
|
610
|
+
mnc:
|
|
611
|
+
parsedData[14] !== ''
|
|
612
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
613
|
+
: null,
|
|
560
614
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
561
615
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
562
616
|
odometer: parsedData[18] !== '' ? parseFloat(parsedData[18]) : null,
|
|
@@ -591,8 +645,14 @@ const parse = raw => {
|
|
|
591
645
|
adc: null,
|
|
592
646
|
add: null
|
|
593
647
|
},
|
|
594
|
-
mcc:
|
|
595
|
-
|
|
648
|
+
mcc:
|
|
649
|
+
parsedData[13] !== ''
|
|
650
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
651
|
+
: null,
|
|
652
|
+
mnc:
|
|
653
|
+
parsedData[14] !== ''
|
|
654
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
655
|
+
: null,
|
|
596
656
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
597
657
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
598
658
|
odometer: parsedData[18] !== '' ? parseFloat(parsedData[18]) : null,
|
|
@@ -624,8 +684,14 @@ const parse = raw => {
|
|
|
624
684
|
adc: null,
|
|
625
685
|
add: null
|
|
626
686
|
},
|
|
627
|
-
mcc:
|
|
628
|
-
|
|
687
|
+
mcc:
|
|
688
|
+
parsedData[12] !== ''
|
|
689
|
+
? utils.latamMcc[parseInt(parsedData[12], 10)]
|
|
690
|
+
: null,
|
|
691
|
+
mnc:
|
|
692
|
+
parsedData[13] !== ''
|
|
693
|
+
? utils.getMNC(parsedData[12], parsedData[13])
|
|
694
|
+
: null,
|
|
629
695
|
lac: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
630
696
|
cid: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
631
697
|
odometer: null,
|
|
@@ -654,8 +720,14 @@ const parse = raw => {
|
|
|
654
720
|
ada: null,
|
|
655
721
|
adb: null
|
|
656
722
|
},
|
|
657
|
-
mcc:
|
|
658
|
-
|
|
723
|
+
mcc:
|
|
724
|
+
parsedData[13] !== ''
|
|
725
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
726
|
+
: null,
|
|
727
|
+
mnc:
|
|
728
|
+
parsedData[14] !== ''
|
|
729
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
730
|
+
: null,
|
|
659
731
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
660
732
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
661
733
|
odometer: null,
|
|
@@ -687,8 +759,14 @@ const parse = raw => {
|
|
|
687
759
|
adc: null,
|
|
688
760
|
add: null
|
|
689
761
|
},
|
|
690
|
-
mcc:
|
|
691
|
-
|
|
762
|
+
mcc:
|
|
763
|
+
parsedData[15] !== ''
|
|
764
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
765
|
+
: null,
|
|
766
|
+
mnc:
|
|
767
|
+
parsedData[16] !== ''
|
|
768
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
769
|
+
: null,
|
|
692
770
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
693
771
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
694
772
|
odometer: null,
|
|
@@ -720,8 +798,14 @@ const parse = raw => {
|
|
|
720
798
|
adc: null,
|
|
721
799
|
add: null
|
|
722
800
|
},
|
|
723
|
-
mcc:
|
|
724
|
-
|
|
801
|
+
mcc:
|
|
802
|
+
parsedData[15] !== ''
|
|
803
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
804
|
+
: null,
|
|
805
|
+
mnc:
|
|
806
|
+
parsedData[16] !== ''
|
|
807
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
808
|
+
: null,
|
|
725
809
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
726
810
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
727
811
|
odometer: parsedData[20] !== '' ? parseFloat(parsedData[20]) : null,
|
|
@@ -777,8 +861,14 @@ const parse = raw => {
|
|
|
777
861
|
adc: parsedData[23] !== '' ? parseFloat(parsedData[23]) / 1000 : null,
|
|
778
862
|
add: parsedData[24] !== '' ? parseFloat(parsedData[24]) / 1000 : null
|
|
779
863
|
},
|
|
780
|
-
mcc:
|
|
781
|
-
|
|
864
|
+
mcc:
|
|
865
|
+
parsedData[14] !== ''
|
|
866
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
867
|
+
: null,
|
|
868
|
+
mnc:
|
|
869
|
+
parsedData[15] !== ''
|
|
870
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
871
|
+
: null,
|
|
782
872
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
783
873
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
784
874
|
odometer: parsedData[19] !== '' ? parseFloat(parsedData[19]) : null,
|
|
@@ -812,8 +902,14 @@ const parse = raw => {
|
|
|
812
902
|
adc: null,
|
|
813
903
|
add: null
|
|
814
904
|
},
|
|
815
|
-
mcc:
|
|
816
|
-
|
|
905
|
+
mcc:
|
|
906
|
+
parsedData[62] !== ''
|
|
907
|
+
? utils.latamMcc[parseInt(parsedData[62], 10)]
|
|
908
|
+
: null,
|
|
909
|
+
mnc:
|
|
910
|
+
parsedData[63] !== ''
|
|
911
|
+
? utils.getMNC(parsedData[62], parsedData[63])
|
|
912
|
+
: null,
|
|
817
913
|
lac: parsedData[64] !== '' ? parseInt(parsedData[64], 16) : null,
|
|
818
914
|
cid: parsedData[65] !== '' ? parseInt(parsedData[65], 16) : null,
|
|
819
915
|
odometer: null,
|
|
@@ -904,8 +1000,14 @@ const parse = raw => {
|
|
|
904
1000
|
adc: null,
|
|
905
1001
|
add: null
|
|
906
1002
|
},
|
|
907
|
-
mcc:
|
|
908
|
-
|
|
1003
|
+
mcc:
|
|
1004
|
+
parsedData[15] !== ''
|
|
1005
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
1006
|
+
: null,
|
|
1007
|
+
mnc:
|
|
1008
|
+
parsedData[16] !== ''
|
|
1009
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
1010
|
+
: null,
|
|
909
1011
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
910
1012
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
911
1013
|
odometer: null,
|
|
@@ -1004,8 +1106,14 @@ const parse = raw => {
|
|
|
1004
1106
|
adc: null,
|
|
1005
1107
|
add: null
|
|
1006
1108
|
},
|
|
1007
|
-
mcc:
|
|
1008
|
-
|
|
1109
|
+
mcc:
|
|
1110
|
+
parsedData[13] !== ''
|
|
1111
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
1112
|
+
: null,
|
|
1113
|
+
mnc:
|
|
1114
|
+
parsedData[14] !== ''
|
|
1115
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
1116
|
+
: null,
|
|
1009
1117
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
1010
1118
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
1011
1119
|
odometer: null,
|
package/src/index.js
CHANGED
|
@@ -16,15 +16,36 @@ const gv50p = require('./gv50p.js')
|
|
|
16
16
|
const gv310lau = require('./gv310lau.js')
|
|
17
17
|
const gv58lau = require('./gv58lau.js')
|
|
18
18
|
const gv57cg = require('./gv57cg.js')
|
|
19
|
+
const gl533cg = require('./gl533cg.js')
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
Checks if raw is a GL533CG (hex) message
|
|
23
|
+
*/
|
|
24
|
+
const isHex = raw => {
|
|
25
|
+
return (
|
|
26
|
+
(Buffer.isBuffer(raw) &&
|
|
27
|
+
(raw[0] === 0x2b || raw[0] === 0x2d) &&
|
|
28
|
+
raw[1] === 0x00 &&
|
|
29
|
+
raw[raw.length - 1] === 0x24) ||
|
|
30
|
+
(typeof raw === 'string' && /^\+.*[$]$/.test(raw))
|
|
31
|
+
)
|
|
32
|
+
}
|
|
19
33
|
|
|
20
34
|
/*
|
|
21
35
|
Checks if raw comes from a Queclink device
|
|
22
36
|
*/
|
|
23
37
|
const isQueclink = raw => {
|
|
24
38
|
if (
|
|
39
|
+
// Normal Queclink devices
|
|
25
40
|
utils.patterns.message.test(raw.toString()) ||
|
|
26
41
|
utils.patterns.ack.test(raw.toString()) ||
|
|
27
|
-
utils.patterns.buffer.test(raw.toString())
|
|
42
|
+
utils.patterns.buffer.test(raw.toString()) ||
|
|
43
|
+
utils.patterns.nack.test(raw.toString())
|
|
44
|
+
) {
|
|
45
|
+
return true
|
|
46
|
+
} else if (
|
|
47
|
+
// GL533CG (hex)
|
|
48
|
+
isHex(raw)
|
|
28
49
|
) {
|
|
29
50
|
return true
|
|
30
51
|
}
|
|
@@ -91,14 +112,18 @@ const parse = (raw, options) => {
|
|
|
91
112
|
if (
|
|
92
113
|
utils.patterns.message.test(raw.toString()) ||
|
|
93
114
|
utils.patterns.ack.test(raw.toString()) ||
|
|
94
|
-
utils.patterns.
|
|
115
|
+
utils.patterns.nack.test(raw.toString()) ||
|
|
116
|
+
utils.patterns.buffer.test(raw.toString()) ||
|
|
117
|
+
isHex(raw)
|
|
95
118
|
) {
|
|
96
|
-
const device = utils.getDevice(raw.toString())
|
|
119
|
+
const device = isHex(raw) ? 'GL533CG' : utils.getDevice(raw.toString())
|
|
97
120
|
if (
|
|
98
121
|
utils.patterns.ack.test(raw.toString()) &&
|
|
99
122
|
!utils.patterns.heartbeat.test(raw.toString())
|
|
100
123
|
) {
|
|
101
124
|
result = getAckCommand(raw.toString(), options.lang)
|
|
125
|
+
} else if (utils.patterns.nack.test(raw.toString())) {
|
|
126
|
+
result = getNackCommand(raw.toString(), options.lang)
|
|
102
127
|
} else if (device === 'GV300W') {
|
|
103
128
|
result = gv300w.parse(raw.toString())
|
|
104
129
|
} else if (device === 'GV310LAU') {
|
|
@@ -129,6 +154,8 @@ const parse = (raw, options) => {
|
|
|
129
154
|
result = gl50.parse(raw.toString())
|
|
130
155
|
} else if (device === 'GV50P') {
|
|
131
156
|
result = gv50p.parse(raw.toString())
|
|
157
|
+
} else if (device === 'GL533CG') {
|
|
158
|
+
result = gl533cg.parse(raw)
|
|
132
159
|
}
|
|
133
160
|
}
|
|
134
161
|
return result
|
|
@@ -142,6 +169,7 @@ const getAckCommand = (raw, lang) => {
|
|
|
142
169
|
const rawData = raw.substr(0, raw.length - 1)
|
|
143
170
|
const parsedData = rawData.split(',')
|
|
144
171
|
const command = parsedData[0].split(':')
|
|
172
|
+
const isGT = command[1].startsWith('GT')
|
|
145
173
|
|
|
146
174
|
let data = {
|
|
147
175
|
raw: rawData,
|
|
@@ -158,7 +186,9 @@ const getAckCommand = (raw, lang) => {
|
|
|
158
186
|
parsedData[parsedData.length - 2] !== ''
|
|
159
187
|
? utils.parseDate(parsedData[parsedData.length - 2])
|
|
160
188
|
: null,
|
|
161
|
-
message:
|
|
189
|
+
message: isGT
|
|
190
|
+
? messages['+ACK'][command[1]]
|
|
191
|
+
: messages['+ACK'][`GT${command[1]}`] || messages.default
|
|
162
192
|
}
|
|
163
193
|
|
|
164
194
|
if (command[1] === 'GTSPD') {
|
|
@@ -183,6 +213,39 @@ const getAckCommand = (raw, lang) => {
|
|
|
183
213
|
return data
|
|
184
214
|
}
|
|
185
215
|
|
|
216
|
+
/*
|
|
217
|
+
Returns the Nack command
|
|
218
|
+
*/
|
|
219
|
+
const getNackCommand = (raw, lang) => {
|
|
220
|
+
const rawData = raw.substr(0, raw.length - 1)
|
|
221
|
+
const parsedData = rawData.split(',')
|
|
222
|
+
const command = parsedData[0].split(':')
|
|
223
|
+
const nackCause =
|
|
224
|
+
utils.nackCauses[
|
|
225
|
+
utils.hex2dec(parsedData[parsedData.length - 4]).toString()
|
|
226
|
+
] || 'Unknown'
|
|
227
|
+
|
|
228
|
+
let data = {
|
|
229
|
+
raw: rawData,
|
|
230
|
+
rawCommand: command[1],
|
|
231
|
+
manufacturer: 'queclink',
|
|
232
|
+
device: 'Queclink-COMMAND-NOT-OK',
|
|
233
|
+
type: 'notok',
|
|
234
|
+
serial:
|
|
235
|
+
parsedData[parsedData.length - 3] !== ''
|
|
236
|
+
? parseInt(utils.hex2dec(parsedData[parsedData.length - 3]), 10)
|
|
237
|
+
: null,
|
|
238
|
+
counter: parseInt(utils.hex2dec(parsedData[parsedData.length - 1]), 10),
|
|
239
|
+
datetime:
|
|
240
|
+
parsedData[parsedData.length - 2] !== ''
|
|
241
|
+
? utils.parseDate(parsedData[parsedData.length - 2])
|
|
242
|
+
: null,
|
|
243
|
+
message: `${nackCause} en instrucción ${command[1]}`
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return data
|
|
247
|
+
}
|
|
248
|
+
|
|
186
249
|
/*
|
|
187
250
|
Parses the Websocket command into Queclink Command
|
|
188
251
|
*/
|
|
@@ -233,13 +296,17 @@ const parseCommand = data => {
|
|
|
233
296
|
const do5 = `${outputs[4]},${prevDurations['5']},${prevToggles['5']}`
|
|
234
297
|
const longOperation = data.longOperation || false ? '1' : ''
|
|
235
298
|
const dosReport = data.dosReport || false ? data.dosReport : 0
|
|
236
|
-
const dos = `${outputs[port - 1]},${prevDurations[_data[0]]},${prevToggles[_data[0]]}`.split(',')
|
|
237
|
-
// const wave5 = dosReport ?
|
|
299
|
+
// const dos = `${outputs[port - 1]},${prevDurations[_data[0]]},${prevToggles[_data[0]]}`.split(',')
|
|
300
|
+
// const wave5 = dosReport ?
|
|
238
301
|
if (data.device_serie === 'GV' && password === 'gv57cg') {
|
|
239
302
|
command = `AT+GTDOS=${password},,,1,${do1},,,${dosReport},0,5,,,,${serialId}$`
|
|
240
303
|
} else if (data.device_serie === 'GV' && password === 'gv58lau') {
|
|
241
304
|
command = `AT+GTDOS=${password},0,3,1,${do1},0,,2,${do2},0,,3,${do3},0,,0,,,${dosReport},,,${serialId}$`
|
|
242
|
-
} else if (
|
|
305
|
+
} else if (
|
|
306
|
+
data.device &&
|
|
307
|
+
data.device.serie === 'GV' &&
|
|
308
|
+
password.includes('lau')
|
|
309
|
+
) {
|
|
243
310
|
command = `AT+GTOUT=${password},${do1},${do2},${do3},${do4},${longOperation},${dosReport},,,${serialId}$`
|
|
244
311
|
} else if (data.device_serie === 'GV') {
|
|
245
312
|
// command = `AT+GTOUT=${password},${do1},${do2},${do3},${do4},${longOperation},${dosReport},,,${serialId}$`
|
|
@@ -298,7 +365,7 @@ const parseCommand = data => {
|
|
|
298
365
|
const alarmId = data.alarmId || 0
|
|
299
366
|
const sensorId = data.sensorId || '0000000000000000'
|
|
300
367
|
const index = data.sensor_index || 2
|
|
301
|
-
const sensorType = utils.bleTempHumSensors[data.sensor_type]
|
|
368
|
+
const sensorType = utils.bleTempHumSensors[data.sensor_type] || '0'
|
|
302
369
|
const minTemp = data.minTemp || 0
|
|
303
370
|
const maxTemp = data.maxTemp || 0
|
|
304
371
|
if (sensorType === '0') {
|
|
@@ -306,7 +373,6 @@ const parseCommand = data => {
|
|
|
306
373
|
} else {
|
|
307
374
|
command = `AT+GTBAS=${password},${index},6,${sensorType},,${sensorId},83F,,2400,,${mode},${minTemp},${maxTemp},2,,,,,,,,0,0,0,0,,,${serialId}$`
|
|
308
375
|
}
|
|
309
|
-
|
|
310
376
|
} else if (/^copiloto_temp_alarm_(on|off)(E)?$/.test(data.instruction)) {
|
|
311
377
|
// AT+GTDAT=gv300w,2,,>CMD3005,60,18,0,5,-3<,0,,,,FFFF$
|
|
312
378
|
// Temperature Alarm
|
package/src/messages/es.json
CHANGED
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"GTSVR": {
|
|
15
15
|
"0": "Se perdió conexión con el dispositivo",
|
|
16
16
|
"1": "Se volvió a conectar el dispositivo",
|
|
17
|
-
"2": "Falló la conexión del dispositivo
|
|
17
|
+
"2": "Falló la primera conexión del dispositivo",
|
|
18
|
+
"3": "Se estableció la primera conexión con el dispositivo"
|
|
18
19
|
},
|
|
19
20
|
"GTFLA": "Combustible reducido en consumption%",
|
|
20
21
|
"GTTMP": {
|
|
@@ -255,9 +256,18 @@
|
|
|
255
256
|
"2": "Batería baja en el WTH100",
|
|
256
257
|
"3": "Batería baja en el botón SOS bluetooth"
|
|
257
258
|
},
|
|
259
|
+
"GSENSOR": {
|
|
260
|
+
"0": "Dispositivo en reposo",
|
|
261
|
+
"1": "Dispositivo en movimiento",
|
|
262
|
+
"2": "Estado de movimiento desconocido"
|
|
263
|
+
},
|
|
264
|
+
"LIGHT": "Dispositivo removido (fotosensor)",
|
|
258
265
|
"+ACK": {
|
|
259
266
|
"GTBSI": "Config: APN",
|
|
267
|
+
"GTAPN": "Config: APN",
|
|
268
|
+
"GTNET": "Config: tecnología de red",
|
|
260
269
|
"GTSRI": "Config: servidor backend",
|
|
270
|
+
"GTBSS": "Config: servidor backend",
|
|
261
271
|
"GTQSS": "Config: APN y servidor backend",
|
|
262
272
|
"GTMQT": "Config: servidor MQTT",
|
|
263
273
|
"GTTLS": "Config: encritado de datos",
|
|
@@ -269,7 +279,11 @@
|
|
|
269
279
|
"GTPDS": "Config: preservar estados",
|
|
270
280
|
"GTUPC": "Actualización OTA",
|
|
271
281
|
"GTFRI": "Config: reportes de ubicación",
|
|
282
|
+
"GTQRC": "Config: reportes de rastreo",
|
|
272
283
|
"GTFFC": "Config: frecuencia de reporte FRI",
|
|
284
|
+
"GTPSM": "Config: modo de ahorro de energía",
|
|
285
|
+
"GTHBD": "Config: frecuencia de heartbeat",
|
|
286
|
+
"GTGNSSCFG": "Config: configuración GNSS global",
|
|
273
287
|
"GTTOW": "Alarma configurada: remolque",
|
|
274
288
|
"GTSPD": "Alarma configurada: velocidad",
|
|
275
289
|
"GTSPA": "Alarma configurada: exceso de velocidad",
|