queclink-parser 1.9.13 → 1.9.15
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 +33 -0
- package/example.js +31 -32
- package/package.json +1 -1
- package/src/gv310lau.js +117 -212
- package/src/gv57cg.js +4 -4
- package/src/gv58lau.js +94 -257
- package/src/index.js +8 -1
- package/src/messages/es.json +11 -11
- package/src/utils.js +300 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
+
#### 1.9.15 (2025-03-11)
|
|
2
|
+
|
|
3
|
+
##### New Features
|
|
4
|
+
|
|
5
|
+
* **tirepressure:** se incorpora presión de ntco en PSI e interpretación de rawData BLE ([a263d70f](https://github.com/jaayesta/queclink-parser/commit/a263d70f1b2a358ed2cdcd414ad445e5f158f16c))
|
|
6
|
+
* **rf433:** started support for RF433 devices ([2f4f5d9b](https://github.com/jaayesta/queclink-parser/commit/2f4f5d9bf680be49e52c7f931430bae80a905d74))
|
|
7
|
+
|
|
8
|
+
##### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **messages:** se actualiza mensaje en ACK BTS ([1307d12f](https://github.com/jaayesta/queclink-parser/commit/1307d12f07922d1dfc4870b348126adaf92bb2d8))
|
|
11
|
+
* **tirepressure:**
|
|
12
|
+
* se quita linea de debug ([91794b17](https://github.com/jaayesta/queclink-parser/commit/91794b17672298ec754ff22ab7d78425aaf5a801))
|
|
13
|
+
* alarma de presión en PSI ([3f7262c1](https://github.com/jaayesta/queclink-parser/commit/3f7262c1b984b4899fb612b3d8c3498341191a95))
|
|
14
|
+
|
|
15
|
+
#### 1.9.14 (2025-01-27)
|
|
16
|
+
|
|
17
|
+
##### New Features
|
|
18
|
+
|
|
19
|
+
* **WID310:** se agrega soporte para WID310 en reporte ERI ([1631319c](https://github.com/jaayesta/queclink-parser/commit/1631319c827f633cbb1ef61298f5f83ac19098b8))
|
|
20
|
+
* **temp:** se agrega alarma de temperatura para dispositivos BLE ([d45f73b9](https://github.com/jaayesta/queclink-parser/commit/d45f73b996e8e861be9e8f10a36b886a03e38d66))
|
|
21
|
+
* **bleData:** se cambia la forma de obtener datos de bluetooth por ERI ([f6ef1f22](https://github.com/jaayesta/queclink-parser/commit/f6ef1f2258b2562dde79974e306b35d1728a9b8c))
|
|
22
|
+
* **bleAlarms:** se agregan alarmas BLE ([abfc04a4](https://github.com/jaayesta/queclink-parser/commit/abfc04a464980a5580b982af252f338b4dde2625))
|
|
23
|
+
|
|
24
|
+
##### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* **eri:**
|
|
27
|
+
* se corrigen problemas de indexación pendientes BLE para reporte ERI ([460a53bd](https://github.com/jaayesta/queclink-parser/commit/460a53bd6b2fd3f4439534f5d1620fbeccff9ce7))
|
|
28
|
+
* se corrigen problemas de indexación BLE para reporte ERI ([a2b978f8](https://github.com/jaayesta/queclink-parser/commit/a2b978f8e0de62fbfe5076bf5a2a675e1f2b0412))
|
|
29
|
+
* **BAA:**
|
|
30
|
+
* se corrige error en el indexado de reporte GTBAA para GV310LAU ([344fb52f](https://github.com/jaayesta/queclink-parser/commit/344fb52f90317f2e3f73ecdb59564a2a30d6dc80))
|
|
31
|
+
* se corrige error en el indexado de reporte GTBAA para GV58LAU ([8aac88c1](https://github.com/jaayesta/queclink-parser/commit/8aac88c11e676e6a9c6c3fe7c97f7fc4860f9463))
|
|
32
|
+
* **log:** se elimina console log del código ([3ee79e0a](https://github.com/jaayesta/queclink-parser/commit/3ee79e0a915c59aef42e486c2eff61eba876b608))
|
|
33
|
+
|
|
1
34
|
#### 1.9.13 (2024-11-27)
|
|
2
35
|
|
|
3
36
|
##### New Features
|
package/example.js
CHANGED
|
@@ -60,49 +60,48 @@ var dat = '+RESP:GTDAT,8020040703,135790246811220,GV58LAU,3,,,1645026150,0,0.5,0
|
|
|
60
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
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
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
63
|
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$'
|
|
65
64
|
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$'
|
|
66
65
|
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
|
|
68
|
-
|
|
66
|
+
var high_temp = "+RESP:GTBAA,6E0801,868589060039404,,01,6,2,02,083F,WTH300,7805412AFE28,1,3525,25,49,25.00,0,0.0,35,153.1,-72.668510,-38.256640,20241227153248,0730,0001,23F1,00342902,01,12,20241227153635,A915$"
|
|
67
|
+
var in_range = "+RESP:GTBAA,6E0801,868589060039404,,01,6,2,03,083F,WTH300,7805412AFE28,1,3519,24,47,24.95,0,0.0,35,153.1,-72.668510,-38.256640,20241227151247,0730,0001,23F1,00339F10,01,12,20241227151525,A912$"
|
|
68
|
+
var relay_off = '+RESP:GTBAA,6E0801,868589060039404,,00,13,0,15,4000,0,0,1,0.0,35,153.1,-72.668510,-38.256640,20241227145055,0730,0001,23F1,00342911,01,12,20241227145055,A8F9$'
|
|
69
|
+
var relay_on = '+RESP:GTBAA,6E0801,868589060039404,,00,13,0,15,4000,0,1,1,0.0,35,153.1,-72.668510,-38.256640,20241227144952,0730,0001,23F1,00342911,01,12,20241227144951,A8F5$'
|
|
70
|
+
var eri58 = '+RESP:GTERI,8020040802,864696060004173,GV58LAU,00000100,,10,1,1,0.0,0,115.8,117.129356,31.839248,20230808061540,0460,0001,DF5C,05FE6667,03,15,0,4.0,0000102:34:33,,,,100,210000,,1,0,06,12,0,001A42A2,0617,TMPS,08351B00043C,1,26,65,20231030085704,20231030085704,0017$'
|
|
71
|
+
var eri310 = '+RESP:GTERI,6E1003,864696060004173,GV310LAU,00000100,,10,1,1,0.0,0,115.8,117.129356,31.839248,20230808061540,0460,0001,DF5C,05FE6667,03,15,,4.0,0000102:34:33,0,15259,10680,100,210000,7,1,0,06,12,0,001A42A2,0617,TMPS,08351B00043C,1,26,65,20231030085704,20231030085704,ABCD$'
|
|
72
|
+
var eri = '+RESP:GTERI,8020040802,866314061645121,,00000100,12944,10,1,1,0.0,247,611.9,-70.577108,-33.523989,20250114225655,0730,0001,3330,00A4FC01,01,9,41375.5,0002383:14:12,,,,100,110001,,2,00,13,0,00000000,4007,,78054143F187,1,0,03,6,5,0DE10E6A,083F,,7805413E6A41,1,3543,36,35,36.90,20250114225923,2ACB$'
|
|
73
|
+
var eri2 = '+RESP:GTERI,8020040802,866314061760094,,00000100,12186,10,1,0,0.0,17,-7.0,-71.543345,-32.972461,20250111040734,0730,0003,EA6F,00070B0C,01,0,0.2,0000063:26:41,,,,100,210100,,2,00,13,0,00000001,4007,,78054143F00B,1,1,01,6,4,17BB0821,283F,,78054133CB9F,1,3482,20,60,20.81,100,20250115130224,41C4$'
|
|
74
|
+
var eri3 = '+RESP:GTERI,8020040802,866314061760094,,00000100,12208,10,1,0,0.0,17,-7.0,-71.543345,-32.972461,20250111040734,0730,0003,EA6F,00070B0C,01,0,0.2,0000063:28:25,,,,100,210100,,3,00,13,0,00000001,4007,,78054143F00B,1,1,01,6,4,16B60839,283F,,78054133CB9F,1,3485,21,58,21.05,100,FE,3,4,000A,78054141615E,3030,20250115130409,41CC$'
|
|
69
75
|
|
|
76
|
+
var baa = '+RESP:GTBAA,8020040802,866314061760094,,01,6,4,13,283F,,78054133CB9F,1,3481,21,57,21.05,100,0,0.0,17,-7.0,-71.543345,-32.972461,20250111040734,0730,0003,EA6F,00070B0C,01,0,20250115130318,41C8$'
|
|
77
|
+
var ack = '+ACK:GTBAS,6E0A03,868589060039404,,1,0000,20250120151212,22CC$'
|
|
78
|
+
var test = '+RESP:GTERI,6E0B00,868589060064048,,00000100,12109,10,1,1,0.0,83,3.1,-71.543397,-32.972429,20250121142808,0730,0001,13EE,0032A502,01,12,2.6,0000008:04:49,,,,88,210100,0,2,02,6,4,164808ED,283F,,78054133CB9F,1,3447,22,57,22.85,100,FE,3,4,000A,780541416165,3270,20250121142810,2C1A$'
|
|
79
|
+
var test2 = '+RESP:GTERI,8020040802,866314061760094,,00000100,12217,10,1,0,0.0,114,89.4,-71.542946,-32.972462,20250117083107,0730,0003,EA6F,00070B34,01,0,12.0,0000100:49:34,,,,100,210100,,2,00,13,0,00000000,4007,,78054143F00B,1,0,01,6,4,17C608B8,283F,,78054133CB9F,1,3443,22,60,22.32,100,20250121174252,7B18$'
|
|
80
|
+
var test3 = '+RESP:GTERI,8020040802,866314061760094,,00000100,12217,10,1,0,0.0,114,89.4,-71.542946,-32.972462,20250117083107,0730,0003,EA6F,00070B34,01,0,12.0,0000100:49:34,,,,100,210100,,2,01,6,4,17C608B8,283F,,78054133CB9F,1,3443,22,60,22.32,100,00,13,0,00000000,4007,,78054143F00B,1,0,20250121174252,7B18$'
|
|
81
|
+
var test4 = '+RESP:GTERI,6E0B00,868589060064048,,00000100,12141,10,1,1,0.0,0,2.5,-71.543408,-32.972433,20250121211122,0730,0001,13EE,0032A502,01,12,2.6,0000014:48:01,,,,100,210100,0,3,FE,3,4,000A,780541416165,3260,00,13,0,00000000,4006,78054143F00B,1,0,02,6,4,156A0A3E,283F,,78054133CB9F,1,3449,26,54,26.22,100,20250121211125,340A$'
|
|
82
|
+
var juego = "+RESP:GTERI,6E0802,868589060659029,,00000006,14064,10,1,1,32.4,71,471.3,-70.748220,-33.494213,20250123150132,0730,0001,3344,003D0601,01,12,9150.7,0000381:44:02,,,,100,220100,2,1,28FFB007286384D2,1,FF4C,1,203FFFFF,,2,,1190.32,1626,32,90,,,,0,371.38,193.02,178.36,128.66,,FFFF,0010,,00,0.06,0.00,FFFFFF,,,,,,,,,576370,434493,1719,371.38,,1.42,23731,,,,,,0000,56,0,,20250123150133,FAD9$"
|
|
83
|
+
var tpms = '+RESP:GTERI,6E1003,864696060004173,GV310LAU,00000100,,10,1,1,0.0,0,115.8,117.129356,31.839248,20230808061540,0460,0001,DF5C,05FE6667,03,15,4.0,0000102:34:33,0,15259,10680,100,210000,7,1,1,06,12,0,001A42A2,0617,TMPS,08351B00043C,1,26,65,20231030085704,20231030085704,0017$'
|
|
84
|
+
var newdtt = '+RESP:GTDTT,6E0802,868589060722215,,,,0,264,�Q4���,OzJ(��(��(��(��(��(��(��(��(��(��(��(��� N�K�4����.�]�f�v(�)sFisFisFh�����f�њ3I�3Mi���ܹ��QEQEQEQEQEQEQEQEQEQEQEQEQE(<Q��u.�7��}/�K��]��Jo���F�]�n�u��u.�i7Rn��I��Ԍ�6M%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQE.h���q��h�h�)][yB,1,24.6,322,2730.3,-68.802404,-23.413967,20250210162544,0730,0002,00CA,09B38E71,01,11,,,,,20250210162545,A522$'
|
|
70
85
|
|
|
71
86
|
var data = {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"previousToggle": {
|
|
85
|
-
"1": 0,
|
|
86
|
-
"2": 0,
|
|
87
|
-
"3": 0,
|
|
88
|
-
"4": 0,
|
|
89
|
-
"5": 0
|
|
90
|
-
},
|
|
91
|
-
"previousDuration": {
|
|
92
|
-
"1": 0,
|
|
93
|
-
"2": 0,
|
|
94
|
-
"3": 0,
|
|
95
|
-
"4": 0,
|
|
96
|
-
"5": 0
|
|
97
|
-
}
|
|
98
|
-
}
|
|
87
|
+
"imei": 868589060039404,
|
|
88
|
+
"instruction": "temp_alarm_off",
|
|
89
|
+
"sensor_type": 'WTH301',
|
|
90
|
+
"sensor_index": 1,
|
|
91
|
+
"action": "Configurar alarma de temperatura",
|
|
92
|
+
"device": "queclink",
|
|
93
|
+
"password": "gv310lau",
|
|
94
|
+
"alarmId": 0,
|
|
95
|
+
"sensorId": "7805412AFE28",
|
|
96
|
+
"minTemp": 25 || null,
|
|
97
|
+
"maxTemp": 29 || null
|
|
98
|
+
}
|
|
99
99
|
|
|
100
100
|
// console.log(queclink.parseCommand(data))
|
|
101
|
-
const raw = new Buffer(
|
|
101
|
+
const raw = new Buffer.from(tpms)
|
|
102
102
|
console.log(JSON.stringify(queclink.parse(raw), null, 2))
|
|
103
103
|
queclink.parse(raw)
|
|
104
104
|
|
|
105
|
-
|
|
106
105
|
// if (data.can) {
|
|
107
106
|
// const {
|
|
108
107
|
// comunicationOk,
|
package/package.json
CHANGED
package/src/gv310lau.js
CHANGED
|
@@ -27,7 +27,6 @@ const parse = raw => {
|
|
|
27
27
|
sentTime: utils.parseDate(parsedData[parsedData.length - 2]),
|
|
28
28
|
serialId: parseInt(parsedData[parsedData.length - 1], 16)
|
|
29
29
|
}
|
|
30
|
-
|
|
31
30
|
// Gps
|
|
32
31
|
if (command[1] === 'GTFRI') {
|
|
33
32
|
try {
|
|
@@ -395,6 +394,8 @@ const parse = raw => {
|
|
|
395
394
|
AC100 && digitFuelSensor
|
|
396
395
|
? parseInt(parsedData[index + 10], 10)
|
|
397
396
|
: AC100 && !digitFuelSensor ? parseInt(parsedData[index + 9], 10) : 0
|
|
397
|
+
// Review when RF433 devices are implemented
|
|
398
|
+
const rf433DevicesConnected = parsedData[index + 8] === '7' ? parseInt(parsedData[index + 9]) : 0
|
|
398
399
|
|
|
399
400
|
let externalData = {
|
|
400
401
|
eriMask: {
|
|
@@ -540,6 +541,27 @@ const parse = raw => {
|
|
|
540
541
|
AC100Devices: ac100Devices
|
|
541
542
|
})
|
|
542
543
|
}
|
|
544
|
+
// } else if (parsedData[index + 8] === '7') {
|
|
545
|
+
// index += 1
|
|
546
|
+
// // RF433 Devices
|
|
547
|
+
// let rf433Devices = []
|
|
548
|
+
// // Review when RF433 devices are implemented
|
|
549
|
+
// let count = index + 9
|
|
550
|
+
// for (var l = 0; l < rf433DevicesConnected; l++) {
|
|
551
|
+
// rf433Devices.push({
|
|
552
|
+
// // deviceNumber: parsedData[count],
|
|
553
|
+
// // deviceType: parsedData[count + 1],
|
|
554
|
+
// // deviceData: parsedData[count + 2]
|
|
555
|
+
// // ? utils.getTempInCelciousDegrees(parsedData[count + 2])
|
|
556
|
+
// // : null
|
|
557
|
+
// deviceData: parsedData[count]
|
|
558
|
+
// })
|
|
559
|
+
// count += 1
|
|
560
|
+
// // count += 3
|
|
561
|
+
// }
|
|
562
|
+
// externalData = Object.assign(externalData, {
|
|
563
|
+
// rf433Devices: rf433Devices
|
|
564
|
+
// })
|
|
543
565
|
}
|
|
544
566
|
|
|
545
567
|
if (canData) {
|
|
@@ -566,125 +588,8 @@ const parse = raw => {
|
|
|
566
588
|
|
|
567
589
|
// Bluetooth Accessories
|
|
568
590
|
if (bluetoothAccessory) {
|
|
569
|
-
let btDevices = []
|
|
570
591
|
let btIndex = digitFuelSensor ? index + 10 : index + 9
|
|
571
|
-
let
|
|
572
|
-
let btNum = parsedData[btIndex] !== '' ? parseInt(parsedData[btIndex]) : 1
|
|
573
|
-
for (let c = 0; c < btNum; c++) {
|
|
574
|
-
let appendMask = utils.nHexDigit(utils.hex2bin(parsedData[cnt + 4]), 16)
|
|
575
|
-
|
|
576
|
-
let aNameIx = cnt + 4 + parseInt(appendMask[15])
|
|
577
|
-
let aMacIx = aNameIx + parseInt(appendMask[14])
|
|
578
|
-
let aStatIx = aMacIx + parseInt(appendMask[13])
|
|
579
|
-
let aBatIx = aStatIx + parseInt(appendMask[12])
|
|
580
|
-
let aTmpIx = aBatIx + parseInt(appendMask[11])
|
|
581
|
-
let aHumIx = aTmpIx + parseInt(appendMask[10])
|
|
582
|
-
let ioIx = aHumIx + parseInt(appendMask[8])
|
|
583
|
-
let modeIx =
|
|
584
|
-
appendMask[8] === '1' ? ioIx + 2 + parseInt(appendMask[7]) : ioIx
|
|
585
|
-
let aEvIx = appendMask[7] === '1' ? modeIx + 1 : modeIx
|
|
586
|
-
let pressIx = aEvIx + parseInt(appendMask[6])
|
|
587
|
-
let timeIx = pressIx + parseInt(appendMask[5])
|
|
588
|
-
let eTmpIx = timeIx + parseInt(appendMask[4])
|
|
589
|
-
let magIx = eTmpIx + parseInt(appendMask[3])
|
|
590
|
-
let aBatpIx =
|
|
591
|
-
appendMask[3] === '1' ? magIx + 2 + parseInt(appendMask[2]) : eTmpIx
|
|
592
|
-
let relIx = aBatpIx + parseInt(appendMask[1])
|
|
593
|
-
|
|
594
|
-
btDevices.push({
|
|
595
|
-
index: parsedData[cnt],
|
|
596
|
-
type: utils.bluetoothAccessories[parsedData[cnt + 1]],
|
|
597
|
-
model:
|
|
598
|
-
parsedData[cnt + 2] !== ''
|
|
599
|
-
? utils.bluetoothModels[parsedData[cnt + 1]][parsedData[cnt + 2]]
|
|
600
|
-
: utils.bluetoothAccessories[parsedData[cnt + 1]],
|
|
601
|
-
appendMask: parsedData[cnt + 4],
|
|
602
|
-
name:
|
|
603
|
-
parsedData[aNameIx] !== '' && appendMask[15] === '1'
|
|
604
|
-
? parsedData[aNameIx]
|
|
605
|
-
: null,
|
|
606
|
-
mac:
|
|
607
|
-
parsedData[aMacIx] !== '' && appendMask[14] === '1'
|
|
608
|
-
? parsedData[aMacIx]
|
|
609
|
-
: null,
|
|
610
|
-
status:
|
|
611
|
-
parsedData[aStatIx] !== '' && appendMask[13] === '1'
|
|
612
|
-
? parseInt(parsedData[aStatIx])
|
|
613
|
-
: null,
|
|
614
|
-
batteryLevel:
|
|
615
|
-
parsedData[aBatIx] !== '' && appendMask[12] === '1'
|
|
616
|
-
? parseInt(parsedData[aBatIx])
|
|
617
|
-
: null,
|
|
618
|
-
batteryPercentage:
|
|
619
|
-
parsedData[aBatpIx] !== '' && appendMask[2] === '1'
|
|
620
|
-
? parseFloat(parsedData[aBatpIx])
|
|
621
|
-
: null,
|
|
622
|
-
accessoryData: {
|
|
623
|
-
rawData: parsedData[cnt + 3] !== '' ? parsedData[cnt + 3] : null,
|
|
624
|
-
temperature:
|
|
625
|
-
parsedData[aTmpIx] !== '' && appendMask[11] === '1'
|
|
626
|
-
? parseInt(parsedData[aTmpIx])
|
|
627
|
-
: null,
|
|
628
|
-
humidity:
|
|
629
|
-
parsedData[aHumIx] !== '' && appendMask[10] === '1'
|
|
630
|
-
? parseInt(parsedData[aHumIx])
|
|
631
|
-
: null,
|
|
632
|
-
outputStatus:
|
|
633
|
-
parsedData[ioIx] !== '' && appendMask[8] === '1'
|
|
634
|
-
? parsedData[ioIx]
|
|
635
|
-
: null,
|
|
636
|
-
inputStatus:
|
|
637
|
-
parsedData[ioIx + 1] !== '' && appendMask[8] === '1'
|
|
638
|
-
? parsedData[ioIx + 1]
|
|
639
|
-
: null,
|
|
640
|
-
analogInputStatus:
|
|
641
|
-
parsedData[ioIx + 2] !== '' && appendMask[8] === '1'
|
|
642
|
-
? parsedData[ioIx + 2]
|
|
643
|
-
: null,
|
|
644
|
-
mode:
|
|
645
|
-
parsedData[modeIx] !== '' && appendMask[7] === '1'
|
|
646
|
-
? parseInt(parsedData[modeIx])
|
|
647
|
-
: null,
|
|
648
|
-
event:
|
|
649
|
-
parsedData[aEvIx] !== '' && appendMask[7] === '1'
|
|
650
|
-
? parseInt(parsedData[aEvIx])
|
|
651
|
-
: null,
|
|
652
|
-
tirePresure:
|
|
653
|
-
parsedData[pressIx] !== '' && appendMask[6] === '1'
|
|
654
|
-
? parseInt(parsedData[pressIx])
|
|
655
|
-
: null,
|
|
656
|
-
timestamp:
|
|
657
|
-
parsedData[timeIx] !== '' && appendMask[5] === '1'
|
|
658
|
-
? utils.parseDate(parsedData[timeIx])
|
|
659
|
-
: null,
|
|
660
|
-
enhancedTemperature:
|
|
661
|
-
parsedData[eTmpIx] !== '' && appendMask[4] === '1'
|
|
662
|
-
? parseFloat(parsedData[eTmpIx])
|
|
663
|
-
: null,
|
|
664
|
-
magDevice: {
|
|
665
|
-
id:
|
|
666
|
-
parsedData[magIx] !== '' && appendMask[3] === '1'
|
|
667
|
-
? parsedData[magIx]
|
|
668
|
-
: null,
|
|
669
|
-
eventCounter:
|
|
670
|
-
parsedData[magIx + 1] !== '' && appendMask[3] === '1'
|
|
671
|
-
? parseInt(parsedData[magIx + 1])
|
|
672
|
-
: null,
|
|
673
|
-
magnetState:
|
|
674
|
-
parsedData[magIx + 2] !== '' && appendMask[3] === '1'
|
|
675
|
-
? parseInt(parsedData[magIx + 2])
|
|
676
|
-
: null
|
|
677
|
-
},
|
|
678
|
-
relay: {
|
|
679
|
-
state:
|
|
680
|
-
parsedData[relIx] !== '' && appendMask[1] === '1'
|
|
681
|
-
? parseInt(parsedData[relIx])
|
|
682
|
-
: null
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
})
|
|
686
|
-
cnt = appendMask[1] === '1' ? relIx + 1 : relIx + 2
|
|
687
|
-
}
|
|
592
|
+
let btDevices = utils.getBleData(parsedData, btIndex)
|
|
688
593
|
externalData = Object.assign(externalData, {
|
|
689
594
|
btDevices: btDevices
|
|
690
595
|
})
|
|
@@ -2097,18 +2002,18 @@ const parse = raw => {
|
|
|
2097
2002
|
let aTmpIx = aBatIx + parseInt(appendMask[11])
|
|
2098
2003
|
let aHumIx = aTmpIx + parseInt(appendMask[10])
|
|
2099
2004
|
let ioIx = aHumIx + parseInt(appendMask[8])
|
|
2100
|
-
let
|
|
2101
|
-
|
|
2102
|
-
let
|
|
2103
|
-
|
|
2005
|
+
let aEvIx = appendMask[8] === '1' && appendMask[7] === '1'
|
|
2006
|
+
? ioIx + 3 : ioIx + parseInt(appendMask[7])
|
|
2007
|
+
let pressIx = appendMask[7] === '1' && appendMask[6] === '1'
|
|
2008
|
+
? aEvIx + 2 : aEvIx + parseInt(appendMask[6])
|
|
2104
2009
|
let timeIx = pressIx + parseInt(appendMask[5])
|
|
2105
2010
|
let eTmpIx = timeIx + parseInt(appendMask[4])
|
|
2106
2011
|
let magIx = eTmpIx + parseInt(appendMask[3])
|
|
2107
|
-
let aBatpIx =
|
|
2108
|
-
|
|
2012
|
+
let aBatpIx = appendMask[3] === '1' && appendMask[2] === '1'
|
|
2013
|
+
? magIx + 3 : magIx + parseInt(appendMask[2])
|
|
2109
2014
|
let relIx = aBatpIx + parseInt(appendMask[1])
|
|
2110
2015
|
|
|
2111
|
-
let newIndex =
|
|
2016
|
+
let newIndex = relIx + 1 + parseInt(appendMask[1])
|
|
2112
2017
|
let satIndex = newIndex + 11
|
|
2113
2018
|
|
|
2114
2019
|
// If get satellites is configured
|
|
@@ -2117,8 +2022,87 @@ const parse = raw => {
|
|
|
2117
2022
|
satelliteInfo = true
|
|
2118
2023
|
}
|
|
2119
2024
|
|
|
2025
|
+
let bleInfo = {
|
|
2026
|
+
accesory:
|
|
2027
|
+
btAccessory !== '' ? utils.bluetoothAccessories[btAccessory] : null,
|
|
2028
|
+
model: parsedData[6] !== '' ? parseInt(parsedData[6]) : null,
|
|
2029
|
+
name:
|
|
2030
|
+
parsedData[aNameIx] !== '' && appendMask[15] === '1'
|
|
2031
|
+
? parsedData[aNameIx]
|
|
2032
|
+
: null,
|
|
2033
|
+
role: null,
|
|
2034
|
+
type: null,
|
|
2035
|
+
mac:
|
|
2036
|
+
parsedData[aMacIx] !== '' && appendMask[14] === '1'
|
|
2037
|
+
? parsedData[aMacIx]
|
|
2038
|
+
: null,
|
|
2039
|
+
status:
|
|
2040
|
+
parsedData[aStatIx] !== '' && appendMask[13] === '1'
|
|
2041
|
+
? parseInt(parsedData[aStatIx])
|
|
2042
|
+
: null,
|
|
2043
|
+
batteryLevel:
|
|
2044
|
+
parsedData[aBatIx] !== '' && appendMask[12] === '1'
|
|
2045
|
+
? parseInt(parsedData[aBatIx])
|
|
2046
|
+
: null,
|
|
2047
|
+
batteryPercentage:
|
|
2048
|
+
parsedData[aBatpIx] !== '' && appendMask[2] === '1'
|
|
2049
|
+
? parseFloat(parsedData[aBatpIx])
|
|
2050
|
+
: null
|
|
2051
|
+
}
|
|
2052
|
+
|
|
2053
|
+
let bleData = {
|
|
2054
|
+
temperature:
|
|
2055
|
+
parsedData[aTmpIx] !== '' && appendMask[11] === '1'
|
|
2056
|
+
? parseInt(parsedData[aTmpIx])
|
|
2057
|
+
: null,
|
|
2058
|
+
humidity:
|
|
2059
|
+
parsedData[aHumIx] !== '' && appendMask[10] === '1'
|
|
2060
|
+
? parseInt(parsedData[aHumIx])
|
|
2061
|
+
: null,
|
|
2062
|
+
event:
|
|
2063
|
+
parsedData[aEvIx] !== '' && appendMask[7] === '1'
|
|
2064
|
+
? parseInt(parsedData[aEvIx])
|
|
2065
|
+
: null,
|
|
2066
|
+
tirePresure:
|
|
2067
|
+
parsedData[pressIx] !== '' && appendMask[6] === '1'
|
|
2068
|
+
? parseInt(parsedData[pressIx]) / 6.895
|
|
2069
|
+
: null,
|
|
2070
|
+
timestamp:
|
|
2071
|
+
parsedData[timeIx] !== '' && appendMask[5] === '1'
|
|
2072
|
+
? utils.parseDate(parsedData[timeIx])
|
|
2073
|
+
: null,
|
|
2074
|
+
enhancedTemperature:
|
|
2075
|
+
parsedData[eTmpIx] !== '' && appendMask[4] === '1'
|
|
2076
|
+
? parseFloat(parsedData[eTmpIx])
|
|
2077
|
+
: null,
|
|
2078
|
+
magDevice: {
|
|
2079
|
+
id:
|
|
2080
|
+
parsedData[magIx] !== '' && appendMask[3] === '1'
|
|
2081
|
+
? parsedData[magIx]
|
|
2082
|
+
: null,
|
|
2083
|
+
eventCounter:
|
|
2084
|
+
parsedData[magIx + 1] !== '' && appendMask[3] === '1'
|
|
2085
|
+
? parseInt(parsedData[magIx + 1])
|
|
2086
|
+
: null,
|
|
2087
|
+
magnetState:
|
|
2088
|
+
parsedData[magIx + 2] !== '' && appendMask[3] === '1'
|
|
2089
|
+
? parseInt(parsedData[magIx + 2])
|
|
2090
|
+
: null
|
|
2091
|
+
},
|
|
2092
|
+
relay: {
|
|
2093
|
+
configResult:
|
|
2094
|
+
parsedData[relIx] !== '' && appendMask[1] === '1'
|
|
2095
|
+
? utils.relayBLEResults[parsedData[relIx]]
|
|
2096
|
+
: null,
|
|
2097
|
+
state:
|
|
2098
|
+
parsedData[relIx + 1] !== '' && appendMask[1] === '1'
|
|
2099
|
+
? parseInt(parsedData[relIx + 1])
|
|
2100
|
+
: null
|
|
2101
|
+
}
|
|
2102
|
+
}
|
|
2103
|
+
|
|
2120
2104
|
data = Object.assign(data, {
|
|
2121
|
-
alarm: utils.getAlarm(command[1], parsedData[7],
|
|
2105
|
+
alarm: utils.getAlarm(command[1], parsedData[7], [parsedData[4], bleInfo.mac, bleData]),
|
|
2122
2106
|
loc: {
|
|
2123
2107
|
type: 'Point',
|
|
2124
2108
|
coordinates: [
|
|
@@ -2191,87 +2175,8 @@ const parse = raw => {
|
|
|
2191
2175
|
? parsedData[aMacIx]
|
|
2192
2176
|
: null
|
|
2193
2177
|
},
|
|
2194
|
-
accessoryInfo:
|
|
2195
|
-
|
|
2196
|
-
btAccessory !== '' ? utils.bluetoothAccessories[btAccessory] : null,
|
|
2197
|
-
model: parsedData[6] !== '' ? parseInt(parsedData[6]) : null,
|
|
2198
|
-
name:
|
|
2199
|
-
parsedData[aNameIx] !== '' && appendMask[15] === '1'
|
|
2200
|
-
? parsedData[aNameIx]
|
|
2201
|
-
: null,
|
|
2202
|
-
role: null,
|
|
2203
|
-
type: null,
|
|
2204
|
-
mac:
|
|
2205
|
-
parsedData[aMacIx] !== '' && appendMask[14] === '1'
|
|
2206
|
-
? parsedData[aMacIx]
|
|
2207
|
-
: null,
|
|
2208
|
-
status:
|
|
2209
|
-
parsedData[aStatIx] !== '' && appendMask[13] === '1'
|
|
2210
|
-
? parseInt(parsedData[aStatIx])
|
|
2211
|
-
: null,
|
|
2212
|
-
batteryLevel:
|
|
2213
|
-
parsedData[aBatIx] !== '' && appendMask[12] === '1'
|
|
2214
|
-
? parseInt(parsedData[aBatIx])
|
|
2215
|
-
: null,
|
|
2216
|
-
batteryPercentage:
|
|
2217
|
-
parsedData[aBatpIx] !== '' && appendMask[2] === '1'
|
|
2218
|
-
? parseFloat(parsedData[aBatpIx])
|
|
2219
|
-
: null
|
|
2220
|
-
},
|
|
2221
|
-
accessoryData: {
|
|
2222
|
-
temperature:
|
|
2223
|
-
parsedData[aTmpIx] !== '' && appendMask[11] === '1'
|
|
2224
|
-
? parseInt(parsedData[aTmpIx])
|
|
2225
|
-
: null,
|
|
2226
|
-
humidity:
|
|
2227
|
-
parsedData[aHumIx] !== '' && appendMask[10] === '1'
|
|
2228
|
-
? parseInt(parsedData[aHumIx])
|
|
2229
|
-
: null,
|
|
2230
|
-
mode:
|
|
2231
|
-
parsedData[modeIx] !== '' && appendMask[7] === '1'
|
|
2232
|
-
? parseInt(parsedData[modeIx])
|
|
2233
|
-
: null,
|
|
2234
|
-
event:
|
|
2235
|
-
parsedData[aEvIx] !== '' && appendMask[7] === '1'
|
|
2236
|
-
? parseInt(parsedData[aEvIx])
|
|
2237
|
-
: null,
|
|
2238
|
-
tirePresure:
|
|
2239
|
-
parsedData[pressIx] !== '' && appendMask[6] === '1'
|
|
2240
|
-
? parseInt(parsedData[pressIx])
|
|
2241
|
-
: null,
|
|
2242
|
-
timestamp:
|
|
2243
|
-
parsedData[timeIx] !== '' && appendMask[5] === '1'
|
|
2244
|
-
? utils.parseDate(parsedData[timeIx])
|
|
2245
|
-
: null,
|
|
2246
|
-
enhancedTemperature:
|
|
2247
|
-
parsedData[eTmpIx] !== '' && appendMask[4] === '1'
|
|
2248
|
-
? parseFloat(parsedData[eTmpIx])
|
|
2249
|
-
: null,
|
|
2250
|
-
magDevice: {
|
|
2251
|
-
id:
|
|
2252
|
-
parsedData[magIx] !== '' && appendMask[3] === '1'
|
|
2253
|
-
? parsedData[magIx]
|
|
2254
|
-
: null,
|
|
2255
|
-
eventCounter:
|
|
2256
|
-
parsedData[magIx + 1] !== '' && appendMask[3] === '1'
|
|
2257
|
-
? parseInt(parsedData[magIx + 1])
|
|
2258
|
-
: null,
|
|
2259
|
-
magnetState:
|
|
2260
|
-
parsedData[magIx + 2] !== '' && appendMask[3] === '1'
|
|
2261
|
-
? parseInt(parsedData[magIx + 2])
|
|
2262
|
-
: null
|
|
2263
|
-
},
|
|
2264
|
-
relay: {
|
|
2265
|
-
configResult:
|
|
2266
|
-
parsedData[relIx] !== '' && appendMask[1] === '1'
|
|
2267
|
-
? parseInt(parsedData[relIx])
|
|
2268
|
-
: null,
|
|
2269
|
-
state:
|
|
2270
|
-
parsedData[relIx + 1] !== '' && appendMask[1] === '1'
|
|
2271
|
-
? parseInt(parsedData[relIx + 1])
|
|
2272
|
-
: null
|
|
2273
|
-
}
|
|
2274
|
-
}
|
|
2178
|
+
accessoryInfo: bleInfo,
|
|
2179
|
+
accessoryData: bleData
|
|
2275
2180
|
}
|
|
2276
2181
|
})
|
|
2277
2182
|
} else if (command[1] === 'GTBID') {
|
|
@@ -2655,12 +2560,12 @@ const parse = raw => {
|
|
|
2655
2560
|
raw: parsedData[5] !== '' ? parsedData[5] : null,
|
|
2656
2561
|
oilLevelLowIndicator: alarmMask1 ? alarmMask1[28] === '1' : null,
|
|
2657
2562
|
serviceCallIndicator: alarmMask1 ? alarmMask1[27] === '1' : null,
|
|
2658
|
-
|
|
2563
|
+
airbagsIndicator: alarmMask1 ? alarmMask1[26] === '1' : null,
|
|
2659
2564
|
checkEngineIndicator: alarmMask1 ? alarmMask1[25] === '1' : null,
|
|
2660
2565
|
ABSFailureIndicator: alarmMask1 ? alarmMask1[23] === '1' : null,
|
|
2661
2566
|
engineHotIndicator: alarmMask1 ? alarmMask1[22] === '1' : null,
|
|
2662
2567
|
oilPressureIndicator: alarmMask1 ? alarmMask1[21] === '1' : null,
|
|
2663
|
-
|
|
2568
|
+
brakeSystemFailureIndicator: alarmMask1
|
|
2664
2569
|
? alarmMask1[20] === '1'
|
|
2665
2570
|
: null,
|
|
2666
2571
|
batteryIndicator: alarmMask1 ? alarmMask1[19] === '1' : null,
|
|
@@ -2885,14 +2790,14 @@ const parse = raw => {
|
|
|
2885
2790
|
? expansionBin[2] === '1'
|
|
2886
2791
|
: null,
|
|
2887
2792
|
batteryIndicator: expansionBin ? expansionBin[3] === '1' : null,
|
|
2888
|
-
|
|
2793
|
+
brakeSystemFailureIndicator: expansionBin
|
|
2889
2794
|
? expansionBin[4] === '1'
|
|
2890
2795
|
: null,
|
|
2891
2796
|
oilPressureIndicator: expansionBin ? expansionBin[5] === '1' : null,
|
|
2892
2797
|
engineHotIndicator: expansionBin ? expansionBin[6] === '1' : null,
|
|
2893
2798
|
ABSFailureIndicator: expansionBin ? expansionBin[7] === '1' : null,
|
|
2894
2799
|
checkEngineIndicator: expansionBin ? expansionBin[9] === '1' : null,
|
|
2895
|
-
|
|
2800
|
+
airbagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
|
|
2896
2801
|
serviceCallIndicator: expansionBin
|
|
2897
2802
|
? expansionBin[11] === '1'
|
|
2898
2803
|
: null,
|
package/src/gv57cg.js
CHANGED
|
@@ -2025,12 +2025,12 @@ const parse = raw => {
|
|
|
2025
2025
|
raw: parsedData[5] !== '' ? parsedData[5] : null,
|
|
2026
2026
|
oilLevelLowIndicator: alarmMask1 ? alarmMask1[28] === '1' : null,
|
|
2027
2027
|
serviceCallIndicator: alarmMask1 ? alarmMask1[27] === '1' : null,
|
|
2028
|
-
|
|
2028
|
+
airbagsIndicator: alarmMask1 ? alarmMask1[26] === '1' : null,
|
|
2029
2029
|
checkEngineIndicator: alarmMask1 ? alarmMask1[25] === '1' : null,
|
|
2030
2030
|
ABSFailureIndicator: alarmMask1 ? alarmMask1[23] === '1' : null,
|
|
2031
2031
|
engineHotIndicator: alarmMask1 ? alarmMask1[22] === '1' : null,
|
|
2032
2032
|
oilPressureIndicator: alarmMask1 ? alarmMask1[21] === '1' : null,
|
|
2033
|
-
|
|
2033
|
+
brakeSystemFailureIndicator: alarmMask1
|
|
2034
2034
|
? alarmMask1[20] === '1'
|
|
2035
2035
|
: null,
|
|
2036
2036
|
batteryIndicator: alarmMask1 ? alarmMask1[19] === '1' : null,
|
|
@@ -2255,14 +2255,14 @@ const parse = raw => {
|
|
|
2255
2255
|
? expansionBin[2] === '1'
|
|
2256
2256
|
: null,
|
|
2257
2257
|
batteryIndicator: expansionBin ? expansionBin[3] === '1' : null,
|
|
2258
|
-
|
|
2258
|
+
brakeSystemFailureIndicator: expansionBin
|
|
2259
2259
|
? expansionBin[4] === '1'
|
|
2260
2260
|
: null,
|
|
2261
2261
|
oilPressureIndicator: expansionBin ? expansionBin[5] === '1' : null,
|
|
2262
2262
|
engineHotIndicator: expansionBin ? expansionBin[6] === '1' : null,
|
|
2263
2263
|
ABSFailureIndicator: expansionBin ? expansionBin[7] === '1' : null,
|
|
2264
2264
|
checkEngineIndicator: expansionBin ? expansionBin[9] === '1' : null,
|
|
2265
|
-
|
|
2265
|
+
airbagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
|
|
2266
2266
|
serviceCallIndicator: expansionBin
|
|
2267
2267
|
? expansionBin[11] === '1'
|
|
2268
2268
|
: null,
|