mclimate-payload-helper 1.0.55 → 1.0.56

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 (55) hide show
  1. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.d.ts +2 -0
  2. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.d.ts.map +1 -0
  3. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.js +83 -0
  4. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.js.map +1 -0
  5. package/dist/decoders/payloadParsers/htPirLitePayloadParser.d.ts +2 -0
  6. package/dist/decoders/payloadParsers/htPirLitePayloadParser.d.ts.map +1 -0
  7. package/dist/decoders/payloadParsers/htPirLitePayloadParser.js +76 -0
  8. package/dist/decoders/payloadParsers/htPirLitePayloadParser.js.map +1 -0
  9. package/dist/decoders/payloadParsers/index.d.ts +2 -0
  10. package/dist/decoders/payloadParsers/index.d.ts.map +1 -1
  11. package/dist/decoders/payloadParsers/index.js +2 -0
  12. package/dist/decoders/payloadParsers/index.js.map +1 -1
  13. package/dist/decoders/payloadParsers/types/allDevices.d.ts +3 -1
  14. package/dist/decoders/payloadParsers/types/allDevices.d.ts.map +1 -1
  15. package/dist/decoders/payloadParsers/types/allDevices.js +2 -0
  16. package/dist/decoders/payloadParsers/types/allDevices.js.map +1 -1
  17. package/dist/decoders/payloadParsers/uplinkPayloadParser.d.ts.map +1 -1
  18. package/dist/decoders/payloadParsers/uplinkPayloadParser.js +4 -0
  19. package/dist/decoders/payloadParsers/uplinkPayloadParser.js.map +1 -1
  20. package/dist/encoders/Co2PirLiteCommands.d.ts +9 -0
  21. package/dist/encoders/Co2PirLiteCommands.d.ts.map +1 -0
  22. package/dist/encoders/Co2PirLiteCommands.js +58 -0
  23. package/dist/encoders/Co2PirLiteCommands.js.map +1 -0
  24. package/dist/encoders/CommandBuilder.d.ts.map +1 -1
  25. package/dist/encoders/CommandBuilder.js +2 -0
  26. package/dist/encoders/CommandBuilder.js.map +1 -1
  27. package/dist/encoders/HTPirLiteCommands.d.ts +9 -0
  28. package/dist/encoders/HTPirLiteCommands.d.ts.map +1 -0
  29. package/dist/encoders/HTPirLiteCommands.js +51 -0
  30. package/dist/encoders/HTPirLiteCommands.js.map +1 -0
  31. package/dist/encoders/index.d.ts +2 -0
  32. package/dist/encoders/index.d.ts.map +1 -1
  33. package/dist/encoders/index.js +2 -0
  34. package/dist/encoders/index.js.map +1 -1
  35. package/dist/encoders/types/schemas.d.ts +496 -0
  36. package/dist/encoders/types/schemas.d.ts.map +1 -1
  37. package/dist/encoders/types/schemas.js +21 -0
  38. package/dist/encoders/types/schemas.js.map +1 -1
  39. package/dist/test/payloadDecoders.test.js +40 -0
  40. package/dist/test/payloadDecoders.test.js.map +1 -1
  41. package/dist/test/payloadEncoders.test.js +33 -0
  42. package/dist/test/payloadEncoders.test.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/decoders/payloadParsers/co2PirLitePayloadParser.ts +91 -0
  45. package/src/decoders/payloadParsers/htPirLitePayloadParser.ts +84 -0
  46. package/src/decoders/payloadParsers/index.ts +3 -0
  47. package/src/decoders/payloadParsers/types/allDevices.ts +3 -1
  48. package/src/decoders/payloadParsers/uplinkPayloadParser.ts +6 -0
  49. package/src/encoders/Co2PirLiteCommands.ts +57 -0
  50. package/src/encoders/CommandBuilder.ts +4 -1
  51. package/src/encoders/HTPirLiteCommands.ts +50 -0
  52. package/src/encoders/index.ts +3 -0
  53. package/src/encoders/types/schemas.ts +54 -0
  54. package/src/test/payloadDecoders.test.ts +40 -0
  55. package/src/test/payloadEncoders.test.ts +51 -0
