mclimate-payload-helper 1.2.24 → 1.3.1

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 (64) hide show
  1. package/dist/decoders/payloadParsers/index.d.ts +1 -0
  2. package/dist/decoders/payloadParsers/index.d.ts.map +1 -1
  3. package/dist/decoders/payloadParsers/index.js +1 -0
  4. package/dist/decoders/payloadParsers/index.js.map +1 -1
  5. package/dist/decoders/payloadParsers/pirMiniPayloadParser.d.ts +2 -0
  6. package/dist/decoders/payloadParsers/pirMiniPayloadParser.d.ts.map +1 -0
  7. package/dist/decoders/payloadParsers/pirMiniPayloadParser.js +82 -0
  8. package/dist/decoders/payloadParsers/pirMiniPayloadParser.js.map +1 -0
  9. package/dist/decoders/payloadParsers/pirOnlyPayloadParser.d.ts +2 -0
  10. package/dist/decoders/payloadParsers/pirOnlyPayloadParser.d.ts.map +1 -0
  11. package/dist/decoders/payloadParsers/pirOnlyPayloadParser.js +82 -0
  12. package/dist/decoders/payloadParsers/pirOnlyPayloadParser.js.map +1 -0
  13. package/dist/decoders/payloadParsers/types/allDevices.d.ts +2 -1
  14. package/dist/decoders/payloadParsers/types/allDevices.d.ts.map +1 -1
  15. package/dist/decoders/payloadParsers/types/allDevices.js +1 -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 +2 -0
  19. package/dist/decoders/payloadParsers/uplinkPayloadParser.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/PirMiniCommands.d.ts +17 -0
  24. package/dist/encoders/PirMiniCommands.d.ts.map +1 -0
  25. package/dist/encoders/PirMiniCommands.js +152 -0
  26. package/dist/encoders/PirMiniCommands.js.map +1 -0
  27. package/dist/encoders/PirMiniCommands.test.d.ts +2 -0
  28. package/dist/encoders/PirMiniCommands.test.d.ts.map +1 -0
  29. package/dist/encoders/PirMiniCommands.test.js +38 -0
  30. package/dist/encoders/PirMiniCommands.test.js.map +1 -0
  31. package/dist/encoders/PirOnlyCommands.d.ts +17 -0
  32. package/dist/encoders/PirOnlyCommands.d.ts.map +1 -0
  33. package/dist/encoders/PirOnlyCommands.js +152 -0
  34. package/dist/encoders/PirOnlyCommands.js.map +1 -0
  35. package/dist/encoders/PirOnlyCommands.test.d.ts +2 -0
  36. package/dist/encoders/PirOnlyCommands.test.d.ts.map +1 -0
  37. package/dist/encoders/PirOnlyCommands.test.js +38 -0
  38. package/dist/encoders/PirOnlyCommands.test.js.map +1 -0
  39. package/dist/encoders/index.d.ts +1 -0
  40. package/dist/encoders/index.d.ts.map +1 -1
  41. package/dist/encoders/index.js +1 -0
  42. package/dist/encoders/index.js.map +1 -1
  43. package/dist/encoders/types/schemas.d.ts +417 -0
  44. package/dist/encoders/types/schemas.d.ts.map +1 -1
  45. package/dist/encoders/types/schemas.js +47 -1
  46. package/dist/encoders/types/schemas.js.map +1 -1
  47. package/dist/index.d.ts +2 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +5 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/test/payloadDecoders.test.js +33 -0
  52. package/dist/test/payloadDecoders.test.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/decoders/payloadParsers/index.ts +1 -0
  55. package/src/decoders/payloadParsers/pirMiniPayloadParser.ts +94 -0
  56. package/src/decoders/payloadParsers/types/allDevices.ts +1 -0
  57. package/src/decoders/payloadParsers/uplinkPayloadParser.ts +3 -0
  58. package/src/encoders/CommandBuilder.ts +2 -0
  59. package/src/encoders/PirMiniCommands.test.ts +58 -0
  60. package/src/encoders/PirMiniCommands.ts +151 -0
  61. package/src/encoders/index.ts +1 -0
  62. package/src/encoders/types/schemas.ts +75 -0
  63. package/src/index.ts +4 -0
  64. package/src/test/payloadDecoders.test.ts +33 -0
