mclimate-payload-helper 1.2.3 → 1.2.4

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.
Files changed (75) hide show
  1. package/dist/decoders/commandsReadingHelper.d.ts.map +1 -1
  2. package/dist/decoders/commandsReadingHelper.js +124 -44
  3. package/dist/decoders/commandsReadingHelper.js.map +1 -1
  4. package/dist/decoders/payloadParsers/index.d.ts +1 -0
  5. package/dist/decoders/payloadParsers/index.d.ts.map +1 -1
  6. package/dist/decoders/payloadParsers/index.js +1 -0
  7. package/dist/decoders/payloadParsers/index.js.map +1 -1
  8. package/dist/decoders/payloadParsers/multisensorPayloadParser.d.ts +2 -0
  9. package/dist/decoders/payloadParsers/multisensorPayloadParser.d.ts.map +1 -0
  10. package/dist/decoders/payloadParsers/multisensorPayloadParser.js +96 -0
  11. package/dist/decoders/payloadParsers/multisensorPayloadParser.js.map +1 -0
  12. package/dist/decoders/payloadParsers/types/allDevices.d.ts +2 -1
  13. package/dist/decoders/payloadParsers/types/allDevices.d.ts.map +1 -1
  14. package/dist/decoders/payloadParsers/types/allDevices.js +1 -0
  15. package/dist/decoders/payloadParsers/types/allDevices.js.map +1 -1
  16. package/dist/encoders/Co2DisplayCommonCommands.d.ts +0 -4
  17. package/dist/encoders/Co2DisplayCommonCommands.d.ts.map +1 -1
  18. package/dist/encoders/Co2DisplayCommonCommands.js +0 -38
  19. package/dist/encoders/Co2DisplayCommonCommands.js.map +1 -1
  20. package/dist/encoders/CommandBuilder.d.ts.map +1 -1
  21. package/dist/encoders/CommandBuilder.js +1 -0
  22. package/dist/encoders/CommandBuilder.js.map +1 -1
  23. package/dist/encoders/FanCoilThermostat.d.ts +61 -0
  24. package/dist/encoders/FanCoilThermostat.d.ts.map +1 -0
  25. package/dist/encoders/FanCoilThermostat.js +719 -0
  26. package/dist/encoders/FanCoilThermostat.js.map +1 -0
  27. package/dist/encoders/MultiSensorCommands.d.ts +25 -0
  28. package/dist/encoders/MultiSensorCommands.d.ts.map +1 -0
  29. package/dist/encoders/MultiSensorCommands.js +256 -0
  30. package/dist/encoders/MultiSensorCommands.js.map +1 -0
  31. package/dist/encoders/SetAqiLed.d.ts +6 -0
  32. package/dist/encoders/SetAqiLed.d.ts.map +1 -0
  33. package/dist/encoders/SetAqiLed.js +46 -0
  34. package/dist/encoders/SetAqiLed.js.map +1 -0
  35. package/dist/encoders/index.d.ts +1 -0
  36. package/dist/encoders/index.d.ts.map +1 -1
  37. package/dist/encoders/index.js +1 -0
  38. package/dist/encoders/index.js.map +1 -1
  39. package/dist/encoders/types/enumValidation.d.ts +6 -0
  40. package/dist/encoders/types/enumValidation.d.ts.map +1 -0
  41. package/dist/encoders/types/enumValidation.js +50 -0
  42. package/dist/encoders/types/enumValidation.js.map +1 -0
  43. package/dist/encoders/types/schemaValidatedEnums.d.ts +40 -0
  44. package/dist/encoders/types/schemaValidatedEnums.d.ts.map +1 -0
  45. package/dist/encoders/types/schemaValidatedEnums.js +181 -0
  46. package/dist/encoders/types/schemaValidatedEnums.js.map +1 -0
  47. package/dist/encoders/types/schemas.d.ts +247 -0
  48. package/dist/encoders/types/schemas.d.ts.map +1 -1
  49. package/dist/encoders/types/schemas.js +24 -3
  50. package/dist/encoders/types/schemas.js.map +1 -1
  51. package/dist/types/deviceTypes.d.ts +19 -0
  52. package/dist/types/deviceTypes.d.ts.map +1 -0
  53. package/dist/types/deviceTypes.js +23 -0
  54. package/dist/types/deviceTypes.js.map +1 -0
  55. package/dist/types/index.d.ts +2 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/dist/types/index.js +18 -0
  58. package/dist/types/index.js.map +1 -0
  59. package/dist/types/types.d.ts +13 -0
  60. package/dist/types/types.d.ts.map +1 -0
  61. package/dist/types/types.js +9 -0
  62. package/dist/types/types.js.map +1 -0
  63. package/dist/validation.d.ts +3 -0
  64. package/dist/validation.d.ts.map +1 -0
  65. package/dist/validation.js +8 -0
  66. package/dist/validation.js.map +1 -0
  67. package/package.json +1 -1
  68. package/src/decoders/commandsReadingHelper.ts +283 -204
  69. package/src/decoders/payloadParsers/index.ts +1 -1
  70. package/src/decoders/payloadParsers/multisensorPayloadParser.ts +97 -0
  71. package/src/decoders/payloadParsers/types/allDevices.ts +1 -0
  72. package/src/encoders/CommandBuilder.ts +2 -0
  73. package/src/encoders/MultiSensorCommands.ts +253 -0
  74. package/src/encoders/index.ts +1 -0
  75. package/src/encoders/types/schemas.ts +62 -9
