mclimate-payload-helper 1.2.19 → 1.2.21

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 (177) hide show
  1. package/README.md +21 -0
  2. package/dist/decoders/payloadParsers/multisensorPayloadParser.d.ts.map +1 -1
  3. package/dist/decoders/payloadParsers/multisensorPayloadParser.js +80 -33
  4. package/dist/decoders/payloadParsers/multisensorPayloadParser.js.map +1 -1
  5. package/dist/encoders/ButtonCommands.test.d.ts +2 -0
  6. package/dist/encoders/ButtonCommands.test.d.ts.map +1 -0
  7. package/dist/encoders/ButtonCommands.test.js +20 -0
  8. package/dist/encoders/ButtonCommands.test.js.map +1 -0
  9. package/dist/encoders/ChildLockCommands.test.d.ts +2 -0
  10. package/dist/encoders/ChildLockCommands.test.d.ts.map +1 -0
  11. package/dist/encoders/ChildLockCommands.test.js +17 -0
  12. package/dist/encoders/ChildLockCommands.test.js.map +1 -0
  13. package/dist/encoders/Co2DisplayCommands.test.d.ts +2 -0
  14. package/dist/encoders/Co2DisplayCommands.test.d.ts.map +1 -0
  15. package/dist/encoders/Co2DisplayCommands.test.js +18 -0
  16. package/dist/encoders/Co2DisplayCommands.test.js.map +1 -0
  17. package/dist/encoders/Co2DisplayCommonCommands.d.ts +4 -0
  18. package/dist/encoders/Co2DisplayCommonCommands.d.ts.map +1 -1
  19. package/dist/encoders/Co2DisplayCommonCommands.js +38 -0
  20. package/dist/encoders/Co2DisplayCommonCommands.js.map +1 -1
  21. package/dist/encoders/Co2DisplayLiteCommands.test.d.ts +2 -0
  22. package/dist/encoders/Co2DisplayLiteCommands.test.d.ts.map +1 -0
  23. package/dist/encoders/Co2DisplayLiteCommands.test.js +21 -0
  24. package/dist/encoders/Co2DisplayLiteCommands.test.js.map +1 -0
  25. package/dist/encoders/Co2PirLiteCommands.test.d.ts +2 -0
  26. package/dist/encoders/Co2PirLiteCommands.test.d.ts.map +1 -0
  27. package/dist/encoders/Co2PirLiteCommands.test.js +23 -0
  28. package/dist/encoders/Co2PirLiteCommands.test.js.map +1 -0
  29. package/dist/encoders/Co2SensorCommands.test.d.ts +2 -0
  30. package/dist/encoders/Co2SensorCommands.test.d.ts.map +1 -0
  31. package/dist/encoders/Co2SensorCommands.test.js +55 -0
  32. package/dist/encoders/Co2SensorCommands.test.js.map +1 -0
  33. package/dist/encoders/DisplayCommands.test.d.ts +2 -0
  34. package/dist/encoders/DisplayCommands.test.d.ts.map +1 -0
  35. package/dist/encoders/DisplayCommands.test.js +26 -0
  36. package/dist/encoders/DisplayCommands.test.js.map +1 -0
  37. package/dist/encoders/DskDeviceCommands.test.d.ts +2 -0
  38. package/dist/encoders/DskDeviceCommands.test.d.ts.map +1 -0
  39. package/dist/encoders/DskDeviceCommands.test.js +20 -0
  40. package/dist/encoders/DskDeviceCommands.test.js.map +1 -0
  41. package/dist/encoders/FanCoilThermostatCommands.test.d.ts +2 -0
  42. package/dist/encoders/FanCoilThermostatCommands.test.d.ts.map +1 -0
  43. package/dist/encoders/FanCoilThermostatCommands.test.js +117 -0
  44. package/dist/encoders/FanCoilThermostatCommands.test.js.map +1 -0
  45. package/dist/encoders/GeneralCommands.test.d.ts +2 -0
  46. package/dist/encoders/GeneralCommands.test.d.ts.map +1 -0
  47. package/dist/encoders/GeneralCommands.test.js +26 -0
  48. package/dist/encoders/GeneralCommands.test.js.map +1 -0
  49. package/dist/encoders/HTDisplayLiteCommands.test.d.ts +2 -0
  50. package/dist/encoders/HTDisplayLiteCommands.test.d.ts.map +1 -0
  51. package/dist/encoders/HTDisplayLiteCommands.test.js +20 -0
  52. package/dist/encoders/HTDisplayLiteCommands.test.js.map +1 -0
  53. package/dist/encoders/HTPirLiteCommands.test.d.ts +2 -0
  54. package/dist/encoders/HTPirLiteCommands.test.d.ts.map +1 -0
  55. package/dist/encoders/HTPirLiteCommands.test.js +23 -0
  56. package/dist/encoders/HTPirLiteCommands.test.js.map +1 -0
  57. package/dist/encoders/HTSensorCommands.test.d.ts +2 -0
  58. package/dist/encoders/HTSensorCommands.test.d.ts.map +1 -0
  59. package/dist/encoders/HTSensorCommands.test.js +17 -0
  60. package/dist/encoders/HTSensorCommands.test.js.map +1 -0
  61. package/dist/encoders/MelissaCommands.test.d.ts +2 -0
  62. package/dist/encoders/MelissaCommands.test.d.ts.map +1 -0
  63. package/dist/encoders/MelissaCommands.test.js +14 -0
  64. package/dist/encoders/MelissaCommands.test.js.map +1 -0
  65. package/dist/encoders/MultiSensorCommands.test.d.ts +2 -0
  66. package/dist/encoders/MultiSensorCommands.test.d.ts.map +1 -0
  67. package/dist/encoders/MultiSensorCommands.test.js +41 -0
  68. package/dist/encoders/MultiSensorCommands.test.js.map +1 -0
  69. package/dist/encoders/OpenCloseSensorCommands.test.d.ts +2 -0
  70. package/dist/encoders/OpenCloseSensorCommands.test.d.ts.map +1 -0
  71. package/dist/encoders/OpenCloseSensorCommands.test.js +14 -0
  72. package/dist/encoders/OpenCloseSensorCommands.test.js.map +1 -0
  73. package/dist/encoders/PIRCommands.test.d.ts +2 -0
  74. package/dist/encoders/PIRCommands.test.d.ts.map +1 -0
  75. package/dist/encoders/PIRCommands.test.js +29 -0
  76. package/dist/encoders/PIRCommands.test.js.map +1 -0
  77. package/dist/encoders/Relay16Commands.test.d.ts +2 -0
  78. package/dist/encoders/Relay16Commands.test.d.ts.map +1 -0
  79. package/dist/encoders/Relay16Commands.test.js +44 -0
  80. package/dist/encoders/Relay16Commands.test.js.map +1 -0
  81. package/dist/encoders/Relay16DryCommands.test.d.ts +2 -0
  82. package/dist/encoders/Relay16DryCommands.test.d.ts.map +1 -0
  83. package/dist/encoders/Relay16DryCommands.test.js +32 -0
  84. package/dist/encoders/Relay16DryCommands.test.js.map +1 -0
  85. package/dist/encoders/SetAqiLedCommands.test.d.ts +2 -0
  86. package/dist/encoders/SetAqiLedCommands.test.d.ts.map +1 -0
  87. package/dist/encoders/SetAqiLedCommands.test.js +20 -0
  88. package/dist/encoders/SetAqiLedCommands.test.js.map +1 -0
  89. package/dist/encoders/TFloodCommands.test.d.ts +2 -0
  90. package/dist/encoders/TFloodCommands.test.d.ts.map +1 -0
  91. package/dist/encoders/TFloodCommands.test.js +23 -0
  92. package/dist/encoders/TFloodCommands.test.js.map +1 -0
  93. package/dist/encoders/TRingThermostatCommands.test.d.ts +2 -0
  94. package/dist/encoders/TRingThermostatCommands.test.d.ts.map +1 -0
  95. package/dist/encoders/TRingThermostatCommands.test.js +16 -0
  96. package/dist/encoders/TRingThermostatCommands.test.js.map +1 -0
  97. package/dist/encoders/TValveCommands.test.d.ts +2 -0
  98. package/dist/encoders/TValveCommands.test.d.ts.map +1 -0
  99. package/dist/encoders/TValveCommands.test.js +56 -0
  100. package/dist/encoders/TValveCommands.test.js.map +1 -0
  101. package/dist/encoders/TemperatureCommonCommands.test.d.ts +2 -0
  102. package/dist/encoders/TemperatureCommonCommands.test.d.ts.map +1 -0
  103. package/dist/encoders/TemperatureCommonCommands.test.js +14 -0
  104. package/dist/encoders/TemperatureCommonCommands.test.js.map +1 -0
  105. package/dist/encoders/VickiCommands.test.d.ts +2 -0
  106. package/dist/encoders/VickiCommands.test.d.ts.map +1 -0
  107. package/dist/encoders/VickiCommands.test.js +156 -0
  108. package/dist/encoders/VickiCommands.test.js.map +1 -0
  109. package/dist/encoders/WirelessThermostatCommands.test.d.ts +2 -0
  110. package/dist/encoders/WirelessThermostatCommands.test.d.ts.map +1 -0
  111. package/dist/encoders/WirelessThermostatCommands.test.js +41 -0
  112. package/dist/encoders/WirelessThermostatCommands.test.js.map +1 -0
  113. package/dist/test/payloadDecoders.test.js +34 -34
  114. package/dist/test/payloadDecoders.test.js.map +1 -1
  115. package/package.json +1 -1
  116. package/src/decoders/payloadParsers/multisensorPayloadParser.ts +96 -34
  117. package/src/encoders/ButtonCommands.test.ts +26 -0
  118. package/src/encoders/ChildLockCommands.test.ts +22 -0
  119. package/src/encoders/Co2DisplayCommands.test.ts +26 -0
  120. package/src/encoders/Co2DisplayLiteCommands.test.ts +30 -0
  121. package/src/encoders/Co2PirLiteCommands.test.ts +32 -0
  122. package/src/encoders/Co2SensorCommands.test.ts +79 -0
  123. package/src/encoders/DisplayCommands.test.ts +40 -0
  124. package/src/encoders/DskDeviceCommands.test.ts +26 -0
  125. package/src/encoders/FanCoilThermostatCommands.test.ts +204 -0
  126. package/src/encoders/GeneralCommands.test.ts +38 -0
  127. package/src/encoders/HTDisplayLiteCommands.test.ts +28 -0
  128. package/src/encoders/HTPirLiteCommands.test.ts +32 -0
  129. package/src/encoders/HTSensorCommands.test.ts +24 -0
  130. package/src/encoders/MelissaCommands.test.ts +16 -0
  131. package/src/encoders/MultiSensorCommands.test.ts +68 -0
  132. package/src/encoders/OpenCloseSensorCommands.test.ts +16 -0
  133. package/src/encoders/PIRCommands.test.ts +46 -0
  134. package/src/encoders/Relay16Commands.test.ts +76 -0
  135. package/src/encoders/Relay16DryCommands.test.ts +52 -0
  136. package/src/encoders/SetAqiLedCommands.test.ts +18 -0
  137. package/src/encoders/TFloodCommands.test.ts +34 -0
  138. package/src/encoders/TRingThermostatCommands.test.ts +23 -0
  139. package/src/encoders/TValveCommands.test.ts +98 -0
  140. package/src/encoders/TemperatureCommonCommands.test.ts +16 -0
  141. package/src/encoders/VickiCommands.test.ts +275 -0
  142. package/src/encoders/WirelessThermostatCommands.test.ts +70 -0
  143. package/src/test/payloadDecoders.test.ts +34 -34
  144. package/src/test.txt +1 -0
  145. package/dist/encoders/FanCoilThermostat.d.ts +0 -61
  146. package/dist/encoders/FanCoilThermostat.d.ts.map +0 -1
  147. package/dist/encoders/FanCoilThermostat.js +0 -719
  148. package/dist/encoders/FanCoilThermostat.js.map +0 -1
  149. package/dist/encoders/SetAqiLed.d.ts +0 -6
  150. package/dist/encoders/SetAqiLed.d.ts.map +0 -1
  151. package/dist/encoders/SetAqiLed.js +0 -46
  152. package/dist/encoders/SetAqiLed.js.map +0 -1
  153. package/dist/encoders/types/enumValidation.d.ts +0 -6
  154. package/dist/encoders/types/enumValidation.d.ts.map +0 -1
  155. package/dist/encoders/types/enumValidation.js +0 -50
  156. package/dist/encoders/types/enumValidation.js.map +0 -1
  157. package/dist/encoders/types/schemaValidatedEnums.d.ts +0 -40
  158. package/dist/encoders/types/schemaValidatedEnums.d.ts.map +0 -1
  159. package/dist/encoders/types/schemaValidatedEnums.js +0 -181
  160. package/dist/encoders/types/schemaValidatedEnums.js.map +0 -1
  161. package/dist/types/deviceTypes.d.ts +0 -19
  162. package/dist/types/deviceTypes.d.ts.map +0 -1
  163. package/dist/types/deviceTypes.js +0 -23
  164. package/dist/types/deviceTypes.js.map +0 -1
  165. package/dist/types/index.d.ts +0 -2
  166. package/dist/types/index.d.ts.map +0 -1
  167. package/dist/types/index.js +0 -18
  168. package/dist/types/index.js.map +0 -1
  169. package/dist/types/types.d.ts +0 -13
  170. package/dist/types/types.d.ts.map +0 -1
  171. package/dist/types/types.js +0 -9
  172. package/dist/types/types.js.map +0 -1
  173. package/dist/validation.d.ts +0 -3
  174. package/dist/validation.d.ts.map +0 -1
  175. package/dist/validation.js +0 -8
  176. package/dist/validation.js.map +0 -1
  177. package/src/test/payloadEncoders.test.ts +0 -850
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('FanCoilThermostatCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('fan_coil_thermostat');
7
+ test('SetTargetTemperatureStep encodes step *10', () => {
8
+ expect(commandBuilder.build('SetTargetTemperatureStep', { value: 0.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperatureStep', 0x03, '05'));
9
+ });
10
+ test('SetKeysLock encodes lock value', () => {
11
+ expect(commandBuilder.build('SetKeysLock', { value: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetKeysLock', 0x07, '03'));
12
+ });
13
+ test('SetTargetTemperature encodes temperature *10 as 2 bytes', () => {
14
+ expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 20 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x2e, '00C8'));
15
+ });
16
+ test('SetFctOperationalMode encodes mode', () => {
17
+ expect(commandBuilder.build('SetFctOperationalMode', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetFctOperationalMode', 0x52, '02'));
18
+ });
19
+ test('SetValveOpenCloseTime encodes time', () => {
20
+ expect(commandBuilder.build('SetValveOpenCloseTime', { value: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetValveOpenCloseTime', 0x31, '0F'));
21
+ });
22
+ test('SetExtAutomaticTemperatureControl encodes toggle', () => {
23
+ expect(commandBuilder.build('SetExtAutomaticTemperatureControl', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetExtAutomaticTemperatureControl', 0x35, '01'));
24
+ });
25
+ test('SetFanSpeed encodes speed', () => {
26
+ expect(commandBuilder.build('SetFanSpeed', { value: 4 })).toStrictEqual(new encoders_1.BaseCommand('SetFanSpeed', 0x44, '04'));
27
+ });
28
+ test('SetFanSpeedLimit encodes limit', () => {
29
+ expect(commandBuilder.build('SetFanSpeedLimit', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetFanSpeedLimit', 0x46, '02'));
30
+ });
31
+ test('SetEcmVoltageRange encodes min/max *10', () => {
32
+ expect(commandBuilder.build('SetEcmVoltageRange', { min: 5, max: 8 })).toStrictEqual(new encoders_1.BaseCommand('SetEcmVoltageRange', 0x48, '32', '50'));
33
+ });
34
+ test('SetEcmStartUpTime encodes start-up time', () => {
35
+ expect(commandBuilder.build('SetEcmStartUpTime', { value: 7 })).toStrictEqual(new encoders_1.BaseCommand('SetEcmStartUpTime', 0x4a, '07'));
36
+ });
37
+ test('SetEcmRelay encodes relay toggle', () => {
38
+ expect(commandBuilder.build('SetEcmRelay', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetEcmRelay', 0x4c, '01'));
39
+ });
40
+ test('SetFrostProtection encodes protection toggle', () => {
41
+ expect(commandBuilder.build('SetFrostProtection', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetFrostProtection', 0x4e, '01'));
42
+ });
43
+ test('SetFrostProtectionSettings encodes threshold and setpoint', () => {
44
+ expect(commandBuilder.build('SetFrostProtectionSettings', { threshold: 6, setpoint: 8 })).toStrictEqual(new encoders_1.BaseCommand('SetFrostProtectionSettings', 0x50, '06', '08'));
45
+ });
46
+ test('SetAllowedOperationalModes encodes allowed modes', () => {
47
+ expect(commandBuilder.build('SetAllowedOperationalModes', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAllowedOperationalModes', 0x54, '01'));
48
+ });
49
+ test('SetCoolingSetpointNotOccupied encodes setpoint', () => {
50
+ expect(commandBuilder.build('SetCoolingSetpointNotOccupied', { value: 18 })).toStrictEqual(new encoders_1.BaseCommand('SetCoolingSetpointNotOccupied', 0x56, '12'));
51
+ });
52
+ test('SetHeatingSetpointNotOccupied encodes setpoint', () => {
53
+ expect(commandBuilder.build('SetHeatingSetpointNotOccupied', { value: 19 })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingSetpointNotOccupied', 0x58, '13'));
54
+ });
55
+ test('SetTempSensorCompensation encodes compensation and absolute temperature *10', () => {
56
+ expect(commandBuilder.build('SetTempSensorCompensation', { compensation: 1, temperature: -1.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTempSensorCompensation', 0x5a, '01', '0F'));
57
+ });
58
+ test('SetFanSpeedNotOccupied encodes speed option', () => {
59
+ expect(commandBuilder.build('SetFanSpeedNotOccupied', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetFanSpeedNotOccupied', 0x5c, '02'));
60
+ });
61
+ test('SetAutomaticChangeover encodes toggle', () => {
62
+ expect(commandBuilder.build('SetAutomaticChangeover', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticChangeover', 0x5e, '01'));
63
+ });
64
+ test('SetWiringDiagram encodes diagram value', () => {
65
+ expect(commandBuilder.build('SetWiringDiagram', { value: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetWiringDiagram', 0x60, '03'));
66
+ });
67
+ test('SetOccFunction encodes occupancy function', () => {
68
+ expect(commandBuilder.build('SetOccFunction', { value: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetOccFunction', 0x62, '05'));
69
+ });
70
+ test('SetAutomaticChangeoverThreshold encodes cooling/heating thresholds', () => {
71
+ expect(commandBuilder.build('SetAutomaticChangeoverThreshold', { coolingThreshold: 10, heatingThreshold: 40 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticChangeoverThreshold', 0x64, '0A', '28'));
72
+ });
73
+ test('SetDeviceStatus encodes on/off', () => {
74
+ expect(commandBuilder.build('SetDeviceStatus', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetDeviceStatus', 0x66, '01'));
75
+ });
76
+ test('SetReturnOfPowerOperation encodes behavior', () => {
77
+ expect(commandBuilder.build('SetReturnOfPowerOperation', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetReturnOfPowerOperation', 0x68, '02'));
78
+ });
79
+ test('SetDeltaTemperature1 encodes delta *10', () => {
80
+ expect(commandBuilder.build('SetDeltaTemperature1', { value: 1.5 })).toStrictEqual(new encoders_1.BaseCommand('SetDeltaTemperature1', 0x6a, '0F'));
81
+ });
82
+ test('SetDeltaTemperature2and3 encodes both deltas *10', () => {
83
+ expect(commandBuilder.build('SetDeltaTemperature2and3', { deltaTemperature2: 2, deltaTemperature3: 2.5 })).toStrictEqual(new encoders_1.BaseCommand('SetDeltaTemperature2and3', 0x6c, '14', '19'));
84
+ });
85
+ test('SetHeatingCoolingTargetTempRanges encodes min/max values', () => {
86
+ expect(commandBuilder.build('SetHeatingCoolingTargetTempRanges', {
87
+ heatingTempMin: 10,
88
+ heatingTempMax: 20,
89
+ coolingTempMin: 15,
90
+ coolingTempMax: 25,
91
+ })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingCoolingTargetTempRanges', 0x16, '0A', '14', '0F', '19'));
92
+ });
93
+ test('SetHeatingCoolingTargetTempRangesUnoccupied encodes min/max values', () => {
94
+ expect(commandBuilder.build('SetHeatingCoolingTargetTempRangesUnoccupied', {
95
+ heatingTempMin: 11,
96
+ heatingTempMax: 21,
97
+ coolingTempMin: 16,
98
+ coolingTempMax: 22,
99
+ })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingCoolingTargetTempRangesUnoccupied', 0x76, '0B', '15', '10', '16'));
100
+ });
101
+ test('SetFanOffDelayTime encodes delay time', () => {
102
+ expect(commandBuilder.build('SetFanOffDelayTime', { time: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetFanOffDelayTime', 0x78, '1E'));
103
+ });
104
+ test('SetAdditionalFanMode encodes mode', () => {
105
+ expect(commandBuilder.build('SetAdditionalFanMode', { mode: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetAdditionalFanMode', 0x7a, '02'));
106
+ });
107
+ test('SetUserInterfaceLanguage encodes language option', () => {
108
+ expect(commandBuilder.build('SetUserInterfaceLanguage', { value: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetUserInterfaceLanguage', 0x9a, '03'));
109
+ });
110
+ test('RestartDevice emits restart command', () => {
111
+ expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
112
+ });
113
+ test('Invalid SetTargetTemperatureStep throws validation error', () => {
114
+ expect(() => commandBuilder.build('SetTargetTemperatureStep', { value: 0 })).toThrow(utils_1.CustomError);
115
+ });
116
+ });
117
+ //# sourceMappingURL=FanCoilThermostatCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FanCoilThermostatCommands.test.js","sourceRoot":"","sources":["../../src/encoders/FanCoilThermostatCommands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GeneralCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeneralCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/GeneralCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('GeneralCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('vicki');
7
+ test('SendCustomHexCommand forwards raw hex', () => {
8
+ expect(commandBuilder.build('SendCustomHexCommand', { command: '0412' })).toStrictEqual(new encoders_1.BaseCommand('SendCustomHexCommand', '0412'));
9
+ });
10
+ test('SetKeepAlive encodes keepalive time', () => {
11
+ expect(commandBuilder.build('SetKeepAlive', { time: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetKeepAlive', 0x02, '05'));
12
+ });
13
+ test('SetJoinRetryPeriod scales minutes before encoding', () => {
14
+ expect(commandBuilder.build('SetJoinRetryPeriod', { period: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetJoinRetryPeriod', 0x10, '78'));
15
+ });
16
+ test('SetUplinkType passes uplink type', () => {
17
+ expect(commandBuilder.build('SetUplinkType', { type: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetUplinkType', 0x11, '01'));
18
+ });
19
+ test('SetWatchDogParams encodes confirmed/unconfirmed uplinks', () => {
20
+ expect(commandBuilder.build('SetWatchDogParams', { confirmedUplinks: 2, unconfirmedUplinks: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetWatchDogParams', 0x1c, '02', '03'));
21
+ });
22
+ test('Invalid SendCustomHexCommand params throw validation error', () => {
23
+ expect(() => commandBuilder.build('SendCustomHexCommand', { command: 'ZZZ' })).toThrow(utils_1.CustomError);
24
+ });
25
+ });
26
+ //# sourceMappingURL=GeneralCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeneralCommands.test.js","sourceRoot":"","sources":["../../src/encoders/GeneralCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAChD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,OAAO,CAAC,CAAA;IAElD,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CACtF,IAAI,sBAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAC/C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,sBAAW,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACrH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAC/E,IAAI,sBAAW,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CACjD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAC1E,IAAI,sBAAW,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAC5C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC9G,IAAI,sBAAW,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HTDisplayLiteCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTDisplayLiteCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/HTDisplayLiteCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('HTDisplayLiteCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('ht_display_lite');
7
+ test('SetDisplayRefreshPeriod encodes period', () => {
8
+ expect(commandBuilder.build('SetDisplayRefreshPeriod', { period: 4 })).toStrictEqual(new encoders_1.BaseCommand('SetDisplayRefreshPeriod', 0x33, '04'));
9
+ });
10
+ test('SetHumidityVisibility encodes toggle', () => {
11
+ expect(commandBuilder.build('SetHumidityVisibility', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetHumidityVisibility', 0x42, '01'));
12
+ });
13
+ test('SetCurrentTemperatureVisibility encodes toggle', () => {
14
+ expect(commandBuilder.build('SetCurrentTemperatureVisibility', { state: 0 })).toStrictEqual(new encoders_1.BaseCommand('SetCurrentTemperatureVisibility', 0x40, '00'));
15
+ });
16
+ test('Invalid SetDisplayRefreshPeriod throws validation error', () => {
17
+ expect(() => commandBuilder.build('SetDisplayRefreshPeriod', { period: 0 })).toThrow(utils_1.CustomError);
18
+ });
19
+ });
20
+ //# sourceMappingURL=HTDisplayLiteCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTDisplayLiteCommands.test.js","sourceRoot":"","sources":["../../src/encoders/HTDisplayLiteCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACtD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,iBAAiB,CAAC,CAAA;IAE5D,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CACnF,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAChF,IAAI,sBAAW,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,CACpD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC1F,IAAI,sBAAW,CAAC,iCAAiC,EAAE,IAAI,EAAE,IAAI,CAAC,CAC9D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HTPirLiteCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTPirLiteCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/HTPirLiteCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('HTPirLiteCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('ht_pir_lite');
7
+ test('SetPIRSensorState encodes enabled flag', () => {
8
+ expect(commandBuilder.build('SetPIRSensorState', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorState', 0x36, '01'));
9
+ });
10
+ test('SetPIRSensorSensitivity encodes sensitivity value', () => {
11
+ expect(commandBuilder.build('SetPIRSensorSensitivity', { sensitivity: 64 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorSensitivity', 0x3e, '40'));
12
+ });
13
+ test('SetOccupancyTimeout encodes timeout into two bytes', () => {
14
+ expect(commandBuilder.build('SetOccupancyTimeout', { timeout: 120 })).toStrictEqual(new encoders_1.BaseCommand('SetOccupancyTimeout', 0x38, '0078'));
15
+ });
16
+ test('RestartDevice emits restart command', () => {
17
+ expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
18
+ });
19
+ test('Invalid SetPIRSensorState throws validation error', () => {
20
+ expect(() => commandBuilder.build('SetPIRSensorState', { state: 2 })).toThrow(utils_1.CustomError);
21
+ });
22
+ });
23
+ //# sourceMappingURL=HTPirLiteCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTPirLiteCommands.test.js","sourceRoot":"","sources":["../../src/encoders/HTPirLiteCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAClD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,aAAa,CAAC,CAAA;IAExD,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,mDAAmD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACzF,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,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,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAClF,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,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;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HTSensorCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTSensorCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/HTSensorCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('HTSensorCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('ht_sensor');
7
+ test('SetTemperatureCompensation encodes sign flag and compensation *10', () => {
8
+ expect(commandBuilder.build('SetTemperatureCompensation', { negativeCompensation: true, compensation: 0.3 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureCompensation', 0x31, '01', '03'));
9
+ });
10
+ test('SetHumidityCompensation encodes sign flag and compensation', () => {
11
+ expect(commandBuilder.build('SetHumidityCompensation', { negativeCompensation: false, compensation: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetHumidityCompensation', 0x33, '00', '03'));
12
+ });
13
+ test('Invalid SetTemperatureCompensation throws validation error', () => {
14
+ expect(() => commandBuilder.build('SetTemperatureCompensation', { negativeCompensation: true, compensation: -1 })).toThrow(utils_1.CustomError);
15
+ });
16
+ });
17
+ //# sourceMappingURL=HTSensorCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTSensorCommands.test.js","sourceRoot":"","sources":["../../src/encoders/HTSensorCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IACjD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,WAAW,CAAC,CAAA;IAEtD,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC9E,MAAM,CACL,cAAc,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CACrG,CAAC,aAAa,CAAC,IAAI,sBAAW,CAAC,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACvE,MAAM,CACL,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CACjG,CAAC,aAAa,CAAC,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CACX,cAAc,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CACpG,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MelissaCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MelissaCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/MelissaCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('MelissaCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('melissa_lorawan');
7
+ test('SetIrCodeRecording encodes time and position', () => {
8
+ expect(commandBuilder.build('SetIrCodeRecording', { time: 10, position: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetIrCodeRecording', 0x09, '0A', '02'));
9
+ });
10
+ test('Invalid SetIrCodeRecording throws validation error', () => {
11
+ expect(() => commandBuilder.build('SetIrCodeRecording', { time: -1, position: 1 })).toThrow(utils_1.CustomError);
12
+ });
13
+ });
14
+ //# sourceMappingURL=MelissaCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MelissaCommands.test.js","sourceRoot":"","sources":["../../src/encoders/MelissaCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAChD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,iBAAiB,CAAC,CAAA;IAE5D,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC1F,IAAI,sBAAW,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CACvD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IACzG,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MultiSensorCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSensorCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/MultiSensorCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('MultiSensorCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('multisensor');
7
+ test('SetLightState encodes boolean to flag', () => {
8
+ expect(commandBuilder.build('SetLightState', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetLightState', 0x1e, '01'));
9
+ });
10
+ test('SetHallState encodes boolean to flag', () => {
11
+ expect(commandBuilder.build('SetHallState', { enabled: false })).toStrictEqual(new encoders_1.BaseCommand('SetHallState', 0x20, '00'));
12
+ });
13
+ test('SetHallBlindPeriod encodes period as 2 bytes', () => {
14
+ expect(commandBuilder.build('SetHallBlindPeriod', { period: 300 })).toStrictEqual(new encoders_1.BaseCommand('SetHallBlindPeriod', 0x22, '012C'));
15
+ });
16
+ test('SetMicrophoneState encodes boolean to flag', () => {
17
+ expect(commandBuilder.build('SetMicrophoneState', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetMicrophoneState', 0x24, '01'));
18
+ });
19
+ test('SetMicrophoneSamplingPeriod encodes period as 2 bytes', () => {
20
+ expect(commandBuilder.build('SetMicrophoneSamplingPeriod', { period: 120 })).toStrictEqual(new encoders_1.BaseCommand('SetMicrophoneSamplingPeriod', 0x26, '0078'));
21
+ });
22
+ test('SetGasState encodes boolean to flag', () => {
23
+ expect(commandBuilder.build('SetGasState', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetGasState', 0x28, '01'));
24
+ });
25
+ test('SetGasMeasurementPeriod encodes minutes', () => {
26
+ expect(commandBuilder.build('SetGasMeasurementPeriod', { minutes: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetGasMeasurementPeriod', 0x2a, '0F'));
27
+ });
28
+ test('SetPirState encodes boolean to flag', () => {
29
+ expect(commandBuilder.build('SetPirState', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetPirState', 0x2c, '01'));
30
+ });
31
+ test('SetPirActiveReportingPeriod encodes time as 2 bytes', () => {
32
+ expect(commandBuilder.build('SetPirActiveReportingPeriod', { time: 45 })).toStrictEqual(new encoders_1.BaseCommand('SetPirActiveReportingPeriod', 0x2e, '002D'));
33
+ });
34
+ test('Restart emits restart command', () => {
35
+ expect(commandBuilder.build('Restart')).toStrictEqual(new encoders_1.BaseCommand('Restart', 0xa5));
36
+ });
37
+ test('Invalid SetHallBlindPeriod throws validation error', () => {
38
+ expect(() => commandBuilder.build('SetHallBlindPeriod', { period: -1 })).toThrow(utils_1.CustomError);
39
+ });
40
+ });
41
+ //# sourceMappingURL=MultiSensorCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSensorCommands.test.js","sourceRoot":"","sources":["../../src/encoders/MultiSensorCommands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OpenCloseSensorCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenCloseSensorCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/OpenCloseSensorCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('OpenCloseSensorCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('open_close_sensor');
7
+ test('SetNotificationBlindTime encodes time', () => {
8
+ expect(commandBuilder.build('SetNotificationBlindTime', { time: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetNotificationBlindTime', 0x1e, '0A'));
9
+ });
10
+ test('Invalid SetNotificationBlindTime throws validation error', () => {
11
+ expect(() => commandBuilder.build('SetNotificationBlindTime', { time: -1 })).toThrow(utils_1.CustomError);
12
+ });
13
+ });
14
+ //# sourceMappingURL=OpenCloseSensorCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenCloseSensorCommands.test.js","sourceRoot":"","sources":["../../src/encoders/OpenCloseSensorCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACxD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,mBAAmB,CAAC,CAAA;IAE9D,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACnF,IAAI,sBAAW,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,CACvD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACrE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PIRCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PIRCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/PIRCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('PIRCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('co2_display');
7
+ test('SetPIRSensorStatus encodes state', () => {
8
+ expect(commandBuilder.build('SetPIRSensorStatus', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorStatus', 0x3c, '01'));
9
+ });
10
+ test('SetPIRSensorSensitivity encodes sensitivity', () => {
11
+ expect(commandBuilder.build('SetPIRSensorSensitivity', { sensitivity: 12 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorSensitivity', 0x3e, '0C'));
12
+ });
13
+ test('SetPIRInitPeriod encodes time', () => {
14
+ expect(commandBuilder.build('SetPIRInitPeriod', { time: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRInitPeriod', 0x46, '05'));
15
+ });
16
+ test('SetPIRMeasurementPeriod encodes time', () => {
17
+ expect(commandBuilder.build('SetPIRMeasurementPeriod', { time: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRMeasurementPeriod', 0x48, '0F'));
18
+ });
19
+ test('SetPIRCheckPeriod encodes 2-byte time', () => {
20
+ expect(commandBuilder.build('SetPIRCheckPeriod', { time: 500 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRCheckPeriod', 0x4a, '01F4'));
21
+ });
22
+ test('SetPIRBlindPeriod encodes 2-byte time', () => {
23
+ expect(commandBuilder.build('SetPIRBlindPeriod', { time: 300 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRBlindPeriod', 0x4c, '012C'));
24
+ });
25
+ test('Invalid SetPIRSensorStatus throws validation error', () => {
26
+ expect(() => commandBuilder.build('SetPIRSensorStatus', { state: 2 })).toThrow(utils_1.CustomError);
27
+ });
28
+ });
29
+ //# sourceMappingURL=PIRCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PIRCommands.test.js","sourceRoot":"","sources":["../../src/encoders/PIRCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC5C,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,aAAa,CAAC,CAAA;IAExD,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC7E,IAAI,sBAAW,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CACjD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACzF,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC1E,IAAI,sBAAW,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,CAC/C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAClF,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAC7E,IAAI,sBAAW,CAAC,mBAAmB,EAAE,IAAI,EAAE,MAAM,CAAC,CAClD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAC7E,IAAI,sBAAW,CAAC,mBAAmB,EAAE,IAAI,EAAE,MAAM,CAAC,CAClD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Relay16Commands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relay16Commands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/Relay16Commands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('Relay16Commands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('relay_16');
7
+ test('SetOverheatingThresholds encodes trigger and recovery', () => {
8
+ expect(commandBuilder.build('SetOverheatingThresholds', { trigger: 45, recovery: 60 })).toStrictEqual(new encoders_1.BaseCommand('SetOverheatingThresholds', 0x1e, '2D', '3C'));
9
+ });
10
+ test('SetOverheatingThresholds matches doc example values', () => {
11
+ expect(commandBuilder.build('SetOverheatingThresholds', { trigger: 90, recovery: 60 })).toStrictEqual(new encoders_1.BaseCommand('SetOverheatingThresholds', 0x1e, '5A', '3C'));
12
+ });
13
+ test('SetOvervoltageThresholds encodes trigger and recovery', () => {
14
+ expect(commandBuilder.build('SetOvervoltageThresholds', { trigger: 230, recovery: 150 })).toStrictEqual(new encoders_1.BaseCommand('SetOvervoltageThresholds', 0x20, '00E6', '96'));
15
+ });
16
+ test('SetOvercurrentThreshold encodes current value', () => {
17
+ expect(commandBuilder.build('SetOvercurrentThreshold', { current: 12 })).toStrictEqual(new encoders_1.BaseCommand('SetOvercurrentThreshold', 0x22, '0C'));
18
+ });
19
+ test('SetOverpowerThreshold encodes power value', () => {
20
+ expect(commandBuilder.build('SetOverpowerThreshold', { power: 1500 })).toStrictEqual(new encoders_1.BaseCommand('SetOverpowerThreshold', 0x24, '05DC'));
21
+ });
22
+ test('SetAfterOverheatingProtectionRecovery encodes state flag', () => {
23
+ expect(commandBuilder.build('SetAfterOverheatingProtectionRecovery', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAfterOverheatingProtectionRecovery', 0x59, '01'));
24
+ });
25
+ test('SetLedIndicationMode encodes mode flag', () => {
26
+ expect(commandBuilder.build('SetLedIndicationMode', { mode: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetLedIndicationMode', 0x5b, '01'));
27
+ });
28
+ test('SetRelayRecoveryState encodes relay recovery state', () => {
29
+ expect(commandBuilder.build('SetRelayRecoveryState', { state: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayRecoveryState', 0x5e, '02'));
30
+ });
31
+ test('SetRelayState maps boolean to relay flag', () => {
32
+ expect(commandBuilder.build('SetRelayState', { state: false })).toStrictEqual(new encoders_1.BaseCommand('SetRelayState', 0xc1, '00'));
33
+ });
34
+ test('SetRelayTimerInMilliseconds encodes state and time', () => {
35
+ expect(commandBuilder.build('SetRelayTimerInMilliseconds', { state: 1, time: 1200 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInMilliseconds', 0x55, '01', '04B0'));
36
+ });
37
+ test('SetRelayTimerInSeconds encodes state and time', () => {
38
+ expect(commandBuilder.build('SetRelayTimerInSeconds', { state: 0, time: 90 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInSeconds', 0x57, '00', '005A'));
39
+ });
40
+ test('Invalid parameter triggers validation error', () => {
41
+ expect(() => commandBuilder.build('SetOverpowerThreshold', { power: 4000 })).toThrow(utils_1.CustomError);
42
+ });
43
+ });
44
+ //# sourceMappingURL=Relay16Commands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relay16Commands.test.js","sourceRoot":"","sources":["../../src/encoders/Relay16Commands.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,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACpG,IAAI,sBAAW,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAC7D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACpG,IAAI,sBAAW,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAC7D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CACtG,IAAI,sBAAW,CAAC,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAC/D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACrF,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CACnF,IAAI,sBAAW,CAAC,uBAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACrE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAChG,IAAI,sBAAW,CAAC,uCAAuC,EAAE,IAAI,EAAE,IAAI,CAAC,CACpE,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC9E,IAAI,sBAAW,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CACnD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAChF,IAAI,sBAAW,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,CACpD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAC5E,IAAI,sBAAW,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAC5C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAClG,IAAI,sBAAW,CAAC,6BAA6B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAClE,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAC3F,IAAI,sBAAW,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAC7D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Relay16DryCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relay16DryCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/Relay16DryCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const utils_1 = require("../utils");
5
+ describe('Relay16DryCommands payload encoder', () => {
6
+ const commandBuilder = new encoders_1.CommandBuilder('relay_16_dry');
7
+ test('SetRelayState maps boolean to relay flag', () => {
8
+ expect(commandBuilder.build('SetRelayState', { state: true })).toStrictEqual(new encoders_1.BaseCommand('SetRelayState', 0xc1, '01'));
9
+ });
10
+ test('SetRelayTimerInMilliseconds encodes state and time', () => {
11
+ expect(commandBuilder.build('SetRelayTimerInMilliseconds', { state: 0, time: 500 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInMilliseconds', 0x55, '00', '01F4'));
12
+ });
13
+ test('SetRelayTimerInSeconds encodes state and time', () => {
14
+ expect(commandBuilder.build('SetRelayTimerInSeconds', { state: 1, time: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInSeconds', 0x57, '01', '0003'));
15
+ });
16
+ test('SetOverheatingThresholds encodes trigger and recovery', () => {
17
+ expect(commandBuilder.build('SetOverheatingThresholds', { trigger: 40, recovery: 60 })).toStrictEqual(new encoders_1.BaseCommand('SetOverheatingThresholds', 0x1e, '28', '3C'));
18
+ });
19
+ test('SetAfterOverheatingProtectionRecovery encodes state', () => {
20
+ expect(commandBuilder.build('SetAfterOverheatingProtectionRecovery', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAfterOverheatingProtectionRecovery', 0x59, '01'));
21
+ });
22
+ test('SetLedIndicationMode encodes mode', () => {
23
+ expect(commandBuilder.build('SetLedIndicationMode', { mode: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetLedIndicationMode', 0x5b, '01'));
24
+ });
25
+ test('SetRelayRecoveryState encodes state', () => {
26
+ expect(commandBuilder.build('SetRelayRecoveryState', { state: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayRecoveryState', 0x5e, '02'));
27
+ });
28
+ test('Invalid SetRelayTimerInSeconds throws validation error', () => {
29
+ expect(() => commandBuilder.build('SetRelayTimerInSeconds', { state: 0, time: 70000 })).toThrow(utils_1.CustomError);
30
+ });
31
+ });
32
+ //# sourceMappingURL=Relay16DryCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relay16DryCommands.test.js","sourceRoot":"","sources":["../../src/encoders/Relay16DryCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IACnD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,cAAc,CAAC,CAAA;IAEzD,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAC3E,IAAI,sBAAW,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAC5C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CACjG,IAAI,sBAAW,CAAC,6BAA6B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAClE,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC1F,IAAI,sBAAW,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAC7D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACpG,IAAI,sBAAW,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAC7D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAChG,IAAI,sBAAW,CAAC,uCAAuC,EAAE,IAAI,EAAE,IAAI,CAAC,CACpE,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAC9E,IAAI,sBAAW,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CACnD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAChF,IAAI,sBAAW,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,CACpD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAC7G,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SetAqiLedCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetAqiLedCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/SetAqiLedCommands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const encoders_1 = require("../encoders");
4
+ const SetAqiLedCommands_1 = require("../encoders/SetAqiLedCommands");
5
+ describe('SetAqiLedCommands payload encoder', () => {
6
+ test('SetAqiLed encodes behaviors and durations', () => {
7
+ const command = new SetAqiLedCommands_1.SetAqiLedCommands({
8
+ redBehavior: 1,
9
+ redDuration: 20,
10
+ greenBehavior: 2,
11
+ greenDuration: 30,
12
+ blueBehavior: 3,
13
+ blueDuration: 40,
14
+ commandNumber: '05',
15
+ });
16
+ expect(command).toBeInstanceOf(encoders_1.BaseCommand);
17
+ expect(command.toHex()).toBe('05224364');
18
+ });
19
+ });
20
+ //# sourceMappingURL=SetAqiLedCommands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetAqiLedCommands.test.js","sourceRoot":"","sources":["../../src/encoders/SetAqiLedCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwC;AACxC,oEAAgE;AAEhE,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAClD,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAG,IAAI,qCAAiB,CAAC;YACrC,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,IAAI;SACnB,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,sBAAW,CAAC,CAAA;QAC3C,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TFloodCommands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TFloodCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/TFloodCommands.test.ts"],"names":[],"mappings":""}