@@ -20,4 +20,5 @@ export * from './melissaLorawanPayloadParser';
20
20
  export * from './co2PirLitePayloadParser';
21
21
  export * from './htPirLitePayloadParser';
22
22
  export * from './multisensorPayloadParser';
23
+ export * from './pirMiniPayloadParser';
23
24
  //# 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;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,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;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
@@ -36,4 +36,5 @@ __exportStar(require("./melissaLorawanPayloadParser"), exports);
36
36
  __exportStar(require("./co2PirLitePayloadParser"), exports);
37
37
  __exportStar(require("./htPirLitePayloadParser"), exports);
38
38
  __exportStar(require("./multisensorPayloadParser"), exports);
39
+ __exportStar(require("./pirMiniPayloadParser"), exports);
39
40
  //# 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;AAC7C,4DAAyC;AACzC,2DAAwC;AACxC,6DAA0C"}
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;AACxC,6DAA0C;AAC1C,yDAAsC"}
@@ -0,0 +1,2 @@
1
+ export declare const pirMiniPayloadParser: (hexData: string) => Record<string, unknown> | undefined;
2
+ //# sourceMappingURL=pirMiniPayloadParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pirMiniPayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/pirMiniPayloadParser.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,YAAa,MAAM,wCA+EnD,CAAA"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pirMiniPayloadParser = 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 pirMiniPayloadParser = (hexData) => {
9
+ const deviceData = {};
10
+ try {
11
+ const handleKeepAliveData = (bytes) => {
12
+ const keepaliveData = {};
13
+ // Byte 1 (bits 1:0) and Byte 2: Internal temperature sensor data
14
+ // Formula: t[°C] = (T[9:0] - 400) / 10
15
+ // Extract bits 1:0 from byte 1 for the higher bits (bits 9:8)
16
+ const tempHighBits = (bytes[1] & 0x03) << 8;
17
+ // Use all bits from byte 2 for the lower bits (bits 7:0)
18
+ const tempLowBits = bytes[2];
19
+ // Combine to get the full 10-bit temperature value
20
+ const tempValue = tempHighBits | tempLowBits;
21
+ keepaliveData.sensorTemperature = Number(((tempValue - 400) / 10).toFixed(2));
22
+ // Byte 3: Relative Humidity data
23
+ // Formula: RH[%] = (XX * 100) / 256
24
+ keepaliveData.relativeHumidity = Number(((bytes[3] * 100) / 256).toFixed(2));
25
+ // Bytes 4-5: Light sensor data
26
+ // Byte 4: Light sensor data bits [15:8]
27
+ // Byte 5: Light sensor data bits [7:0]
28
+ keepaliveData.light = (bytes[4] << 8) | bytes[5];
29
+ // Byte 6: Battery Voltage
30
+ // Battery voltage [mV] = ((XX * 2200) / 255) + 1600
31
+ keepaliveData.batteryVoltage = Number((((bytes[6] * 2200) / 255 + 1600) / 1000).toFixed(2));
32
+ // Byte 7 bit 0: Occupancy Flag (1 = Occupied, 0 = Unoccupied)
33
+ keepaliveData.occupied = (bytes[7] & 0x01) === 1;
34
+ // Bytes 8-9: PIR trigger count data
35
+ // Byte 8: PIR trigger count bits [15:8]
36
+ // Byte 9: PIR trigger count bits [7:0]
37
+ keepaliveData.pirTriggerCount = (bytes[8] << 8) | bytes[9];
38
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, keepaliveData));
39
+ };
40
+ if (hexData) {
41
+ const byteArray = (0, helpers_1.byteArrayParser)(hexData);
42
+ if (!byteArray)
43
+ return;
44
+ // Route the message based on the command byte
45
+ if (byteArray[0] == 1) {
46
+ // This is a keepalive message
47
+ handleKeepAliveData(byteArray);
48
+ }
49
+ else {
50
+ // parse command answers
51
+ const data = (0, commandsReadingHelper_1.commandsReadingHelper)(hexData, 20, types_1.DeviceType.PirMini);
52
+ if (!data)
53
+ return;
54
+ const shouldKeepAlive = Object.prototype.hasOwnProperty.call(data, 'decodeKeepalive');
55
+ if ('decodeKeepalive' in data) {
56
+ delete data.decodeKeepalive;
57
+ }
58
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, data));
59
+ // Handle the remaining keepalive data if present
60
+ if (shouldKeepAlive) {
61
+ // Extract the last 10 bytes which contain keepalive data for PIR Mini
62
+ const keepaliveData = hexData.slice(-20); // 10 bytes = 20 hex chars
63
+ const dataToPass = (0, helpers_1.byteArrayParser)(keepaliveData);
64
+ if (!dataToPass)
65
+ return;
66
+ handleKeepAliveData(dataToPass);
67
+ }
68
+ }
69
+ return deviceData;
70
+ }
71
+ }
72
+ catch (e) {
73
+ throw new utils_1.CustomError({
74
+ message: `Unhandled data`,
75
+ hexData: hexData,
76
+ deviceType: 'pir_mini',
77
+ originalError: e,
78
+ });
79
+ }
80
+ };
81
+ exports.pirMiniPayloadParser = pirMiniPayloadParser;
82
+ //# sourceMappingURL=pirMiniPayloadParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pirMiniPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/pirMiniPayloadParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const pirOnlyPayloadParser: (hexData: string) => Record<string, unknown> | undefined;
2
+ //# sourceMappingURL=pirOnlyPayloadParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pirOnlyPayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/pirOnlyPayloadParser.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,YAAa,MAAM,wCA+EnD,CAAA"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pirOnlyPayloadParser = 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 pirOnlyPayloadParser = (hexData) => {
9
+ const deviceData = {};
10
+ try {
11
+ const handleKeepAliveData = (bytes) => {
12
+ const keepaliveData = {};
13
+ // Byte 1 (bits 1:0) and Byte 2: Internal temperature sensor data
14
+ // Formula: t[°C] = (T[9:0] - 400) / 10
15
+ // Extract bits 1:0 from byte 1 for the higher bits (bits 9:8)
16
+ const tempHighBits = (bytes[1] & 0x03) << 8;
17
+ // Use all bits from byte 2 for the lower bits (bits 7:0)
18
+ const tempLowBits = bytes[2];
19
+ // Combine to get the full 10-bit temperature value
20
+ const tempValue = tempHighBits | tempLowBits;
21
+ keepaliveData.sensorTemperature = Number(((tempValue - 400) / 10).toFixed(2));
22
+ // Byte 3: Relative Humidity data
23
+ // Formula: RH[%] = (XX * 100) / 256
24
+ keepaliveData.relativeHumidity = Number(((bytes[3] * 100) / 256).toFixed(2));
25
+ // Bytes 4-5: Light sensor data
26
+ // Byte 4: Light sensor data bits [15:8]
27
+ // Byte 5: Light sensor data bits [7:0]
28
+ keepaliveData.light = (bytes[4] << 8) | bytes[5];
29
+ // Byte 6: Battery Voltage
30
+ // Battery voltage [mV] = ((XX * 2200) / 255) + 1600
31
+ keepaliveData.batteryVoltage = Number((((bytes[6] * 2200) / 255 + 1600) / 1000).toFixed(2));
32
+ // Byte 7 bit 0: Occupancy Flag (1 = Occupied, 0 = Unoccupied)
33
+ keepaliveData.occupied = (bytes[7] & 0x01) === 1;
34
+ // Bytes 8-9: PIR trigger count data
35
+ // Byte 8: PIR trigger count bits [15:8]
36
+ // Byte 9: PIR trigger count bits [7:0]
37
+ keepaliveData.pirTriggerCount = (bytes[8] << 8) | bytes[9];
38
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, keepaliveData));
39
+ };
40
+ if (hexData) {
41
+ const byteArray = (0, helpers_1.byteArrayParser)(hexData);
42
+ if (!byteArray)
43
+ return;
44
+ // Route the message based on the command byte
45
+ if (byteArray[0] == 1) {
46
+ // This is a keepalive message
47
+ handleKeepAliveData(byteArray);
48
+ }
49
+ else {
50
+ // parse command answers
51
+ const data = (0, commandsReadingHelper_1.commandsReadingHelper)(hexData, 20, types_1.DeviceType.PirOnly);
52
+ if (!data)
53
+ return;
54
+ const shouldKeepAlive = Object.prototype.hasOwnProperty.call(data, 'decodeKeepalive');
55
+ if ('decodeKeepalive' in data) {
56
+ delete data.decodeKeepalive;
57
+ }
58
+ Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, data));
59
+ // Handle the remaining keepalive data if present
60
+ if (shouldKeepAlive) {
61
+ // Extract the last 10 bytes which contain keepalive data for PIR Only
62
+ const keepaliveData = hexData.slice(-20); // 10 bytes = 20 hex chars
63
+ const dataToPass = (0, helpers_1.byteArrayParser)(keepaliveData);
64
+ if (!dataToPass)
65
+ return;
66
+ handleKeepAliveData(dataToPass);
67
+ }
68
+ }
69
+ return deviceData;
70
+ }
71
+ }
72
+ catch (e) {
73
+ throw new utils_1.CustomError({
74
+ message: `Unhandled data`,
75
+ hexData: hexData,
76
+ deviceType: 'pir_only',
77
+ originalError: e,
78
+ });
79
+ }
80
+ };
81
+ exports.pirOnlyPayloadParser = pirOnlyPayloadParser;
82
+ //# sourceMappingURL=pirOnlyPayloadParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pirOnlyPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/pirOnlyPayloadParser.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare enum DeviceType {
19
19
  MelissaLorawan = "melissa_lorawan",