@@ -1 +1 @@
1
- {"version":3,"file":"commandsReadingHelper.d.ts","sourceRoot":"","sources":["../../src/decoders/commandsReadingHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,eAAO,MAAM,qBAAqB,YAAa,MAAM,iBAAiB,MAAM,cAAc,UAAU,mBA+oFnG,CAAA"}
1
+ {"version":3,"file":"commandsReadingHelper.d.ts","sourceRoot":"","sources":["../../src/decoders/commandsReadingHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,eAAO,MAAM,qBAAqB,YAAa,MAAM,iBAAiB,MAAM,cAAc,UAAU,mBA8tFnG,CAAA"}
@@ -21,6 +21,9 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
21
21
  else if ((potentialKeepAlive[0] === '00' || potentialKeepAlive[0] === '88') && deviceType === types_1.DeviceType.TFlood) {
22
22
  decodeKeepalive = true;
23
23
  }
24
+ else if (potentialKeepAlive[0] === '82' && deviceType === types_1.DeviceType.MultiSensor) {
25
+ decodeKeepalive = true;
26
+ }
24
27
  else if ((potentialKeepAlive[0] === '01' || potentialKeepAlive[0] === '20' || potentialKeepAlive[0] === '21') &&
25
28
  deviceType === types_1.DeviceType.OpenCloseSensor) {
26
29
  decodeKeepalive = true;
@@ -240,15 +243,16 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
240
243
  const address = (bufferOffsetMSB << 8) | bufferOffsetLSB;
241
244
  // The rest is IR code data
242
245
  let irCodeDataString = '';
243
- for (let j = 4; j < 4 + bytesCount - 2; j++) { // -2 to account for the offset bytes
246
+ for (let j = 4; j < 4 + bytesCount - 2; j++) {
247
+ // -2 to account for the offset bytes
244
248
  irCodeDataString += commands[i + j];
245
249
  }
246
250
  data = {
247
251
  irCodeData: {
248
252
  bytesCount: bytesCount - 2,
249
253
  address,
250
- data: irCodeDataString
251
- }
254
+ data: irCodeDataString,
255
+ },
252
256
  };
253
257
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
254
258
  }
@@ -638,6 +642,11 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
638
642
  };
639
643
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
640
644
  }
645
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
646
+ command_len = 1;
647
+ let data = { lightEnabled: parseInt(commands[i + 1], 16) === 1 };
648
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
649
+ }
641
650
  else {
642
651
  command_len = 4;
643
652
  let good_medium = parseInt(`${commands[i + 1]}${commands[i + 2]}`, 16);
@@ -681,6 +690,11 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
681
690
  };
682
691
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
683
692
  }
693
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
694
+ command_len = 1;
695
+ let data = { hallEnabled: parseInt(commands[i + 1], 16) === 1 };
696
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
697
+ }
684
698
  else if (deviceType !== types_1.DeviceType.OpenCloseSensor) {
685
699
  command_len = 2;
686
700
  let data = { autoZeroValue: parseInt(`${commands[i + 1]}${commands[i + 2]}`, 16) };
@@ -742,6 +756,11 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
742
756
  let data = { overcurrentThreshold: parseInt(commands[i + 1], 16) };
743
757
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
744
758
  }
