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 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
- const raw = new Buffer(hbe)
61
- console.log(queclink.parse(raw))
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "queclink-parser",
3
- "version": "1.9.7",
3
+ "version": "1.9.9",
4
4
  "description": "Parse raw data from Queclink devices",
5
5
  "main": "src",
6
6
  "scripts": {
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
- )[7] === '1',
60
+ )[6] === '1',
60
61
  '1':
61
62
  utils.nHexDigit(
62
63
  utils.hex2bin(parsedData[index + 6].substring(2, 4)),
63
64
  8
64
- )[6] === '1'
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: parsedData[index + 5] !== ''
92
- ? parseFloat(parsedData[index + 5])
93
- : null,
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: parsedData[14] !== '' ? utils.latamMcc[parseInt(parsedData[14], 10)] : null,
98
- mnc: parsedData[15] !== '' ? utils.getMNC(parsedData[14], parsedData[15]) : null,
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
- )[7] === '1',
224
+ )[6] === '1',
217
225
  '1':
218
226
  utils.nHexDigit(
219
227
  utils.hex2bin(parsedData[index + 6].substring(2, 4)),
220
228
  8
221
- )[6] === '1'
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: parsedData[15] !== '' ? utils.latamMcc[parseInt(parsedData[15], 10)] : null,
255
- mnc: parsedData[16] !== '' ? utils.getMNC(parsedData[15], parsedData[16]) : null,
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 = utils.nHexDigit(utils.hex2bin(parsedData[4]), 32)[16] === '1'
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)[7] === '1',
583
- '1': utils.nHexDigit(utils.hex2bin(parsedData[21]), 8)[6] === '1'
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: parsedData[14] !== '' ? utils.latamMcc[parseInt(parsedData[14], 10)] : null,
647
- mnc: parsedData[15] !== '' ? utils.getMNC(parsedData[14], parsedData[15]) : null,
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
- // charge: null,
688
- // state: utils.states[parsedData[index + 1].substring(0, 2)]
689
- // }
690
- // : null,
691
- odometer: parsedData[index + 1] !== ''
692
- ? parseFloat(parsedData[index + 1])
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: parsedData[14] !== '' ? utils.latamMcc[parseInt(parsedData[14], 10)] : null,
729
- mnc: parsedData[15] !== '' ? utils.getMNC(parsedData[14], parsedData[15]) : null,
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: parsedData[11] !== '' ? utils.latamMcc[parseInt(parsedData[11], 10)] : null,
810
- mnc: parsedData[12] !== '' ? utils.getMNC(parsedData[11], parsedData[12]) : null,
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: parsedData[12] !== '' ? utils.latamMcc[parseInt(parsedData[12], 10)] : null,
896
- mnc: parsedData[13] !== '' ? utils.getMNC(parsedData[12], parsedData[13]) : null,
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: parsedData[13] !== '' ? utils.latamMcc[parseInt(parsedData[13], 10)] : null,
975
- mnc: parsedData[14] !== '' ? utils.getMNC(parsedData[13], parsedData[14]) : null,
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: parsedData[12] !== '' ? utils.latamMcc[parseInt(parsedData[12], 10)] : null,
1054
- mnc: parsedData[13] !== '' ? utils.getMNC(parsedData[12], parsedData[13]) : null,
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
- )[7] === '1',
1120
+ )[6] === '1',
1071
1121
  '1':
1072
1122
  utils.nHexDigit(
1073
1123
  utils.hex2bin(parsedData[index + 1].substring(2, 4)),
1074
1124
  8
1075
- )[6] === '1'
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: parsedData[13] !== '' ? utils.latamMcc[parseInt(parsedData[13], 10)] : null,
1145
- mnc: parsedData[14] !== '' ? utils.getMNC(parsedData[13], parsedData[14]) : null,
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: parsedData[index + 1] !== ''
1190
- ? parseFloat(parsedData[index + 1])
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: parsedData[13] !== '' ? utils.latamMcc[parseInt(parsedData[13], 10)] : null,
1230
- mnc: parsedData[14] !== '' ? utils.getMNC(parsedData[13], parsedData[14]) : null,
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: parsedData[index + 1] !== ''
1275
- ? parseFloat(parsedData[index + 1])
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: parsedData[15] !== '' ? utils.latamMcc[parseInt(parsedData[15], 10)] : null,
1312
- mnc: parsedData[16] !== '' ? utils.getMNC(parsedData[15], parsedData[16]) : null,
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
- // } else if (command[1] === 'GTIDA') {
1361
- // // bluetooth identification
1362
- // let number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
1363
- // let index = 7 + 12 * number // position append mask
1364
- // let satelliteInfo = false
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
- // // If get satellites is configured
1367
- // if (utils.includeSatellites(parsedData[index])) {
1368
- // index += 1
1369
- // satelliteInfo = true
1370
- // }
1432
+ // // If get satellites is configured
1433
+ // if (utils.includeSatellites(parsedData[index])) {
1434
+ // index += 1
1435
+ // satelliteInfo = true
1436
+ // }
1371
1437
 