20
20
  CO2PirLite = "co2_pir_lite",
21
21
  HTPirLite = "ht_pir_lite",
22
- MultiSensor = "multisensor"
22
+ MultiSensor = "multisensor",
23
+ PirMini = "pir_mini"
23
24
  }
24
25
  //# 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;IAClC,UAAU,iBAAiB;IAC3B,SAAS,gBAAgB;IACzB,WAAW,gBAAgB;CAC3B"}
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;IACzB,WAAW,gBAAgB;IAC3B,OAAO,aAAa;CACpB"}
@@ -24,5 +24,6 @@ var DeviceType;
24
24
  DeviceType["CO2PirLite"] = "co2_pir_lite";
25
25
  DeviceType["HTPirLite"] = "ht_pir_lite";
26
26
  DeviceType["MultiSensor"] = "multisensor";
27
+ DeviceType["PirMini"] = "pir_mini";
27
28
  })(DeviceType || (exports.DeviceType = DeviceType = {}));
28
29
  //# sourceMappingURL=allDevices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allDevices.js","sourceRoot":"","sources":["../../../../src/decoders/payloadParsers/types/allDevices.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAsBX;AAtBD,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;IACzB,yCAA2B,CAAA;AAC5B,CAAC,EAtBW,UAAU,0BAAV,UAAU,QAsBrB"}