759
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
760
+ command_len = 2;
761
+ let data = { hallBlindPeriod: (parseInt(commands[i + 1], 16) << 8) | parseInt(commands[i + 2], 16) };
762
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
763
+ }
745
764
  else {
746
765
  command_len = 3;
747
766
  let good_zone = parseInt(commands[i + 1], 16);
@@ -767,7 +786,7 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
767
786
  case '25':
768
787
  {
769
788
  try {
770
- let data = {};
789
+ let data;
771
790
  if (deviceType == types_1.DeviceType.Relay16) {
772
791
  command_len = 2;
773
792
  data = { overpowerThreshold: (parseInt(commands[i + 1], 16) << 8) | parseInt(commands[i + 2], 16) };
@@ -811,6 +830,11 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
811
830
  },
812
831
  };
813
832
  }
833
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
834
+ command_len = 1;
835
+ data = { microphoneEnabled: parseInt(commands[i + 1], 16) === 1 };
836
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
837
+ }
814
838
  else {
815
839
  command_len = 3;
816
840
  let good_zone = parseInt(commands[i + 1], 16);
@@ -823,8 +847,8 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
823
847
  bad_zone: Number(bad_zone),
824
848
  },
825
849
  };
850
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
826
851
  }
827
- Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
828
852
  }
829
853
  catch (e) {
830
854
  throw new utils_1.CustomError({
@@ -845,6 +869,13 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
845
869
  let data = { OVAC: parseInt(commands[i + 1], 16) };
846
870
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
847
871
  }
872
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
873
+ command_len = 2;
874
+ let data = {
875
+ microphoneSamplingPeriod: (parseInt(commands[i + 1], 16) << 8) | parseInt(commands[i + 2], 16),
876
+ };
877
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
878
+ }
848
879
  else {
849
880
  command_len = 9;
850
881
  let duration_good_beeping = parseInt(commands[i + 1], 16);
@@ -900,6 +931,11 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
900
931
  let data = { proportionalAlgorithmParameters: { coefficient: Number(coefficient), period: Number(period) } };
901
932
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
902
933
  }
934
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
935
+ command_len = 1;
936
+ let data = { gasEnabled: parseInt(commands[i + 1], 16) === 1 };
937
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
938
+ }
903
939
  else {
904
940
  command_len = 15;
905
941
  let red_good = parseInt(commands[i + 1], 16);
@@ -964,6 +1000,11 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
964
1000
  let data = { temperatureControlAlgorithm: algo };
965
1001
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
966
1002
  }
1003
+ else if (deviceType === types_1.DeviceType.MultiSensor) {
1004
+ command_len = 1;
1005
+ let data = { gasMeasurementPeriodMinutes: parseInt(commands[i + 1], 16) };
1006
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
1007
+ }
967
1008
  else {
968
1009
  command_len = 1;
969
1010
  let data = { autoZeroPeriod: parseInt(commands[i + 1], 16) };
@@ -981,11 +1022,36 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
981
1022
  }
982
1023
  }
983
1024
  break;
1025
+ case '2d':
1026
+ {
1027
+ try {
1028
+ if (deviceType === types_1.DeviceType.MultiSensor) {
1029
+ command_len = 1;
1030
+ let data = { pirEnabled: parseInt(commands[i + 1], 16) === 1 };
1031
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
1032
+ }
1033
+ }
1034
+ catch (e) {
1035
+ throw new utils_1.CustomError({
1036
+ message: `Failed to process command '2d'`,
1037
+ hexData,
1038
+ command,
1039
+ deviceType,
1040
+ originalError: e,
1041
+ });
1042
+ }
1043
+ }
1044
+ break;
984
1045
  case '2f':
