queclink-parser 1.9.7 → 1.9.9
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 +17 -0
- package/example.js +32 -2
- package/package.json +1 -1
- package/src/gv57cg.js +236 -122
- package/src/index.js +3 -1
- package/src/utils.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
#### 1.9.9 (2024-10-04)
|
|
2
|
+
|
|
3
|
+
##### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **input:** fix gv57cg input bits ([35d4199e](https://github.com/jaayesta/queclink-parser/commit/35d4199e1ff7236cdf48ccf8ad965c08df6599a7))
|
|
6
|
+
|
|
7
|
+
#### 1.9.8 (2024-10-04)
|
|
8
|
+
|
|
9
|
+
##### New Features
|
|
10
|
+
|
|
11
|
+
* **hbe:** added xyz report for Harsh_Behavior alarm. ([403e0d10](https://github.com/jaayesta/queclink-parser/commit/403e0d10c5868fbb359f923b758951693dfceb78))
|
|
12
|
+
* **gv57cg:** added support for AT+GTDOS command (digital output) ([1137fd31](https://github.com/jaayesta/queclink-parser/commit/1137fd31278ec91bce38d75fb67ae2f74fc4ada1))
|
|
13
|
+
|
|
14
|
+
##### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **gv57cg:** digital input bit fix in fri command ([d00ec669](https://github.com/jaayesta/queclink-parser/commit/d00ec669c6ec24a115049a1568f1a2c18c3efced))
|
|
17
|
+
|
|
1
18
|
#### 1.9.7 (2024-09-09)
|
|
2
19
|
|
|
3
20
|
##### New Features
|
package/example.js
CHANGED
|
@@ -57,6 +57,36 @@ var cra = '+RESP:GTCRA,8020060402,867488060596284,GV57CG,06,1,1.0,0,222.0,117.12
|
|
|
57
57
|
var asc = '+RESP:GTASC,8020060402,867488060595542,GV57CG,0.86,0.52,0.01,0.52,-0.86,0.01,0.01,0.00,-1.00,1,12.6,267,39.7,117.115453,31.827255,20230523055431,0460,0001,DF5C,05F7B315,01,10,20230523135432,03BC$'
|
|
58
58
|
var hbe = '+RESP:GTHBE,8020060402,866775051515393,GV57CG,,2,0,1,42.5,0,42.6,117.101321,31.827725,20231221034214,0460,0001,DF5C,05F7B40B,01,1,002500040054,FFE2FFFF0051,10,19.8,20231221034215,006B$'
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
var data = {
|
|
61
|
+
"imei": 864696060046190,
|
|
62
|
+
"datetime": "2024-09-23T22:02:36.639Z",
|
|
63
|
+
"instruction": "1_on",
|
|
64
|
+
"action": "Cortar Corriente",
|
|
65
|
+
"device": "queclink",
|
|
66
|
+
"password": "gv300w",
|
|
67
|
+
"device_serie": "GV",
|
|
68
|
+
"previousOutput": {
|
|
69
|
+
"1": false,
|
|
70
|
+
"2": false,
|
|
71
|
+
"3": false
|
|
72
|
+
},
|
|
73
|
+
"previousToggle": {
|
|
74
|
+
"1": 0,
|
|
75
|
+
"2": 0,
|
|
76
|
+
"3": 0,
|
|
77
|
+
"4": 0,
|
|
78
|
+
"5": 0
|
|
79
|
+
},
|
|
80
|
+
"previousDuration": {
|
|
81
|
+
"1": 0,
|
|
82
|
+
"2": 0,
|
|
83
|
+
"3": 0,
|
|
84
|
+
"4": 0,
|
|
85
|
+
"5": 0
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
console.log(queclink.parseCommand(data))
|
|
90
|
+
// const raw = new Buffer(hbe)
|
|
91
|
+
// console.log(queclink.parse(raw))
|
|
62
92
|
// queclink.parse(raw)
|
package/package.json
CHANGED
package/src/gv57cg.js
CHANGED
|
@@ -29,6 +29,7 @@ const parse = raw => {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// Gps
|
|
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$"
|
|
32
33
|
if (command[1] === 'GTFRI') {
|
|
33
34
|
try {
|
|
34
35
|
let number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
@@ -56,12 +57,12 @@ const parse = raw => {
|
|
|
56
57
|
utils.nHexDigit(
|
|
57
58
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
58
59
|
8
|
|
59
|
-
)[
|
|
60
|
+
)[6] === '1',
|
|
60
61
|
'1':
|
|
61
62
|
utils.nHexDigit(
|
|
62
63
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
63
64
|
8
|
|
64
|
-
)[
|
|
65
|
+
)[7] === '1'
|
|
65
66
|
},
|
|
66
67
|
output: {
|
|
67
68
|
'3':
|
|
@@ -88,14 +89,21 @@ const parse = raw => {
|
|
|
88
89
|
datetime:
|
|
89
90
|
parsedData[13] !== '' ? utils.parseDate(parsedData[13]) : null,
|
|
90
91
|
voltage: {
|
|
91
|
-
battery:
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
battery:
|
|
93
|
+
parsedData[index + 5] !== ''
|
|
94
|
+
? parseFloat(parsedData[index + 5])
|
|
95
|
+
: null,
|
|
94
96
|
inputCharge:
|
|
95
97
|
parsedData[4] !== '' ? parseFloat(parsedData[4]) / 1000 : null
|
|
96
98
|
},
|
|
97
|
-
mcc:
|
|
98
|
-
|
|
99
|
+
mcc:
|
|
100
|
+
parsedData[14] !== ''
|
|
101
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
102
|
+
: null,
|
|
103
|
+
mnc:
|
|
104
|
+
parsedData[15] !== ''
|
|
105
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
106
|
+
: null,
|
|
99
107
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
100
108
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
101
109
|
satellites:
|
|
@@ -213,12 +221,12 @@ const parse = raw => {
|
|
|
213
221
|
utils.nHexDigit(
|
|
214
222
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
215
223
|
8
|
|
216
|
-
)[
|
|
224
|
+
)[6] === '1',
|
|
217
225
|
'1':
|
|
218
226
|
utils.nHexDigit(
|
|
219
227
|
utils.hex2bin(parsedData[index + 6].substring(2, 4)),
|
|
220
228
|
8
|
|
221
|
-
)[
|
|
229
|
+
)[7] === '1'
|
|
222
230
|
},
|
|
223
231
|
output: {
|
|
224
232
|
'3':
|
|
@@ -251,8 +259,14 @@ const parse = raw => {
|
|
|
251
259
|
inputCharge:
|
|
252
260
|
parsedData[5] !== '' ? parseFloat(parsedData[5]) / 1000 : null
|
|
253
261
|
},
|
|
254
|
-
mcc:
|
|
255
|
-
|
|
262
|
+
mcc:
|
|
263
|
+
parsedData[15] !== ''
|
|
264
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
265
|
+
: null,
|
|
266
|
+
mnc:
|
|
267
|
+
parsedData[16] !== ''
|
|
268
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
269
|
+
: null,
|
|
256
270
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
257
271
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
258
272
|
satellites:
|
|
@@ -271,7 +285,8 @@ const parse = raw => {
|
|
|
271
285
|
})
|
|
272
286
|
// External Data
|
|
273
287
|
const canData = utils.nHexDigit(utils.hex2bin(parsedData[4]), 32)[8] === '1'
|
|
274
|
-
const bandData =
|
|
288
|
+
const bandData =
|
|
289
|
+
utils.nHexDigit(utils.hex2bin(parsedData[4]), 32)[16] === '1'
|
|
275
290
|
|
|
276
291
|
let externalData = {
|
|
277
292
|
eriMask: {
|
|
@@ -579,8 +594,8 @@ const parse = raw => {
|
|
|
579
594
|
raw: `${parsedData[21]}${parsedData[22]}`,
|
|
580
595
|
sos: false,
|
|
581
596
|
input: {
|
|
582
|
-
'2': utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[
|
|
583
|
-
'1': utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[
|
|
597
|
+
'2': utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[6] === '1',
|
|
598
|
+
'1': utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[7] === '1'
|
|
584
599
|
},
|
|
585
600
|
output: {
|
|
586
601
|
'3': utils.nHexDigit(utils.hex2bin(parsedData[22]), 8)[5] === '1',
|
|
@@ -643,8 +658,14 @@ const parse = raw => {
|
|
|
643
658
|
// battery: null,
|
|
644
659
|
// inputCharge: null
|
|
645
660
|
// },
|
|
646
|
-
mcc:
|
|
647
|
-
|
|
661
|
+
mcc:
|
|
662
|
+
parsedData[14] !== ''
|
|
663
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
664
|
+
: null,
|
|
665
|
+
mnc:
|
|
666
|
+
parsedData[15] !== ''
|
|
667
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
668
|
+
: null,
|
|
648
669
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
649
670
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
650
671
|
satellites:
|
|
@@ -684,13 +705,12 @@ const parse = raw => {
|
|
|
684
705
|
// 8
|
|
685
706
|
// )[7] === '1'
|
|
686
707
|
// },
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
odometer:
|
|
692
|
-
|
|
693
|
-
: null,
|
|
708
|
+
// charge: null,
|
|
709
|
+
// state: utils.states[parsedData[index + 1].substring(0, 2)]
|
|
710
|
+
// }
|
|
711
|
+
// : null,
|
|
712
|
+
odometer:
|
|
713
|
+
parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null
|
|
694
714
|
// hourmeter: null
|
|
695
715
|
})
|
|
696
716
|
} else if (command[1] === 'GTEPS' || command[1] === 'GTAIS') {
|
|
@@ -725,8 +745,14 @@ const parse = raw => {
|
|
|
725
745
|
battery: parsedData[4] !== '' ? parseFloat(parsedData[4]) / 1000 : null,
|
|
726
746
|
inputCharge: null
|
|
727
747
|
},
|
|
728
|
-
mcc:
|
|
729
|
-
|
|
748
|
+
mcc:
|
|
749
|
+
parsedData[14] !== ''
|
|
750
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
751
|
+
: null,
|
|
752
|
+
mnc:
|
|
753
|
+
parsedData[15] !== ''
|
|
754
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
755
|
+
: null,
|
|
730
756
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
731
757
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
732
758
|
satellites:
|
|
@@ -734,7 +760,7 @@ const parse = raw => {
|
|
|
734
760
|
? parseInt(parsedData[index])
|
|
735
761
|
: null,
|
|
736
762
|
odometer:
|
|
737
|
-
parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null
|
|
763
|
+
parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null
|
|
738
764
|
// hourmeter: null
|
|
739
765
|
})
|
|
740
766
|
} else if (
|
|
@@ -752,7 +778,7 @@ const parse = raw => {
|
|
|
752
778
|
// status: null,
|
|
753
779
|
// azimuth: null,
|
|
754
780
|
// altitude: null,
|
|
755
|
-
datetime: parsedData[4] !== '' ? utils.parseDate(parsedData[4]) : null
|
|
781
|
+
datetime: parsedData[4] !== '' ? utils.parseDate(parsedData[4]) : null
|
|
756
782
|
// voltage: {
|
|
757
783
|
// battery: null,
|
|
758
784
|
// inputCharge: null
|
|
@@ -806,14 +832,20 @@ const parse = raw => {
|
|
|
806
832
|
// battery: null,
|
|
807
833
|
// inputCharge: null
|
|
808
834
|
// },
|
|
809
|
-
mcc:
|
|
810
|
-
|
|
835
|
+
mcc:
|
|
836
|
+
parsedData[11] !== ''
|
|
837
|
+
? utils.latamMcc[parseInt(parsedData[11], 10)]
|
|
838
|
+
: null,
|
|
839
|
+
mnc:
|
|
840
|
+
parsedData[12] !== ''
|
|
841
|
+
? utils.getMNC(parsedData[11], parsedData[12])
|
|
842
|
+
: null,
|
|
811
843
|
lac: parsedData[13] !== '' ? parseInt(parsedData[13], 16) : null,
|
|
812
844
|
cid: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
813
845
|
satellites:
|
|
814
846
|
satelliteInfo && parsedData[index] !== ''
|
|
815
847
|
? parseInt(parsedData[index])
|
|
816
|
-
: null
|
|
848
|
+
: null
|
|
817
849
|
// status: includeStatus
|
|
818
850
|
// ? {
|
|
819
851
|
// raw: parsedData[index + 1],
|
|
@@ -892,14 +924,20 @@ const parse = raw => {
|
|
|
892
924
|
// battery: null,
|
|
893
925
|
// inputCharge: null
|
|
894
926
|
// },
|
|
895
|
-
mcc:
|
|
896
|
-
|
|
927
|
+
mcc:
|
|
928
|
+
parsedData[12] !== ''
|
|
929
|
+
? utils.latamMcc[parseInt(parsedData[12], 10)]
|
|
930
|
+
: null,
|
|
931
|
+
mnc:
|
|
932
|
+
parsedData[13] !== ''
|
|
933
|
+
? utils.getMNC(parsedData[12], parsedData[13])
|
|
934
|
+
: null,
|
|
897
935
|
lac: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
898
936
|
cid: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
899
937
|
satellites:
|
|
900
938
|
satelliteInfo && parsedData[index] !== ''
|
|
901
939
|
? parseInt(parsedData[index])
|
|
902
|
-
: null
|
|
940
|
+
: null
|
|
903
941
|
// status: includeStatus
|
|
904
942
|
// ? {
|
|
905
943
|
// raw: parsedData[index + 1],
|
|
@@ -971,14 +1009,20 @@ const parse = raw => {
|
|
|
971
1009
|
// battery: null,
|
|
972
1010
|
// inputCharge: null
|
|
973
1011
|
// },
|
|
974
|
-
mcc:
|
|
975
|
-
|
|
1012
|
+
mcc:
|
|
1013
|
+
parsedData[13] !== ''
|
|
1014
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
1015
|
+
: null,
|
|
1016
|
+
mnc:
|
|
1017
|
+
parsedData[14] !== ''
|
|
1018
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
1019
|
+
: null,
|
|
976
1020
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
977
1021
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
978
1022
|
satellites:
|
|
979
1023
|
satelliteInfo && parsedData[index] !== ''
|
|
980
1024
|
? parseInt(parsedData[index], 10)
|
|
981
|
-
: null
|
|
1025
|
+
: null
|
|
982
1026
|
// status: includeStatus
|
|
983
1027
|
// ? {
|
|
984
1028
|
// raw: parsedData[index + 1],
|
|
@@ -1050,8 +1094,14 @@ const parse = raw => {
|
|
|
1050
1094
|
battery: null,
|
|
1051
1095
|
inputCharge: null
|
|
1052
1096
|
},
|
|
1053
|
-
mcc:
|
|
1054
|
-
|
|
1097
|
+
mcc:
|
|
1098
|
+
parsedData[12] !== ''
|
|
1099
|
+
? utils.latamMcc[parseInt(parsedData[12], 10)]
|
|
1100
|
+
: null,
|
|
1101
|
+
mnc:
|
|
1102
|
+
parsedData[13] !== ''
|
|
1103
|
+
? utils.getMNC(parsedData[12], parsedData[13])
|
|
1104
|
+
: null,
|
|
1055
1105
|
lac: parsedData[14] !== '' ? parseInt(parsedData[14], 16) : null,
|
|
1056
1106
|
cid: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
1057
1107
|
satellites:
|
|
@@ -1067,12 +1117,12 @@ const parse = raw => {
|
|
|
1067
1117
|
utils.nHexDigit(
|
|
1068
1118
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1069
1119
|
8
|
|
1070
|
-
)[
|
|
1120
|
+
)[6] === '1',
|
|
1071
1121
|
'1':
|
|
1072
1122
|
utils.nHexDigit(
|
|
1073
1123
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1074
1124
|
8
|
|
1075
|
-
)[
|
|
1125
|
+
)[7] === '1'
|
|
1076
1126
|
},
|
|
1077
1127
|
output: {
|
|
1078
1128
|
'3':
|
|
@@ -1141,8 +1191,14 @@ const parse = raw => {
|
|
|
1141
1191
|
// battery: null,
|
|
1142
1192
|
// inputCharge: null
|
|
1143
1193
|
// },
|
|
1144
|
-
mcc:
|
|
1145
|
-
|
|
1194
|
+
mcc:
|
|
1195
|
+
parsedData[13] !== ''
|
|
1196
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
1197
|
+
: null,
|
|
1198
|
+
mnc:
|
|
1199
|
+
parsedData[14] !== ''
|
|
1200
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
1201
|
+
: null,
|
|
1146
1202
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
1147
1203
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
1148
1204
|
satellites:
|
|
@@ -1186,9 +1242,8 @@ const parse = raw => {
|
|
|
1186
1242
|
// state: utils.states[parsedData[index + 1].substring(0, 2)]
|
|
1187
1243
|
// }
|
|
1188
1244
|
// : null,
|
|
1189
|
-
odometer:
|
|
1190
|
-
|
|
1191
|
-
: null,
|
|
1245
|
+
odometer:
|
|
1246
|
+
parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null
|
|
1192
1247
|
// hourmeter: null
|
|
1193
1248
|
})
|
|
1194
1249
|
} else if (
|
|
@@ -1226,8 +1281,14 @@ const parse = raw => {
|
|
|
1226
1281
|
// battery: null,
|
|
1227
1282
|
// inputCharge: null
|
|
1228
1283
|
// },
|
|
1229
|
-
mcc:
|
|
1230
|
-
|
|
1284
|
+
mcc:
|
|
1285
|
+
parsedData[13] !== ''
|
|
1286
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
1287
|
+
: null,
|
|
1288
|
+
mnc:
|
|
1289
|
+
parsedData[14] !== ''
|
|
1290
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
1291
|
+
: null,
|
|
1231
1292
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
1232
1293
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
1233
1294
|
satellites:
|
|
@@ -1271,9 +1332,8 @@ const parse = raw => {
|
|
|
1271
1332
|
// state: utils.states[parsedData[index + 1].substring(0, 2)]
|
|
1272
1333
|
// }
|
|
1273
1334
|
// : null,
|
|
1274
|
-
odometer:
|
|
1275
|
-
|
|
1276
|
-
: null,
|
|
1335
|
+
odometer:
|
|
1336
|
+
parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null
|
|
1277
1337
|
// hourmeter: null
|
|
1278
1338
|
})
|
|
1279
1339
|
} else if (command[1] === 'GTGSS') {
|
|
@@ -1308,15 +1368,21 @@ const parse = raw => {
|
|
|
1308
1368
|
// battery: null,
|
|
1309
1369
|
// inputCharge: null
|
|
1310
1370
|
// },
|
|
1311
|
-
mcc:
|
|
1312
|
-
|
|
1371
|
+
mcc:
|
|
1372
|
+
parsedData[15] !== ''
|
|
1373
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
1374
|
+
: null,
|
|
1375
|
+
mnc:
|
|
1376
|
+
parsedData[16] !== ''
|
|
1377
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
1378
|
+
: null,
|
|
1313
1379
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
1314
1380
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
1315
1381
|
usedSatellites: parsedData[5] !== '' ? parseInt(parsedData[5], 16) : null,
|
|
1316
1382
|
satellites:
|
|
1317
1383
|
satelliteInfo && parsedData[index] !== ''
|
|
1318
1384
|
? parseInt(parsedData[index], 10)
|
|
1319
|
-
: null
|
|
1385
|
+
: null
|
|
1320
1386
|
// status: includeStatus
|
|
1321
1387
|
// ? {
|
|
1322
1388
|
// raw: parsedData[index + 1],
|
|
@@ -1357,50 +1423,50 @@ const parse = raw => {
|
|
|
1357
1423
|
// odometer: null,
|
|
1358
1424
|
// hourmeter: null
|
|
1359
1425
|
})
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1426
|
+
// } else if (command[1] === 'GTIDA') {
|
|
1427
|
+
// // bluetooth identification
|
|
1428
|
+
// let number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
|
|
1429
|
+
// let index = 7 + 12 * number // position append mask
|
|
1430
|
+
// let satelliteInfo = false
|
|
1365
1431
|
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1432
|
+
// // If get satellites is configured
|
|
1433
|
+
// if (utils.includeSatellites(parsedData[index])) {
|
|
1434
|
+
// index += 1
|
|
1435
|
+
// satelliteInfo = true
|
|
1436
|
+
// }
|
|
1371
1437
|
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1438
|
+
// data = Object.assign(data, {
|
|
1439
|
+
// alarm: utils.getAlarm(command[1], `${parsedData[5]},${parsedData[6]}`),
|
|
1440
|
+
// loc: {
|
|
1441
|
+
// type: 'Point',
|
|
1442
|
+
// coordinates: [parseFloat(parsedData[12]), parseFloat(parsedData[13])]
|
|
1443
|
+
// },
|
|
1444
|
+
// speed: parsedData[9] !== '' ? parseFloat(parsedData[9]) : null,
|
|
1445
|
+
// gpsStatus: utils.checkGps(
|
|
1446
|
+
// parseFloat(parsedData[12]),
|
|
1447
|
+
// parseFloat(parsedData[13])
|
|
1448
|
+
// ),
|
|
1449
|
+
// hdop: parsedData[8] !== '' ? parseFloat(parsedData[8]) : null,
|
|
1450
|
+
// status: null,
|
|
1451
|
+
// azimuth: parsedData[10] !== '' ? parseFloat(parsedData[10]) : null,
|
|
1452
|
+
// altitude: parsedData[11] !== '' ? parseFloat(parsedData[11]) : null,
|
|
1453
|
+
// datetime: parsedData[14] !== '' ? utils.parseDate(parsedData[14]) : null,
|
|
1454
|
+
// voltage: {
|
|
1455
|
+
// battery: null,
|
|
1456
|
+
// inputCharge: null
|
|
1457
|
+
// },
|
|
1458
|
+
// mcc: parsedData[15] !== '' ? utils.latamMcc[parseInt(parsedData[15], 10)] : null,
|
|
1459
|
+
// mnc: parsedData[16] !== '' ? utils.getMNC(parsedData[15], parsedData[16]) : null,
|
|
1460
|
+
// lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
1461
|
+
// cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
1462
|
+
// satellites:
|
|
1463
|
+
// satelliteInfo && parsedData[index] !== ''
|
|
1464
|
+
// ? parseInt(parsedData[index], 10)
|
|
1465
|
+
// : null,
|
|
1466
|
+
// odometer:
|
|
1467
|
+
// parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null,
|
|
1468
|
+
// hourmeter: null
|
|
1469
|
+
// })
|
|
1404
1470
|
} else if (command[1] === 'GTDAT') {
|
|
1405
1471
|
let dataIndex = 4
|
|
1406
1472
|
// Short format
|
|
@@ -1442,8 +1508,14 @@ const parse = raw => {
|
|
|
1442
1508
|
adb: null,
|
|
1443
1509
|
adc: null
|
|
1444
1510
|
},
|
|
1445
|
-
mcc:
|
|
1446
|
-
|
|
1511
|
+
mcc:
|
|
1512
|
+
parsedData[15] !== ''
|
|
1513
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
1514
|
+
: null,
|
|
1515
|
+
mnc:
|
|
1516
|
+
parsedData[16] !== ''
|
|
1517
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
1518
|
+
: null,
|
|
1447
1519
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
1448
1520
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
1449
1521
|
satellites:
|
|
@@ -1489,14 +1561,20 @@ const parse = raw => {
|
|
|
1489
1561
|
// battery: null,
|
|
1490
1562
|
// inputCharge: null
|
|
1491
1563
|
// },
|
|
1492
|
-
mcc:
|
|
1493
|
-
|
|
1564
|
+
mcc:
|
|
1565
|
+
parsedData[13] !== ''
|
|
1566
|
+
? utils.latamMcc[parseInt(parsedData[13], 10)]
|
|
1567
|
+
: null,
|
|
1568
|
+
mnc:
|
|
1569
|
+
parsedData[14] !== ''
|
|
1570
|
+
? utils.getMNC(parsedData[13], parsedData[14])
|
|
1571
|
+
: null,
|
|
1494
1572
|
lac: parsedData[15] !== '' ? parseInt(parsedData[15], 16) : null,
|
|
1495
1573
|
cid: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
1496
1574
|
satellites:
|
|
1497
1575
|
satelliteInfo && parsedData[index] !== ''
|
|
1498
1576
|
? parseInt(parsedData[index], 10)
|
|
1499
|
-
: null
|
|
1577
|
+
: null
|
|
1500
1578
|
// status: includeStatus
|
|
1501
1579
|
// ? {
|
|
1502
1580
|
// raw: parsedData[index + 1],
|
|
@@ -1569,14 +1647,20 @@ const parse = raw => {
|
|
|
1569
1647
|
// battery: null,
|
|
1570
1648
|
// inputCharge: null
|
|
1571
1649
|
// },
|
|
1572
|
-
mcc:
|
|
1573
|
-
|
|
1650
|
+
mcc:
|
|
1651
|
+
parsedData[14] !== ''
|
|
1652
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
1653
|
+
: null,
|
|
1654
|
+
mnc:
|
|
1655
|
+
parsedData[15] !== ''
|
|
1656
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
1657
|
+
: null,
|
|
1574
1658
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
1575
1659
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
1576
1660
|
satellites:
|
|
1577
1661
|
satelliteInfo && parsedData[index] !== ''
|
|
1578
1662
|
? parseInt(parsedData[index], 10)
|
|
1579
|
-
: null
|
|
1663
|
+
: null
|
|
1580
1664
|
// status: includeStatus
|
|
1581
1665
|
// ? {
|
|
1582
1666
|
// raw: parsedData[index + 1],
|
|
@@ -1657,8 +1741,14 @@ const parse = raw => {
|
|
|
1657
1741
|
battery: null,
|
|
1658
1742
|
inputCharge: null
|
|
1659
1743
|
},
|
|
1660
|
-
mcc:
|
|
1661
|
-
|
|
1744
|
+
mcc:
|
|
1745
|
+
parsedData[14] !== ''
|
|
1746
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
1747
|
+
: null,
|
|
1748
|
+
mnc:
|
|
1749
|
+
parsedData[15] !== ''
|
|
1750
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
1751
|
+
: null,
|
|
1662
1752
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
1663
1753
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
1664
1754
|
satellites:
|
|
@@ -1674,12 +1764,12 @@ const parse = raw => {
|
|
|
1674
1764
|
utils.nHexDigit(
|
|
1675
1765
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1676
1766
|
8
|
|
1677
|
-
)[
|
|
1767
|
+
)[6] === '1',
|
|
1678
1768
|
'1':
|
|
1679
1769
|
utils.nHexDigit(
|
|
1680
1770
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1681
1771
|
8
|
|
1682
|
-
)[
|
|
1772
|
+
)[7] === '1'
|
|
1683
1773
|
},
|
|
1684
1774
|
output: {
|
|
1685
1775
|
'3':
|
|
@@ -1877,8 +1967,14 @@ const parse = raw => {
|
|
|
1877
1967
|
azimuth: parsedData[62] !== '' ? parseFloat(parsedData[62]) : null,
|
|
1878
1968
|
altitude: parsedData[63] !== '' ? parseFloat(parsedData[63]) : null,
|
|
1879
1969
|
datetime: parsedData[66] !== '' ? utils.parseDate(parsedData[66]) : null,
|
|
1880
|
-
mcc:
|
|
1881
|
-
|
|
1970
|
+
mcc:
|
|
1971
|
+
parsedData[67] !== ''
|
|
1972
|
+
? utils.latamMcc[parseInt(parsedData[67], 10)]
|
|
1973
|
+
: null,
|
|
1974
|
+
mnc:
|
|
1975
|
+
parsedData[68] !== ''
|
|
1976
|
+
? utils.getMNC(parsedData[67], parsedData[68])
|
|
1977
|
+
: null,
|
|
1882
1978
|
lac: parsedData[69] !== '' ? parseInt(parsedData[69], 16) : null,
|
|
1883
1979
|
cid: parsedData[70] !== '' ? parseInt(parsedData[70], 16) : null,
|
|
1884
1980
|
satellites:
|
|
@@ -1894,12 +1990,12 @@ const parse = raw => {
|
|
|
1894
1990
|
utils.nHexDigit(
|
|
1895
1991
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1896
1992
|
8
|
|
1897
|
-
)[
|
|
1993
|
+
)[6] === '1',
|
|
1898
1994
|
'1':
|
|
1899
1995
|
utils.nHexDigit(
|
|
1900
1996
|
utils.hex2bin(parsedData[index + 1].substring(2, 4)),
|
|
1901
1997
|
8
|
|
1902
|
-
)[
|
|
1998
|
+
)[7] === '1'
|
|
1903
1999
|
},
|
|
1904
2000
|
output: {
|
|
1905
2001
|
'3':
|
|
@@ -2213,8 +2309,14 @@ const parse = raw => {
|
|
|
2213
2309
|
battery: null,
|
|
2214
2310
|
inputCharge: null
|
|
2215
2311
|
},
|
|
2216
|
-
mcc:
|
|
2217
|
-
|
|
2312
|
+
mcc:
|
|
2313
|
+
parsedData[15] !== ''
|
|
2314
|
+
? utils.latamMcc[parseInt(parsedData[15], 10)]
|
|
2315
|
+
: null,
|
|
2316
|
+
mnc:
|
|
2317
|
+
parsedData[16] !== ''
|
|
2318
|
+
? utils.getMNC(parsedData[15], parsedData[16])
|
|
2319
|
+
: null,
|
|
2218
2320
|
lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
2219
2321
|
cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
|
|
2220
2322
|
satellites:
|
|
@@ -2262,8 +2364,14 @@ const parse = raw => {
|
|
|
2262
2364
|
// battery: null,
|
|
2263
2365
|
// inputCharge: null
|
|
2264
2366
|
// },
|
|
2265
|
-
mcc:
|
|
2266
|
-
|
|
2367
|
+
mcc:
|
|
2368
|
+
parsedData[20] !== ''
|
|
2369
|
+
? utils.latamMcc[parseInt(parsedData[20], 10)]
|
|
2370
|
+
: null,
|
|
2371
|
+
mnc:
|
|
2372
|
+
parsedData[21] !== ''
|
|
2373
|
+
? utils.getMNC(parsedData[20], parsedData[21])
|
|
2374
|
+
: null,
|
|
2267
2375
|
lac: parsedData[22] !== '' ? parseInt(parsedData[22], 16) : null,
|
|
2268
2376
|
cid: parsedData[23] !== '' ? parseInt(parsedData[23], 16) : null,
|
|
2269
2377
|
satellites:
|
|
@@ -2317,7 +2425,7 @@ const parse = raw => {
|
|
|
2317
2425
|
xVertical: parsedData[10] !== '' ? parseFloat(parsedData[10]) : null,
|
|
2318
2426
|
yVertical: parsedData[11] !== '' ? parseFloat(parsedData[11]) : null,
|
|
2319
2427
|
zVertical: parsedData[12] !== '' ? parseFloat(parsedData[12]) : null
|
|
2320
|
-
}
|
|
2428
|
+
}
|
|
2321
2429
|
// odometer: null,
|
|
2322
2430
|
// hourmeter: null
|
|
2323
2431
|
})
|
|
@@ -2337,7 +2445,8 @@ const parse = raw => {
|
|
|
2337
2445
|
|
|
2338
2446
|
let maxAcc = parsedData[index + 1] !== '' ? parsedData[index + 1] : null
|
|
2339
2447
|
let avgAcc = parsedData[index + 2] !== '' ? parsedData[index + 2] : null
|
|
2340
|
-
let duration =
|
|
2448
|
+
let duration =
|
|
2449
|
+
parsedData[index + 3] !== '' ? parseFloat(parsedData[index + 3]) : null
|
|
2341
2450
|
|
|
2342
2451
|
data = Object.assign(data, {
|
|
2343
2452
|
alarm: utils.getAlarm(
|
|
@@ -2362,8 +2471,14 @@ const parse = raw => {
|
|
|
2362
2471
|
// battery: null,
|
|
2363
2472
|
// inputCharge: null
|
|
2364
2473
|
// },
|
|
2365
|
-
mcc:
|
|
2366
|
-
|
|
2474
|
+
mcc:
|
|
2475
|
+
parsedData[14] !== ''
|
|
2476
|
+
? utils.latamMcc[parseInt(parsedData[14], 10)]
|
|
2477
|
+
: null,
|
|
2478
|
+
mnc:
|
|
2479
|
+
parsedData[15] !== ''
|
|
2480
|
+
? utils.getMNC(parsedData[14], parsedData[15])
|
|
2481
|
+
: null,
|
|
2367
2482
|
lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
|
|
2368
2483
|
cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
|
|
2369
2484
|
satellites:
|
|
@@ -2434,9 +2549,8 @@ const parse = raw => {
|
|
|
2434
2549
|
: null
|
|
2435
2550
|
},
|
|
2436
2551
|
duration: duration,
|
|
2437
|
-
odometer:
|
|
2438
|
-
|
|
2439
|
-
: null,
|
|
2552
|
+
odometer:
|
|
2553
|
+
parsedData[index + 4] !== '' ? parseFloat(parsedData[index + 4]) : null
|
|
2440
2554
|
// hourmeter: null
|
|
2441
2555
|
})
|
|
2442
2556
|
} else {
|
package/src/index.js
CHANGED
|
@@ -250,7 +250,9 @@ const parseCommand = data => {
|
|
|
250
250
|
const do5 = `${outputs[4]},${prevDurations['5']},${prevToggles['5']}`
|
|
251
251
|
const longOperation = data.longOperation || false ? '1' : '0'
|
|
252
252
|
const dosReport = data.dosReport || false ? '1' : '0'
|
|
253
|
-
if (data.device_serie === 'GV') {
|
|
253
|
+
if (data.device_serie === 'GV' && data.password === 'gv57cg') {
|
|
254
|
+
command = `AT+GTDOS=${password},,,1,${do1},,,${dosReport},0,5,,,,${serialId}$`
|
|
255
|
+
} else if (data.device_serie === 'GV') {
|
|
254
256
|
command = `AT+GTOUT=${password},${do1},${do2},${do3},${do4},${longOperation},${dosReport},,,${serialId}$`
|
|
255
257
|
} else if (data.device_serie === 'GMT') {
|
|
256
258
|
command = `AT+GTOUT=${password},${do1},${do2},,,,,,,,${serialId}$`
|
package/src/utils.js
CHANGED
|
@@ -983,6 +983,7 @@ const getAlarm = (command, report, extra = false) => {
|
|
|
983
983
|
magnitude: Number(
|
|
984
984
|
Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) + Math.pow(z, 2)).toFixed(2)
|
|
985
985
|
).toString(),
|
|
986
|
+
xyz: {x: x, y: y, z: z},
|
|
986
987
|
message: messages[command][report[1]]
|
|
987
988
|
}
|
|
988
989
|
} else if (command === 'GTCRA') {
|