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/gv600w.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
|
}
|
|
@@ -48,59 +48,59 @@ const parse = raw => {
|
|
|
48
48
|
raw: parsedData[24],
|
|
49
49
|
sos: false,
|
|
50
50
|
input: {
|
|
51
|
-
|
|
51
|
+
1:
|
|
52
52
|
utils.nHexDigit(
|
|
53
53
|
utils.hex2bin(parsedData[24].substring(2, 4)),
|
|
54
54
|
6
|
|
55
55
|
)[5] === '1',
|
|
56
|
-
|
|
56
|
+
2:
|
|
57
57
|
utils.nHexDigit(
|
|
58
58
|
utils.hex2bin(parsedData[24].substring(2, 4)),
|
|
59
59
|
6
|
|
60
60
|
)[4] === '1',
|
|
61
|
-
|
|
61
|
+
3:
|
|
62
62
|
utils.nHexDigit(
|
|
63
63
|
utils.hex2bin(parsedData[24].substring(2, 4)),
|
|
64
64
|
6
|
|
65
65
|
)[3] === '1',
|
|
66
|
-
|
|
66
|
+
4:
|
|
67
67
|
utils.nHexDigit(
|
|
68
68
|
utils.hex2bin(parsedData[24].substring(2, 4)),
|
|
69
69
|
6
|
|
70
70
|
)[2] === '1',
|
|
71
|
-
|
|
71
|
+
5:
|
|
72
72
|
utils.nHexDigit(
|
|
73
73
|
utils.hex2bin(parsedData[24].substring(2, 4)),
|
|
74
74
|
6
|
|
75
75
|
)[1] === '1',
|
|
76
|
-
|
|
76
|
+
6:
|
|
77
77
|
utils.nHexDigit(
|
|
78
78
|
utils.hex2bin(parsedData[24].substring(2, 4)),
|
|
79
79
|
6
|
|
80
80
|
)[0] === '1'
|
|
81
81
|
},
|
|
82
82
|
output: {
|
|
83
|
-
|
|
83
|
+
1:
|
|
84
84
|
utils.nHexDigit(
|
|
85
85
|
utils.hex2bin(parsedData[24].substring(4, 6)),
|
|
86
86
|
5
|
|
87
87
|
)[4] === '1',
|
|
88
|
-
|
|
88
|
+
2:
|
|
89
89
|
utils.nHexDigit(
|
|
90
90
|
utils.hex2bin(parsedData[24].substring(4, 6)),
|
|
91
91
|
5
|
|
92
92
|
)[3] === '1',
|
|
93
|
-
|
|
93
|
+
3:
|
|
94
94
|
utils.nHexDigit(
|
|
95
95
|
utils.hex2bin(parsedData[24].substring(4, 6)),
|
|
96
96
|
5
|
|
97
97
|
)[2] === '1',
|
|
98
|
-
|
|
98
|
+
4:
|
|
99
99
|
utils.nHexDigit(
|
|
100
100
|
utils.hex2bin(parsedData[24].substring(4, 6)),
|
|
101
101
|
5
|
|
102
102
|
)[1] === '1',
|
|
103
|
-
|
|
103
|
+
5:
|
|
104
104
|
utils.nHexDigit(
|
|
105
105
|
utils.hex2bin(parsedData[24].substring(4, 6)),
|
|
106
106
|
5
|
|
@@ -163,59 +163,59 @@ const parse = raw => {
|
|
|
163
163
|
raw: parsedData[25],
|
|
164
164
|
sos: false,
|
|
165
165
|
input: {
|
|
166
|
-
|
|
166
|
+
1:
|
|
167
167
|
utils.nHexDigit(
|
|
168
168
|
utils.hex2bin(parsedData[25].substring(2, 4)),
|
|
169
169
|
6
|
|
170
170
|
)[5] === '1',
|
|
171
|
-
|
|
171
|
+
2:
|
|
172
172
|
utils.nHexDigit(
|
|
173
173
|
utils.hex2bin(parsedData[25].substring(2, 4)),
|
|
174
174
|
6
|
|
175
175
|
)[4] === '1',
|
|
176
|
-
|
|
176
|
+
3:
|
|
177
177
|
utils.nHexDigit(
|
|
178
178
|
utils.hex2bin(parsedData[25].substring(2, 4)),
|
|
179
179
|
6
|
|
180
180
|
)[3] === '1',
|
|
181
|
-
|
|
181
|
+
4:
|
|
182
182
|
utils.nHexDigit(
|
|
183
183
|
utils.hex2bin(parsedData[25].substring(2, 4)),
|
|
184
184
|
6
|
|
185
185
|
)[2] === '1',
|
|
186
|
-
|
|
186
|
+
5:
|
|
187
187
|
utils.nHexDigit(
|
|
188
188
|
utils.hex2bin(parsedData[25].substring(2, 4)),
|
|
189
189
|
6
|
|
190
190
|
)[1] === '1',
|
|
191
|
-
|
|
191
|
+
6:
|
|
192
192
|
utils.nHexDigit(
|
|
193
193
|
utils.hex2bin(parsedData[25].substring(2, 4)),
|
|
194
194
|
6
|
|
195
195
|
)[0] === '1'
|
|
196
196
|
},
|
|
197
197
|
output: {
|
|
198
|
-
|
|
198
|
+
1:
|
|
199
199
|
utils.nHexDigit(
|
|
200
200
|
utils.hex2bin(parsedData[25].substring(4, 6)),
|
|
201
201
|
5
|
|
202
202
|
)[4] === '1',
|
|
203
|
-
|
|
203
|
+
2:
|
|
204
204
|
utils.nHexDigit(
|
|
205
205
|
utils.hex2bin(parsedData[25].substring(4, 6)),
|
|
206
206
|
5
|
|
207
207
|
)[3] === '1',
|
|
208
|
-
|
|
208
|
+
3:
|
|
209
209
|
utils.nHexDigit(
|
|
210
210
|
utils.hex2bin(parsedData[25].substring(4, 6)),
|
|
211
211
|
5
|
|
212
212
|
)[2] === '1',
|
|
213
|
-
|
|
213
|
+
4:
|
|
214
214
|
utils.nHexDigit(
|
|
215
215
|
utils.hex2bin(parsedData[25].substring(4, 6)),
|
|
216
216
|
5
|
|
217
217
|
)[1] === '1',
|
|
218
|
-
|
|
218
|
+
5:
|
|
219
219
|
utils.nHexDigit(
|
|
220
220
|
utils.hex2bin(parsedData[25].substring(4, 6)),
|
|
221
221
|
5
|
|
@@ -263,7 +263,7 @@ const parse = raw => {
|
|
|
263
263
|
let externalData = {
|
|
264
264
|
eriMask: {
|
|
265
265
|
raw: parsedData[4],
|
|
266
|
-
oneWire
|
|
266
|
+
oneWire,
|
|
267
267
|
digitFuelSensor: false,
|
|
268
268
|
rpm: false,
|
|
269
269
|
rf: false
|
|
@@ -271,9 +271,9 @@ const parse = raw => {
|
|
|
271
271
|
uartDeviceType: null
|
|
272
272
|
}
|
|
273
273
|
if (oneWire) {
|
|
274
|
-
|
|
274
|
+
const oneWireDevices = []
|
|
275
275
|
let count = 28
|
|
276
|
-
for (
|
|
276
|
+
for (let k = 0; k < oneWireConnected; k++) {
|
|
277
277
|
oneWireDevices.push({
|
|
278
278
|
deviceNumber: parsedData[count],
|
|
279
279
|
deviceType: parsedData[count + 1],
|
|
@@ -289,7 +289,7 @@ const parse = raw => {
|
|
|
289
289
|
})
|
|
290
290
|
}
|
|
291
291
|
data = Object.assign(data, {
|
|
292
|
-
externalData
|
|
292
|
+
externalData
|
|
293
293
|
})
|
|
294
294
|
} else if (command[1] === 'GTHBD') {
|
|
295
295
|
// Heartbeat. It must response an ACK command
|
|
@@ -834,19 +834,19 @@ const parse = raw => {
|
|
|
834
834
|
raw: parsedData[25] + parsedData[26],
|
|
835
835
|
sos: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[4] === '1',
|
|
836
836
|
input: {
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
837
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[5] === '1',
|
|
838
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[4] === '1',
|
|
839
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[3] === '1',
|
|
840
|
+
4: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[2] === '1',
|
|
841
|
+
5: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[1] === '1',
|
|
842
|
+
6: utils.nHexDigit(utils.hex2bin(parsedData[27]), 6)[0] === '1'
|
|
843
843
|
},
|
|
844
844
|
output: {
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
845
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[27]), 5)[4] === '1',
|
|
846
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[27]), 5)[3] === '1',
|
|
847
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[27]), 5)[2] === '1',
|
|
848
|
+
4: utils.nHexDigit(utils.hex2bin(parsedData[27]), 5)[1] === '1',
|
|
849
|
+
5: utils.nHexDigit(utils.hex2bin(parsedData[27]), 5)[0] === '1'
|
|
850
850
|
},
|
|
851
851
|
charge: parseFloat(parsedData[4]) > 5
|
|
852
852
|
},
|
|
@@ -1101,5 +1101,5 @@ const parse = raw => {
|
|
|
1101
1101
|
}
|
|
1102
1102
|
|
|
1103
1103
|
module.exports = {
|
|
1104
|
-
parse
|
|
1104
|
+
parse
|
|
1105
1105
|
}
|
package/src/gv75w.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
|
}
|
|
@@ -31,8 +31,8 @@ const parse = raw => {
|
|
|
31
31
|
// Gps
|
|
32
32
|
if (command[1] === 'GTFRI') {
|
|
33
33
|
try {
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const number = parsedData[6] !== '' ? parseInt(parsedData[6], 10) : 1
|
|
35
|
+
const index = 6 + 12 * number // odometer
|
|
36
36
|
|
|
37
37
|
data = Object.assign(data, {
|
|
38
38
|
alarm: utils.getAlarm(command[1], null),
|
|
@@ -51,28 +51,28 @@ const parse = raw => {
|
|
|
51
51
|
raw: parsedData[index + 6],
|
|
52
52
|
sos: false,
|
|
53
53
|
input: {
|
|
54
|
-
|
|
54
|
+
1:
|
|
55
55
|
utils.nHexDigit(
|
|
56
56
|
utils.hex2bin(
|
|
57
57
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
58
58
|
),
|
|
59
59
|
4
|
|
60
60
|
)[3] === '1',
|
|
61
|
-
|
|
61
|
+
2:
|
|
62
62
|
utils.nHexDigit(
|
|
63
63
|
utils.hex2bin(
|
|
64
64
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
65
65
|
),
|
|
66
66
|
4
|
|
67
67
|
)[2] === '1',
|
|
68
|
-
|
|
68
|
+
3:
|
|
69
69
|
utils.nHexDigit(
|
|
70
70
|
utils.hex2bin(
|
|
71
71
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
72
72
|
),
|
|
73
73
|
4
|
|
74
74
|
)[1] === '1',
|
|
75
|
-
|
|
75
|
+
4:
|
|
76
76
|
utils.nHexDigit(
|
|
77
77
|
utils.hex2bin(
|
|
78
78
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
@@ -81,21 +81,21 @@ const parse = raw => {
|
|
|
81
81
|
)[0] === '1'
|
|
82
82
|
},
|
|
83
83
|
output: {
|
|
84
|
-
|
|
84
|
+
1:
|
|
85
85
|
utils.nHexDigit(
|
|
86
86
|
utils.hex2bin(
|
|
87
87
|
utils.nHexDigit(parsedData[index + 6], 10).substring(8, 10)
|
|
88
88
|
),
|
|
89
89
|
3
|
|
90
90
|
)[2] === '1',
|
|
91
|
-
|
|
91
|
+
2:
|
|
92
92
|
utils.nHexDigit(
|
|
93
93
|
utils.hex2bin(
|
|
94
94
|
utils.nHexDigit(parsedData[index + 6], 10).substring(8, 10)
|
|
95
95
|
),
|
|
96
96
|
3
|
|
97
97
|
)[1] === '1',
|
|
98
|
-
|
|
98
|
+
3:
|
|
99
99
|
utils.nHexDigit(
|
|
100
100
|
utils.hex2bin(
|
|
101
101
|
utils.nHexDigit(parsedData[index + 6], 10).substring(8, 10)
|
|
@@ -107,8 +107,8 @@ const parse = raw => {
|
|
|
107
107
|
state:
|
|
108
108
|
utils.nHexDigit(parsedData[index + 6], 10).substring(4, 6) !== ''
|
|
109
109
|
? utils.states[ // eslint-disable-line
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
utils.nHexDigit(parsedData[index + 6], 10).substring(4, 6)
|
|
111
|
+
]
|
|
112
112
|
: null
|
|
113
113
|
},
|
|
114
114
|
azimuth: parsedData[9] !== '' ? parseFloat(parsedData[9]) : null,
|
|
@@ -149,8 +149,8 @@ const parse = raw => {
|
|
|
149
149
|
}
|
|
150
150
|
} else if (command[1] === 'GTERI') {
|
|
151
151
|
// GPS with AC100 Devices Connected
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
const number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
|
|
153
|
+
const index = 7 + 12 * number // odometer
|
|
154
154
|
data = Object.assign(data, {
|
|
155
155
|
alarm: utils.getAlarm(command[1], null),
|
|
156
156
|
loc: {
|
|
@@ -168,28 +168,28 @@ const parse = raw => {
|
|
|
168
168
|
raw: parsedData[index + 6],
|
|
169
169
|
sos: false,
|
|
170
170
|
input: {
|
|
171
|
-
|
|
171
|
+
1:
|
|
172
172
|
utils.nHexDigit(
|
|
173
173
|
utils.hex2bin(
|
|
174
174
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
175
175
|
),
|
|
176
176
|
4
|
|
177
177
|
)[3] === '1',
|
|
178
|
-
|
|
178
|
+
2:
|
|
179
179
|
utils.nHexDigit(
|
|
180
180
|
utils.hex2bin(
|
|
181
181
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
182
182
|
),
|
|
183
183
|
4
|
|
184
184
|
)[2] === '1',
|
|
185
|
-
|
|
185
|
+
3:
|
|
186
186
|
utils.nHexDigit(
|
|
187
187
|
utils.hex2bin(
|
|
188
188
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
189
189
|
),
|
|
190
190
|
4
|
|
191
191
|
)[1] === '1',
|
|
192
|
-
|
|
192
|
+
4:
|
|
193
193
|
utils.nHexDigit(
|
|
194
194
|
utils.hex2bin(
|
|
195
195
|
utils.nHexDigit(parsedData[index + 6], 10).substring(6, 8)
|
|
@@ -198,21 +198,21 @@ const parse = raw => {
|
|
|
198
198
|
)[0] === '1'
|
|
199
199
|
},
|
|
200
200
|
output: {
|
|
201
|
-
|
|
201
|
+
1:
|
|
202
202
|
utils.nHexDigit(
|
|
203
203
|
utils.hex2bin(
|
|
204
204
|
utils.nHexDigit(parsedData[index + 6], 10).substring(8, 10)
|
|
205
205
|
),
|
|
206
206
|
3
|
|
207
207
|
)[2] === '1',
|
|
208
|
-
|
|
208
|
+
2:
|
|
209
209
|
utils.nHexDigit(
|
|
210
210
|
utils.hex2bin(
|
|
211
211
|
utils.nHexDigit(parsedData[index + 6], 10).substring(8, 10)
|
|
212
212
|
),
|
|
213
213
|
3
|
|
214
214
|
)[1] === '1',
|
|
215
|
-
|
|
215
|
+
3:
|
|
216
216
|
utils.nHexDigit(
|
|
217
217
|
utils.hex2bin(
|
|
218
218
|
utils.nHexDigit(parsedData[index + 6], 10).substring(8, 10)
|
|
@@ -224,8 +224,8 @@ const parse = raw => {
|
|
|
224
224
|
state:
|
|
225
225
|
utils.nHexDigit(parsedData[index + 6], 10).substring(4, 6) !== ''
|
|
226
226
|
? utils.states[ // eslint-disable-line
|
|
227
|
-
|
|
228
|
-
|
|
227
|
+
utils.nHexDigit(parsedData[index + 6], 10).substring(4, 6)
|
|
228
|
+
]
|
|
229
229
|
: null
|
|
230
230
|
},
|
|
231
231
|
azimuth: parsedData[10] !== '' ? parseFloat(parsedData[10]) : null,
|
|
@@ -271,16 +271,18 @@ const parse = raw => {
|
|
|
271
271
|
const ac100DevicesConnected =
|
|
272
272
|
AC100 && digitFuelSensor
|
|
273
273
|
? parseInt(parsedData[index + 9], 10)
|
|
274
|
-
: AC100 && !digitFuelSensor
|
|
274
|
+
: AC100 && !digitFuelSensor
|
|
275
|
+
? parseInt(parsedData[index + 8], 10)
|
|
276
|
+
: 0
|
|
275
277
|
|
|
276
278
|
let externalData = {
|
|
277
279
|
eriMask: {
|
|
278
280
|
raw: parsedData[4],
|
|
279
|
-
digitFuelSensor
|
|
280
|
-
AC100
|
|
281
|
-
reserved
|
|
282
|
-
fuelLevelPercentage
|
|
283
|
-
fuelVolume
|
|
281
|
+
digitFuelSensor,
|
|
282
|
+
AC100,
|
|
283
|
+
reserved,
|
|
284
|
+
fuelLevelPercentage,
|
|
285
|
+
fuelVolume
|
|
284
286
|
},
|
|
285
287
|
uartDeviceType: utils.uartDeviceTypes[parsedData[index + 7]]
|
|
286
288
|
}
|
|
@@ -299,17 +301,17 @@ const parse = raw => {
|
|
|
299
301
|
fuelVolume && fuelLevelPercentage && parsedData[index + 12] !== ''
|
|
300
302
|
? parseInt(parsedData[index + 12], 10)
|
|
301
303
|
: fuelVolume &&
|
|
302
|
-
|
|
303
|
-
|
|
304
|
+
!fuelLevelPercentage &&
|
|
305
|
+
parsedData[index + 11] !== ''
|
|
304
306
|
? parseInt(parsedData[index + 11], 10)
|
|
305
307
|
: null
|
|
306
308
|
},
|
|
307
309
|
AC100Devices: null
|
|
308
310
|
})
|
|
309
311
|
} else if (!digitFuelSensor && AC100) {
|
|
310
|
-
|
|
312
|
+
const ac100Devices = []
|
|
311
313
|
let count = index + 10
|
|
312
|
-
for (
|
|
314
|
+
for (let i = 0; i < ac100DevicesConnected; i++) {
|
|
313
315
|
ac100Devices.push({
|
|
314
316
|
deviceNumber: parsedData[count],
|
|
315
317
|
deviceType: parsedData[count + 1],
|
|
@@ -324,12 +326,14 @@ const parse = raw => {
|
|
|
324
326
|
AC100Devices: ac100Devices
|
|
325
327
|
})
|
|
326
328
|
} else if (digitFuelSensor && AC100) {
|
|
327
|
-
|
|
329
|
+
const ac100Devices = []
|
|
328
330
|
let count =
|
|
329
331
|
fuelVolume && fuelLevelPercentage
|
|
330
332
|
? 33
|
|
331
|
-
: fuelVolume && !fuelLevelPercentage
|
|
332
|
-
|
|
333
|
+
: fuelVolume && !fuelLevelPercentage
|
|
334
|
+
? index + 13
|
|
335
|
+
: index + 12
|
|
336
|
+
for (let j = 0; j < ac100DevicesConnected; j++) {
|
|
333
337
|
ac100Devices.push({
|
|
334
338
|
deviceNumber: parsedData[count],
|
|
335
339
|
deviceType: parsedData[count + 1],
|
|
@@ -351,8 +355,8 @@ const parse = raw => {
|
|
|
351
355
|
fuelVolume && fuelLevelPercentage && parsedData[index + 13] !== ''
|
|
352
356
|
? parseInt(parsedData[index + 13], 10)
|
|
353
357
|
: fuelVolume &&
|
|
354
|
-
|
|
355
|
-
|
|
358
|
+
!fuelLevelPercentage &&
|
|
359
|
+
parsedData[index + 12] !== ''
|
|
356
360
|
? parseInt(parsedData[index + 12], 10)
|
|
357
361
|
: null
|
|
358
362
|
},
|
|
@@ -362,9 +366,9 @@ const parse = raw => {
|
|
|
362
366
|
} else if (parsedData[index + 7] === '2') {
|
|
363
367
|
// AC100 1 Wire Bus
|
|
364
368
|
if (!digitFuelSensor && AC100) {
|
|
365
|
-
|
|
369
|
+
const ac100Devices = []
|
|
366
370
|
let count = index + 9
|
|
367
|
-
for (
|
|
371
|
+
for (let k = 0; k < ac100DevicesConnected; k++) {
|
|
368
372
|
ac100Devices.push({
|
|
369
373
|
deviceNumber: parsedData[count],
|
|
370
374
|
deviceType: parsedData[count + 1],
|
|
@@ -389,9 +393,9 @@ const parse = raw => {
|
|
|
389
393
|
AC100Devices: null
|
|
390
394
|
})
|
|
391
395
|
} else if (digitFuelSensor && AC100) {
|
|
392
|
-
|
|
396
|
+
const ac100Devices = []
|
|
393
397
|
let count = index + 10
|
|
394
|
-
for (
|
|
398
|
+
for (let l = 0; l < ac100DevicesConnected; l++) {
|
|
395
399
|
ac100Devices.push({
|
|
396
400
|
deviceNumber: parsedData[count],
|
|
397
401
|
deviceType: parsedData[count + 1],
|
|
@@ -413,7 +417,7 @@ const parse = raw => {
|
|
|
413
417
|
}
|
|
414
418
|
}
|
|
415
419
|
data = Object.assign(data, {
|
|
416
|
-
externalData
|
|
420
|
+
externalData
|
|
417
421
|
})
|
|
418
422
|
} else if (command[1] === 'GTHBD') {
|
|
419
423
|
// Heartbeat. It must response an ACK command
|
|
@@ -444,16 +448,16 @@ const parse = raw => {
|
|
|
444
448
|
raw: parsedData[18] + parsedData[19],
|
|
445
449
|
sos: false,
|
|
446
450
|
input: {
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
+
4: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[0] === '1',
|
|
452
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[1] === '1',
|
|
453
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[2] === '1',
|
|
454
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[20][1]), 4)[3] === '1'
|
|
451
455
|
},
|
|
452
456
|
output: {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
+
4: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[0] === '1',
|
|
458
|
+
3: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[1] === '1',
|
|
459
|
+
2: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[2] === '1',
|
|
460
|
+
1: utils.nHexDigit(utils.hex2bin(parsedData[19][1]), 4)[3] === '1'
|
|
457
461
|
},
|
|
458
462
|
charge: parsedData[8] === '1'
|
|
459
463
|
},
|
|
@@ -521,8 +525,8 @@ const parse = raw => {
|
|
|
521
525
|
})
|
|
522
526
|
} else if (command[1] === 'GTTMP') {
|
|
523
527
|
// Temperature Alarm
|
|
524
|
-
|
|
525
|
-
|
|
528
|
+
const number = parsedData[7] !== '' ? parseInt(parsedData[7], 10) : 1
|
|
529
|
+
const index = 8 + 12 * number // odometer
|
|
526
530
|
data = Object.assign(data, {
|
|
527
531
|
alarm: utils.getAlarm(command[1], parsedData[6], [
|
|
528
532
|
parsedData[index + 9],
|
|
@@ -543,21 +547,21 @@ const parse = raw => {
|
|
|
543
547
|
raw: `${parsedData[index + 4]}${parsedData[index + 5]}`,
|
|
544
548
|
sos: false,
|
|
545
549
|
input: {
|
|
546
|
-
|
|
550
|
+
3:
|
|
547
551
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[1] ===
|
|
548
552
|
'1',
|
|
549
|
-
|
|
553
|
+
2:
|
|
550
554
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[2] ===
|
|
551
555
|
'1',
|
|
552
|
-
|
|
556
|
+
1:
|
|
553
557
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 4][1]), 4)[3] ===
|
|
554
558
|
'1'
|
|
555
559
|
},
|
|
556
560
|
output: {
|
|
557
|
-
|
|
561
|
+
2:
|
|
558
562
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 5][1]), 4)[2] ===
|
|
559
563
|
'1',
|
|
560
|
-
|
|
564
|
+
1:
|
|
561
565
|
utils.nHexDigit(utils.hex2bin(parsedData[index + 5][1]), 4)[3] ===
|
|
562
566
|
'1'
|
|
563
567
|
},
|
|
@@ -1045,15 +1049,15 @@ const parse = raw => {
|
|
|
1045
1049
|
hourmeter: null
|
|
1046
1050
|
})
|
|
1047
1051
|
} else if (command[1] === 'GTCAN') {
|
|
1048
|
-
|
|
1052
|
+
const inicatorsBin =
|
|
1049
1053
|
parsedData[24] !== ''
|
|
1050
1054
|
? utils.nHexDigit(utils.hex2bin(parsedData[24]), 16)
|
|
1051
1055
|
: null
|
|
1052
|
-
|
|
1056
|
+
const lights =
|
|
1053
1057
|
parsedData[25] !== ''
|
|
1054
1058
|
? utils.nHexDigit(utils.hex2bin(parsedData[25]), 8)
|
|
1055
1059
|
: null
|
|
1056
|
-
|
|
1060
|
+
const doors =
|
|
1057
1061
|
parsedData[26] !== ''
|
|
1058
1062
|
? utils.nHexDigit(utils.hex2bin(parsedData[26]), 8)
|
|
1059
1063
|
: null
|
|
@@ -1235,7 +1239,7 @@ const parse = raw => {
|
|
|
1235
1239
|
uartDeviceType: 'Camaleon',
|
|
1236
1240
|
fuelSensorData: null
|
|
1237
1241
|
}
|
|
1238
|
-
|
|
1242
|
+
const AC100Devices = [
|
|
1239
1243
|
{
|
|
1240
1244
|
deviceNumber: `${parsedData[2]}|1`,
|
|
1241
1245
|
deviceType: '1',
|
|
@@ -1252,11 +1256,11 @@ const parse = raw => {
|
|
|
1252
1256
|
})
|
|
1253
1257
|
}
|
|
1254
1258
|
externalData = Object.assign(externalData, {
|
|
1255
|
-
AC100Devices
|
|
1259
|
+
AC100Devices
|
|
1256
1260
|
})
|
|
1257
1261
|
data = Object.assign(data, {
|
|
1258
1262
|
alarm: utils.getAlarm('GTERI', null),
|
|
1259
|
-
externalData
|
|
1263
|
+
externalData
|
|
1260
1264
|
})
|
|
1261
1265
|
} else if (/^>ET/.test(parsedData[7])) {
|
|
1262
1266
|
// Temp Alarms
|
|
@@ -1268,7 +1272,7 @@ const parse = raw => {
|
|
|
1268
1272
|
parsedSerialData[4]
|
|
1269
1273
|
])
|
|
1270
1274
|
data = Object.assign(data, {
|
|
1271
|
-
alarm
|
|
1275
|
+
alarm
|
|
1272
1276
|
})
|
|
1273
1277
|
} else if (/^>ID/.test(parsedData[7])) {
|
|
1274
1278
|
// Checks if its a iButton GTDAT -> DT
|
|
@@ -1277,7 +1281,7 @@ const parse = raw => {
|
|
|
1277
1281
|
const driverID = parsedSerialData[2] ? parsedSerialData[2] : ''
|
|
1278
1282
|
const alarm = utils.getAlarm('GTIDA', `${driverID},1`)
|
|
1279
1283
|
data = Object.assign(data, {
|
|
1280
|
-
alarm
|
|
1284
|
+
alarm
|
|
1281
1285
|
})
|
|
1282
1286
|
} else {
|
|
1283
1287
|
// Normal GTDAT
|
|
@@ -1406,5 +1410,5 @@ const parse = raw => {
|
|
|
1406
1410
|
}
|
|
1407
1411
|
|
|
1408
1412
|
module.exports = {
|
|
1409
|
-
parse
|
|
1413
|
+
parse
|
|
1410
1414
|
}
|