985
1046
  {
986
1047
  try {
987
1048
  let data;
988
- if (deviceType === types_1.DeviceType.CO2DisplayLite ||
1049
+ if (deviceType === types_1.DeviceType.MultiSensor) {
1050
+ command_len = 2;
1051
+ data = { pirBlindPeriod: (parseInt(commands[i + 1], 16) << 8) | parseInt(commands[i + 2], 16) };
1052
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
1053
+ }
1054
+ else if (deviceType === types_1.DeviceType.CO2DisplayLite ||
989
1055
  deviceType === types_1.DeviceType.CO2PirLite ||
990
1056
  deviceType === types_1.DeviceType.HTPirLite) {
991
1057
  command_len = 1;
@@ -1035,6 +1101,24 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
1035
1101
  }
1036
1102
  }
1037
1103
  break;
1104
+ case 'a4':
1105
+ {
1106
+ try {
1107
+ command_len = 1;
1108
+ let data = { region: parseInt(commands[i + 1], 16) };
1109
+ Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
1110
+ }
1111
+ catch (e) {
1112
+ throw new utils_1.CustomError({
1113
+ message: `Failed to process command 'a4'`,
1114
+ hexData,
1115
+ command,
1116
+ deviceType,
1117
+ originalError: e,
1118
+ });
1119
+ }
1120
+ }
1121
+ break;
1038
1122
  case '32':
1039
1123
  {
1040
1124
  try {
@@ -1749,8 +1833,8 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
1749
1833
  data = {
1750
1834
  notifications: {
1751
1835
  temperatureRestoredAfterManualBoost: temperatureRestoredAfterManualBoost,
1752
- temperatureChangedByHeatingSchedule: temperatureChangedByHeatingSchedule
1753
- }
1836
+ temperatureChangedByHeatingSchedule: temperatureChangedByHeatingSchedule,
1837
+ },
1754
1838
  };
1755
1839
  }
1756
1840
  else {
@@ -1882,7 +1966,7 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
1882
1966
  else if (deviceType === types_1.DeviceType.Vicki) {
1883
1967
  command_len = 1;
1884
1968
  let offsetByte = parseInt(commands[i + 1], 16);
1885
- let offsetHours = (offsetByte & 0x80) ? (offsetByte - 256) : offsetByte;
1969
+ let offsetHours = offsetByte & 0x80 ? offsetByte - 256 : offsetByte;
1886
1970
  data = { deviceTimeZone: offsetHours };
1887
1971
  }
1888
1972
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
@@ -2494,24 +2578,6 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2494
2578
  }
2495
2579
  }
2496
2580
  break;
2497
- case 'a4':
2498
- {
2499
- try {
2500
- command_len = 1;
2501
- let data = { region: parseInt(commands[i + 1], 16) };
2502
- Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2503
- }
2504
- catch (e) {
2505
- throw new utils_1.CustomError({
2506
- message: `Failed to process command 'a4'`,
2507
- hexData,
2508
- command,
2509
- deviceType,
2510
- originalError: e,
2511
- });
2512
- }
2513
- }
2514
- break;
2515
2581
  case 'a6':
2516
2582
  {
2517
2583
  try {
@@ -2544,10 +2610,10 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2544
2610
  let eventGroupIndex = ['0-7', '8-15', '16-19'];
2545
2611
  let heatingEvents = [];
2546
2612
  // Process up to 8 events for groups 0 and 1, but only 4 events for group 2
2547
- let eventsToProcess = (eventsGroup === 2) ? 4 : 8;
2613
+ let eventsToProcess = eventsGroup === 2 ? 4 : 8;
2548
2614
  for (let eventIdx = 0; eventIdx < eventsToProcess; eventIdx++) {
2549
2615
  // Each event takes 5 bytes (hour, minute, temp high, temp low, weekday bitmask)
2550
- let offset = i + 2 + (eventIdx * 5);
2616
+ let offset = i + 2 + eventIdx * 5;
2551
2617
  // Check if this event is configured
2552
2618
  // Make sure we have valid values at this offset
2553
2619
  if (offset >= commands.length || offset + 4 >= commands.length) {
@@ -2559,12 +2625,16 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2559
2625
  let tempLow = parseInt(commands[offset + 3], 16);
2560
2626
  let weekdayByte = parseInt(commands[offset + 4], 16);
2561
2627
  // Skip events that are not configured (zeros or NaN values)
2562
- if (isNaN(hour) || isNaN(minute) || isNaN(tempHigh) || isNaN(tempLow) || isNaN(weekdayByte) ||
2628
+ if (isNaN(hour) ||
2629
+ isNaN(minute) ||
2630
+ isNaN(tempHigh) ||
2631
+ isNaN(tempLow) ||
2632
+ isNaN(weekdayByte) ||
2563
2633
  (hour === 0 && minute === 0 && tempHigh === 0 && tempLow === 0 && weekdayByte === 0)) {
2564
2634
  continue;
2565
2635
  }
2566
2636
  // Calculate actual event index in the full range (0-23)
2567
- let globalEventIndex = (eventsGroup * 8) + eventIdx;
2637
+ let globalEventIndex = eventsGroup * 8 + eventIdx;
2568
2638
  // Decode weekday bitmask (bit 0=Mon, bit 1=Tue, bit 2=Wed, bit 3=Thu, bit 4=Fri, bit 5=Sat, bit 6=Sun)
2569
2639
  let weekdays = {
2570
2640
  monday: !!(weekdayByte & 0x01), // bit 0
@@ -2573,20 +2643,20 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2573
2643
  thursday: !!(weekdayByte & 0x08), // bit 3
2574
2644
  friday: !!(weekdayByte & 0x10), // bit 4
2575
2645
  saturday: !!(weekdayByte & 0x20), // bit 5
2576
- sunday: !!(weekdayByte & 0x40) // bit 6
2646
+ sunday: !!(weekdayByte & 0x40), // bit 6
2577
2647
  };
2578
2648
  // Create heating event object
2579
2649
  let heatingEvent = {
2580
2650
  index: globalEventIndex,
2581
2651
  start: (hour < 10 ? '0' + hour : hour) + ':' + (minute < 10 ? '0' + minute : minute),
2582
2652
  targetTemperature: ((tempHigh << 8) | tempLow) / 10,
2583
- weekdays: weekdays
2653
+ weekdays: weekdays,
2584
2654
  };
2585
2655
  heatingEvents.push(heatingEvent);
2586
2656
  }
2587
2657
  data = {
2588
2658
  heatingEventGroup: eventGroupIndex[eventsGroup],
2589
- heatingEvents: heatingEvents
2659
+ heatingEvents: heatingEvents,
2590
2660
  };
2591
2661
  }
2592
2662
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
@@ -2615,14 +2685,24 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2615
2685
  let endDay = parseInt(commands[i + 4], 16);
2616
2686
  // Convert to human-readable month names
2617
2687
  let monthNames = [
2618
- 'January', 'February', 'March', 'April', 'May', 'June',
2619
- 'July', 'August', 'September', 'October', 'November', 'December'
2688
+ 'January',
2689
+ 'February',
2690
+ 'March',
2691
+ 'April',
2692
+ 'May',
2693
+ 'June',
2694
+ 'July',
2695
+ 'August',
2696
+ 'September',
2697
+ 'October',
2698
+ 'November',
2699
+ 'December',
2620
2700
  ];
2621
2701
  data = {
2622
2702
  heatingSchedule: {
2623
2703
  start: startDay + ' ' + monthNames[startMonth],
2624
2704
  end: endDay + ' ' + monthNames[endMonth],
2625
- }
2705
+ },
2626
2706
  };
2627
2707
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2628
2708
  }
@@ -2657,7 +2737,7 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2657
2737
  let date = dateObj.getUTCDate() + '/' + (dateObj.getUTCMonth() + 1) + '/' + dateObj.getUTCFullYear();
2658
2738
  let time = dateObj.getUTCHours() + ':' + (dateObj.getUTCMinutes() < 10 ? '0' : '') + dateObj.getUTCMinutes();
2659
2739
  let data = {
2660
- deviceTime: "" + date + " " + time
2740
+ deviceTime: '' + date + ' ' + time,
2661
2741
  };
2662
2742
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2663
2743
  }
@@ -2679,7 +2759,7 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2679
2759
  let ledDurationValue = parseInt(commands[i + 1], 16);
2680
2760
  let durationInSeconds = ledDurationValue / 2; // As per the docs, value is divided by 2 to get seconds
2681
2761
  let data = {
2682
- ledIndicationDuration: durationInSeconds
2762
+ ledIndicationDuration: durationInSeconds,
2683
2763
  };
2684
2764
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2685
2765
  }
