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 +38 -0
- package/example.js +89 -16
- package/package.json +1 -1
- package/src/gv310lau.js +102 -51
- package/src/gv58lau.js +822 -1053
- package/src/index.js +3 -1
- package/src/messages/es.json +1 -0
- package/src/utils.js +79 -66
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,
|
|
4
|
-
var dis = '+RESP:GTDIS,
|
|
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,
|
|
7
|
-
var sos = '+RESP:GTSOS,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
42
|
-
var ign = '+RESP:GTIGN,
|
|
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,
|
|
47
|
-
var gss = '+RESP:GTGSS,
|
|
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,
|
|
52
|
-
var dos = '+RESP:GTDOS,
|
|
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": "
|
|
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(
|
|
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
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
|
|
36
|
-
let
|
|
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 =
|
|
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
|
|
230
|
-
let
|
|
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 =
|
|
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
|
|
817
|
-
|
|
856
|
+
let posAppendMask = parsedData[18] ? utils
|
|
857
|
+
.nHexDigit(utils.hex2bin(parsedData[18]), 8) : null
|
|
818
858
|
|
|
819
859
|
// If get satellites is configured
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
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') {
|