@@ -0,0 +1,2 @@
1
+ export declare const co2PirLitePayloadParser: (hexData: string) => {} | undefined;
2
+ //# sourceMappingURL=co2PirLitePayloadParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"co2PirLitePayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/co2PirLitePayloadParser.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,uBAAuB,YAAa,MAAM,mBA6EtD,CAAA"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.co2PirLitePayloadParser = void 0;
4
+ const commandsReadingHelper_1 = require("../../decoders/commandsReadingHelper");
5
+ const types_1 = require("../../decoders/payloadParsers/types");
6
+ const helpers_1 = require("../../helpers");
7
+ const utils_1 = require("../../utils");
8
+ const co2PirLitePayloadParser = (hexData) => {
9
+ let deviceData = {};
10
+ try {
11
+ const handleKeepAliveData = (bytes) => {
12
+ let keepaliveData = {};
13
+ // Bytes 1-2: Internal temperature sensor data
14
+ // Formula: t[°C] = (T[15:0]-400)/10
15
+ var tempMsb = bytes[1]; // bits 15:8
16
+ var tempLsb = bytes[2]; // bits 7:0
17
+ var rawTemperature = (tempMsb << 8) | tempLsb;
18
+ keepaliveData.sensorTemperature = Number(((rawTemperature - 400) / 10).toFixed(2));
19
+ // Byte 3: Relative Humidity data
20
+ // Formula: RH[%] = (XX*100)/256
21
+ keepaliveData.relativeHumidity = Number(((bytes[3] * 100) / 256).toFixed(2));
22
+ // Bytes 4-5: Device battery voltage data
23
+ // Battery voltage [mV]
24
+ var batteryMsb = bytes[4]; // bits 15:8
25
+ var batteryLsb = bytes[5]; // bits 7:0
26
+ keepaliveData.batteryVoltage = Number((((batteryMsb << 8) | batteryLsb) / 1000).toFixed(2));
27
+ // Bytes 6-7: CO2 value in ppm
28
+ // Byte 6 contains the lower part of the value
29
+ // Byte 7 contains the higher part of the value (when CO2 exceeds ~8000 ppm)
30
+ // Create a 16-bit value combining both bytes
31
+ var co2Raw = bytes[6] | ((bytes[7] & 0x1F) << 8); // Get bits 4:0 from byte 7 and shift to positions 12:8
32
+ var co2Value = co2Raw << 5; // Shift left 5 bits as per the spec
33
+ keepaliveData.CO2 = co2Value;
34
+ // Byte 8: PIR sensor status (only bit 0 is used)
35
+ // 0 - No motion detected
36
+ // 1 - Motion detected
37
+ var pirValue = bytes[8] & 0x01; // Extract only the last bit
38
+ keepaliveData.pir = pirValue === 1 ? true : false;
39
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, keepaliveData));
40
+ };
41
+ if (hexData) {
42
+ let byteArray = (0, helpers_1.byteArrayParser)(hexData);
43
+ if (!byteArray)
44
+ return;
45
+ // Route the message based on the command byte
46
+ if (byteArray[0] == 1) {
47
+ // This is a keepalive message
48
+ handleKeepAliveData(byteArray);
49
+ }
50
+ else {
51
+ // parse command answers
52
+ let data = (0, commandsReadingHelper_1.commandsReadingHelper)(hexData, 18, types_1.DeviceType.CO2PirLite);
53
+ if (!data)
54
+ return;
55
+ const shouldKeepAlive = data.hasOwnProperty('decodeKeepalive') ? true : false;
56
+ if ('decodeKeepalive' in data) {
57
+ delete data.decodeKeepalive;
58
+ }
59
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, data));
60
+ // Handle the remaining keepalive data if present
61
+ if (shouldKeepAlive) {
62
+ // Extract the last 9 bytes which contain keepalive data for CO2-PIR-Lite
63
+ let keepaliveData = hexData.slice(-18); // 9 bytes = 18 hex chars
64
+ let dataToPass = (0, helpers_1.byteArrayParser)(keepaliveData);
65
+ if (!dataToPass)
66
+ return;
67
+ handleKeepAliveData(dataToPass);
68
+ }
69
+ }
70
+ return deviceData;
71
+ }
72
+ }
73
+ catch (e) {
74
+ throw new utils_1.CustomError({
75
+ message: `Unhandled data`,
76
+ hexData: hexData,
77
+ deviceType: 'co2_pir_lite',
78
+ originalError: e,
79
+ });
80
+ }
81
+ };
82
+ exports.co2PirLitePayloadParser = co2PirLitePayloadParser;
83
+ //# sourceMappingURL=co2PirLitePayloadParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"co2PirLitePayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/co2PirLitePayloadParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const htPirLitePayloadParser: (hexData: string) => {} | undefined;
2
+ //# sourceMappingURL=htPirLitePayloadParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htPirLitePayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/htPirLitePayloadParser.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB,YAAa,MAAM,mBAuErD,CAAA"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.htPirLitePayloadParser = void 0;
4
+ const commandsReadingHelper_1 = require("../../decoders/commandsReadingHelper");
5
+ const types_1 = require("../../decoders/payloadParsers/types");
6
+ const helpers_1 = require("../../helpers");
7
+ const utils_1 = require("../../utils");
8
+ const htPirLitePayloadParser = (hexData) => {
9
+ let deviceData = {};
10
+ try {
11
+ const handleKeepAliveData = (bytes) => {
12
+ let keepaliveData = {};
13
+ // Bytes 1-2: Internal temperature sensor data
14
+ // Formula: t[°C] = (T[15:0]-400)/10
15
+ var tempMsb = bytes[1]; // bits 15:8
16
+ var tempLsb = bytes[2]; // bits 7:0
17
+ var rawTemperature = (tempMsb << 8) | tempLsb;
18
+ keepaliveData.sensorTemperature = Number(((rawTemperature - 400) / 10).toFixed(2));
19
+ // Byte 3: Relative Humidity data
20
+ // Formula: RH[%] = (XX*100)/256
21
+ keepaliveData.relativeHumidity = Number(((bytes[3] * 100) / 256).toFixed(2));
22
+ // Bytes 4-5: Device battery voltage data
23
+ // Battery voltage [mV]
24
+ var batteryMsb = bytes[4]; // bits 15:8
25
+ var batteryLsb = bytes[5]; // bits 7:0
26
+ keepaliveData.batteryVoltage = Number((((batteryMsb << 8) | batteryLsb) / 1000).toFixed(2));
27
+ // Byte 6: PIR sensor status (only bit 0 is used, other bits are reserved)
28
+ // 0 - No motion detected
29
+ // 1 - Motion detected
30
+ var pirValue = bytes[6] & 0x01; // Extract only the last bit
31
+ keepaliveData.pir = pirValue === 1 ? true : false;
32
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, keepaliveData));
33
+ };
34
+ if (hexData) {
35
+ let byteArray = (0, helpers_1.byteArrayParser)(hexData);
36
+ if (!byteArray)
37
+ return;
38
+ // Route the message based on the command byte
39
+ if (byteArray[0] == 1) {
40
+ // This is a keepalive message
41
+ handleKeepAliveData(byteArray);
42
+ }
43
+ else {
44
+ // parse command answers
45
+ let data = (0, commandsReadingHelper_1.commandsReadingHelper)(hexData, 14, types_1.DeviceType.HTPirLite);
46
+ if (!data)
47
+ return;
48
+ const shouldKeepAlive = data.hasOwnProperty('decodeKeepalive') ? true : false;
49
+ if ('decodeKeepalive' in data) {
50
+ delete data.decodeKeepalive;
51
+ }
52
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, data));
53
+ // Handle the remaining keepalive data if present
54
+ if (shouldKeepAlive) {
55
+ // Extract the last 7 bytes which contain keepalive data for HT-PIR-Lite
56
+ let keepaliveData = hexData.slice(-14); // 7 bytes = 14 hex chars
57
+ let dataToPass = (0, helpers_1.byteArrayParser)(keepaliveData);
58
+ if (!dataToPass)
59
+ return;
60
+ handleKeepAliveData(dataToPass);
61
+ }
62
+ }
63
+ return deviceData;
64
+ }
65
+ }
66
+ catch (e) {
67
+ throw new utils_1.CustomError({
68
+ message: `Unhandled data`,
69
+ hexData: hexData,
70
+ deviceType: 'ht_pir_lite',
71
+ originalError: e,
72
+ });
73
+ }
74
+ };
75
+ exports.htPirLitePayloadParser = htPirLitePayloadParser;
76
+ //# sourceMappingURL=htPirLitePayloadParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htPirLitePayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/htPirLitePayloadParser.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,6 @@ export * from './tValvePayloadParser';
17
17
  export * from './relay16PayloadParser';