@@ -2702,7 +2782,7 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2702
2782
  let tempLow = parseInt(commands[i + 2], 16);
2703
2783
  let targetTemp = (tempHigh << 8) | tempLow;
2704
2784
  let data = {
2705
- offlineTargetTemperature: targetTemp === 0 ? 0 : targetTemp / 10
2785
+ offlineTargetTemperature: targetTemp === 0 ? 0 : targetTemp / 10,
2706
2786
  };
2707
2787
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2708
2788
  }
@@ -2742,14 +2822,14 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2742
2822
  let temperatureLevels = {};
2743
2823
  // Process 6 scale levels (0-5), each with a 2-byte temperature value
2744
2824
  for (let level = 0; level < 6; level++) {
2745
- let tempHighByte = parseInt(commands[i + 1 + (level * 2)], 16);
2746
- let tempLowByte = parseInt(commands[i + 2 + (level * 2)], 16);
2825
+ let tempHighByte = parseInt(commands[i + 1 + level * 2], 16);
2826
+ let tempLowByte = parseInt(commands[i + 2 + level * 2], 16);
2747
2827
  let tempValue = (tempHighByte << 8) | tempLowByte;
2748
2828
  // The temperature values are pre-multiplied by 10
2749
2829
  temperatureLevels['level' + level] = tempValue / 10;
2750
2830
  }
2751
2831
  let data = {
2752
- temperatureLevels: temperatureLevels
2832
+ temperatureLevels: temperatureLevels,
2753
2833
  };
2754
2834
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2755
2835
  }
@@ -2793,7 +2873,7 @@ const commandsReadingHelper = (hexData, payloadLength, deviceType) => {
2793
2873
  }
2794
2874
  }
2795
2875
  let data = {
2796
- heatingEventStates: heatingEventStates
2876
+ heatingEventStates: heatingEventStates,
2797
2877
  };
2798
2878
  Object.assign(resultToPass, Object.assign({}, resultToPass), Object.assign({}, data));
2799
2879
  }