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 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 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
-
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.�i7 Rn��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
- "imei": 864696060046190,
73
- "datetime": "2024-09-23T22:02:36.639Z",
74
- "instruction": "1_on",
75
- "action": "Cortar Corriente",
76
- "device": "queclink",
77
- "password": "gv58lau",
78
- "device_serie": "GV",
79
- "previousOutput": {
80
- "1": false,
81
- "2": false,
82
- "3": false
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(baaa)
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "queclink-parser",
3
- "version": "1.9.13",
3
+ "version": "1.9.15",
4
4
  "description": "Parse raw data from Queclink devices",
5
5
  "main": "src",
6
6
  "scripts": {
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 cnt = btIndex + 1
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 modeIx =
2101
- appendMask[8] === '1' ? ioIx + 2 + parseInt(appendMask[7]) : ioIx
2102
- let aEvIx = appendMask[7] === '1' ? modeIx + 1 : modeIx
2103
- let pressIx = aEvIx + parseInt(appendMask[6])
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
- appendMask[3] === '1' ? magIx + 2 + parseInt(appendMask[2]) : eTmpIx
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 = appendMask[1] === '1' ? relIx + 2 : relIx + 1
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], 'gv310lau'),
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
- accesory:
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
- aribagsIndicator: alarmMask1 ? alarmMask1[26] === '1' : null,
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
- brakeSystemaFailureIndicator: alarmMask1
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
- brakeSystemaFailureIndicator: expansionBin
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
- aribagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
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
- aribagsIndicator: alarmMask1 ? alarmMask1[26] === '1' : null,
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
- brakeSystemaFailureIndicator: alarmMask1
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
- brakeSystemaFailureIndicator: expansionBin
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
- aribagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
2265
+ airbagsIndicator: expansionBin ? expansionBin[10] === '1' : null,
2266
2266
  serviceCallIndicator: expansionBin
2267
2267
  ? expansionBin[11] === '1'
2268
2268
  : null,