18
18
  export * from './relay16DryPayloadParser';
19
19
  export * from './melissaLorawanPayloadParser';
20
+ export * from './co2PirLitePayloadParser';
21
+ export * from './htPirLitePayloadParser';
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA"}
@@ -33,4 +33,6 @@ __exportStar(require("./tValvePayloadParser"), exports);
33
33
  __exportStar(require("./relay16PayloadParser"), exports);
34
34
  __exportStar(require("./relay16DryPayloadParser"), exports);
35
35
  __exportStar(require("./melissaLorawanPayloadParser"), exports);
36
+ __exportStar(require("./co2PirLitePayloadParser"), exports);
37
+ __exportStar(require("./htPirLitePayloadParser"), exports);
36
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC;AACrC,uDAAoC;AACpC,2DAAwC;AACxC,gEAA6C;AAC7C,4DAAyC;AACzC,2DAAwC;AACxC,mEAAgD;AAChD,4DAAyC;AACzC,oEAAiD;AACjD,wDAAqC;AACrC,2DAAwC;AACxC,+DAA4C;AAC5C,0DAAuC;AACvC,iEAA8C;AAC9C,wDAAqC;AACrC,wDAAqC;AACrC,yDAAsC;AACtC,4DAAyC;AACzC,gEAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC;AACrC,uDAAoC;AACpC,2DAAwC;AACxC,gEAA6C;AAC7C,4DAAyC;AACzC,2DAAwC;AACxC,mEAAgD;AAChD,4DAAyC;AACzC,oEAAiD;AACjD,wDAAqC;AACrC,2DAAwC;AACxC,+DAA4C;AAC5C,0DAAuC;AACvC,iEAA8C;AAC9C,wDAAqC;AACrC,wDAAqC;AACrC,yDAAsC;AACtC,4DAAyC;AACzC,gEAA6C;AAC7C,4DAAyC;AACzC,2DAAwC"}
@@ -16,6 +16,8 @@ export declare enum DeviceType {
16
16
  HTDisplayLite = "ht_display_lite",
17
17
  Relay16 = "relay_16",
18
18
  Relay16Dry = "relay_16_dry",
19
- MelissaLorawan = "melissa_lorawan"
19
+ MelissaLorawan = "melissa_lorawan",
20
+ CO2PirLite = "co2_pir_lite",
21
+ HTPirLite = "ht_pir_lite"
20
22
  }
21
23
  //# sourceMappingURL=allDevices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"allDevices.d.ts","sourceRoot":"","sources":["../../../../src/decoders/payloadParsers/types/allDevices.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACrB,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,MAAM,YAAY;IAClB,SAAS,eAAe;IACxB,MAAM,YAAY;IAClB,SAAS,eAAe;IACxB,UAAU,eAAe;IACzB,QAAQ,cAAc;IACtB,eAAe,sBAAsB;IACrC,SAAS,eAAe;IACxB,kBAAkB,wBAAwB;IAC1C,UAAU,gBAAgB;IAC1B,iBAAiB,wBAAwB;IACzC,cAAc,qBAAqB;IACnC,aAAa,oBAAoB;IACjC,OAAO,aAAa;IACpB,UAAU,iBAAiB;IAC3B,cAAc,oBAAoB;CAClC"}
