queclink-parser 1.9.29 → 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 +15 -0
- package/README.md +30 -23
- package/package.json +37 -35
- package/src/gl300.js +6 -6
- package/src/gl50.js +2 -2
- package/src/gl533cg.js +25 -9
- package/src/gmt100.js +10 -10
- package/src/gv200.js +56 -58
- package/src/gv300.js +55 -51
- package/src/gv300w.js +77 -73
- package/src/gv310lau.js +215 -200
- package/src/gv350ceu.js +278 -263
- package/src/gv500.js +2 -2
- package/src/gv50p.js +10 -10
- package/src/gv55.js +10 -10
- package/src/gv57cg.js +142 -142
- package/src/gv58lau.js +504 -483
- package/src/gv600w.js +39 -39
- package/src/gv75w.js +71 -67
- package/src/gv800w.js +44 -44
- package/src/index.js +16 -16
- package/src/utils.js +725 -720
package/src/gv300.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
|
|
26
|
+
history,
|
|
27
27
|
sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
|
|
28
28
|
serialId: parseInt(parsedData[parsedData.length - 1], 16)
|
|
29
29
|
}
|
|
@@ -47,28 +47,28 @@ const parse = raw => {
|
|
|
47
47
|
raw: parsedData[24],
|
|
48
48
|
sos: false,
|
|
49
49
|
input: {
|
|
50
|
-
|
|
50
|
+
1:
|
|
51
51
|
utils.nHexDigit(
|
|
52
52
|
utils.hex2bin(
|
|
53
53
|
utils.nHexDigit(parsedData[24], 10).substring(6, 8)
|
|
54
54
|
),
|
|
55
55
|
4
|
|
56
56
|
)[3] === '1',
|
|
57
|
-
|
|
57
|
+
2:
|
|
58
58
|
utils.nHexDigit(
|
|
59
59
|
utils.hex2bin(
|
|
60
60
|
utils.nHexDigit(parsedData[24], 10).substring(6, 8)
|
|
61
61
|
),
|
|
62
62
|
4
|
|
63
63
|
)[2] === '1',
|
|
64
|
-
|
|
64
|
+
3:
|
|
65
65
|
utils.nHexDigit(
|
|
66
66
|
utils.hex2bin(
|
|
67
67
|
utils.nHexDigit(parsedData[24], 10).substring(6, 8)
|
|
68
68
|
),
|
|
69
69
|
4
|
|
70
70
|
)[1] === '1',
|
|
71
|
-
|
|
71
|
+
4:
|
|
72
72
|
utils.nHexDigit(
|
|
73
73
|
utils.hex2bin(
|
|
74
74
|
utils.nHexDigit(parsedData[24], 10).substring(6, 8)
|
|
@@ -77,21 +77,21 @@ const parse = raw => {
|
|
|
77
77
|
)[0] === '1'
|
|
78
78
|
},
|
|
79
79
|
output: {
|
|
80
|
-
|
|
80
|
+
1:
|
|
81
81
|
utils.nHexDigit(
|
|
82
82
|
utils.hex2bin(
|
|
83
83
|
utils.nHexDigit(parsedData[24], 10).substring(8, 10)
|
|
84
84
|
),
|
|
85
85
|
3
|
|
86
86
|
)[2] === '1',
|
|
87
|
-
|
|
87
|
+
2:
|
|
88
88
|
utils.nHexDigit(
|
|
89
89
|
utils.hex2bin(
|
|
90
90
|
utils.nHexDigit(parsedData[24], 10).substring(8, 10)
|
|
91
91
|
),
|
|
92
92
|
3
|
|
93
93
|
)[1] === '1',
|
|
94
|
-
|
|
94
|
+
3:
|
|
95
95
|
utils.nHexDigit(
|
|
96
96
|
utils.hex2bin(
|
|
97
97
|
utils.nHexDigit(parsedData[24], 10).substring(8, 10)
|
|
@@ -103,8 +103,8 @@ const parse = raw => {
|
|
|
103
103
|
state:
|
|
104
104
|
utils.nHexDigit(parsedData[24], 10).substring(4, 6) !== ''
|
|
105
105
|
? utils.states[ // eslint-disable-line
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
utils.nHexDigit(parsedData[24], 10).substring(4, 6)
|
|
107
|
+
]
|
|
108
108
|
: null
|
|
109
109
|
},
|
|
110
110
|
azimuth: parsedData[9] !== '' ? parseFloat(parsedData[9]) : null,
|
|
@@ -156,28 +156,28 @@ const parse = raw => {
|
|
|
156
156
|
raw: parsedData[25],
|
|
157
157
|
sos: false,
|
|
158
158
|
input: {
|
|
159
|
-
|
|
159
|
+
1:
|
|
160
160
|
utils.nHexDigit(
|
|
161
161
|
utils.hex2bin(
|
|
162
162
|
utils.nHexDigit(parsedData[25], 10).substring(6, 8)
|
|
163
163
|
),
|
|
164
164
|
4
|
|
165
165
|
)[3] === '1',
|
|
166
|
-
|
|
166
|
+
2:
|
|
167
167
|
utils.nHexDigit(
|
|
168
168
|
utils.hex2bin(
|
|
169
169
|
utils.nHexDigit(parsedData[25], 10).substring(6, 8)
|
|
170
170
|
),
|
|
171
171
|
4
|
|
172
172
|
)[2] === '1',
|
|
173
|
-
|
|
173
|
+
3:
|
|
174
174
|
utils.nHexDigit(
|
|
175
175
|
utils.hex2bin(
|
|
176
176
|
utils.nHexDigit(parsedData[25], 10).substring(6, 8)
|
|
177
177
|
),
|
|
178
178
|
4
|
|
179
179
|
)[1] === '1',
|
|
180
|
-
|
|
180
|
+
4:
|
|
181
181
|
utils.nHexDigit(
|
|
182
182
|
utils.hex2bin(
|
|
183
183
|
utils.nHexDigit(parsedData[25], 10).substring(6, 8)
|
|
@@ -186,21 +186,21 @@ const parse = raw => {
|
|
|
186
186
|
)[0] === '1'
|
|
187
187
|
},
|
|
188
188
|
output: {
|
|
189
|
-
|
|
189
|
+
1:
|
|
190
190
|
utils.nHexDigit(
|
|
191
191
|
utils.hex2bin(
|
|
192
192
|
utils.nHexDigit(parsedData[25], 10).substring(8, 10)
|
|
193
193
|
),
|
|
194
194
|
3
|
|
195
195
|
)[2] === '1',
|
|
196
|
-
|
|
196
|
+
2:
|
|
197
197
|
utils.nHexDigit(
|
|
198
198
|
utils.hex2bin(
|
|
199
199
|
utils.nHexDigit(parsedData[25], 10).substring(8, 10)
|
|
200
200
|
),
|
|
201
201
|
3
|
|
202
202
|
)[1] === '1',
|
|
203
|
-
|
|
203
|
+
3:
|
|
204
204
|
utils.nHexDigit(
|
|
205
205
|
utils.hex2bin(
|
|
206
206
|
utils.nHexDigit(parsedData[25], 10).substring(8, 10)
|
|
@@ -254,16 +254,18 @@ const parse = raw => {
|
|
|
254
254
|
const ac100DevicesConnected =
|
|
255
255
|
AC100 && digitFuelSensor
|
|
256
256
|
? parseInt(parsedData[29], 10)
|
|
257
|
-
: AC100 && !digitFuelSensor
|
|
257
|
+
: AC100 && !digitFuelSensor
|
|
258
|
+
? parseInt(parsedData[28], 10)
|
|
259
|
+
: 0
|
|
258
260
|
|
|
259
261
|
let externalData = {
|
|
260
262
|
eriMask: {
|
|
261
263
|
raw: parsedData[4],
|
|
262
|
-
digitFuelSensor
|
|
263
|
-
AC100
|
|
264
|
-
reserved
|
|
265
|
-
fuelLevelPercentage
|
|
266
|
-
fuelVolume
|
|
264
|
+
digitFuelSensor,
|
|
265
|
+
AC100,
|
|
266
|
+
reserved,
|
|
267
|
+
fuelLevelPercentage,
|
|
268
|
+
fuelVolume
|
|
267
269
|
},
|
|
268
270
|
uartDeviceType: utils.uartDeviceTypes[parsedData[26]]
|
|
269
271
|
}
|
|
@@ -289,9 +291,9 @@ const parse = raw => {
|
|
|
289
291
|
AC100Devices: null
|
|
290
292
|
})
|
|
291
293
|
} else if (!digitFuelSensor && AC100) {
|
|
292
|
-
|
|
294
|
+
const ac100Devices = []
|
|
293
295
|
let count = 29
|
|
294
|
-
for (
|
|
296
|
+
for (let i = 0; i < ac100DevicesConnected; i++) {
|
|
295
297
|
ac100Devices.push({
|
|
296
298
|
deviceNumber: parsedData[count],
|
|
297
299
|
deviceType: parsedData[count + 1],
|
|
@@ -306,12 +308,14 @@ const parse = raw => {
|
|
|
306
308
|
AC100Devices: ac100Devices
|
|
307
309
|
})
|
|
308
310
|
} else if (digitFuelSensor && AC100) {
|
|
309
|
-
|
|
311
|
+
const ac100Devices = []
|
|
310
312
|
let count =
|
|
311
313
|
fuelVolume && fuelLevelPercentage
|
|
312
314
|
? 33
|
|
313
|
-
: fuelVolume && !fuelLevelPercentage
|
|
314
|
-
|
|
315
|
+
: fuelVolume && !fuelLevelPercentage
|
|
316
|
+
? 32
|
|
317
|
+
: 31
|
|
318
|
+
for (let j = 0; j < ac100DevicesConnected; j++) {
|
|
315
319
|
ac100Devices.push({
|
|
316
320
|
deviceNumber: parsedData[count],
|
|
317
321
|
deviceType: parsedData[count + 1],
|
|
@@ -342,9 +346,9 @@ const parse = raw => {
|
|
|
342
346
|
} else if (parsedData[26] === '2') {
|
|
343
347
|
// AC100 1 Wire Bus
|
|
344
348
|
if (!digitFuelSensor && AC100) {
|
|
345
|
-
|
|
349
|
+
const ac100Devices = []
|
|
346
350
|
let count = 29
|
|
347
|
-
for (
|
|
351
|
+
for (let k = 0; k < ac100DevicesConnected; k++) {
|
|
348
352
|
ac100Devices.push({
|
|
349
353
|
deviceNumber: parsedData[count],
|
|
350
354
|
deviceType: parsedData[count + 1],
|
|
@@ -369,9 +373,9 @@ const parse = raw => {
|
|
|
369
373
|
AC100Devices: null
|
|
370
374
|
})
|
|
371
375
|
} else if (digitFuelSensor && AC100) {
|
|
372
|
-
|
|
376
|
+
const ac100Devices = []
|
|
373
377
|
let count = 29
|
|
374
|
-
for (
|
|
378
|
+
for (let l = 0; l < ac100DevicesConnected; l++) {
|
|
375
379
|
ac100Devices.push({
|
|
376
380
|
deviceNumber: parsedData[count],
|
|
377
381
|
deviceType: parsedData[count + 1],
|
|
@@ -393,7 +397,7 @@ const parse = raw => {
|
|
|
393
397
|
}
|
|
394
398
|
}
|
|
395
399
|
data = Object.assign(data, {
|
|
396
|
-
externalData
|
|
400
|
+
externalData
|
|
397
401
|
})
|
|
398
402
|
} else if (command[1] === 'GTHBD') {
|
|
399
403
|
// Heartbeat. It must response an ACK command
|
|
@@ -424,16 +428,16 @@ const parse = raw => {
|
|
|
424
428
|
raw: parsedData[18] + parsedData[19],
|
|
425
429
|
sos: false,
|
|
426
430
|
input: {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
+
4: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[0] === '1',
|
|
432
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[1] === '1',
|
|
433
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[2] === '1',
|
|
434
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[3] === '1'
|
|
431
435
|
},
|
|
432
436
|
output: {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
+
4: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[0] === '1',
|
|
438
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[1] === '1',
|
|
439
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[2] === '1',
|
|
440
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[3] === '1'
|
|
437
441
|
},
|
|
438
442
|
charge: parsedData[8] === '1'
|
|
439
443
|
},
|
|
@@ -500,8 +504,8 @@ const parse = raw => {
|
|
|
500
504
|
})
|
|
501
505
|
} else if (command[1] === 'GTTMP') {
|
|
502
506
|
// Temperature Alarm
|
|
503
|
-
|
|
504
|
-
|
|
507
|
+
const number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
|
|
508
|
+
const index = 8 + 12 * number // odometer
|
|
505
509
|
data = Object.assign(data, {
|
|
506
510
|
alarm: utils.getAlarm(command[1], parsedData[6], [
|
|
507
511
|
parsedData[index + 9],
|
|
@@ -522,27 +526,27 @@ const parse = raw => {
|
|
|
522
526
|
raw: `${parsedData[index + 4]}${parsedData[index + 5]}`,
|
|
523
527
|
sos: false,
|
|
524
528
|
input: {
|
|
525
|
-
|
|
529
|
+
4:
|
|
526
530
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[0] ===
|
|
527
531
|
'1',
|
|
528
|
-
|
|
532
|
+
3:
|
|
529
533
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[1] ===
|
|
530
534
|
'1',
|
|
531
|
-
|
|
535
|
+
2:
|
|
532
536
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[2] ===
|
|
533
537
|
'1',
|
|
534
|
-
|
|
538
|
+
1:
|
|
535
539
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[3] ===
|
|
536
540
|
'1'
|
|
537
541
|
},
|
|
538
542
|
output: {
|
|
539
|
-
|
|
543
|
+
3:
|
|
540
544
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 5][1]), 4)[1] ===
|
|
541
545
|
'1',
|
|
542
|
-
|
|
546
|
+
2:
|
|
543
547
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 5][1]), 4)[2] ===
|
|
544
548
|
'1',
|
|
545
|
-
|
|
549
|
+
1:
|
|
546
550
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 5][1]), 4)[3] ===
|
|
547
551
|
'1'
|
|
548
552
|
},
|
|
@@ -1014,5 +1018,5 @@ const parse = raw => {
|
|
|
1014
1018
|
}
|
|
1015
1019
|
|
|
1016
1020
|
module.exports = {
|
|
1017
|
-
parse
|
|
1021
|
+
parse
|
|
1018
1022
|
}
|