1
+ {"version":3,"file":"allDevices.js","sourceRoot":"","sources":["../../../../src/decoders/payloadParsers/types/allDevices.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAuBX;AAvBD,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;IACzB,yCAA2B,CAAA;IAC3B,kCAAoB,CAAA;AACrB,CAAC,EAvBW,UAAU,0BAAV,UAAU,QAuBrB"}
@@ -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;AAyB5D,eAAO,MAAM,mBAAmB,YAAa,MAAM,cAAc,UAAU,mBAgD1E,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;AA0B5D,eAAO,MAAM,mBAAmB,YAAa,MAAM,cAAc,UAAU,mBAkD1E,CAAA"}
@@ -47,6 +47,8 @@ const uplinkPayloadParser = (hexData, deviceType) => {
47
47
  return (0, payloadParsers_1.htPirLitePayloadParser)(hexData);
48
48
  case types_1.DeviceType.MultiSensor:
49
49
  return (0, payloadParsers_1.multisensorPayloadParser)(hexData);
50
+ case types_1.DeviceType.PirMini:
51
+ return (0, payloadParsers_1.pirMiniPayloadParser)(hexData);
50
52
  default:
51
53
  // Q: is this OK?
52
54
  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,8DAsBkC;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,KAAK,kBAAU,CAAC,WAAW;YAC1B,OAAO,IAAA,yCAAwB,EAAC,OAAO,CAAC,CAAA;QACzC;YACC,iBAAiB;YACjB,OAAO,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAA,CAAC,+CAA+C;IACpF,CAAC;AACF,CAAC,CAAA;AAhDY,QAAA,mBAAmB,uBAgD/B"}
1
+ {"version":3,"file":"uplinkPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/uplinkPayloadParser.ts"],"names":[],"mappings":";;;AAAA,2DAA4D;AAC5D,8DAuBkC;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,KAAK,kBAAU,CAAC,WAAW;YAC1B,OAAO,IAAA,yCAAwB,EAAC,OAAO,CAAC,CAAA;QACzC,KAAK,kBAAU,CAAC,OAAO;YACtB,OAAO,IAAA,qCAAoB,EAAC,OAAO,CAAC,CAAA;QACrC;YACC,iBAAiB;YACjB,OAAO,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAA,CAAC,+CAA+C;IACpF,CAAC;AACF,CAAC,CAAA;AAlDY,QAAA,mBAAmB,uBAkD/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBuilder.d.ts","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EAsBX,MAAM,YAAY,CAAA;AAGnB,qBAAa,cAAc;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAE5B,WAAW,EAAE,MAAM;IA2B/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAsBvC,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,EAuBX,MAAM,YAAY,CAAA;AAGnB,qBAAa,cAAc;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAE5B,WAAW,EAAE,MAAM;IA4B/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAsBvC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;CAG/B"}
@@ -28,6 +28,7 @@ class CommandBuilder {
28
28
  co2_pir_lite: encoders_1.Co2PirLiteCommands,
29
29
  melissa_lorawan: encoders_1.MelissaCommands,
30
30
  multisensor: encoders_1.MultiSensorCommands,
31
+ pir_mini: encoders_1.PirMiniCommands,
31
32
  };
32
33
  }