1
+ {"version":3,"file":"allDevices.d.ts","sourceRoot":"","sources":["../../../../src/decoders/payloadParsers/types/allDevices.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACrB,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,MAAM,YAAY;IAClB,SAAS,eAAe;IACxB,MAAM,YAAY;IAClB,SAAS,eAAe;IACxB,UAAU,eAAe;IACzB,QAAQ,cAAc;IACtB,eAAe,sBAAsB;IACrC,SAAS,eAAe;IACxB,kBAAkB,wBAAwB;IAC1C,UAAU,gBAAgB;IAC1B,iBAAiB,wBAAwB;IACzC,cAAc,qBAAqB;IACnC,aAAa,oBAAoB;IACjC,OAAO,aAAa;IACpB,UAAU,iBAAiB;IAC3B,cAAc,oBAAoB;IAClC,UAAU,iBAAiB;IAC3B,SAAS,gBAAgB;CACzB"}
@@ -21,5 +21,7 @@ var DeviceType;
21
21
  DeviceType["Relay16"] = "relay_16";
22
22
  DeviceType["Relay16Dry"] = "relay_16_dry";
23
23
  DeviceType["MelissaLorawan"] = "melissa_lorawan";
24
+ DeviceType["CO2PirLite"] = "co2_pir_lite";
25
+ DeviceType["HTPirLite"] = "ht_pir_lite";
24
26
  })(DeviceType || (exports.DeviceType = DeviceType = {}));
25
27
  //# sourceMappingURL=allDevices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allDevices.js","sourceRoot":"","sources":["../../../../src/decoders/payloadParsers/types/allDevices.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAmBX;AAnBD,WAAY,UAAU;IACrB,6BAAe,CAAA;IACf,oCAAsB,CAAA;IACtB,gCAAkB,CAAA;IAClB,sCAAwB,CAAA;IACxB,gCAAkB,CAAA;IAClB,sCAAwB,CAAA;IACxB,uCAAyB,CAAA;IACzB,oCAAsB,CAAA;IACtB,mDAAqC,CAAA;IACrC,sCAAwB,CAAA;IACxB,wDAA0C,CAAA;IAC1C,wCAA0B,CAAA;IAC1B,uDAAyC,CAAA;IACzC,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,kCAAoB,CAAA;IACpB,yCAA2B,CAAA;IAC3B,gDAAkC,CAAA;AACnC,CAAC,EAnBW,UAAU,0BAAV,UAAU,QAmBrB"}
