queclink-parser 1.9.28 → 1.9.31

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,24 @@
1
+ #### 1.9.31 (2026-05-07)
2
+
3
+ ##### Chores
4
+
5
+ * **dev:** upgrade dev dependencies and fix vulnerabilities ([625a66a5](https://github.com/jaayesta/queclink-parser/commit/625a66a5a84a076527e3f5c773d2711336e8ab36))
6
+
7
+ ##### New Features
8
+
9
+ * **node22:** se actualiza el proyecto a node 22 ([a07c3c42](https://github.com/jaayesta/queclink-parser/commit/a07c3c423aa8c671ddc4f521ded7d8c5bb785117))
10
+ * **pnr:** se agrega motivo del reinicio. ([225f5fce](https://github.com/jaayesta/queclink-parser/commit/225f5fce94f0618cf99ad7b3fe56a1bdfe18877e))
11
+
12
+ ##### Bug Fixes
13
+
14
+ * **readme:** se actualiza documentación ([08f5e033](https://github.com/jaayesta/queclink-parser/commit/08f5e033464827d7f6b6becad59077331e78a39a))
15
+
16
+ #### 1.9.29 (2026-03-20)
17
+
18
+ ##### Bug Fixes
19
+
20
+ * **config:** se corrige status en consulta de configuración. ([75e29aa1](https://github.com/jaayesta/queclink-parser/commit/75e29aa185dd6002b0d2fd5c6fb3e1dadbbe6dd8))
21
+
1
22
  #### 1.9.28 (2026-03-17)
2
23
 
3
24
  ##### Bug Fixes
package/README.md CHANGED
@@ -2,29 +2,35 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/queclink-parser.svg?style=flat-square)](https://www.npmjs.com/package/queclink-parser)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/queclink-parser.svg?style=flat-square)](https://www.npmjs.com/package/queclink-parser)
5
- [![dependency Status](https://img.shields.io/david/jaayesta/queclink-parser.svg?style=flat-square)](https://david-dm.org/jaayesta/queclink-parser#info=dependencies)
6
- [![devDependency Status](https://img.shields.io/david/dev/jaayesta/queclink-parser.svg?style=flat-square)](https://david-dm.org/jaayesta/queclink-parser#info=devDependencies)
5
+ [![Dependencies](https://img.shields.io/librariesio/release/npm/queclink-parser?style=flat-square)](https://libraries.io/npm/queclink-parser)
6
+ [![Known Vulnerabilities](https://snyk.io/test/npm/queclink-parser/badge.svg)](https://snyk.io/test/npm/queclink-parser)
7
7
 
8
- > Parses raw data from Queclink devices (TCP). Devices supported: GV55, GV55W, GV200, GV300, GV75W, GV300W, GV500, GV500MAP, GV600W, GV800W, GMT100, GL50, GL50B, GL300, GL300W, GV50P
8
+ > Parses raw data from Queclink devices (TCP).
9
+
10
+ ## Supported Devices
11
+ GV55, GV55W, GV200, GV300, GV75W, GV300W, GV500, GV500MAP, GV600W, GV800W, GMT100, GL50, GL50B, GL300, GL300W, GV50P, GV310LAU, GV350CEU, GV58LAU, GV57CG, GL533CG.
12
+
13
+ ## Requirements
14
+ - **Node.js**: >= 22
9
15
 
10
16
  ## Installation
11
17
 
12
18
  ```bash
13
- npm i -S queclink-parser
19
+ npm install queclink-parser
14
20
  ```
15
21
 
16
- ## Use
17
-
18
- [Try on Tonic](https://tonicdev.com/npm/queclink-parser)
19
- ```js
22
+ ## Usage
20
23
 
24
+ ```javascript
21
25
  const queclink = require('queclink-parser');
22
26
 
23
- const raw = new Buffer('+RESP:GTFRI,350302,867844003012625,,12372,10,1,0,0.0,0,820.8,-70.514872,-33.361021,20160811154617,0730,0002,7410,C789,00,0.0,00000:15:30,2788,705,164,0D,00,,,20160811154651,061D$');
27
+ const raw = Buffer.from('+RESP:GTFRI,350302,867844003012625,,12372,10,1,0,0.0,0,820.8,-70.514872,-33.361021,20160811154617,0730,0002,7410,C789,00,0.0,00000:15:30,2788,705,164,0D,00,,,20160811154651,061D$');
24
28
  const data = queclink.parse(raw);
25
29
 
30
+ console.log(data);
26
31
  /*
27
- { raw: '+RESP:GTFRI,350302,867844003012625,,12372,10,1,0,0.0,0,820.8,-70.514872,-33.361021,20160811154617,0730,0002,7410,C789,00,0.0,00000:15:30,2788,705,164,0D,00,,,20160811154651,061D$',
32
+ {
33
+ raw: '+RESP:GTFRI,350302,867844003012625,,12372,10,1,0,0.0,0,820.8,-70.514872,-33.361021,20160811154617,0730,0002,7410,C789,00,0.0,00000:15:30,2788,705,164,0D,00,,,20160811154651,061D$',
28
34
  manufacturer: 'queclink',
29
35
  device: 'Queclink-GV200',
30
36
  type: 'data',
@@ -39,21 +45,23 @@ const data = queclink.parse(raw);
39
45
  speed: 0,
40
46
  gpsStatus: true,
41
47
  hdop: 0,
42
- status:
43
- { raw: '0D00',
44
- sos: false,
45
- input: { '1': true, '2': false, '3': true, '4': true },
46
- output: { '1': false, '2': false, '3': false, '4': false },
47
- charge: true },
48
+ status: {
49
+ raw: '0D00',
50
+ sos: false,
51
+ input: { '1': true, '2': false, '3': true, '4': true },
52
+ output: { '1': false, '2': false, '3': false, '4': false },
53
+ charge: true
54
+ },
48
55
  azimuth: 0,
49
56
  altitude: 820.8,
50
57
  datetime: 2016-08-11T15:46:17.000Z,
51
- voltage:
52
- { battery: null,
53
- inputCharge: 12.372,
54
- ada: 2.788,
55
- adb: 0.705,
56
- adc: 0.164 },
58
+ voltage: {
59
+ battery: null,
60
+ inputCharge: 12.372,
61
+ ada: 2.788,
62
+ adb: 0.705,
63
+ adc: 0.164
64
+ },
57
65
  mcc: 730,
58
66
  mnc: 2,
59
67
  lac: 29712,
@@ -62,7 +70,6 @@ const data = queclink.parse(raw);
62
70
  hourmeter: 0.25833333333333336
63
71
  }
64
72
  */
65
-
66
73
  ```
67
74
 
68
75
  ## License
package/package.json CHANGED
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "name": "queclink-parser",
3
- "version": "1.9.28",
3
+ "version": "1.9.31",
4
4
  "description": "Parse raw data from Queclink devices",
5
5
  "main": "src",
6
6
  "scripts": {
7
7
  "lint": "eslint . --fix",
8
- "format": "prettier-standard 'src/**/*.js' 'test/**/*.js'",
9
- "precommit": "lint-staged",
8
+ "format": "prettier --write 'src/**/*.js' 'test/**/*.js'",
9
+ "audit:critical": "npm audit --audit-level=critical",
10
10
  "pretest": "npm run lint -s && npm run format -s",
11
- "test": "istanbul cover _mocha",
11
+ "test": "nyc mocha",
12
12
  "release:major": "changelog -M && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version major && git push origin && git push origin --tags && npm publish",
13
13
  "release:minor": "changelog -m && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version minor && git push origin && git push origin --tags && npm publish",
14
- "release:patch": "changelog -p && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version patch && git push origin && git push origin --tags && npm publish"
14
+ "release:patch": "changelog -p && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version patch && git push origin && git push origin --tags && npm publish",
15
+ "prepare": "husky"
15
16
  },
16
17
  "engines": {
17
- "node": ">=8"
18
+ "node": ">=22"
18
19
  },
19
20
  "repository": {
20
21
  "type": "git",
@@ -40,29 +41,34 @@
40
41
  "url": "https://github.com/jaayesta/queclink-parser/issues"
41
42
  },
42
43
  "homepage": "https://github.com/jaayesta/queclink-parser#readme",
43
- "dependencies": {},
44
+ "overrides": {
45
+ "diff": "^8.0.3",
46
+ "serialize-javascript": "^7.0.5"
47
+ },
44
48
  "devDependencies": {
45
- "chai": "4.1.2",
46
- "eslint": "4.14.0",
47
- "eslint-config-standard": "11.0.0-beta.0",
48
- "eslint-plugin-import": "2.8.0",
49
- "eslint-plugin-node": "5.2.1",
50
- "eslint-plugin-promise": "3.6.0",
51
- "eslint-plugin-standard": "3.0.1",
52
- "generate-changelog": "1.7.0",
53
- "husky": "0.14.3",
54
- "istanbul": "0.4.5",
55
- "lint-staged": "6.0.0",
56
- "mocha": "4.1.0",
57
- "prettier-standard": "8.0.0"
49
+ "chai": "^4.5.0",
50
+ "eslint": "^8.57.1",
51
+ "eslint-config-prettier": "^10.0.1",
52
+ "eslint-config-standard": "^17.1.0",
53
+ "eslint-plugin-import": "^2.32.0",
54
+ "eslint-plugin-n": "^16.6.2",
55
+ "eslint-plugin-promise": "^6.6.0",
56
+ "generate-changelog": "^1.8.0",
57
+ "husky": "^9.1.7",
58
+ "lint-staged": "^15.4.3",
59
+ "mocha": "^11.1.0",
60
+ "nyc": "^17.1.0",
61
+ "prettier": "^3.5.0"
58
62
  },
59
63
  "eslintConfig": {
60
- "extends": "standard",
64
+ "extends": [
65
+ "standard",
66
+ "prettier"
67
+ ],
61
68
  "rules": {
62
69
  "no-console": [
63
70
  "error"
64
- ],
65
- "standard/computed-property-even-spacing": "off"
71
+ ]
66
72
  }
67
73
  },
68
74
  "eslintIgnore": [
@@ -70,18 +76,14 @@
70
76
  "example.js"
71
77
  ],
72
78
  "lint-staged": {
73
- "linters": {
74
- "src/**/*.js": [
75
- "eslint --fix",
76
- "prettier-standard",
77
- "git add"
78
- ],
79
- "test/**/*.js": [
80
- "eslint --fix",
81
- "prettier-standard",
82
- "git add"
83
- ]
84
- }
79
+ "src/**/*.js": [
80
+ "eslint --fix",
81
+ "prettier --write"
82
+ ],
83
+ "test/**/*.js": [
84
+ "eslint --fix",
85
+ "prettier --write"
86
+ ]
85
87
  },
86
88
  "tonicExampleFilename": "example.js",
87
89
  "renovate": {
package/src/gl300.js CHANGED
@@ -23,7 +23,7 @@ const parse = raw => {
23
23
  imei: parsedData[2],
24
24
  protocolVersion: utils.getProtocolVersion(parsedData[1]),
25
25
  temperature: null,
26
- history: history,
26
+ history,
27
27
  sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
28
28
  serialId: parseInt(parsedData[parsedData.length - 1], 16),
29
29
  hourmeter: null
@@ -104,12 +104,12 @@ const parse = raw => {
104
104
  raw: parsedData[18] + parsedData[19],
105
105
  sos: false,
106
106
  input: {
107
- '1': utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[1] === '1',
108
- '2': utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[0] === '1'
107
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[1] === '1',
108
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[0] === '1'
109
109
  },
110
110
  output: {
111
- '1': utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[1] === '1',
112
- '2': utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[0] === '1'
111
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[1] === '1',
112
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[0] === '1'
113
113
  },
114
114
  charge: parsedData[8] === '1'
115
115
  },
@@ -416,5 +416,5 @@ const parse = raw => {
416
416
  }
417
417
 
418
418
  module.exports = {
419
- parse: parse
419
+ parse
420
420
  }
package/src/gl50.js CHANGED
@@ -23,7 +23,7 @@ const parse = raw => {
23
23
  imei: parsedData[2],
24
24
  protocolVersion: utils.getProtocolVersion(parsedData[1]),
25
25
  temperature: null,
26
- history: history,
26
+ history,
27
27
  sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
28
28
  serialId: parseInt(parsedData[parsedData.length - 1], 16)
29
29
  }
@@ -244,5 +244,5 @@ const parse = raw => {
244
244
  }
245
245
 
246
246
  module.exports = {
247
- parse: parse
247
+ parse
248
248
  }
package/src/gl533cg.js CHANGED
@@ -53,12 +53,12 @@ const parse = raw => {
53
53
  const reservedLen = buf.readUInt8(offset)
54
54
  offset += 1 + reservedLen
55
55
 
56
- let data = {
56
+ const data = {
57
57
  raw: typeof raw === 'string' ? raw : raw.toString('hex').toUpperCase(),
58
58
  manufacturer: 'queclink',
59
59
  device: 'Queclink-GL533CG',
60
60
  type: 'data',
61
- imei: imei,
61
+ imei,
62
62
  protocolVersion: utils.getProtocolVersion(
63
63
  `${deviceTypeStr}${protocolVersionStr}`
64
64
  ),
@@ -188,7 +188,9 @@ const parse = raw => {
188
188
  data.connectionMode =
189
189
  mode === 0x00
190
190
  ? 'Power saving'
191
- : mode === 0x01 ? 'Continuous' : 'Unknown'
191
+ : mode === 0x01
192
+ ? 'Continuous'
193
+ : 'Unknown'
192
194
  } else if (dataId === 0x0a) {
193
195
  // Internal Battery Percentage
194
196
  data.voltage = data.voltage || {}
@@ -202,7 +204,9 @@ const parse = raw => {
202
204
  ? 'Normal'
203
205
  : rfState === 1
204
206
  ? 'Module abnormal'
205
- : rfState === 2 ? 'Antenna abnormal' : 'Unknown'
207
+ : rfState === 2
208
+ ? 'Antenna abnormal'
209
+ : 'Unknown'
206
210
  } else if (dataId === 0x13) {
207
211
  // Triggered Time
208
212
  const triggeredTime = dataContent.readUInt32BE(0)
@@ -217,7 +221,9 @@ const parse = raw => {
217
221
  data.status.motion =
218
222
  motion === 0x00
219
223
  ? 'Motionless'
220
- : motion === 0x01 ? 'Moving' : 'Unknown'
224
+ : motion === 0x01
225
+ ? 'Moving'
226
+ : 'Unknown'
221
227
  data.alarm = utils.getAlarm('GSENSOR', parseInt(motion).toString(2))
222
228
  // } else if (dataId === 0x22) { // Real-time Customization
223
229
  // data.alarm = utils.getAlarm('GTINFO', null)
@@ -259,7 +265,11 @@ const parse = raw => {
259
265
  data.fixState =
260
266
  fixState === 0
261
267
  ? 'Off'
262
- : fixState === 1 ? 'No fix' : fixState === 2 ? 'Fix' : 'Unknown'
268
+ : fixState === 1
269
+ ? 'No fix'
270
+ : fixState === 2
271
+ ? 'Fix'
272
+ : 'Unknown'
263
273
  data.fixMode = fixMode === 0 ? '2D' : fixMode === 1 ? '3D' : 'Unknown'
264
274
  } else if (dataId === 0x52) {
265
275
  // 82 Full Location
@@ -311,7 +321,11 @@ const parse = raw => {
311
321
  data.fixState =
312
322
  fixState === 0
313
323
  ? 'Off'
314
- : fixState === 1 ? 'No fix' : fixState === 2 ? 'Fix' : 'Unknown'
324
+ : fixState === 1
325
+ ? 'No fix'
326
+ : fixState === 2
327
+ ? 'Fix'
328
+ : 'Unknown'
315
329
  data.fixMode = fixMode === 0 ? '2D' : fixMode === 1 ? '3D' : 'Unknown'
316
330
  data.satellites = satellites
317
331
  } else if (dataId === 0x55) {
@@ -442,7 +456,9 @@ const parse = raw => {
442
456
  const fieldName =
443
457
  dataId === 0x65
444
458
  ? 'upgradeInfo'
445
- : dataId === 0x66 ? 'updateConfig' : 'getConfig'
459
+ : dataId === 0x66
460
+ ? 'updateConfig'
461
+ : 'getConfig'
446
462
  data[fieldName] = {
447
463
  status: status.code,
448
464
  reason: status.subcode,
@@ -520,5 +536,5 @@ const parse = raw => {
520
536
  }
521
537
 
522
538
  module.exports = {
523
- parse: parse
539
+ parse
524
540
  }
package/src/gmt100.js CHANGED
@@ -23,7 +23,7 @@ const parse = raw => {
23
23
  imei: parsedData[2],
24
24
  protocolVersion: utils.getProtocolVersion(parsedData[1]),
25
25
  temperature: null,
26
- history: history,
26
+ history,
27
27
  sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
28
28
  serialId: parseInt(parsedData[parsedData.length - 1], 16),
29
29
  hourmeter: null
@@ -48,12 +48,12 @@ const parse = raw => {
48
48
  raw: parsedData[24] + parsedData[25],
49
49
  sos: false,
50
50
  input: {
51
- '1': utils.nHexDigit(utils.hex2bin(parsedData[24]), 2)[1] === '1',
52
- '2': utils.nHexDigit(utils.hex2bin(parsedData[24]), 2)[0] === '1'
51
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[24]), 2)[1] === '1',
52
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[24]), 2)[0] === '1'
53
53
  },
54
54
  output: {
55
- '1': utils.nHexDigit(utils.hex2bin(parsedData[25]), 2)[1] === '1',
56
- '2': utils.nHexDigit(utils.hex2bin(parsedData[25]), 2)[0] === '1'
55
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[25]), 2)[1] === '1',
56
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[25]), 2)[0] === '1'
57
57
  },
58
58
  charge: parseFloat(parsedData[4]) > 5
59
59
  },
@@ -107,12 +107,12 @@ const parse = raw => {
107
107
  raw: parsedData[18] + parsedData[19],
108
108
  sos: false,
109
109
  input: {
110
- '1': utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[1] === '1',
111
- '2': utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[0] === '1'
110
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[1] === '1',
111
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[20]), 2)[0] === '1'
112
112
  },
113
113
  output: {
114
- '1': utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[1] === '1',
115
- '2': utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[0] === '1'
114
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[1] === '1',
115
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[21]), 2)[0] === '1'
116
116
  },
117
117
  charge: parsedData[8] === '1'
118
118
  },
@@ -548,5 +548,5 @@ const parse = raw => {
548
548
  }
549
549
 
550
550
  module.exports = {
551
- parse: parse
551
+ parse
552
552
  }
package/src/gv200.js CHANGED
@@ -23,7 +23,7 @@ const parse = raw => {
23
23
  imei: parsedData[2],
24
24
  protocolVersion: utils.getProtocolVersion(parsedData[1]),
25
25
  temperature: null,
26
- history: history,
26
+ history,
27
27
  sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
28
28
  serialId: parseInt(parsedData[parsedData.length - 1], 16)
29
29
  }
@@ -48,22 +48,16 @@ const parse = raw => {
48
48
  raw: parsedData[24] + parsedData[25],
49
49
  sos: false,
50
50
  input: {
51
- '4':
52
- utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[0] === '1',
53
- '3':
54
- utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[1] === '1',
55
- '2':
56
- utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[2] === '1',
57
- '1': utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[3] === '1'
51
+ 4: utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[0] === '1',
52
+ 3: utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[1] === '1',
53
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[2] === '1',
54
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[24][1]), 4)[3] === '1'
58
55
  },
59
56
  output: {
60
- '4':
61
- utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[0] === '1',
62
- '3':
63
- utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[1] === '1',
64
- '2':
65
- utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[2] === '1',
66
- '1': utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[3] === '1'
57
+ 4: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[0] === '1',
58
+ 3: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[1] === '1',
59
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[2] === '1',
60
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[3] === '1'
67
61
  },
68
62
  charge: parseFloat(parsedData[4]) > 5
69
63
  },
@@ -117,16 +111,16 @@ const parse = raw => {
117
111
  raw: parsedData[25] + parsedData[26],
118
112
  sos: false,
119
113
  input: {
120
- '4': utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[0] === '1',
121
- '3': utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[1] === '1',
122
- '2': utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[2] === '1',
123
- '1': utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[3] === '1'
114
+ 4: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[0] === '1',
115
+ 3: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[1] === '1',
116
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[2] === '1',
117
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[25][1]), 4)[3] === '1'
124
118
  },
125
119
  output: {
126
- '4': utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[0] === '1',
127
- '3': utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[1] === '1',
128
- '2': utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[2] === '1',
129
- '1': utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[3] === '1'
120
+ 4: utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[0] === '1',
121
+ 3: utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[1] === '1',
122
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[2] === '1',
123
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[26][1]), 4)[3] === '1'
130
124
  },
131
125
  charge: parseFloat(parsedData[5]) > 5
132
126
  },
@@ -171,16 +165,18 @@ const parse = raw => {
171
165
  const ac100DevicesConnected =
172
166
  AC100 && digitFuelSensor
173
167
  ? parseInt(parsedData[29], 10)
174
- : AC100 && !digitFuelSensor ? parseInt(parsedData[28], 10) : 0
168
+ : AC100 && !digitFuelSensor
169
+ ? parseInt(parsedData[28], 10)
170
+ : 0
175
171
 
176
172
  let externalData = {
177
173
  eriMask: {
178
174
  raw: parsedData[4],
179
- digitFuelSensor: digitFuelSensor,
180
- AC100: AC100,
181
- reserved: reserved,
182
- fuelLevelPercentage: fuelLevelPercentage,
183
- fuelVolume: fuelVolume
175
+ digitFuelSensor,
176
+ AC100,
177
+ reserved,
178
+ fuelLevelPercentage,
179
+ fuelVolume
184
180
  },
185
181
  uartDeviceType: utils.uartDeviceTypes[parsedData[27]]
186
182
  }
@@ -206,9 +202,9 @@ const parse = raw => {
206
202
  AC100Devices: null
207
203
  })
208
204
  } else if (!digitFuelSensor && AC100) {
209
- let ac100Devices = []
205
+ const ac100Devices = []
210
206
  let count = 29
211
- for (var i = 0; i < ac100DevicesConnected; i++) {
207
+ for (let i = 0; i < ac100DevicesConnected; i++) {
212
208
  ac100Devices.push({
213
209
  deviceNumber: parsedData[count],
214
210
  deviceType: parsedData[count + 1],
@@ -223,12 +219,14 @@ const parse = raw => {
223
219
  AC100Devices: ac100Devices
224
220
  })
225
221
  } else if (digitFuelSensor && AC100) {
226
- let ac100Devices = []
222
+ const ac100Devices = []
227
223
  let count =
228
224
  fuelVolume && fuelLevelPercentage
229
225
  ? 33
230
- : fuelVolume && !fuelLevelPercentage ? 32 : 31
231
- for (var j = 0; j < ac100DevicesConnected; j++) {
226
+ : fuelVolume && !fuelLevelPercentage
227
+ ? 32
228
+ : 31
229
+ for (let j = 0; j < ac100DevicesConnected; j++) {
232
230
  ac100Devices.push({
233
231
  deviceNumber: parsedData[count],
234
232
  deviceType: parsedData[count + 1],
@@ -259,9 +257,9 @@ const parse = raw => {
259
257
  } else if (parsedData[27] === '2') {
260
258
  // AC100 1 Wire Bus
261
259
  if (!digitFuelSensor && AC100) {
262
- let ac100Devices = []
260
+ const ac100Devices = []
263
261
  let count = 29
264
- for (var k = 0; k < ac100DevicesConnected; k++) {
262
+ for (let k = 0; k < ac100DevicesConnected; k++) {
265
263
  ac100Devices.push({
266
264
  deviceNumber: parsedData[count],
267
265
  deviceType: parsedData[count + 1],
@@ -286,9 +284,9 @@ const parse = raw => {
286
284
  AC100Devices: null
287
285
  })
288
286
  } else if (digitFuelSensor && AC100) {
289
- let ac100Devices = []
287
+ const ac100Devices = []
290
288
  let count = 29
291
- for (var l = 0; l < ac100DevicesConnected; l++) {
289
+ for (let l = 0; l < ac100DevicesConnected; l++) {
292
290
  ac100Devices.push({
293
291
  deviceNumber: parsedData[count],
294
292
  deviceType: parsedData[count + 1],
@@ -310,7 +308,7 @@ const parse = raw => {
310
308
  }
311
309
  }
312
310
  data = Object.assign(data, {
313
- externalData: externalData
311
+ externalData
314
312
  })
315
313
  } else if (command[1] === 'GTHBD') {
316
314
  // Heartbeat. It must response an ACK command
@@ -326,16 +324,16 @@ const parse = raw => {
326
324
  raw: parsedData[18] + parsedData[19],
327
325
  sos: false,
328
326
  input: {
329
- '4': utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[0] === '1',
330
- '3': utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[1] === '1',
331
- '2': utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[2] === '1',
332
- '1': utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[3] === '1'
327
+ 4: utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[0] === '1',
328
+ 3: utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[1] === '1',
329
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[2] === '1',
330
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[18][1]), 4)[3] === '1'
333
331
  },
334
332
  output: {
335
- '4': utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[0] === '1',
336
- '3': utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[1] === '1',
337
- '2': utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[2] === '1',
338
- '1': utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[3] === '1'
333
+ 4: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[0] === '1',
334
+ 3: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[1] === '1',
335
+ 2: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[2] === '1',
336
+ 1: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[3] === '1'
339
337
  },
340
338
  charge: parsedData[8] === '1'
341
339
  }
@@ -359,7 +357,7 @@ const parse = raw => {
359
357
  charging: parsedData[12] === '1'
360
358
  },
361
359
  externalGPSAntenna: parsedData[15] === '0',
362
- status: status,
360
+ status,
363
361
  voltage: {
364
362
  battery:
365
363
  parsedData[11] !== ''
@@ -427,7 +425,7 @@ const parse = raw => {
427
425
  // Low voltage for analog input
428
426
  const alarm = utils.getAlarm(command[1], parsedData[5])
429
427
  data = Object.assign(data, {
430
- alarm: alarm,
428
+ alarm,
431
429
  loc: {
432
430
  type: 'Point',
433
431
  coordinates: [parseFloat(parsedData[11]), parseFloat(parsedData[12])]
@@ -879,16 +877,16 @@ const parse = raw => {
879
877
  raw: parsedData[24] + parsedData[25],
880
878
  sos: utils.hex2bin(parsedData[24][1])[1] === '1',
881
879
  input: {
882
- '4': utils.hex2bin(parsedData[25][1])[3] === '1',
883
- '3': utils.hex2bin(parsedData[25][1])[2] === '1',
884
- '2': utils.hex2bin(parsedData[25][1])[1] === '1',
885
- '1': utils.hex2bin(parsedData[25][1])[0] === '1'
880
+ 4: utils.hex2bin(parsedData[25][1])[3] === '1',
881
+ 3: utils.hex2bin(parsedData[25][1])[2] === '1',
882
+ 2: utils.hex2bin(parsedData[25][1])[1] === '1',
883
+ 1: utils.hex2bin(parsedData[25][1])[0] === '1'
886
884
  },
887
885
  output: {
888
- '4': utils.hex2bin(parsedData[26][1])[3] === '1',
889
- '3': utils.hex2bin(parsedData[26][1])[2] === '1',
890
- '2': utils.hex2bin(parsedData[26][1])[1] === '1',
891
- '1': utils.hex2bin(parsedData[26][1])[0] === '1'
886
+ 4: utils.hex2bin(parsedData[26][1])[3] === '1',
887
+ 3: utils.hex2bin(parsedData[26][1])[2] === '1',
888
+ 2: utils.hex2bin(parsedData[26][1])[1] === '1',
889
+ 1: utils.hex2bin(parsedData[26][1])[0] === '1'
892
890
  },
893
891
  charge: parseFloat(parsedData[4]) > 5
894
892
  },
@@ -1220,5 +1218,5 @@ const parse = raw => {
1220
1218
  }
1221
1219
 
1222
1220
  module.exports = {
1223
- parse: parse
1221
+ parse
1224
1222
  }