mclimate-payload-helper 1.4.2 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTEXT.md +2 -0
- package/dist/decoders/payloadParsers/pirMiniPayloadParser.d.ts.map +1 -1
- package/dist/decoders/payloadParsers/pirMiniPayloadParser.js +14 -1
- package/dist/decoders/payloadParsers/pirMiniPayloadParser.js.map +1 -1
- package/dist/encoders/PirMiniCommands.test.js +3 -0
- package/dist/encoders/PirMiniCommands.test.js.map +1 -1
- package/dist/encoders/types/schemas.js +1 -1
- package/dist/encoders/types/schemas.js.map +1 -1
- package/dist/test/payloadDecoders.test.js +24 -2
- package/dist/test/payloadDecoders.test.js.map +1 -1
- package/package.json +1 -1
- package/src/decoders/payloadParsers/pirMiniPayloadParser.ts +15 -1
- package/src/encoders/PirMiniCommands.test.ts +6 -0
- package/src/encoders/types/schemas.ts +1 -1
- package/src/test/payloadDecoders.test.ts +24 -2
- package/dist/test/payloadEncoders.test.d.ts +0 -2
- package/dist/test/payloadEncoders.test.d.ts.map +0 -1
- package/dist/test/payloadEncoders.test.js +0 -517
- package/dist/test/payloadEncoders.test.js.map +0 -1
|
@@ -1,517 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const encoders_1 = require("../encoders");
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
describe('General Commands payload encoder', () => {
|
|
6
|
-
const commandBuilder = new encoders_1.CommandBuilder('vicki');
|
|
7
|
-
test('Custom hex command Vicki', () => {
|
|
8
|
-
expect(commandBuilder.build('SendCustomHexCommand', { command: '0412' })).toStrictEqual(new encoders_1.BaseCommand('SendCustomHexCommand', '0412'));
|
|
9
|
-
});
|
|
10
|
-
test('Set keepalive time', () => {
|
|
11
|
-
expect(commandBuilder.build('SetKeepAlive', { time: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetKeepAlive', 2, '05'));
|
|
12
|
-
});
|
|
13
|
-
test('Set heating event', () => {
|
|
14
|
-
//5900080101021F
|
|
15
|
-
expect(commandBuilder.build('SetHeatingEvent', { eventIndex: 0, startHour: 8, startMinute: 1, targetTemperature: 25.8,
|
|
16
|
-
daysActive: { monday: true, tuesday: true, wednesday: true, thursday: true, friday: true, saturday: false, sunday: false }
|
|
17
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetHeatingEvent', 0x59, '00', '08', '01', '0102', '1F'));
|
|
18
|
-
});
|
|
19
|
-
test('Set heating event', () => {
|
|
20
|
-
//59020600006460
|
|
21
|
-
expect(commandBuilder.build('SetHeatingEvent', { eventIndex: 2, startHour: 6, startMinute: 0, targetTemperature: 5.0,
|
|
22
|
-
daysActive: { monday: false, tuesday: false, wednesday: false, thursday: false, friday: false, saturday: true, sunday: true }
|
|
23
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetHeatingEvent', 0x59, '02', '06', '00', '0032', '60'));
|
|
24
|
-
});
|
|
25
|
-
test('Activate heating event (index 16)', () => {
|
|
26
|
-
expect(commandBuilder.build('SetHeatingEventState', { eventIndex: 16, active: true }))
|
|
27
|
-
.toStrictEqual(new encoders_1.BaseCommand('SetHeatingEventState', 0x6b, '10', '01'));
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe('TValve commands payload encoder', () => {
|
|
31
|
-
const commandBuilder = new encoders_1.CommandBuilder('t_valve');
|
|
32
|
-
test('Set open close command', () => {
|
|
33
|
-
expect(commandBuilder.build('SetOpenCloseTime', { openingTime: 1, closingTime: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetOpenCloseTime', 1, '01', '05'));
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
describe('Relay commands payload encoder', () => {
|
|
37
|
-
const commandBuilder = new encoders_1.CommandBuilder('relay_16');
|
|
38
|
-
test('SetRelayState command', () => {
|
|
39
|
-
expect(commandBuilder.build('SetRelayState', { state: true })).toStrictEqual(new encoders_1.BaseCommand('SetRelayState', 0xc1, '01'));
|
|
40
|
-
});
|
|
41
|
-
test('SetRelayTimerInMilliseconds command', () => {
|
|
42
|
-
expect(commandBuilder.build('SetRelayTimerInMilliseconds', { state: 0, time: 500 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInMilliseconds', 0x55, '00', '01F4'));
|
|
43
|
-
});
|
|
44
|
-
test('GetRelayTimerInMilliseconds command', () => {
|
|
45
|
-
expect(commandBuilder.build('GetRelayTimerInMilliseconds')).toStrictEqual(new encoders_1.BaseCommand('GetRelayTimerInMilliseconds', 0x56));
|
|
46
|
-
});
|
|
47
|
-
test('SetRelayTimerInSeconds command', () => {
|
|
48
|
-
expect(commandBuilder.build('SetRelayTimerInSeconds', { state: 0, time: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInSeconds', 0x57, '00', '0003'));
|
|
49
|
-
});
|
|
50
|
-
test('GetRelayTimerInSeconds command', () => {
|
|
51
|
-
expect(commandBuilder.build('GetRelayTimerInSeconds')).toStrictEqual(new encoders_1.BaseCommand('GetRelayTimerInSeconds', 0x58));
|
|
52
|
-
});
|
|
53
|
-
test('GetRelayStateChangeReason command', () => {
|
|
54
|
-
expect(commandBuilder.build('GetRelayStateChangeReason')).toStrictEqual(new encoders_1.BaseCommand('GetRelayStateChangeReason', 0x54));
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe('16 ADS commands payload encoder', () => {
|
|
58
|
-
const commandBuilder = new encoders_1.CommandBuilder('relay_16_dry');
|
|
59
|
-
test('SetRelayState command', () => {
|
|
60
|
-
expect(commandBuilder.build('SetRelayState', { state: true })).toStrictEqual(new encoders_1.BaseCommand('SetRelayState', 0xc1, '01'));
|
|
61
|
-
});
|
|
62
|
-
test('SetRelayTimerInMilliseconds command', () => {
|
|
63
|
-
expect(commandBuilder.build('SetRelayTimerInMilliseconds', { state: 0, time: 500 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInMilliseconds', 0x55, '00', '01F4'));
|
|
64
|
-
});
|
|
65
|
-
test('GetRelayTimerInMilliseconds command', () => {
|
|
66
|
-
expect(commandBuilder.build('GetRelayTimerInMilliseconds')).toStrictEqual(new encoders_1.BaseCommand('GetRelayTimerInMilliseconds', 0x56));
|
|
67
|
-
});
|
|
68
|
-
test('SetRelayTimerInSeconds command', () => {
|
|
69
|
-
expect(commandBuilder.build('SetRelayTimerInSeconds', { state: 0, time: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetRelayTimerInSeconds', 0x57, '00', '0003'));
|
|
70
|
-
});
|
|
71
|
-
test('GetRelayTimerInSeconds command', () => {
|
|
72
|
-
expect(commandBuilder.build('GetRelayTimerInSeconds')).toStrictEqual(new encoders_1.BaseCommand('GetRelayTimerInSeconds', 0x58));
|
|
73
|
-
});
|
|
74
|
-
test('GetRelayStateChangeReason command', () => {
|
|
75
|
-
expect(commandBuilder.build('GetRelayStateChangeReason')).toStrictEqual(new encoders_1.BaseCommand('GetRelayStateChangeReason', 0x54));
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe('CO2Display Commands payload encoder', () => {
|
|
79
|
-
const commandBuilder = new encoders_1.CommandBuilder('co2_display');
|
|
80
|
-
test('Set CO2 Measurement Blind Time', () => {
|
|
81
|
-
expect(commandBuilder.build('SetCo2MeasurementBlindTime', { time: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetCo2MeasurementBlindTime', 0x81, '0A'));
|
|
82
|
-
});
|
|
83
|
-
test('Throw error on invalid Set CO2 Measurement Blind Time params', () => {
|
|
84
|
-
expect(() => commandBuilder.build('SetCo2MeasurementBlindTime', { time: -1 })).toThrow(utils_1.CustomError);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
describe('CO2DisplayLite Commands payload encoder', () => {
|
|
88
|
-
const commandBuilder = new encoders_1.CommandBuilder('co2_display_lite');
|
|
89
|
-
test('Set Uplink Sending On Button Press', () => {
|
|
90
|
-
expect(commandBuilder.build('SetUplinkSendingOnButtonPress', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetUplinkSendingOnButtonPress', 0x2e, '01'));
|
|
91
|
-
});
|
|
92
|
-
test('Restart Device', () => {
|
|
93
|
-
expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
|
|
94
|
-
});
|
|
95
|
-
test('Throw error on invalid Set Uplink Sending On Button Press params', () => {
|
|
96
|
-
expect(() => commandBuilder.build('SetUplinkSendingOnButtonPress', { time: -1 })).toThrow(utils_1.CustomError);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
describe('CO2Sensor Commands payload encoder', () => {
|
|
100
|
-
const commandBuilder = new encoders_1.CommandBuilder('co2_sensor');
|
|
101
|
-
test('Set CO2 Boundary Levels (valid range)', () => {
|
|
102
|
-
expect(commandBuilder.build('SetCo2BoundaryLevels', { good_medium: 200, medium_bad: 250 })).toStrictEqual(new encoders_1.BaseCommand('SetCo2BoundaryLevels', 0x1e, '00C8', '00FA'));
|
|
103
|
-
});
|
|
104
|
-
test('Throw error on invalid CO2 Boundary Levels (out of range)', () => {
|
|
105
|
-
expect(() => commandBuilder.build('SetCo2BoundaryLevels', { good_medium: 65536, medium_bad: 66536 })).toThrow(utils_1.CustomError);
|
|
106
|
-
});
|
|
107
|
-
test('Get CO2 Boundary Levels', () => {
|
|
108
|
-
expect(commandBuilder.build('GetCo2BoundaryLevels')).toStrictEqual(new encoders_1.BaseCommand('GetCo2BoundaryLevels', 0x1f));
|
|
109
|
-
});
|
|
110
|
-
test('Set CO2 Auto Zero Value (valid range)', () => {
|
|
111
|
-
expect(commandBuilder.build('SetCo2AutoZeroValue', { ppm: 150 })).toStrictEqual(new encoders_1.BaseCommand('SetCo2AutoZeroValue', 0x20, '0096'));
|
|
112
|
-
});
|
|
113
|
-
test('Throw error on invalid CO2 Auto Zero Value (out of range)', () => {
|
|
114
|
-
expect(() => commandBuilder.build('SetCo2AutoZeroValue', { ppm: 65539 })).toThrow(utils_1.CustomError);
|
|
115
|
-
});
|
|
116
|
-
test('Get CO2 Auto Zero Value', () => {
|
|
117
|
-
expect(commandBuilder.build('GetCo2AutoZeroValue')).toStrictEqual(new encoders_1.BaseCommand('GetCo2AutoZeroValue', 0x21));
|
|
118
|
-
});
|
|
119
|
-
test('Set Notify Period', () => {
|
|
120
|
-
expect(commandBuilder.build('SetNotifyPeriod', { good_zone: 60, medium_zone: 120, bad_zone: 180 })).toStrictEqual(new encoders_1.BaseCommand('SetNotifyPeriod', 0x22, '3C', '78', 'B4'));
|
|
121
|
-
});
|
|
122
|
-
test('Get Notify Period', () => {
|
|
123
|
-
expect(commandBuilder.build('GetNotifyPeriod')).toStrictEqual(new encoders_1.BaseCommand('GetNotifyPeriod', 0x23));
|
|
124
|
-
});
|
|
125
|
-
test('Set CO2 Measurement Period', () => {
|
|
126
|
-
expect(commandBuilder.build('SetCo2MeasurementPeriod', { good_zone: 5, medium_zone: 10, bad_zone: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetCo2MeasurementPeriod', 0x24, '05', '0A', '0F'));
|
|
127
|
-
});
|
|
128
|
-
test('Get CO2 Measurement Period', () => {
|
|
129
|
-
expect(commandBuilder.build('GetCo2MeasurementPeriod')).toStrictEqual(new encoders_1.BaseCommand('GetCo2MeasurementPeriod', 0x25));
|
|
130
|
-
});
|
|
131
|
-
test('Set Buzzer Notification', () => {
|
|
132
|
-
expect(commandBuilder.build('SetBuzzerNotification', {
|
|
133
|
-
duration_good_beeping: 10,
|
|
134
|
-
duration_good_loud: 20,
|
|
135
|
-
duration_good_silent: 30,
|
|
136
|
-
duration_medium_beeping: 40,
|
|
137
|
-
duration_medium_loud: 50,
|
|
138
|
-
duration_medium_silent: 60,
|
|
139
|
-
duration_bad_beeping: 70,
|
|
140
|
-
duration_bad_loud: 80,
|
|
141
|
-
duration_bad_silent: 90,
|
|
142
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetBuzzerNotification', 0x26, '0A', '02', '03', '28', '05', '06', '46', '08', '09'));
|
|
143
|
-
});
|
|
144
|
-
test('Get Buzzer Notification', () => {
|
|
145
|
-
expect(commandBuilder.build('GetBuzzerNotification')).toStrictEqual(new encoders_1.BaseCommand('GetBuzzerNotification', 0x27));
|
|
146
|
-
});
|
|
147
|
-
test('Set CO2 LED', () => {
|
|
148
|
-
expect(commandBuilder.build('SetCo2Led', {
|
|
149
|
-
red_good: 10,
|
|
150
|
-
green_good: 20,
|
|
151
|
-
blue_good: 30,
|
|
152
|
-
duration_good: 40,
|
|
153
|
-
red_medium: 50,
|
|
154
|
-
green_medium: 60,
|
|
155
|
-
blue_medium: 70,
|
|
156
|
-
duration_medium: 80,
|
|
157
|
-
red_bad: 90,
|
|
158
|
-
green_bad: 100,
|
|
159
|
-
blue_bad: 110,
|
|
160
|
-
duration_bad: 120,
|
|
161
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetCo2Led', 0x28, '0A', '14', '1E', '0004', '32', '3C', '46', '0008', '5A', '64', '6E', '000C'));
|
|
162
|
-
});
|
|
163
|
-
test('Get CO2 LED', () => {
|
|
164
|
-
expect(commandBuilder.build('GetCo2Led')).toStrictEqual(new encoders_1.BaseCommand('GetCo2Led', 0x29));
|
|
165
|
-
});
|
|
166
|
-
test('Set CO2 Auto Zero Period', () => {
|
|
167
|
-
expect(commandBuilder.build('SetCo2AutoZeroPeriod', { hours: 24 })).toStrictEqual(new encoders_1.BaseCommand('SetCo2AutoZeroPeriod', 0x2a, '18'));
|
|
168
|
-
});
|
|
169
|
-
test('Get CO2 Auto Zero Period', () => {
|
|
170
|
-
expect(commandBuilder.build('GetCo2AutoZeroPeriod')).toStrictEqual(new encoders_1.BaseCommand('GetCo2AutoZeroPeriod', 0x2b));
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('FanCoilThermostat Commands payload encoder', () => {
|
|
174
|
-
const commandBuilder = new encoders_1.CommandBuilder('fan_coil_thermostat');
|
|
175
|
-
test('Set Target Temperature Step', () => {
|
|
176
|
-
expect(commandBuilder.build('SetTargetTemperatureStep', { value: 2.2 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperatureStep', 0x03, '16'));
|
|
177
|
-
});
|
|
178
|
-
test('Throw error on invalid Target Temperature Step', () => {
|
|
179
|
-
expect(() => commandBuilder.build('SetTargetTemperatureStep', { value: -5 })).toThrow(utils_1.CustomError);
|
|
180
|
-
});
|
|
181
|
-
test('Set Keys Lock', () => {
|
|
182
|
-
expect(commandBuilder.build('SetKeysLock', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetKeysLock', 0x07, '01'));
|
|
183
|
-
});
|
|
184
|
-
test('Set Target Temperature', () => {
|
|
185
|
-
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 25 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x2e, '00FA'));
|
|
186
|
-
});
|
|
187
|
-
test('Set FCT Operational Mode', () => {
|
|
188
|
-
expect(commandBuilder.build('SetFctOperationalMode', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetFctOperationalMode', 0x52, '02'));
|
|
189
|
-
});
|
|
190
|
-
test('Set Valve Open Close Time', () => {
|
|
191
|
-
expect(commandBuilder.build('SetValveOpenCloseTime', { value: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetValveOpenCloseTime', 0x31, '05'));
|
|
192
|
-
});
|
|
193
|
-
test('Set External Automatic Temperature Control', () => {
|
|
194
|
-
expect(commandBuilder.build('SetExtAutomaticTemperatureControl', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetExtAutomaticTemperatureControl', 0x35, '01'));
|
|
195
|
-
});
|
|
196
|
-
test('Set Fan Speed', () => {
|
|
197
|
-
expect(commandBuilder.build('SetFanSpeed', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetFanSpeed', 0x44, '02'));
|
|
198
|
-
});
|
|
199
|
-
test('Set Fan Speed Limit', () => {
|
|
200
|
-
expect(commandBuilder.build('SetFanSpeedLimit', { value: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetFanSpeedLimit', 0x46, '03'));
|
|
201
|
-
});
|
|
202
|
-
test('Set ECM Voltage Range', () => {
|
|
203
|
-
expect(commandBuilder.build('SetEcmVoltageRange', { min: 2, max: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetEcmVoltageRange', 0x48, '14', '32'));
|
|
204
|
-
});
|
|
205
|
-
test('Set ECM Start Up Time', () => {
|
|
206
|
-
expect(commandBuilder.build('SetEcmStartUpTime', { value: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetEcmStartUpTime', 0x4a, '0A'));
|
|
207
|
-
});
|
|
208
|
-
test('Set ECM Relay', () => {
|
|
209
|
-
expect(commandBuilder.build('SetEcmRelay', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetEcmRelay', 0x4c, '01'));
|
|
210
|
-
});
|
|
211
|
-
test('Set Frost Protection', () => {
|
|
212
|
-
expect(commandBuilder.build('SetFrostProtection', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetFrostProtection', 0x4e, '01'));
|
|
213
|
-
});
|
|
214
|
-
test('Set Frost Protection Settings', () => {
|
|
215
|
-
expect(commandBuilder.build('SetFrostProtectionSettings', { threshold: 5, setpoint: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetFrostProtectionSettings', 0x50, '05', '0A'));
|
|
216
|
-
});
|
|
217
|
-
test('Set Allowed Operational Modes', () => {
|
|
218
|
-
expect(commandBuilder.build('SetAllowedOperationalModes', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetAllowedOperationalModes', 0x54, '02'));
|
|
219
|
-
});
|
|
220
|
-
test('Set Cooling Setpoint Not Occupied', () => {
|
|
221
|
-
expect(commandBuilder.build('SetCoolingSetpointNotOccupied', { value: 23 })).toStrictEqual(new encoders_1.BaseCommand('SetCoolingSetpointNotOccupied', 0x56, '17'));
|
|
222
|
-
});
|
|
223
|
-
test('Set Heating Setpoint Not Occupied', () => {
|
|
224
|
-
expect(commandBuilder.build('SetHeatingSetpointNotOccupied', { value: 20 })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingSetpointNotOccupied', 0x58, '14'));
|
|
225
|
-
});
|
|
226
|
-
test('Set Temperature Sensor Compensation', () => {
|
|
227
|
-
expect(commandBuilder.build('SetTempSensorCompensation', { compensation: 1, temperature: 2.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTempSensorCompensation', 0x5a, '01', '19'));
|
|
228
|
-
});
|
|
229
|
-
test('Set Fan Speed Not Occupied', () => {
|
|
230
|
-
expect(commandBuilder.build('SetFanSpeedNotOccupied', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetFanSpeedNotOccupied', 0x5c, '02'));
|
|
231
|
-
});
|
|
232
|
-
test('Set Automatic Changeover', () => {
|
|
233
|
-
expect(commandBuilder.build('SetAutomaticChangeover', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticChangeover', 0x5e, '01'));
|
|
234
|
-
});
|
|
235
|
-
test('Set Wiring Diagram', () => {
|
|
236
|
-
expect(commandBuilder.build('SetWiringDiagram', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetWiringDiagram', 0x60, '01'));
|
|
237
|
-
});
|
|
238
|
-
test('Set Occupancy Function', () => {
|
|
239
|
-
expect(commandBuilder.build('SetOccFunction', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetOccFunction', 0x62, '01'));
|
|
240
|
-
});
|
|
241
|
-
test('Set Automatic Changeover Threshold', () => {
|
|
242
|
-
expect(commandBuilder.build('SetAutomaticChangeoverThreshold', { coolingThreshold: 16, heatingThreshold: 43 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticChangeoverThreshold', 0x64, '10', '2B'));
|
|
243
|
-
});
|
|
244
|
-
test('Set Device Status', () => {
|
|
245
|
-
expect(commandBuilder.build('SetDeviceStatus', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetDeviceStatus', 0x66, '01'));
|
|
246
|
-
});
|
|
247
|
-
test('Set Return of Power Operation', () => {
|
|
248
|
-
expect(commandBuilder.build('SetReturnOfPowerOperation', { value: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetReturnOfPowerOperation', 0x68, '02'));
|
|
249
|
-
});
|
|
250
|
-
test('Set Delta Temperature 1', () => {
|
|
251
|
-
expect(commandBuilder.build('SetDeltaTemperature1', { value: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetDeltaTemperature1', 0x6a, '1E'));
|
|
252
|
-
});
|
|
253
|
-
test('Set Delta Temperature 2 and 3', () => {
|
|
254
|
-
expect(commandBuilder.build('SetDeltaTemperature2and3', { deltaTemperature2: 4, deltaTemperature3: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetDeltaTemperature2and3', 0x6c, '28', '32'));
|
|
255
|
-
});
|
|
256
|
-
test('Set Heating Cooling Target Temp Ranges', () => {
|
|
257
|
-
expect(commandBuilder.build('SetHeatingCoolingTargetTempRanges', {
|
|
258
|
-
heatingTempMin: 16,
|
|
259
|
-
heatingTempMax: 24,
|
|
260
|
-
coolingTempMin: 20,
|
|
261
|
-
coolingTempMax: 29,
|
|
262
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetHeatingCoolingTargetTempRanges', 0x16, '10', '18', '14', '1D'));
|
|
263
|
-
});
|
|
264
|
-
test('Set Heating Cooling Target Temp Ranges Unoccupied', () => {
|
|
265
|
-
expect(commandBuilder.build('SetHeatingCoolingTargetTempRangesUnoccupied', {
|
|
266
|
-
heatingTempMin: 16,
|
|
267
|
-
heatingTempMax: 24,
|
|
268
|
-
coolingTempMin: 20,
|
|
269
|
-
coolingTempMax: 29,
|
|
270
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetHeatingCoolingTargetTempRangesUnoccupied', 0x76, '10', '18', '14', '1D'));
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
describe('Vicki Commands payload encoder', () => {
|
|
274
|
-
const commandBuilder = new encoders_1.CommandBuilder('vicki');
|
|
275
|
-
test('Recalibrate Motor', () => {
|
|
276
|
-
expect(commandBuilder.build('RecalibrateMotor')).toStrictEqual(new encoders_1.BaseCommand('RecalibrateMotor', 0x03));
|
|
277
|
-
});
|
|
278
|
-
test('Set Open Window Detection Parameters', () => {
|
|
279
|
-
expect(commandBuilder.build('SetOpenWindow', {
|
|
280
|
-
enabled: true,
|
|
281
|
-
delta: 3,
|
|
282
|
-
closeTime: 20,
|
|
283
|
-
motorPosition: 450,
|
|
284
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetOpenWindow', 0x06, '01', '04', 'C2', '13', '3'));
|
|
285
|
-
expect(commandBuilder.build('SetOpenWindow', {
|
|
286
|
-
enabled: false,
|
|
287
|
-
delta: 3,
|
|
288
|
-
closeTime: 20,
|
|
289
|
-
motorPosition: 450,
|
|
290
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetOpenWindow', 0x06, '00', '04', 'C2', '13', '3'));
|
|
291
|
-
});
|
|
292
|
-
test('Set Internal Algo Params', () => {
|
|
293
|
-
expect(commandBuilder.build('SetInternalAlgoParams', {
|
|
294
|
-
period: 5,
|
|
295
|
-
pFirstLast: 10,
|
|
296
|
-
pNext: 15,
|
|
297
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetInternalAlgoParams', 0x0c, '05', '0A', '0F'));
|
|
298
|
-
});
|
|
299
|
-
test('Set Operational Mode', () => {
|
|
300
|
-
expect(commandBuilder.build('SetOperationalMode', { mode: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetOperationalMode', 0x0d, '01'));
|
|
301
|
-
});
|
|
302
|
-
test('Set Target Temperature (Integer)', () => {
|
|
303
|
-
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 22 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x0e, '16'));
|
|
304
|
-
});
|
|
305
|
-
test('Set Target Temperature (Float)', () => {
|
|
306
|
-
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 22.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x51, '00E1'));
|
|
307
|
-
});
|
|
308
|
-
test('Set External Temperature', () => {
|
|
309
|
-
expect(commandBuilder.build('SetExternalTemperature', { temp: 18 })).toStrictEqual(new encoders_1.BaseCommand('SetExternalTemperature', 0x0f, '12'));
|
|
310
|
-
});
|
|
311
|
-
test('Set Internal Algo Tdiff Params', () => {
|
|
312
|
-
expect(commandBuilder.build('SetInternalAlgoTdiffParams', {
|
|
313
|
-
cold: 8,
|
|
314
|
-
warm: 12,
|
|
315
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetInternalAlgoTdiffParams', 0x1a, '08', '0C'));
|
|
316
|
-
});
|
|
317
|
-
test('Set Primary Operational Mode', () => {
|
|
318
|
-
expect(commandBuilder.build('SetPrimaryOperationalMode', { mode: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetPrimaryOperationalMode', 0x1e, '01'));
|
|
319
|
-
});
|
|
320
|
-
test('Set Battery Ranges Boundaries', () => {
|
|
321
|
-
expect(commandBuilder.build('SetBatteryRangesBoundaries', {
|
|
322
|
-
Boundary1: 2000,
|
|
323
|
-
Boundary2: 3000,
|
|
324
|
-
Boundary3: 4000,
|
|
325
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetBatteryRangesBoundaries', 0x20, '07D0', '0BB8', '0FA0'));
|
|
326
|
-
});
|
|
327
|
-
test('Set Ovac', () => {
|
|
328
|
-
expect(commandBuilder.build('SetOvac', { ovac: 12 })).toStrictEqual(new encoders_1.BaseCommand('SetOvac', 0x26, '0C'));
|
|
329
|
-
});
|
|
330
|
-
test('Set Proportional Algorithm Parameters', () => {
|
|
331
|
-
expect(commandBuilder.build('SetProportionalAlgorithmParameters', {
|
|
332
|
-
coefficient: 5,
|
|
333
|
-
period: 15,
|
|
334
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetProportionalAlgorithmParameters', 0x2a, '05', '0F'));
|
|
335
|
-
});
|
|
336
|
-
test('Set Valve Openness In Percentage', () => {
|
|
337
|
-
expect(commandBuilder.build('SetValveOpennessInPercentage', { value: 75 })).toStrictEqual(new encoders_1.BaseCommand('SetValveOpennessInPercentage', 0x4e, '4B'));
|
|
338
|
-
});
|
|
339
|
-
test('Set Temperature Offset', () => {
|
|
340
|
-
expect(commandBuilder.build('SetTemperatureOffset', { value: -1 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureOffset', 0x53, '16'));
|
|
341
|
-
expect(commandBuilder.build('SetTemperatureOffset', { value: 0 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureOffset', 0x53, '1C'));
|
|
342
|
-
expect(commandBuilder.build('SetTemperatureOffset', { value: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureOffset', 0x53, '2D'));
|
|
343
|
-
});
|
|
344
|
-
test('Set Time Request By MAC Command', () => {
|
|
345
|
-
expect(commandBuilder.build('SetTimeRequestByMACcommand', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetTimeRequestByMACcommand', 0x6d, '01'));
|
|
346
|
-
});
|
|
347
|
-
test('Set Heating Schedule', () => {
|
|
348
|
-
// Example 1: Set schedule from 1st November to 1st April
|
|
349
|
-
expect(commandBuilder.build('SetHeatingSchedule', {
|
|
350
|
-
startMonth: 10, // November (0-based indexing)
|
|
351
|
-
startDay: 1,
|
|
352
|
-
endMonth: 3, // April (0-based indexing)
|
|
353
|
-
endDay: 1
|
|
354
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetHeatingSchedule', 0x5b, '0A', '01', '03', '01'));
|
|
355
|
-
});
|
|
356
|
-
test('Set Device Time', () => {
|
|
357
|
-
// Example from documentation: June 29, 2025 06:00:00 GMT
|
|
358
|
-
// UNIX timestamp: 1751176800
|
|
359
|
-
expect(commandBuilder.build('SetDeviceTime', {
|
|
360
|
-
timestamp: 1751176800
|
|
361
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetDeviceTime', 0x5d, '68', '60', 'D6', '60'));
|
|
362
|
-
});
|
|
363
|
-
test('Set Device Time Zone', () => {
|
|
364
|
-
// Test positive offset: +2 hours
|
|
365
|
-
expect(commandBuilder.build('SetDeviceTimeZone', {
|
|
366
|
-
offsetHours: 2
|
|
367
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetDeviceTimeZone', 0x5f, '02'));
|
|
368
|
-
// Test negative offset: -3 hours (example from documentation)
|
|
369
|
-
expect(commandBuilder.build('SetDeviceTimeZone', {
|
|
370
|
-
offsetHours: -3
|
|
371
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetDeviceTimeZone', 0x5f, 'FD'));
|
|
372
|
-
});
|
|
373
|
-
test('Set Automatic Setpoint Restore', () => {
|
|
374
|
-
// Test with 60 minutes (example from documentation - 6*10=60 minutes)
|
|
375
|
-
expect(commandBuilder.build('SetAutomaticSetpointRestore', {
|
|
376
|
-
time: 60 // minutes
|
|
377
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticSetpointRestore', 0x61, '06'));
|
|
378
|
-
});
|
|
379
|
-
test('Set Offline Target Temperature', () => {
|
|
380
|
-
// Test with normal temperature - 21.5°C (example from documentation)
|
|
381
|
-
expect(commandBuilder.build('SetOfflineTargetTemperature', {
|
|
382
|
-
targetTemperature: 21.5
|
|
383
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetOfflineTargetTemperature', 0x65, '00D7'));
|
|
384
|
-
});
|
|
385
|
-
test('Set Internal Algorithm Temporary State', () => {
|
|
386
|
-
// Test temporary disable internal algorithm (example from documentation)
|
|
387
|
-
expect(commandBuilder.build('SetInternalAlgoTemporaryState', {
|
|
388
|
-
enabled: false // Disable temporarily
|
|
389
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetInternalAlgoTemporaryState', 0x67, '01'));
|
|
390
|
-
});
|
|
391
|
-
test('Set Temperature Levels', () => {
|
|
392
|
-
// Test with the example values from documentation
|
|
393
|
-
expect(commandBuilder.build('SetTemperatureLevels', {
|
|
394
|
-
scaleLevel0: 7.0, // 0x0046 = 70
|
|
395
|
-
scaleLevel1: 18.9, // 0x00BD = 189
|
|
396
|
-
scaleLevel2: 20.2, // 0x00CA = 202
|
|
397
|
-
scaleLevel3: 22.5, // 0x00E1 = 225
|
|
398
|
-
scaleLevel4: 25.0, // 0x00FA = 250
|
|
399
|
-
scaleLevel5: 30.0 // 0x012C = 300
|
|
400
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureLevels', 0x69, '0046', // Level 0: 7.0°C
|
|
401
|
-
'00BD', // Level 1: 18.9°C
|
|
402
|
-
'00CA', // Level 2: 20.2°C
|
|
403
|
-
'00E1', // Level 3: 22.5°C
|
|
404
|
-
'00FA', // Level 4: 25.0°C
|
|
405
|
-
'012C' // Level 5: 30.0°C
|
|
406
|
-
));
|
|
407
|
-
});
|
|
408
|
-
test('Set LED Indication Duration', () => {
|
|
409
|
-
// Example from documentation: 0x64 - duration value 6 (3 seconds)
|
|
410
|
-
expect(commandBuilder.build('SetLedIndicationDuration', {
|
|
411
|
-
duration: 3 // seconds
|
|
412
|
-
})).toStrictEqual(new encoders_1.BaseCommand('SetLedIndicationDuration', 0x63, '06'));
|
|
413
|
-
});
|
|
414
|
-
});
|
|
415
|
-
describe('WirelessThermostat Commands payload encoder', () => {
|
|
416
|
-
const commandBuilder = new encoders_1.CommandBuilder('wireless_thermostat');
|
|
417
|
-
test('Set Target Temperature', () => {
|
|
418
|
-
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 22 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x2e, '16'));
|
|
419
|
-
});
|
|
420
|
-
test('Set Heating Status', () => {
|
|
421
|
-
expect(commandBuilder.build('SetHeatingStatus', { status: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingStatus', 0x31, '01'));
|
|
422
|
-
});
|
|
423
|
-
test('Set Display Refresh Period', () => {
|
|
424
|
-
expect(commandBuilder.build('SetDisplayRefreshPeriod', { period: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetDisplayRefreshPeriod', 0x33, '0A'));
|
|
425
|
-
});
|
|
426
|
-
test('Set Target Send Delay', () => {
|
|
427
|
-
expect(commandBuilder.build('SetTargetSendDelay', { time: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetSendDelay', 0x35, '0F'));
|
|
428
|
-
});
|
|
429
|
-
test('Set Automatic Heating Status', () => {
|
|
430
|
-
expect(commandBuilder.build('SetAutomaticHeatingStatus', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticHeatingStatus', 0x37, '01'));
|
|
431
|
-
});
|
|
432
|
-
test('Set Sensor Mode', () => {
|
|
433
|
-
expect(commandBuilder.build('SetSensorMode', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetSensorMode', 0x39, '01'));
|
|
434
|
-
});
|
|
435
|
-
test('Set Temperature Hysteresis', () => {
|
|
436
|
-
expect(commandBuilder.build('SetTemperatureHysteresis', { hysteresis: 2.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureHysteresis', 0x4e, '19'));
|
|
437
|
-
});
|
|
438
|
-
test('Set Target Temperature Precisely', () => {
|
|
439
|
-
expect(commandBuilder.build('SetTargetTemperaturePrecisely', { targetTemperature: 22.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperaturePrecisely', 0x50, '00E1'));
|
|
440
|
-
});
|
|
441
|
-
test('Set Target Temperature Step', () => {
|
|
442
|
-
expect(commandBuilder.build('SetTargetTemperatureStep', { value: 0.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperatureStep', 0x52, '05'));
|
|
443
|
-
});
|
|
444
|
-
});
|
|
445
|
-
describe('TFlood Commands payload encoder', () => {
|
|
446
|
-
const commandBuilder = new encoders_1.CommandBuilder('t_flood');
|
|
447
|
-
test('Set Flood Alarm Time', () => {
|
|
448
|
-
expect(commandBuilder.build('SetFloodAlarmTime', { time: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetFloodAlarmTime', 0x04, 'f'));
|
|
449
|
-
});
|
|
450
|
-
test('Set Keep Alive', () => {
|
|
451
|
-
expect(commandBuilder.build('SetKeepAlive', { time: 120 })).toStrictEqual(new encoders_1.BaseCommand('SetKeepAlive', 0x05, '0078'));
|
|
452
|
-
});
|
|
453
|
-
test('Set Flood Event Send Time', () => {
|
|
454
|
-
expect(commandBuilder.build('SetFloodEventSendTime', { time: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetFloodEventSendTime', 0x08, '1e'));
|
|
455
|
-
});
|
|
456
|
-
test('Set Flood Event Uplink Type', () => {
|
|
457
|
-
expect(commandBuilder.build('SetFloodEventUplinkType', { type: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetFloodEventUplinkType', 0x13, '01'));
|
|
458
|
-
});
|
|
459
|
-
});
|
|
460
|
-
describe('HT Sensor Commands payload encoder', () => {
|
|
461
|
-
const commandBuilder = new encoders_1.CommandBuilder('ht_sensor');
|
|
462
|
-
test('Set Temperature Compensation', () => {
|
|
463
|
-
expect(commandBuilder.build('SetTemperatureCompensation', { negativeCompensation: true, compensation: 0.3 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureCompensation', 0x31, '01', '03'));
|
|
464
|
-
});
|
|
465
|
-
test('Set Humidity Compensation', () => {
|
|
466
|
-
expect(commandBuilder.build('SetHumidityCompensation', { negativeCompensation: true, compensation: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetHumidityCompensation', 0x33, '01', '03'));
|
|
467
|
-
});
|
|
468
|
-
});
|
|
469
|
-
describe('MC Button Commands payload encoder', () => {
|
|
470
|
-
const commandBuilder = new encoders_1.CommandBuilder('mc_button');
|
|
471
|
-
test('Clear Press Event Counter ', () => {
|
|
472
|
-
expect(commandBuilder.build('ClearPressEventCounter', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('ClearPressEventCounter', 0x20, '01'));
|
|
473
|
-
});
|
|
474
|
-
test('Restart Device', () => {
|
|
475
|
-
expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
|
|
476
|
-
});
|
|
477
|
-
});
|
|
478
|
-
describe('CO2 PIR Lite Commands payload encoder', () => {
|
|
479
|
-
const commandBuilder = new encoders_1.CommandBuilder('co2_pir_lite');
|
|
480
|
-
test('Set CO2 Measurement Time', () => {
|
|
481
|
-
expect(commandBuilder.build('SetCo2MeasurementPeriod', { good_zone: 10, medium_zone: 20, bad_zone: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetCo2MeasurementPeriod', 0x24, '0A', '14', '1E'));
|
|
482
|
-
});
|
|
483
|
-
test('Set PIR Sensor Status ', () => {
|
|
484
|
-
expect(commandBuilder.build('SetPIRSensorStatus', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorStatus', 0x3c, '01'));
|
|
485
|
-
});
|
|
486
|
-
test('Set Uplink Sending On Button Press', () => {
|
|
487
|
-
expect(commandBuilder.build('SetUplinkSendingOnButtonPress', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetUplinkSendingOnButtonPress', 0x2e, '01'));
|
|
488
|
-
});
|
|
489
|
-
test('Set PIR Check Period', () => {
|
|
490
|
-
expect(commandBuilder.build('SetPIRCheckPeriod', { time: 20 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRCheckPeriod', 0x4a, '0014'));
|
|
491
|
-
});
|
|
492
|
-
test('Restart Device', () => {
|
|
493
|
-
expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
|
|
494
|
-
});
|
|
495
|
-
});
|
|
496
|
-
describe('HT PIR Lite Commands payload encoder', () => {
|
|
497
|
-
const commandBuilder = new encoders_1.CommandBuilder('ht_pir_lite');
|
|
498
|
-
test('Set PIR Sensor Status ', () => {
|
|
499
|
-
expect(commandBuilder.build('SetPIRSensorStatus', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRSensorStatus', 0x3c, '01'));
|
|
500
|
-
});
|
|
501
|
-
test('Set Uplink Sending On Button Press', () => {
|
|
502
|
-
expect(commandBuilder.build('SetUplinkSendingOnButtonPress', { value: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetUplinkSendingOnButtonPress', 0x2e, '01'));
|
|
503
|
-
});
|
|
504
|
-
test('Set PIR Check Period', () => {
|
|
505
|
-
expect(commandBuilder.build('SetPIRCheckPeriod', { time: 20 })).toStrictEqual(new encoders_1.BaseCommand('SetPIRCheckPeriod', 0x4a, '0014'));
|
|
506
|
-
});
|
|
507
|
-
test('Restart Device', () => {
|
|
508
|
-
expect(commandBuilder.build('RestartDevice')).toStrictEqual(new encoders_1.BaseCommand('RestartDevice', 0xa5));
|
|
509
|
-
});
|
|
510
|
-
});
|
|
511
|
-
describe('Melissa Commands payload encoder', () => {
|
|
512
|
-
const commandBuilder = new encoders_1.CommandBuilder('melissa_lorawan');
|
|
513
|
-
test('Set IR Code Recording ', () => {
|
|
514
|
-
expect(commandBuilder.build('SetIrCodeRecording', { time: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetIrCodeRecording', 0x09, '0F'));
|
|
515
|
-
});
|
|
516
|
-
});
|
|
517
|
-
//# sourceMappingURL=payloadEncoders.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payloadEncoders.test.js","sourceRoot":"","sources":["../../src/test/payloadEncoders.test.ts"],"names":[],"mappings":"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"}
|