1
+ {"version":3,"file":"allDevices.js","sourceRoot":"","sources":["../../../../src/decoders/payloadParsers/types/allDevices.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAqBX;AArBD,WAAY,UAAU;IACrB,6BAAe,CAAA;IACf,oCAAsB,CAAA;IACtB,gCAAkB,CAAA;IAClB,sCAAwB,CAAA;IACxB,gCAAkB,CAAA;IAClB,sCAAwB,CAAA;IACxB,uCAAyB,CAAA;IACzB,oCAAsB,CAAA;IACtB,mDAAqC,CAAA;IACrC,sCAAwB,CAAA;IACxB,wDAA0C,CAAA;IAC1C,wCAA0B,CAAA;IAC1B,uDAAyC,CAAA;IACzC,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,kCAAoB,CAAA;IACpB,yCAA2B,CAAA;IAC3B,gDAAkC,CAAA;IAClC,yCAA2B,CAAA;IAC3B,uCAAyB,CAAA;AAC1B,CAAC,EArBW,UAAU,0BAAV,UAAU,QAqBrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"uplinkPayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/uplinkPayloadParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAsB5D,eAAO,MAAM,mBAAmB,YAAa,MAAM,cAAc,UAAU,mBA0C1E,CAAA"}
1
+ {"version":3,"file":"uplinkPayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/uplinkPayloadParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAwB5D,eAAO,MAAM,mBAAmB,YAAa,MAAM,cAAc,UAAU,mBA8C1E,CAAA"}
@@ -41,6 +41,10 @@ const uplinkPayloadParser = (hexData, deviceType) => {
41
41
  return (0, payloadParsers_1.relay16DryPayloadParser)(hexData);
42
42
  case types_1.DeviceType.MelissaLorawan:
43
43
  return (0, payloadParsers_1.melissaLorawanPayloadParser)(hexData);
44
+ case types_1.DeviceType.CO2PirLite:
45
+ return (0, payloadParsers_1.co2PirLitePayloadParser)(hexData);
46
+ case types_1.DeviceType.HTPirLite:
47
+ return (0, payloadParsers_1.htPirLitePayloadParser)(hexData);
44
48
  default:
45
49
  // Q: is this OK?
46
50
  return (0, payloadParsers_1.vickiPayloadParser)(hexData); // Default case if deviceType is not recognized
@@ -1 +1 @@
1
- {"version":3,"file":"uplinkPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/uplinkPayloadParser.ts"],"names":[],"mappings":";;;AAAA,2DAA4D;AAC5D,8DAmBkC;AAE3B,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,UAAsB,EAAE,EAAE;IAC9E,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,kBAAU,CAAC,KAAK;YACpB,OAAO,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAA;QACnC,KAAK,kBAAU,CAAC,QAAQ;YACvB,OAAO,IAAA,sCAAqB,EAAC,OAAO,CAAC,CAAA;QACtC,KAAK,kBAAU,CAAC,MAAM;YACrB,OAAO,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAA;QACpC,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC,KAAK,kBAAU,CAAC,MAAM;YACrB,OAAO,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAA;QACpC,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,QAAQ;YACvB,OAAO,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAA;QACpC,KAAK,kBAAU,CAAC,eAAe;YAC9B,OAAO,IAAA,6CAA4B,EAAC,OAAO,CAAC,CAAA;QAC7C,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC,KAAK,kBAAU,CAAC,kBAAkB;YACjC,OAAO,IAAA,gDAA+B,EAAC,OAAO,CAAC,CAAA;QAChD,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,iBAAiB;YAChC,OAAO,IAAA,+CAA8B,EAAC,OAAO,CAAC,CAAA;QAC/C,KAAK,kBAAU,CAAC,cAAc;YAC7B,OAAO,IAAA,4CAA2B,EAAC,OAAO,CAAC,CAAA;QAC5C,KAAK,kBAAU,CAAC,aAAa;YAC5B,OAAO,IAAA,2CAA0B,EAAC,OAAO,CAAC,CAAA;QAC3C,KAAK,kBAAU,CAAC,OAAO;YACtB,OAAO,IAAA,qCAAoB,EAAC,OAAO,CAAC,CAAA;QACrC,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,cAAc;YAC7B,OAAO,IAAA,4CAA2B,EAAC,OAAO,CAAC,CAAA;QAC5C;YACC,iBAAiB;YACjB,OAAO,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAA,CAAC,+CAA+C;IACpF,CAAC;AACF,CAAC,CAAA;AA1CY,QAAA,mBAAmB,uBA0C/B"}
1
+ {"version":3,"file":"uplinkPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/uplinkPayloadParser.ts"],"names":[],"mappings":";;;AAAA,2DAA4D;AAC5D,8DAqBkC;AAE3B,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,UAAsB,EAAE,EAAE;IAC9E,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,kBAAU,CAAC,KAAK;YACpB,OAAO,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAA;QACnC,KAAK,kBAAU,CAAC,QAAQ;YACvB,OAAO,IAAA,sCAAqB,EAAC,OAAO,CAAC,CAAA;QACtC,KAAK,kBAAU,CAAC,MAAM;YACrB,OAAO,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAA;QACpC,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC,KAAK,kBAAU,CAAC,MAAM;YACrB,OAAO,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAA;QACpC,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,QAAQ;YACvB,OAAO,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAA;QACpC,KAAK,kBAAU,CAAC,eAAe;YAC9B,OAAO,IAAA,6CAA4B,EAAC,OAAO,CAAC,CAAA;QAC7C,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC,KAAK,kBAAU,CAAC,kBAAkB;YACjC,OAAO,IAAA,gDAA+B,EAAC,OAAO,CAAC,CAAA;QAChD,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,iBAAiB;YAChC,OAAO,IAAA,+CAA8B,EAAC,OAAO,CAAC,CAAA;QAC/C,KAAK,kBAAU,CAAC,cAAc;YAC7B,OAAO,IAAA,4CAA2B,EAAC,OAAO,CAAC,CAAA;QAC5C,KAAK,kBAAU,CAAC,aAAa;YAC5B,OAAO,IAAA,2CAA0B,EAAC,OAAO,CAAC,CAAA;QAC3C,KAAK,kBAAU,CAAC,OAAO;YACtB,OAAO,IAAA,qCAAoB,EAAC,OAAO,CAAC,CAAA;QACrC,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,cAAc;YAC7B,OAAO,IAAA,4CAA2B,EAAC,OAAO,CAAC,CAAA;QAC5C,KAAK,kBAAU,CAAC,UAAU;YACzB,OAAO,IAAA,wCAAuB,EAAC,OAAO,CAAC,CAAA;QACxC,KAAK,kBAAU,CAAC,SAAS;YACxB,OAAO,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAA;QACvC;YACC,iBAAiB;YACjB,OAAO,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAA,CAAC,+CAA+C;IACpF,CAAC;AACF,CAAC,CAAA;AA9CY,QAAA,mBAAmB,uBA8C/B"}
@@ -0,0 +1,9 @@
1
+ import { GeneralCommands } from '../encoders';
2
+ import { Co2PirLiteCommandTypes } from '../encoders/types';
3
+ import { BaseCommand } from '../encoders';
4
+ export declare class Co2PirLiteCommands extends GeneralCommands {
5
+ static setUplinkSendingOnButtonPress(params: Co2PirLiteCommandTypes.SetUplinkSendingOnButtonPressParams): BaseCommand;
6
+ static getUplinkSendingOnButtonPress(): BaseCommand;
7
+ static restartDevice(): BaseCommand;
8
+ }
9
+ //# sourceMappingURL=Co2PirLiteCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Co2PirLiteCommands.d.ts","sourceRoot":"","sources":["../../src/encoders/Co2PirLiteCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkC,MAAM,YAAY,CAAA;AAE5E,OAAO,EAAE,sBAAsB,EAAwB,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAKxC,qBAAa,kBAAmB,SAAQ,eAAe;IACtD,MAAM,CAAC,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,CAAC,mCAAmC;IAsBtG,MAAM,CAAC,6BAA6B;IAKpC,MAAM,CAAC,aAAa;CAGrB"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Co2PirLiteCommands = void 0;
4
+ const encoders_1 = require("../encoders");
5
+ const utils_1 = require("../utils");
6
+ const types_1 = require("../encoders/types");
7
+ const encoders_2 = require("../encoders");
8
+ const zod_1 = require("zod");
9
+ const utils_2 = require("../utils");
10
+ const utils_3 = require("../utils");
11
+ class Co2PirLiteCommands extends encoders_1.GeneralCommands {
12
+ static setUplinkSendingOnButtonPress(params) {
13
+ try {
14
+ types_1.DeviceCommandSchemas.Co2PirLiteCommandSchemas.setUplinkSendingOnButtonPress.parse(params);
15
+ const { value } = params;
16
+ return new encoders_2.BaseCommand('SetUplinkSendingOnButtonPress', 0x2e, (0, utils_3.decToHex)(value));
17
+ }
18
+ catch (e) {
19
+ if (e instanceof zod_1.ZodError) {
20
+ throw new utils_2.CustomError({
21
+ message: 'Zod validation error during SetUplinkSendingOnButtonPress execution',
22
+ command: 'SetUplinkSendingOnButtonPress',
23
+ originalError: e,
24
+ });
25
+ }
26
+ else {
27
+ throw new utils_2.CustomError({
28
+ message: 'Error during SetUplinkSendingOnButtonPress execution',
29
+ command: 'SetUplinkSendingOnButtonPress',
30
+ originalError: e,
31
+ });
32
+ }
33
+ }
34
+ }
35
+ static getUplinkSendingOnButtonPress() {
36
+ return new encoders_2.BaseCommand('GetUplinkSendingOnButtonPress', 0x2f);
37
+ }
38
+ static restartDevice() {
39
+ return new encoders_2.BaseCommand('RestartDevice', 0xa5);
40
+ }
41
+ }
42
+ exports.Co2PirLiteCommands = Co2PirLiteCommands;
43
+ (0, utils_1.applyMixins)(Co2PirLiteCommands, [
44
+ encoders_1.GeneralCommands,
45
+ encoders_1.PIRCommands,
46
+ encoders_1.CO2SensorCommands,
47
+ ]);
48
+ (0, utils_1.delMethods)(Co2PirLiteCommands, [
49
+ 'setPIRInitPeriod',
50
+ 'getPIRInitPeriod',
51
+ 'setNotifyPeriod',
52
+ 'getNotifyPeriod',
53
+ 'setBuzzerNotification',
54
+ 'getBuzzerNotification',
55
+ 'setCo2Led',
56
+ 'getCo2Led',
57
+ ]);
58
+ //# sourceMappingURL=Co2PirLiteCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Co2PirLiteCommands.js","sourceRoot":"","sources":["../../src/encoders/Co2PirLiteCommands.ts"],"names":[],"mappings":";;;AAAA,yCAA4E;AAC5E,mCAAiD;AACjD,4CAA+E;AAC/E,yCAAwC;AACxC,6BAA8B;AAC9B,mCAAqC;AACrC,mCAAkC;AAElC,MAAa,kBAAmB,SAAQ,0BAAe;IACtD,MAAM,CAAC,6BAA6B,CAAC,MAAkE;QACrG,IAAI,CAAC;YACJ,4BAAoB,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACzF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;YACxB,OAAO,IAAI,sBAAW,CAAC,+BAA+B,EAAE,IAAI,EAAE,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC,CAAA;QAC/E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,cAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,mBAAW,CAAC;oBACrB,OAAO,EAAE,qEAAqE;oBAC9E,OAAO,EAAE,+BAA+B;oBACxC,aAAa,EAAE,CAAC;iBAChB,CAAC,CAAA;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,mBAAW,CAAC;oBACrB,OAAO,EAAE,sDAAsD;oBAC/D,OAAO,EAAE,+BAA+B;oBACxC,aAAa,EAAE,CAAU;iBACzB,CAAC,CAAA;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,CAAC,6BAA6B;QACnC,OAAO,IAAI,sBAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAA;IAC9D,CAAC;IAGD,MAAM,CAAC,aAAa;QACnB,OAAO,IAAI,sBAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;CACF;AA/BD,gDA+BC;AAED,IAAA,mBAAW,EAAC,kBAAkB,EAAE;IAC/B,0BAAe;IACf,sBAAW;IACX,4BAAiB;CACjB,CAAC,CAAA;AAEF,IAAA,kBAAU,EAAC,kBAAkB,EAAE;IAC9B,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,uBAAuB;IACvB,uBAAuB;IACvB,WAAW;IACX,WAAW;CACX,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBuilder.d.ts","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EAkBX,MAAM,YAAY,CAAA;AAInB,qBAAa,cAAc;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAExB,WAAW,EAAE,MAAM;IAuB/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAoBvC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;CAG/B"}
1
+ {"version":3,"file":"CommandBuilder.d.ts","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EAoBX,MAAM,YAAY,CAAA;AAGnB,qBAAa,cAAc;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAExB,WAAW,EAAE,MAAM;IAyB/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAoBvC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;CAG/B"}
@@ -24,6 +24,8 @@ class CommandBuilder {
24
24
  thermostat: encoders_1.TringThermostatCommands,
25
25
  aqi_sensor: encoders_1.SetAqiLedCommands,
26
26
  relay_16_dry: encoders_1.Relay16DryCommands,
27
+ ht_pir_lite: encoders_1.HTPirLiteCommands,
28
+ co2_pir_lite: encoders_1.Co2PirLiteCommands,
27
29
  };
28
30
  }
