queclink-parser 1.9.11 → 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,41 @@
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
+
21
+ #### 1.9.12 (2024-10-14)
22
+
23
+ ##### New Features
24
+
25
+ * **can:** added adBlueLevelUnit ([cfc663c8](https://github.com/jaayesta/queclink-parser/commit/cfc663c8339dadc6e36750019c7d881007942a45))
26
+
27
+ ##### Bug Fixes
28
+
29
+ * **gv58lau:** digital inputs ([bb78b299](https://github.com/jaayesta/queclink-parser/commit/bb78b29970fa016571d93fd9c1959c73804d294a))
30
+ * **canbus:** new can index consider ac100 or digitFuelSensor data ([b0e9d23e](https://github.com/jaayesta/queclink-parser/commit/b0e9d23e69e9ffacddf0b76cc3a4d04523598ebe))
31
+ * **can:**
32
+ * evaluation for parsedData ([3427d98f](https://github.com/jaayesta/queclink-parser/commit/3427d98f85d273a262dc076c4b36cb88e51c3b54))
33
+ * typo ([08408de4](https://github.com/jaayesta/queclink-parser/commit/08408de4d52d38f8cd280736ff7d821303c5e756))
34
+
35
+ ##### Tests
36
+
37
+ * **can:** test for database when can data exists ([424e28c6](https://github.com/jaayesta/queclink-parser/commit/424e28c63c39d6d3e6a4335d9f9b79c83d574b68))
38
+
1
39
  #### 1.9.11 (2024-10-09)
2
40
 
3
41
  ##### 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,7 +98,72 @@ var data = {
90
98
  }
91
99
 
92
100
  // console.log(queclink.parseCommand(data))
93
- const raw = new Buffer(eribad)
94
- console.log(queclink.parse(raw))
101
+ const raw = new Buffer(baaa)
102
+ console.log(JSON.stringify(queclink.parse(raw), null, 2))
95
103
  queclink.parse(raw)
96
104
 
105
+
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
+ // }
165
+
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.11",
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,8 +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
248
+ let satelliteInfo = utils.includeSatellites(parsedData[19])
249
+ let accuracyInfo = utils.includeGnnsAccuracy(parsedData[19]) ? 3 : 0
250
+ let index = 7 + (12 + satelliteInfo + accuracyInfo) * number
231
251
 
232
252
  // External Data
233
253
  const digitFuelSensor =
@@ -242,12 +262,6 @@ const parse = raw => {
242
262
  const bluetoothAccessory =
243
263
  utils.nHexDigit(utils.hex2bin(parsedData[4]), 11)[2] === '1'
244
264
 
245
- // If get satellites is configured
246
- if (utils.includeSatellites(parsedData[19])) {
247
- index = 7 + 13 * number
248
- satelliteInfo = true
249
- }
250
-
251
265
  data = Object.assign(data, {
252
266
  alarm: utils.getAlarm(command[1], null),
253
267
  loc: {
@@ -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:
@@ -369,27 +395,6 @@ const parse = raw => {
369
395
  AC100 && digitFuelSensor
370
396
  ? parseInt(parsedData[index + 10], 10)
371
397
  : AC100 && !digitFuelSensor ? parseInt(parsedData[index + 9], 10) : 0
372
-
373
- if (canData) {
374
- let canInfo = utils.getCanData(parsedData, index + 9)
375
- data = Object.assign(data, { can: canInfo })
376
- index = index + 49
377
-
378
- if (canInfo?.totalDistance) {
379
- data.gpsOdometer = data.odometer
380
- data.odometer = canInfo.totalDistance
381
- }
382
-
383
- if (canInfo?.engineHours) {
384
- data.gpsHourmeter = data.hourmeter
385
- data.hourmeter = canInfo.engineHours
386
- }
387
-
388
- if (canInfo?.speed) {
389
- data.gpsSpeed = data.speed
390
- data.speed = canInfo.speed
391
- }
392
- }
393
398
 
394
399
  let externalData = {
395
400
  eriMask: {
@@ -442,6 +447,7 @@ const parse = raw => {
442
447
  })
443
448
  count += 3
444
449
  }
450
+
445
451
  externalData = Object.assign(externalData, {
446
452
  fuelSensorData: null,
447
453
  AC100Devices: ac100Devices
@@ -536,6 +542,28 @@ const parse = raw => {
536
542
  }
537
543
  }
538
544
 
545
+ if (canData) {
546
+ let newIndex = digitFuelSensor && !AC100 ? index + 9 + 1 : !digitFuelSensor && AC100 ? index + 9 + 4 : digitFuelSensor && AC100 ? index + 9 + 5 : index + 9
547
+ let canInfo = utils.getCanData(parsedData, newIndex)
548
+ data = Object.assign(data, { can: canInfo })
549
+ index = index + 49
550
+
551
+ if (canInfo?.totalDistance) {
552
+ data.gpsOdometer = data.odometer
553
+ data.odometer = canInfo.totalDistance
554
+ }
555
+
556
+ if (canInfo?.engineHours) {
557
+ data.gpsHourmeter = data.hourmeter
558
+ data.hourmeter = canInfo.engineHours
559
+ }
560
+
561
+ if (canInfo?.speed) {
562
+ data.gpsSpeed = data.speed
563
+ data.speed = canInfo.speed
564
+ }
565
+ }
566
+
539
567
  // Bluetooth Accessories
540
568
  if (bluetoothAccessory) {
541
569
  let btDevices = []
@@ -670,7 +698,7 @@ const parse = raw => {
670
698
  if (number > 1) {
671
699
  let moreData = []
672
700
  for (let i = 1; i < number; i++) {
673
- let gnssIx = satelliteInfo ? 8 + 13 * i : 8 + 12 * i
701
+ let gnssIx = 8 + (12 + satelliteInfo + accuracyInfo) * i
674
702
  moreData.push({
675
703
  index: i,
676
704
  loc: {
@@ -721,6 +749,18 @@ const parse = raw => {
721
749
  satellites:
722
750
  satelliteInfo && parsedData[gnssIx + 12] !== ''
723
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)
724
764
  : null
725
765
  })
726
766
  }
@@ -813,14 +853,13 @@ const parse = raw => {
813
853
  ) {
814
854
  // Common Alarms
815
855
  let number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
816
- let index = 6 + 12 * number // position append mask
817
- let satelliteInfo = false
856
+ let posAppendMask = parsedData[18] ? utils
857
+ .nHexDigit(utils.hex2bin(parsedData[18]), 8) : null
818
858
 
819
859
  // If get satellites is configured
820
- if (utils.includeSatellites(parsedData[18])) {
821
- index += 1
822
- satelliteInfo = true
823
- }
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
824
863
 
825
864
  data = Object.assign(data, {
826
865
  alarm: utils.getAlarm(command[1], parsedData[5], 'gv310lau'),
@@ -850,8 +889,20 @@ const parse = raw => {
850
889
  lac: parsedData[16] !== '' ? parseInt(parsedData[16], 16) : null,
851
890
  cid: parsedData[17] !== '' ? parseInt(parsedData[17], 16) : null,
852
891
  satellites:
853
- satelliteInfo && parsedData[index] !== ''
854
- ? 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)
855
906
  : null,
856
907
  odometer:
857
908
  parsedData[index + 1] !== '' ? parseFloat(parsedData[index + 1]) : null,
@@ -1529,7 +1580,7 @@ const parse = raw => {
1529
1580
  : null,
1530
1581
  odometer: null,
1531
1582
  hourmeter: null,
1532
- can: utils.getCanData(parsedData, 5),
1583
+ can: utils.getCanData(parsedData, 5)
1533
1584
  }
1534
1585
  )
1535
1586
  } else if (command[1] === 'GTDAT') {