queclink-parser 1.9.12 → 1.9.13

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,23 @@
1
+ #### 1.9.13 (2024-11-27)
2
+
3
+ ##### New Features
4
+
5
+ * **dos:** se agrega comando para salidas digitales GV58LAU y GV57CG ([d0cf801b](https://github.com/jaayesta/queclink-parser/commit/d0cf801bd0bdc90da29c94d7341b72249b0d006d))
6
+ * **gv310lau:** se agrega Hdop, Vdop y Ddop ([23fa674c](https://github.com/jaayesta/queclink-parser/commit/23fa674c1c6cb41a9f6bc978d69ec58a7e5b3a83))
7
+
8
+ ##### Bug Fixes
9
+
10
+ * **options:**
11
+ * se incluye llamada a nuevos verificadores de <position append mask> ([c9277a89](https://github.com/jaayesta/queclink-parser/commit/c9277a89e9bcb8aa87315d4a70310a088d1da6a1))
12
+ * se modifica la lógica para <position append mask> ([2e493c2a](https://github.com/jaayesta/queclink-parser/commit/2e493c2a0b21a971027fa44a4f94dbea5e733795))
13
+ * **canbus:** medida de adblueLevel ([ae0e6c4b](https://github.com/jaayesta/queclink-parser/commit/ae0e6c4bbfada75f30eb87cad7b9b68335c0a6aa))
14
+ * **mcc:** se agrega default ([346ddbd4](https://github.com/jaayesta/queclink-parser/commit/346ddbd4a9a42e53aae7a7ee30564d4be1fd42da))
15
+ * **input:** cambio de indice binario. ([b10bc367](https://github.com/jaayesta/queclink-parser/commit/b10bc367987af77c5fed2e1c0b51c7832dba0901))
16
+
17
+ ##### Tests
18
+
19
+ * **gv58lau:** pruebas ([1ad0a8c0](https://github.com/jaayesta/queclink-parser/commit/1ad0a8c04e3c6297eae8840f58992e375310cb9b))
20
+
1
21
  #### 1.9.12 (2024-10-14)
2
22
 
3
23
  ##### New Features
package/example.js CHANGED
@@ -1,16 +1,16 @@
1
1
  const queclink = require('.');
2
2
 
3
- var tow = '+RESP:GTTOW,8020060402,867488060596284,GV57CG,,00,1,3,0.0,0,180.6,117.129144,31.838861,20230524034505,0460,0001,DF5C,027A4F1F,01,7,0.2,20230524034505,01B8$'
4
- var dis = '+RESP:GTDIS,8020060402,867488060596284,GV57CG,,60,1,1,0.0,0,138.5,117.129051,31.839786,20230519083404,0460,0001,DF5C,05FE6667,01,4,0.0,20230519083405,04BD$'
3
+ var tow = '+RESP:GTTOW,8020040703,866314060000229,GV58LAU,,00,1,1,0.0,0,136.4,117.129290,31.840318,20231207085329,0460,0000,550B,085BE2AA,01,10,0.0,20231207085330,006A$'
4
+ var dis = '+RESP:GTDIS,8020040703,866314060000229,GV58LAU,,10,1,1,0.0,0,119.1,117.129559,31.839368,20231207085255,0460,0000,550B,085BE2AA,01,11,0.0,20231207085256,0068$'
5
5
  var iob = '+RESP:GTIOB,8020060402,867488060596284,GV57CG,,10,1,1,0.0,182,85.3,117.129200,31.839163,20230523025618,0460,0001,DF5C,05FE6667,01,6,0.4,20230522192619,0218$'
6
- var spd = '+RESP:GTSPD,8020060402,867488060596284,GV57CG,,00,1,1,0.4,0,220.2,117.129759,31.839433,20230523062932,0460,0001,DF5C,027A4F1F,01,4,0.0,20230523160033,0B6A$'
7
- var sos = '+RESP:GTSOS,8020060402,867488060596284,GV57CG,,60,1,0,0.0,351,67.3,117.129029,31.840100,20230524034859,0460,0001,DF5C,05FE6667,01,2,0.0,20230524035256,01D2$'
6
+ var spd = '+RESP:GTSPD,8020040703,866314060000229,GV58LAU,,01,1,2,0.0,0,171.2,117.130121,31.838945,20231207085516,0460,0000,550B,085BE2AA,01,11,0.0,20231207085517,0078$'
7
+ var sos = '+RESP:GTSOS,8020040703,866314060000229,GV58LAU,,10,1,1,0.0,0,87.8,117.129751,31.838892,20231207085541,0460,0000,550B,085BE2AA,01,11,0.0,20231207085542,007A$'
8
8
  var rtl = '+RESP:GTRTL,8020060402,867488060596284,GV57CG,,00,1,2,263.8,351,67.3,117.129029,31.840100,20230524034844,0460,0001,DF5C,05FE6667,01,6,0.0,20230524034845,01C8$'
9
9
  var dog = '+RESP:GTDOG,8020060402,867488060596284,GV57CG,,63,1,2,0.0,171,104.6,117.129097,31.839252,20230524035637,0460,0001,DF5C,05FE6667,01,10,0.3,20230524035638,01E5$'
10
10
  var igl = '+RESP:GTIGL,8020060402,867488060596284,GV57CG,,01,1,1,0.0,0,48.6,117.129292,31.839412,20230524035846,0460,0001,DF5C,05FE6667,01,10,0.4,20230524035847,0201$'
11
11
  var vgl = '+RESP:GTVGL,8020060402,867488060596284,GV57CG,,50,1,1,0.0,0,81.6,117.129297,31.839118,20230519072153,0460,0001,DF5C,05FE6667,01,1,0.7,20230519072154,03B9$'
12
12
  var hbm = '+RESP:GTHBM,8020060402,866775051515393,GV57CG,,01,1,1,20.9,266,49.8,117.104300,31.822967,20231221034050,0460,0001,DF5C,05A3F70B,01,1,19.0,20231221034051,005D$'
13
- var fri = '+RESP:GTFRI,8020060402,864696060004173,GV57CG,11985,10,1,1,0.0,0,118.5,117.129306,31.839197,20230808033438,0460,0001,DF5C,05FE6667,03,15,0,123.5,00123:04:44,12496,,,100,210000,,,,20230808033438,01B3$'
13
+ var fri = '+RESP:GTFRI,8020040703,864696060004173,GV58LAU,11985,10,1,1,0.0,0,118.5,117.129306,31.839197,20230808033438,0460,0001,DF5C,05FE6667,03,15,0,123.5,00123:04:44,,,,100,210000,,,,20230808033438,01B3$'
14
14
  var eri = '+RESP:GTERI,8020060402,867488060672911,GV57CG,00008000,11975,10,1,1,0.0,0,119.9,117.129559,31.839319,20231207025940,0460,0000,550B,085BE2AA,03,6,0,11.5,,0,,,100,210300,,4,8,20231207025940,5686$'
15
15
  var esp = '+RESP:GTEPS,8020060402,135790246811220,GV57CG,13500,00,1,1,4.3,92,70.0,121.354335,31.222073,20090214013254,0460,0000,18d8,6141,01,15,2000.0,20090214093254,11F0$'
16
16
  var ais = '+RESP:GTAIS,8020060402,135790246811220,GV57CG,1980,11,1,1,4.3,92,70.0,121.354335,31.222073,20090214013254,0460,0000,18d8,6141,01,15,2000.0,20090214093254,11F0$'
@@ -30,34 +30,42 @@ var scs = '+RESP:GTSCS,8020060402,865585040006649,GV57CG,2,-0.06,0.88,-0.48,-0.9
30
30
  var pna = '+RESP:GTPNA,8020060402,135790246811220,GV57CG,20230524052727,11F0$'
31
31
  var pfa = '+RESP:GTPFA,8020060402,135790246811220,GV57CG,20230524052727,11F0$'
32
32
  var pdp = '+RESP:GTPDP,8020060402,135790246811220,GV57CG,20230524052727,11F0$'
33
- var mpn = '+RESP:GTMPN,8020060402,867488060596284,GV57CG,0,0.0,0,102.0,117.129386,31.839097,20230524052848,0460,0001,DF5C,05FE6667,01,15,20230524052849,02C8$'
33
+ var mpn = '+RESP:GTMPN,8020040703,135790246811220,GV58LAU,0,4.3,92,70.0,121.354335,31.222073,20230214013254,0460,0000,18d8,6141,05,1,220100,20230214093254,11F0$'
34
34
  var mpf = '+RESP:GTMPF,8020060402,867488060596284,GV57CG,1,0.8,0,75.4,117.129447,31.839062,20230524052829,0460,0001,DF5C,05FE6667,01,15,20230524052831,02BF$'
35
35
  var btc = '+RESP:GTBTC,8020060402,867488060596284,GV57CG,1,0.0,0,48.8,117.129191,31.839340,20230524051506,0460,0001,DF5C,05FE6667,01,13,20230524051507,0277$'
36
36
  var drm = '+RESP:GTDRM,8020060402,867488060596284,GV57CG,1,0.2,0,98.3,117.129404,31.839095,20230524052844,0460,0001,DF5C,05FE6667,01,15,20230524052846,02C3$'
37
37
  var jdr = '+RESP:GTJDR,8020060402,867488060596250,GV57CG,2,0,0.0,0,29.7,117.129806,31.838006,20230412075358,0460,0000,691D,6141,01,7,20230412075457,0214$'
38
- var jds = '+RESP:GTJDS,8020060402,867488060596250,GV57CG,1,2,3,0.0,0,101.2,117.130039,31.838552,20230412060702,0460,0001,DF5C,05FE6667,01,1,20230412060703,016E$'
38
+ var jds = '+RESP:GTJDS,8020040703,135790246811220,GV58LAU,1,3,0,4.3,92,70.0,121.354335,31.222073,20230214013254,0460,0000,18d8,6141,0D,1,220100,0.00,1.00,2.00,20230214093254,11F0$'
39
39
  var stc = '+RESP:GTSTC,8020060402,867488060596284,GV57CG,,3,0.0,0,112.7,117.129268,31.838801,20230524023737,0460,0001,DF5C,027A4F1F,01,9,20230523190737,0131$'
40
40
  var bpl = '+RESP:GTBPL,8020060402,867488060596722,GV57CG,3.63,4,2.3,0,54.8,117.128785,31.839313,20230522052652,0460,0001,DF5C,027A4F1F,01,1,20230522052654,413B$'
41
- var stt = '+RESP:GTSTT,8020060402,867488060596284,GV57CG,21,1,0.0,0,94.0,117.129389,31.839152,20230524052926,0460,0001,DF5C,05FE6667,01,15,20230524052928,02CA$'
42
- var ign = '+RESP:GTIGN,8020060402,867488060596284,GV57CG,0,0,0.0,0,85.4,117.129377,31.839155,20230524053546,0460,0001,DF5C,05FE6667,01,15,00012:25:35,0.2,20230524053548,02DF$'
41
+ var stt = '+RESP:GTSTT,8020040703,135790246811220,GV58LAU,16,0,4.3,92,70.0,121.354335,31.222073,20230214013254,0460,0000,18d8,6141,05,1,220100,20230214093254,11F0$'
42
+ var ign = '+RESP:GTIGN,8020040703,135790246811220,GV58LAU,1200,0,4.3,92,70.0,121.354335,31.222073,20230214013254,0460,0000,18d8,6141,05,1,220100,12345:12:34,2000.0,20230214093254,11F0$'
43
43
  var vgn = '+RESP:GTVGN,8020060402,867488060595385,GV57CG,00,5,14653,4,2.1,0,38.1,117.129642,31.838044,20230524051923,0460,0000,550B,B7B1,01,3,12345:12:34,0.0,20230524051924,002E$'
44
44
  var igf = '+RESP:GTIGF,8020060402,867488060596284,GV57CG,418,1,0.0,0,85.4,117.129377,31.839155,20230524053545,0460,0001,DF5C,05FE6667,01,15,00012:25:35,0.2,20230524053547,02DA$'
45
45
  var vgf = '+RESP:GTVGF,8020060402,867488060595385,GV57CG,00,5,10127,3,1.1,0,75.8,117.129668,31.838718,20230524052215,0460,0000,550B,B7B1,01,11,12345:12:34,0.0,20230524052216,0034$'
46
- var idf = '+RESP:GTIDF,8020060402,867488060596284,GV57CG,11,81,1,0.0,0,86.2,117.129261,31.839339,20230524054122,0460,0001,DF5C,05FE6667,01,15,0.0,20230524054123,0309$'
47
- var gss = '+RESP:GTGSS,8020060402,867488060596284,GV57CG,1,9,11,,3,0.0,0,89.2,117.129248,31.838906,20230524045125,0460,0001,DF5C,05FE6667,01,9,20230524045126,0240$'
46
+ var idf = '+RESP:GTIDF,8020040703,135790246811220,GV58LAU,22,300,0,4.3,92,70.0,121.354335,31.222073,20230214013254,0460,0000,18d8,6141,05,1,220100,2000.0,20230214093254,11F0$'
47
+ var gss = '+RESP:GTGSS,8020040703,135790246811220,GV58LAU,1,9,11,,0,4.3,92,70.0,121.354335,31.222073,20230214013254,0460,0000,18d8,6141,05,1,220100,20230214093254,11F0$'
48
48
  var str = '+RESP:GTSTR,8020060402,867488060596284,GV57CG,,,1,1.8,0,81.2,117.129328,31.839300,20230524053825,0460,0001,DF5C,05FE6667,01,15,0.0,20230524053827,02F9$'
49
49
  var stp = '+RESP:GTSTP,8020060402,867488060596284,GV57CG,,,1,0.0,0,90.4,117.129304,31.839352,20230524053856,0460,0001,DF5C,05FE6667,01,15,0.0,20230524053856,02FB$'
50
50
  var lsp = '+RESP:GTLSP,8020060402,867488060596284,GV57CG,,,1,0.0,0,86.2,117.129261,31.839339,20230524054055,0460,0001,DF5C,05FE6667,01,15,0.0,20230524054056,0306$'
51
- var idn = '+RESP:GTIDN,8020060402,867488060596284,GV57CG,,,1,0.0,0,86.2,117.129261,31.839339,20230524054001,0460,0001,DF5C,05FE6667,01,15,0.0,20230524054002,0300$'
52
- var dos = '+RESP:GTDOS,8020060402,867488060596284,GV57CG,1,0,0,3.6,0,57.6,117.129139,31.839739,20230524035840,0460,0001,DF5C,05FE6667,01,9,20230524035841,01FD$'
51
+ var idn = '+RESP:GTIDN,8020040703,865084030960726,GV58LAU,,,0,0.0,0,66.6,117.129012,31.839195,20190411035336,0460,0000,550B,B969,05,1,220100,0.0,20190411115338,03F3$'
52
+ var dos = '+RESP:GTDOS,8020040703,867488060673364,GV58LAU,1,2,1,0.0,0,99.8,117.129228,31.839323,20230616080921,0460,0001,DF5C,05FE6667,05,1,220100,20230616080922,40CE$'
53
53
  var rmd = '+RESP:GTRMD,8020060402,867488060596284,GV57CG,3,0,2.0,0,180.6,117.129144,31.838861,20230524032220,0460,0001,DF5C,027A4F1F,01,7,20230524032224,017D$'
54
54
  var pnr = '+RESP:GTPNR,8020060402,863835020303983,GV57CG,0,,,,,20150407094557,0633$'
55
55
  var pfr = '+RESP:GTPFR,8020060402,863835020303983,GV57CG,0,,,,,20150407094557,0633$'
56
56
  var cra = '+RESP:GTCRA,8020060402,867488060596284,GV57CG,06,1,1.0,0,222.0,117.129815,31.839434,20230523062909,0460,0001,DF5C,027A4F1F,01,3,20230523160010,0B67$'
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
+ var dat = '+RESP:GTDAT,8020040703,135790246811220,GV58LAU,3,,,1645026150,0,0.5,0,29.4,121.390923,31.164295,20111222022935,0460,0000,1806,2142,01,1,,,,,20111222022938,001A$'
60
+ var bcs = '+RESP:GTBCS,8020040703,867995030096625,GV58LAU,,0,0.0,0,58.4,117.129522,31.839343,20190426054910,0460,0000,550B,B969,05,1,220100,0D03,BT-1,78054100CE22,0,1,6654B1767842,,,,,20190426054911,0B44$'
61
+ var can = '+RESP:GTCAN,8020040703,866314061482707,,10,0,E03FFFFF,,,H0,,,,,,,,,,,,,,,,,,,,FFFFFF,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0.0,0,1501.0,-99.192304,18.932028,20241122171647,0334,0020,0232,029C3E18,01,12,20241122171648,06CD$'
62
+ var ida = '+RESP:GTIDA,8020040703,862170013895931,GV58LAU,,D2C4FBC5,1,1,1,0.8,0,22.2,117.198630,31.845229,20120802121626,0460,0000,5663,2BB9,01,15,0.0,,,,,20120802121627,008E$'
63
+ var baa = '+RESP:GTBAA,8020040703,867995030131778,GV58LAU,00,6,0,00,001F,TD_100109,FD6D3DE6D704,1,350,17,0,0,0,0,20151210084039,0.00,00,0,0,0,2,0,FFFE0005FF04,5A5A00,00,000A,000B,000A,000A,000B,0,105.6,0,54.8,117.129384,31.839299,20191119013822,0460,0000,550B,B1E2,05,1,220100,20191119013823,03F8$'
64
+ var baaa = '+RESP:GTBAA,8020040703,866314061808901,,00,13,0,15,4007,,FFFFFFFFFFFF,0,1,0,0,,,,,,,0730,0003,EA6F,00070B20,0D,0,220100,0.00,0.00,0.00,20241124061933,4BAF$'
59
65
  var caneri = '+RESP:GTERI,6E0802,868589060350066,,00000104,28696,10,1,1,0.0,344,17.6,-71.604231,-33.043113,20241001170305,0730,0001,13F0,004E2212,01,6 ,10496.6,0000273:06:37,,,,98,210500,0,1,203FFFFF,,2,H4168131,5859.88,513,0,71,H2.4,P92.00,,,386.89,308.11,78.78,173.25,,FFFF,0000,,00,0.00,0.00,FFFFFF,62,,,,,,,,226631,181383,,386.89,79.35,,10178,,,,,,0000,0,0,,1,00,13,0,00000000,4007,,78054133C69C,1,0,20241001170312,26B5$'
60
66
  var eribad = "+RESP:GTERI,6E0802,868589060669374,,00000002,28594,10,1,1,18.9,210,542.2,-70.693347,-33.537067,20241009121749,0730,0001,3341,008AF201,01,12,6.9,0000004:57:46,,,,100,220100,2,1,28FF05762863EA12,1,00B1,20241009121755,09BE$"
67
+ var test = "+RESP:GTSOS,8020040703,866314061808901,,,10,1,0,,,,,,,0730,0003,EA6F,00070B0C,09,6,0.00,2.00,0.00,4.9,20241121064349,080F$"
68
+
61
69
 
62
70
 
63
71
  var data = {
@@ -66,7 +74,7 @@ var data = {
66
74
  "instruction": "1_on",
67
75
  "action": "Cortar Corriente",
68
76
  "device": "queclink",
69
- "password": "gv300w",
77
+ "password": "gv58lau",
70
78
  "device_serie": "GV",
71
79
  "previousOutput": {
72
80
  "1": false,
@@ -90,73 +98,72 @@ var data = {
90
98
  }
91
99
 
92
100
  // console.log(queclink.parseCommand(data))
93
- const raw = new Buffer(caneri)
94
- // console.log(queclink.parse(raw))
95
- // queclink.parse(raw)
101
+ const raw = new Buffer(baaa)
102
+ console.log(JSON.stringify(queclink.parse(raw), null, 2))
103
+ queclink.parse(raw)
96
104
 
97
- data = queclink.parse(raw)
98
- // console.log(data)
99
- if (data.can) {
100
- const {
101
- comunicationOk,
102
- vin,
103
- ignitionKey,
104
- totalDistance,
105
- totalDistanceUnit,
106
- rpm,
107
- speed,
108
- engineCoolantTemp,
109
- fuelConsumption,
110
- fuelLevel,
111
- fuelLevelUnit,
112
- range,
113
- acceleratorPressure,
114
- engineHours,
115
- drivingTime,
116
- idleTime,
117
- idleFuelUsed,
118
- axleWeight,
119
- tachograph,
120
- indicators,
121
- lights,
122
- doors,
123
- overSpeedTime,
124
- overSpeedEngineTime
125
- } = data.can
126
105
 
127
- const canData = {
128
- raw: data.raw,
129
- imei: data.imei,
130
- datetime: data.datetime,
131
- point: data.point,
132
- comunicationOk,
133
- vin,
134
- ignitionKey,
135
- totalDistance,
136
- totalDistanceUnit,
137
- rpm,
138
- speed,
139
- engineCoolantTemp,
140
- fuelConsumption,
141
- fuelLevel,
142
- fuelLevelUnit,
143
- range,
144
- acceleratorPressure,
145
- engineHours,
146
- drivingTime,
147
- idleTime,
148
- idleFuelUsed,
149
- axleWeight,
150
- tachograph,
151
- indicators,
152
- lights,
153
- doors,
154
- overSpeedTime,
155
- overSpeedEngineTime,
156
- ...data.can.canExpanded
157
- }
106
+ // if (data.can) {
107
+ // const {
108
+ // comunicationOk,
109
+ // vin,
110
+ // ignitionKey,
111
+ // totalDistance,
112
+ // totalDistanceUnit,
113
+ // rpm,
114
+ // speed,
115
+ // engineCoolantTemp,
116
+ // fuelConsumption,
117
+ // fuelLevel,
118
+ // fuelLevelUnit,
119
+ // range,
120
+ // acceleratorPressure,
121
+ // engineHours,
122
+ // drivingTime,
123
+ // idleTime,
124
+ // idleFuelUsed,
125
+ // axleWeight,
126
+ // tachograph,
127
+ // indicators,
128
+ // lights,
129
+ // doors,
130
+ // overSpeedTime,
131
+ // overSpeedEngineTime
132
+ // } = data.can
133
+
134
+ // const canData = {
135
+ // raw: data.raw,
136
+ // imei: data.imei,
137
+ // datetime: data.datetime,
138
+ // point: data.point,
139
+ // comunicationOk,
140
+ // vin,
141
+ // ignitionKey,
142
+ // totalDistance,
143
+ // totalDistanceUnit,
144
+ // rpm,
145
+ // speed,
146
+ // engineCoolantTemp,
147
+ // fuelConsumption,
148
+ // fuelLevel,
149
+ // fuelLevelUnit,
150
+ // range,
151
+ // acceleratorPressure,
152
+ // engineHours,
153
+ // drivingTime,
154
+ // idleTime,
155
+ // idleFuelUsed,
156
+ // axleWeight,
157
+ // tachograph,
158
+ // indicators,
159
+ // lights,
160
+ // doors,
161
+ // overSpeedTime,
162
+ // overSpeedEngineTime,
163
+ // ...data.can.canExpanded
164
+ // }
158
165
 
159
- canData.canReportExpansionMask = canData.canReportExpansionMask.raw
160
- console.log(canData)
161
- delete data.can
162
- }
166
+ // canData.canReportExpansionMask = canData.canReportExpansionMask.raw
167
+ // console.log(canData)
168
+ // delete data.can
169
+ // }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "queclink-parser",
3
- "version": "1.9.12",
3
+ "version": "1.9.13",
4
4
  "description": "Parse raw data from Queclink devices",
5
5
  "main": "src",
6
6
  "scripts": {
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 index = 6 + 12 * number
36
- let satelliteInfo = false
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 = satelliteInfo ? 7 + 13 * i : 7 + 12 * i
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 index = 7 + 12 * number // position append mask
230
- let satelliteInfo = false
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:
@@ -672,7 +698,7 @@ const parse = raw => {
672
698
  if (number > 1) {
673
699
  let moreData = []
674
700
  for (let i = 1; i < number; i++) {
675
- let gnssIx = satelliteInfo ? 8 + 13 * i : 8 + 12 * i
701
+ let gnssIx = 8 + (12 + satelliteInfo + accuracyInfo) * i
676
702
  moreData.push({
677
703
  index: i,
678
704
  loc: {
@@ -723,6 +749,18 @@ const parse = raw => {
723
749
  satellites:
724
750
  satelliteInfo && parsedData[gnssIx + 12] !== ''
725
751
  ? parseInt(parsedData[gnssIx + 12], 10)
752
+ : null,
753
+ Hdop:
754
+ accuracyInfo && parsedData[gnssIx + 13] !== ''
755
+ ? parseFloat(parsedData[gnssIx + 13], 10)
756
+ : null,
757
+ Vdop:
758
+ accuracyInfo && parsedData[gnssIx + 14] !== ''
759
+ ? parseFloat(parsedData[gnssIx + 14], 10)
760
+ : null,
761
+ Ddop:
762
+ accuracyInfo && parsedData[gnssIx + 15] !== ''
763
+ ? parseFloat(parsedData[gnssIx + 15], 10)
726
764
  : null
727
765
  })
728
766
  }
@@ -815,14 +853,13 @@ const parse = raw => {
815
853
  ) {
816
854
  // Common Alarms
817
855
  let number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
818
- let index = 6 + 12 * number // position append mask
819
- let satelliteInfo = false
856
+ let posAppendMask = parsedData[18] ? utils
857
+ .nHexDigit(utils.hex2bin(parsedData[18]), 8) : null
820
858
 
821
859
  // If get satellites is configured
822
- if (utils.includeSatellites(parsedData[18])) {
823
- index += 1
824
- satelliteInfo = true
825
- }
860
+ let satelliteInfo = posAppendMask && posAppendMask[7] === '1' ? 1 : 0
861
+ let accuracyInfo = posAppendMask && posAppendMask[4] === '1' ? 3 : 0
862
+ let index = 6 + (12 + satelliteInfo + accuracyInfo) * number
826
863
 
827
864
  data = Object.assign(data, {
828
865
  alarm: utils.getAlarm(command[1], parsedData[5], 'gv310lau'),
@@ -852,8 +889,20 @@ const parse = raw => {
852
889
  lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
853
890
  cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
854
891
  satellites:
855
- satelliteInfo && parsedData[index] !== ''
856
- ? parseInt(parsedData[index])
892
+ satelliteInfo && parsedData[index - (satelliteInfo + accuracyInfo) + 1] !== ''
893
+ ? parseInt(parsedData[index - (satelliteInfo + accuracyInfo) + 1])
894
+ : null,
895
+ Hdop:
896
+ accuracyInfo && parsedData[index - accuracyInfo + 1] !== ''
897
+ ? parseFloat(parsedData[index - accuracyInfo + 1], 10)
898
+ : null,
899
+ Vdop:
900
+ accuracyInfo && parsedData[index - accuracyInfo + 2] !== ''
901
+ ? parseFloat(parsedData[index - accuracyInfo + 2], 10)
902
+ : null,
903
+ Ddop:
904
+ accuracyInfo && parsedData[index] !== ''
905
+ ? parseFloat(parsedData[index], 10)
857
906
  : null,
858
907
  odometer:
859
908
  parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null,
@@ -1531,7 +1580,7 @@ const parse = raw => {
1531
1580
  : null,
1532
1581
  odometer: null,
1533
1582
  hourmeter: null,
1534
- can: utils.getCanData(parsedData, 5),
1583
+ can: utils.getCanData(parsedData, 5)
1535
1584
  }
1536
1585
  )
1537
1586
  } else if (command[1] === 'GTDAT') {