29
31
  build(command, params) {
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":";;;AAAA,yCAmBmB;AAEnB,mCAAkD;AAElD,MAAa,cAAc;IAI1B,YAAY,WAAmB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,eAAe,GAAG;YACtB,UAAU,EAAE,4BAAiB;YAC7B,KAAK,EAAE,wBAAa;YACpB,mBAAmB,EAAE,qCAA0B;YAC/C,SAAS,EAAE,yBAAc;YACzB,QAAQ,EAAE,0BAAe;YACzB,mBAAmB,EAAE,oCAAyB;YAC9C,iBAAiB,EAAE,kCAAuB;YAC1C,WAAW,EAAE,6BAAkB;YAC/B,UAAU,EAAE,4BAAiB;YAC7B,gBAAgB,EAAE,iCAAsB;YACxC,OAAO,EAAE,yBAAc;YACvB,OAAO,EAAE,yBAAc;YACvB,SAAS,EAAE,2BAAgB;YAC3B,eAAe,EAAE,wBAAa;YAC9B,UAAU,EAAE,kCAAuB;YACnC,UAAU,EAAE,4BAAiB;YAC7B,YAAY,EAAE,6BAAkB;SAChC,CAAA;IACF,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,MAAgB;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAgD,CAAC,CAAA;QAElG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,MAAM,IAAI,mBAAW,CAAC;gBACrB,OAAO,EAAE,eAAe,IAAI,CAAC,WAAW,mBAAmB;aAC3D,CAAC,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAA;QAEvC,IAAI,OAAQ,cAAsC,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE,CAAC;YAC/E,OAAQ,cAAsC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,mBAAW,CAAC;gBACrB,OAAO,EAAE,WAAW,UAAU,kCAAkC,IAAI,CAAC,WAAW,EAAE;aAClF,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,OAAO,CAAC,QAAuB;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,OAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1G,CAAC;CACD;AAlDD,wCAkDC"}
1
+ {"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":";;;AAAA,yCAqBmB;AAEnB,mCAAkD;AAClD,MAAa,cAAc;IAI1B,YAAY,WAAmB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,eAAe,GAAG;YACtB,UAAU,EAAE,4BAAiB;YAC7B,KAAK,EAAE,wBAAa;YACpB,mBAAmB,EAAE,qCAA0B;YAC/C,SAAS,EAAE,yBAAc;YACzB,QAAQ,EAAE,0BAAe;YACzB,mBAAmB,EAAE,oCAAyB;YAC9C,iBAAiB,EAAE,kCAAuB;YAC1C,WAAW,EAAE,6BAAkB;YAC/B,UAAU,EAAE,4BAAiB;YAC7B,gBAAgB,EAAE,iCAAsB;YACxC,OAAO,EAAE,yBAAc;YACvB,OAAO,EAAE,yBAAc;YACvB,SAAS,EAAE,2BAAgB;YAC3B,eAAe,EAAE,wBAAa;YAC9B,UAAU,EAAE,kCAAuB;YACnC,UAAU,EAAE,4BAAiB;YAC7B,YAAY,EAAE,6BAAkB;YAChC,WAAW,EAAE,4BAAiB;YAC9B,YAAY,EAAE,6BAAkB;SAChC,CAAA;IACF,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,MAAgB;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAgD,CAAC,CAAA;QAElG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,MAAM,IAAI,mBAAW,CAAC;gBACrB,OAAO,EAAE,eAAe,IAAI,CAAC,WAAW,mBAAmB;aAC3D,CAAC,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAA;QAEvC,IAAI,OAAQ,cAAsC,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE,CAAC;YAC/E,OAAQ,cAAsC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,mBAAW,CAAC;gBACrB,OAAO,EAAE,WAAW,UAAU,kCAAkC,IAAI,CAAC,WAAW,EAAE;aAClF,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,OAAO,CAAC,QAAuB;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,OAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1G,CAAC;CACD;AApDD,wCAoDC"}
@@ -0,0 +1,9 @@
1
+ import { GeneralCommands } from '../encoders';
2
+ import { HTPirLiteCommandTypes } from '../encoders/types';
3
+ import { BaseCommand } from '../encoders';
4
+ export declare class HTPirLiteCommands extends GeneralCommands {
5
+ static setUplinkSendingOnButtonPress(params: HTPirLiteCommandTypes.SetUplinkSendingOnButtonPressParams): BaseCommand;
6
+ static getUplinkSendingOnButtonPress(): BaseCommand;
7
+ static restartDevice(): BaseCommand;
8
+ }
9
+ //# sourceMappingURL=HTPirLiteCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTPirLiteCommands.d.ts","sourceRoot":"","sources":["../../src/encoders/HTPirLiteCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,YAAY,CAAA;AAEzD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAKxC,qBAAa,iBAAkB,SAAQ,eAAe;IACrD,MAAM,CAAC,6BAA6B,CAAC,MAAM,EAAE,qBAAqB,CAAC,mCAAmC;IAsBrG,MAAM,CAAC,6BAA6B;IAKpC,MAAM,CAAC,aAAa;CAGrB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HTPirLiteCommands = void 0;
4
+ const encoders_1 = require("../encoders");
5
+ const utils_1 = require("../utils");
6
+ const types_1 = require("../encoders/types");
7
+ const encoders_2 = require("../encoders");
8
+ const zod_1 = require("zod");
9
+ const utils_2 = require("../utils");
10
+ const utils_3 = require("../utils");
11
+ class HTPirLiteCommands extends encoders_1.GeneralCommands {
12
+ static setUplinkSendingOnButtonPress(params) {
13
+ try {
14
+ types_1.DeviceCommandSchemas.HTPirLiteCommandSchemas.setUplinkSendingOnButtonPress.parse(params);
15
+ const { value } = params;
16
+ return new encoders_2.BaseCommand('SetUplinkSendingOnButtonPress', 0x2e, (0, utils_3.decToHex)(value));
17
+ }
18
+ catch (e) {
19
+ if (e instanceof zod_1.ZodError) {
20
+ throw new utils_2.CustomError({
21
+ message: 'Zod validation error during SetUplinkSendingOnButtonPress execution',
22
+ command: 'SetUplinkSendingOnButtonPress',
23
+ originalError: e,
24
+ });
25
+ }
26
+ else {
27
+ throw new utils_2.CustomError({
28
+ message: 'Error during SetUplinkSendingOnButtonPress execution',
29
+ command: 'SetUplinkSendingOnButtonPress',
30
+ originalError: e,
31
+ });
32
+ }
33
+ }
34
+ }
35
+ static getUplinkSendingOnButtonPress() {
36
+ return new encoders_2.BaseCommand('GetUplinkSendingOnButtonPress', 0x2f);
37
+ }
38
+ static restartDevice() {
39
+ return new encoders_2.BaseCommand('RestartDevice', 0xa5);
40
+ }
41
+ }
42
+ exports.HTPirLiteCommands = HTPirLiteCommands;
43
+ (0, utils_1.applyMixins)(HTPirLiteCommands, [
44
+ encoders_1.GeneralCommands,
45
+ encoders_1.PIRCommands,
46
+ ]);
47
+ (0, utils_1.delMethods)(HTPirLiteCommands, [
48
+ 'setPIRInitPeriod',
49
+ 'getPIRInitPeriod',
50
+ ]);
51
+ //# sourceMappingURL=HTPirLiteCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTPirLiteCommands.js","sourceRoot":"","sources":["../../src/encoders/HTPirLiteCommands.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;AACzD,mCAAiD;AACjD,4CAA8E;AAC9E,yCAAwC;AACxC,6BAA8B;AAC9B,mCAAqC;AACrC,mCAAkC;AAElC,MAAa,iBAAkB,SAAQ,0BAAe;IACrD,MAAM,CAAC,6BAA6B,CAAC,MAAiE;QACpG,IAAI,CAAC;YACJ,4BAAoB,CAAC,uBAAuB,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACxF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;YACxB,OAAO,IAAI,sBAAW,CAAC,+BAA+B,EAAE,IAAI,EAAE,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC,CAAA;QAC/E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,cAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,mBAAW,CAAC;oBACrB,OAAO,EAAE,qEAAqE;oBAC9E,OAAO,EAAE,+BAA+B;oBACxC,aAAa,EAAE,CAAC;iBAChB,CAAC,CAAA;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,mBAAW,CAAC;oBACrB,OAAO,EAAE,sDAAsD;oBAC/D,OAAO,EAAE,+BAA+B;oBACxC,aAAa,EAAE,CAAU;iBACzB,CAAC,CAAA;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,CAAC,6BAA6B;QACnC,OAAO,IAAI,sBAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAA;IAC9D,CAAC;IAGD,MAAM,CAAC,aAAa;QACnB,OAAO,IAAI,sBAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;CACF;AA/BD,8CA+BC;AAED,IAAA,mBAAW,EAAC,iBAAiB,EAAE;IAC9B,0BAAe;IACf,sBAAW;CACX,CAAC,CAAA;AAEF,IAAA,kBAAU,EAAC,iBAAiB,EAAE;IAC7B,kBAAkB;IAClB,kBAAkB;CAClB,CAAC,CAAA"}
@@ -22,4 +22,6 @@ export * from './DskDeviceCommands';
22
22
  export * from './OpenCloseSensorCommands';
23
23
  export * from './ButtonCommands';
24
24
  export * from './Relay16DryCommands';
25
+ export * from './HTPirLiteCommands';
26
+ export * from './Co2PirLiteCommands';
25
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/encoders/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/encoders/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA"}
@@ -38,4 +38,6 @@ __exportStar(require("./DskDeviceCommands"), exports);
38
38
  __exportStar(require("./OpenCloseSensorCommands"), exports);
39
39
  __exportStar(require("./ButtonCommands"), exports);
40
40
  __exportStar(require("./Relay16DryCommands"), exports);
41
+ __exportStar(require("./HTPirLiteCommands"), exports);
42
+ __exportStar(require("./Co2PirLiteCommands"), exports);
41
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encoders/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,gDAA6B;AAC7B,oDAAiC;AACjC,oDAAiC;AACjC,8DAA2C;AAC3C,gDAA6B;AAC7B,sDAAmC;AACnC,sDAAmC;AACnC,0DAAuC;AACvC,qDAAkC;AAClC,kDAA+B;AAC/B,oDAAiC;AACjC,8DAA2C;AAC3C,mDAAgC;AAChC,mDAAgC;AAChC,4DAAyC;AACzC,sDAAmC;AACnC,+DAA4C;AAC5C,2DAAwC;AACxC,uDAAoC;AACpC,sDAAmC;AACnC,4DAAyC;AACzC,mDAAgC;AAChC,uDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encoders/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,gDAA6B;AAC7B,oDAAiC;AACjC,oDAAiC;AACjC,8DAA2C;AAC3C,gDAA6B;AAC7B,sDAAmC;AACnC,sDAAmC;AACnC,0DAAuC;AACvC,qDAAkC;AAClC,kDAA+B;AAC/B,oDAAiC;AACjC,8DAA2C;AAC3C,mDAAgC;AAChC,mDAAgC;AAChC,4DAAyC;AACzC,sDAAmC;AACnC,+DAA4C;AAC5C,2DAAwC;AACxC,uDAAoC;AACpC,sDAAmC;AACnC,4DAAyC;AACzC,mDAAgC;AAChC,uDAAoC;AACpC,sDAAmC;AACnC,uDAAoC"}