1372
- // data = Object.assign(data, {
1373
- // alarm: utils.getAlarm(command[1], `${parsedData[5]},${parsedData[6]}`),
1374
- // loc: {
1375
- // type: 'Point',
1376
- // coordinates: [parseFloat(parsedData[12]), parseFloat(parsedData[13])]
1377
- // },
1378
- // speed: parsedData[9] !== '' ? parseFloat(parsedData[9]) : null,
1379
- // gpsStatus: utils.checkGps(
1380
- // parseFloat(parsedData[12]),
1381
- // parseFloat(parsedData[13])
1382
- // ),
1383
- // hdop: parsedData[8] !== '' ? parseFloat(parsedData[8]) : null,
1384
- // status: null,
1385
- // azimuth: parsedData[10] !== '' ? parseFloat(parsedData[10]) : null,
1386
- // altitude: parsedData[11] !== '' ? parseFloat(parsedData[11]) : null,
1387
- // datetime: parsedData[14] !== '' ? utils.parseDate(parsedData[14]) : null,
1388
- // voltage: {
1389
- // battery: null,
1390
- // inputCharge: null
1391
- // },
1392
- // mcc: parsedData[15] !== '' ? utils.latamMcc[parseInt(parsedData[15], 10)] : null,
1393
- // mnc: parsedData[16] !== '' ? utils.getMNC(parsedData[15], parsedData[16]) : null,
1394
- // lac: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
1395
- // cid: parsedData[18] !== '' ? parseInt(parsedData[18], 16) : null,
1396
- // satellites:
1397
- // satelliteInfo && parsedData[index] !== ''
1398
- // ? parseInt(parsedData[index], 10)
1399
- // : null,
1400
- // odometer:
1401
- // parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null,
1402
- // hourmeter: null
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: parsedData[15] !== '' ? utils.latamMcc[parseInt(parsedData[15], 10)] : null,
1446
- mnc: parsedData[16] !== '' ? utils.getMNC(parsedData[15], parsedData[16]) : null,
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: parsedData[13] !== '' ? utils.latamMcc[parseInt(parsedData[13], 10)] : null,
1493
- mnc: parsedData[14] !== '' ? utils.getMNC(parsedData[13], parsedData[14]) : null,
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: parsedData[14] !== '' ? utils.latamMcc[parseInt(parsedData[14], 10)] : null,
1573
- mnc: parsedData[15] !== '' ? utils.getMNC(parsedData[14], parsedData[15]) : null,
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: parsedData[14] !== '' ? utils.latamMcc[parseInt(parsedData[14], 10)] : null,
1661
- mnc: parsedData[15] !== '' ? utils.getMNC(parsedData[14], parsedData[15]) : null,
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
- )[7] === '1',
1767
+ )[6] === '1',
1678
1768
  '1':
1679
1769
  utils.nHexDigit(
1680
1770
  utils.hex2bin(parsedData[index + 1].substring(2, 4)),
1681
1771
  8
1682
- )[6] === '1'
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: parsedData[67] !== '' ? utils.latamMcc[parseInt(parsedData[67], 10)] : null,
1881
- mnc: parsedData[68] !== '' ? utils.getMNC(parsedData[67], parsedData[68]) : null,
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
- )[7] === '1',
1993
+ )[6] === '1',
1898
1994
  '1':
1899
1995
  utils.nHexDigit(
1900
1996
  utils.hex2bin(parsedData[index + 1].substring(2, 4)),
1901
1997
  8
1902
- )[6] === '1'
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: parsedData[15] !== '' ? utils.latamMcc[parseInt(parsedData[15], 10)] : null,
2217
- mnc: parsedData[16] !== '' ? utils.getMNC(parsedData[15], parsedData[16]) : null,
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: parsedData[20] !== '' ? utils.latamMcc[parseInt(parsedData[20], 10)] : null,
2266
- mnc: parsedData[21] !== '' ? utils.getMNC(parsedData[20], parsedData[21]) : null,
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 = parsedData[index + 3] !== '' ? parseFloat(parsedData[index + 3]) : null
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: parsedData[14] !== '' ? utils.latamMcc[parseInt(parsedData[14], 10)] : null,
2366
- mnc: parsedData[15] !== '' ? utils.getMNC(parsedData[14], parsedData[15]) : null,
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: parsedData[index + 4] !== ''
2438
- ? parseFloat(parsedData[index + 4])
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') {