33
34
  build(command, params) {
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":";;;AAAA,yCAuBmB;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;YAChC,eAAe,EAAE,0BAAe;YAChC,WAAW,EAAE,8BAAmB;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,MAAM,YAAY,GAAG,cAAyC,CAAA;QAC9D,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAQ,cAAoD,CAAC,MAAM,CAAC,CAAA;QACrE,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;AAxDD,wCAwDC"}
1
+ {"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/encoders/CommandBuilder.ts"],"names":[],"mappings":";;;AAAA,yCAwBmB;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;YAChC,eAAe,EAAE,0BAAe;YAChC,WAAW,EAAE,8BAAmB;YAChC,QAAQ,EAAE,0BAAe;SACzB,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,MAAM,YAAY,GAAG,cAAyC,CAAA;QAC9D,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAQ,cAAoD,CAAC,MAAM,CAAC,CAAA;QACrE,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;AAzDD,wCAyDC"}
@@ -0,0 +1,17 @@
1
+ import { GeneralCommands } from '../encoders';
2
+ import { PirMiniCommandTypes } from '../encoders/types';
3
+ import { BaseCommand } from '../encoders';
4
+ export declare class PirMiniCommands extends GeneralCommands {
5
+ static setLightSensorState(params: PirMiniCommandTypes.SetLightSensorStateParams): BaseCommand;
6
+ static getLightSensorState(): BaseCommand;
7
+ static setLedBrightness(params: PirMiniCommandTypes.SetLedBrightnessParams): BaseCommand;
8
+ static getLedBrightness(): BaseCommand;
9
+ static setPIRSensorState(params: PirMiniCommandTypes.SetPIRSensorStateParams): BaseCommand;
10
+ static getPIRSensorState(): BaseCommand;
11
+ static setOccupancyTimeout(params: PirMiniCommandTypes.SetOccupancyTimeoutParams): BaseCommand;
12
+ static getOccupancyTimeout(): BaseCommand;
13
+ static setPIRDemoMode(params: PirMiniCommandTypes.SetPIRDemoModeParams): BaseCommand;
14
+ static getPIRDemoMode(): BaseCommand;
15
+ static restartDevice(): BaseCommand;
16
+ }
17
+ //# sourceMappingURL=PirMiniCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PirMiniCommands.d.ts","sourceRoot":"","sources":["../../src/encoders/PirMiniCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAKxC,qBAAa,eAAgB,SAAQ,eAAe;IACnD,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,yBAAyB;IAsBhF,MAAM,CAAC,mBAAmB;IAI1B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,sBAAsB;IAsB1E,MAAM,CAAC,gBAAgB;IAIvB,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,CAAC,uBAAuB;IAsB5E,MAAM,CAAC,iBAAiB;IAIxB,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,yBAAyB;IA0BhF,MAAM,CAAC,mBAAmB;IAI1B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,oBAAoB;IAsBtE,MAAM,CAAC,cAAc;IAIrB,MAAM,CAAC,aAAa;CAGpB"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PirMiniCommands = 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 PirMiniCommands extends encoders_1.GeneralCommands {
12
+ static setLightSensorState(params) {
13
+ try {
14
+ types_1.DeviceCommandSchemas.PirMiniCommandSchemas.setLightSensorState.parse(params);
15
+ const { state } = params;
16
+ return new encoders_2.BaseCommand('SetLightSensorState', 0x1e, (0, utils_3.decToHex)(state));
17
+ }
18
+ catch (e) {
19
+ if (e instanceof zod_1.ZodError) {
20
+ throw new utils_2.CustomError({
21
+ message: 'Zod validation error during SetLightSensorState execution',
22
+ command: 'SetLightSensorState',
23
+ originalError: e,
24
+ });
25
+ }
26
+ else {
27
+ throw new utils_2.CustomError({
28
+ message: 'Error during SetLightSensorState execution',
29
+ command: 'SetLightSensorState',
30
+ originalError: e,
31
+ });
32
+ }
33
+ }
34
+ }
35
+ static getLightSensorState() {
36
+ return new encoders_2.BaseCommand('GetLightSensorState', 0x1f);
37
+ }
38
+ static setLedBrightness(params) {
39
+ try {
40
+ types_1.DeviceCommandSchemas.PirMiniCommandSchemas.setLedBrightness.parse(params);
41
+ const { red, green, blue } = params;
42
+ return new encoders_2.BaseCommand('SetLedBrightness', 0x21, (0, utils_3.decToHex)(red), (0, utils_3.decToHex)(green), (0, utils_3.decToHex)(blue));
43
+ }
44
+ catch (e) {
45
+ if (e instanceof zod_1.ZodError) {
46
+ throw new utils_2.CustomError({
47
+ message: 'Zod validation error during SetLedBrightness execution',
48
+ command: 'SetLedBrightness',
49
+ originalError: e,
50
+ });
51
+ }
52
+ else {
53
+ throw new utils_2.CustomError({
54
+ message: 'Error during SetLedBrightness execution',
55
+ command: 'SetLedBrightness',
56
+ originalError: e,
57
+ });
58
+ }
59
+ }
60
+ }
61
+ static getLedBrightness() {
62
+ return new encoders_2.BaseCommand('GetLedBrightness', 0x22);
63
+ }
64
+ static setPIRSensorState(params) {
65
+ try {
66
+ types_1.DeviceCommandSchemas.PirMiniCommandSchemas.setPIRSensorState.parse(params);
67
+ const { state } = params;
68
+ return new encoders_2.BaseCommand('SetPIRSensorState', 0x36, (0, utils_3.decToHex)(state));
69
+ }
70
+ catch (e) {
71
+ if (e instanceof zod_1.ZodError) {
72
+ throw new utils_2.CustomError({
73
+ message: 'Zod validation error during SetPIRSensorState execution',
74
+ command: 'SetPIRSensorState',
75
+ originalError: e,
76
+ });
77
+ }
78
+ else {
79
+ throw new utils_2.CustomError({
80
+ message: 'Error during SetPIRSensorState execution',
81
+ command: 'SetPIRSensorState',
82
+ originalError: e,
83
+ });
84
+ }
85
+ }
86
+ }
87
+ static getPIRSensorState() {
88
+ return new encoders_2.BaseCommand('GetPIRSensorState', 0x37);
89
+ }
90
+ static setOccupancyTimeout(params) {
91
+ try {
92
+ types_1.DeviceCommandSchemas.PirMiniCommandSchemas.setOccupancyTimeout.parse(params);
93
+ const { timeout } = params;
94
+ // Convert timeout to two bytes (high byte and low byte)
95
+ const highByte = (timeout >> 8) & 0xff;
96
+ const lowByte = timeout & 0xff;
97
+ return new encoders_2.BaseCommand('SetOccupancyTimeout', 0x38, (0, utils_3.decToHex)(highByte) + (0, utils_3.decToHex)(lowByte));
98
+ }
99
+ catch (e) {
100
+ if (e instanceof zod_1.ZodError) {
101
+ throw new utils_2.CustomError({
102
+ message: 'Zod validation error during SetOccupancyTimeout execution',
103
+ command: 'SetOccupancyTimeout',
104
+ originalError: e,
105
+ });
106
+ }
107
+ else {
108
+ throw new utils_2.CustomError({
109
+ message: 'Error during SetOccupancyTimeout execution',
110
+ command: 'SetOccupancyTimeout',
111
+ originalError: e,
112
+ });
113
+ }
114
+ }
115
+ }
116
+ static getOccupancyTimeout() {
117
+ return new encoders_2.BaseCommand('GetOccupancyTimeout', 0x39);
118
+ }
119
+ static setPIRDemoMode(params) {
120
+ try {
121
+ types_1.DeviceCommandSchemas.PirMiniCommandSchemas.setPIRDemoMode.parse(params);
122
+ const { state } = params;
123
+ return new encoders_2.BaseCommand('SetPIRDemoMode', 0x3a, (0, utils_3.decToHex)(state));
124
+ }
125
+ catch (e) {
126
+ if (e instanceof zod_1.ZodError) {
127
+ throw new utils_2.CustomError({
128
+ message: 'Zod validation error during SetPIRDemoMode execution',
129
+ command: 'SetPIRDemoMode',
130
+ originalError: e,
131
+ });
132
+ }
133
+ else {
134
+ throw new utils_2.CustomError({
135
+ message: 'Error during SetPIRDemoMode execution',
136
+ command: 'SetPIRDemoMode',
137
+ originalError: e,
138
+ });
139
+ }
140
+ }
141
+ }
142
+ static getPIRDemoMode() {
143
+ return new encoders_2.BaseCommand('GetPIRDemoMode', 0x3b);
144
+ }
145
+ static restartDevice() {
146
+ return new encoders_2.BaseCommand('RestartDevice', 0xa5);
147
+ }
148
+ }
149
+ exports.PirMiniCommands = PirMiniCommands;
150
+ (0, utils_1.applyMixins)(PirMiniCommands, [encoders_1.GeneralCommands]);
151
+ (0, utils_1.delMethods)(PirMiniCommands, []);
152
+ //# sourceMappingURL=PirMiniCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PirMiniCommands.js","sourceRoot":"","sources":["../../src/encoders/PirMiniCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PirMiniCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PirMiniCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/PirMiniCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('PirMiniCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('pir_mini');
7
+ test('SetLightSensorState encodes enabled flag', () => {
8
+ expect(commandBuilder.build('SetLightSensorState', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetLightSensorState', 0x1e, '01'));
9
+ });
10
+ test('SetLightSensorState encodes disabled flag', () => {
11
+ expect(commandBuilder.build('SetLightSensorState', { state: 0 })).toStrictEqual(new encoders_1.BaseCommand('SetLightSensorState', 0x1e, '00'));
12
+ });
13
+ test('SetLedBrightness encodes RGB values', () => {
14
+ expect(commandBuilder.build('SetLedBrightness', { red: 47, green: 42, blue: 59 })).toStrictEqual(new encoders_1.BaseCommand('SetLedBrightness', 0x21, '2F', '2A', '3B'));
15
+ });
16
+ test('SetPIRSensorState encodes enabled flag', () => {
17
+ expect(commandBuilder.build('SetPIRSensorState', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorState', 0x36, '01'));
18
+ });
19
+ test('SetOccupancyTimeout encodes timeout into two bytes', () => {
20
+ expect(commandBuilder.build('SetOccupancyTimeout', { timeout: 60 })).toStrictEqual(new encoders_1.BaseCommand('SetOccupancyTimeout', 0x38, '003C'));
21
+ });
22
+ test('SetPIRDemoMode encodes enabled flag', () => {
23
+ expect(commandBuilder.build('SetPIRDemoMode', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRDemoMode', 0x3a, '01'));
24
+ });
25
+ test('RestartDevice emits restart command', () => {
26
+ expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
27
+ });
28
+ test('Invalid SetPIRSensorState throws validation error', () => {
29
+ expect(() => commandBuilder.build('SetPIRSensorState', { state: 2 })).toThrow(utils_1.CustomError);
30
+ });
31
+ test('Invalid SetLedBrightness throws validation error', () => {
32
+ expect(() => commandBuilder.build('SetLedBrightness', { red: 101, green: 0, blue: 0 })).toThrow(utils_1.CustomError);
33
+ });
34
+ test('Invalid SetLightSensorState throws validation error', () => {
35
+ expect(() => commandBuilder.build('SetLightSensorState', { state: 2 })).toThrow(utils_1.CustomError);
36
+ });
37
+ });
38
+ //# sourceMappingURL=PirMiniCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PirMiniCommands.test.js","sourceRoot":"","sources":["../../src/encoders/PirMiniCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAChD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,UAAU,CAAC,CAAA;IAErD,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC9E,IAAI,sBAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,CAClD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC9E,IAAI,sBAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,CAClD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAC/F,IAAI,sBAAW,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAC3D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC5E,IAAI,sBAAW,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,CAChD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACjF,IAAI,sBAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,CACpD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CACzE,IAAI,sBAAW,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CAC7C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,sBAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAC3F,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAC7G,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { GeneralCommands } from '../encoders';
2
+ import { PirOnlyCommandTypes } from '../encoders/types';
3
+ import { BaseCommand } from '../encoders';
4
+ export declare class PirOnlyCommands extends GeneralCommands {
5
+ static setLightSensorState(params: PirOnlyCommandTypes.SetLightSensorStateParams): BaseCommand;
6
+ static getLightSensorState(): BaseCommand;
7
+ static setLedBrightness(params: PirOnlyCommandTypes.SetLedBrightnessParams): BaseCommand;
8
+ static getLedBrightness(): BaseCommand;
9
+ static setPIRSensorState(params: PirOnlyCommandTypes.SetPIRSensorStateParams): BaseCommand;
10
+ static getPIRSensorState(): BaseCommand;
11
+ static setOccupancyTimeout(params: PirOnlyCommandTypes.SetOccupancyTimeoutParams): BaseCommand;
12
+ static getOccupancyTimeout(): BaseCommand;
13
+ static setPIRDemoMode(params: PirOnlyCommandTypes.SetPIRDemoModeParams): BaseCommand;
14
+ static getPIRDemoMode(): BaseCommand;
15
+ static restartDevice(): BaseCommand;
16
+ }
17
+ //# sourceMappingURL=PirOnlyCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PirOnlyCommands.d.ts","sourceRoot":"","sources":["../../src/encoders/PirOnlyCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAKxC,qBAAa,eAAgB,SAAQ,eAAe;IACnD,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,yBAAyB;IAsBhF,MAAM,CAAC,mBAAmB;IAI1B,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,sBAAsB;IAsB1E,MAAM,CAAC,gBAAgB;IAIvB,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,CAAC,uBAAuB;IAsB5E,MAAM,CAAC,iBAAiB;IAIxB,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,yBAAyB;IA0BhF,MAAM,CAAC,mBAAmB;IAI1B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,oBAAoB;IAsBtE,MAAM,CAAC,cAAc;IAIrB,MAAM,CAAC,aAAa;CAGpB"}