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.
- package/README.md +21 -0
- package/dist/decoders/payloadParsers/multisensorPayloadParser.d.ts.map +1 -1
- package/dist/decoders/payloadParsers/multisensorPayloadParser.js +80 -33
- package/dist/decoders/payloadParsers/multisensorPayloadParser.js.map +1 -1
- package/dist/encoders/ButtonCommands.test.d.ts +2 -0
- package/dist/encoders/ButtonCommands.test.d.ts.map +1 -0
- package/dist/encoders/ButtonCommands.test.js +20 -0
- package/dist/encoders/ButtonCommands.test.js.map +1 -0
- package/dist/encoders/ChildLockCommands.test.d.ts +2 -0
- package/dist/encoders/ChildLockCommands.test.d.ts.map +1 -0
- package/dist/encoders/ChildLockCommands.test.js +17 -0
- package/dist/encoders/ChildLockCommands.test.js.map +1 -0
- package/dist/encoders/Co2DisplayCommands.test.d.ts +2 -0
- package/dist/encoders/Co2DisplayCommands.test.d.ts.map +1 -0
- package/dist/encoders/Co2DisplayCommands.test.js +18 -0
- package/dist/encoders/Co2DisplayCommands.test.js.map +1 -0
- package/dist/encoders/Co2DisplayCommonCommands.d.ts +4 -0
- package/dist/encoders/Co2DisplayCommonCommands.d.ts.map +1 -1
- package/dist/encoders/Co2DisplayCommonCommands.js +38 -0
- package/dist/encoders/Co2DisplayCommonCommands.js.map +1 -1
- package/dist/encoders/Co2DisplayLiteCommands.test.d.ts +2 -0
- package/dist/encoders/Co2DisplayLiteCommands.test.d.ts.map +1 -0
- package/dist/encoders/Co2DisplayLiteCommands.test.js +21 -0
- package/dist/encoders/Co2DisplayLiteCommands.test.js.map +1 -0
- package/dist/encoders/Co2PirLiteCommands.test.d.ts +2 -0
- package/dist/encoders/Co2PirLiteCommands.test.d.ts.map +1 -0
- package/dist/encoders/Co2PirLiteCommands.test.js +23 -0
- package/dist/encoders/Co2PirLiteCommands.test.js.map +1 -0
- package/dist/encoders/Co2SensorCommands.test.d.ts +2 -0
- package/dist/encoders/Co2SensorCommands.test.d.ts.map +1 -0
- package/dist/encoders/Co2SensorCommands.test.js +55 -0
- package/dist/encoders/Co2SensorCommands.test.js.map +1 -0
- package/dist/encoders/DisplayCommands.test.d.ts +2 -0
- package/dist/encoders/DisplayCommands.test.d.ts.map +1 -0
- package/dist/encoders/DisplayCommands.test.js +26 -0
- package/dist/encoders/DisplayCommands.test.js.map +1 -0
- package/dist/encoders/DskDeviceCommands.test.d.ts +2 -0
- package/dist/encoders/DskDeviceCommands.test.d.ts.map +1 -0
- package/dist/encoders/DskDeviceCommands.test.js +20 -0
- package/dist/encoders/DskDeviceCommands.test.js.map +1 -0
- package/dist/encoders/FanCoilThermostatCommands.test.d.ts +2 -0
- package/dist/encoders/FanCoilThermostatCommands.test.d.ts.map +1 -0
- package/dist/encoders/FanCoilThermostatCommands.test.js +117 -0
- package/dist/encoders/FanCoilThermostatCommands.test.js.map +1 -0
- package/dist/encoders/GeneralCommands.test.d.ts +2 -0
- package/dist/encoders/GeneralCommands.test.d.ts.map +1 -0
- package/dist/encoders/GeneralCommands.test.js +26 -0
- package/dist/encoders/GeneralCommands.test.js.map +1 -0
- package/dist/encoders/HTDisplayLiteCommands.test.d.ts +2 -0
- package/dist/encoders/HTDisplayLiteCommands.test.d.ts.map +1 -0
- package/dist/encoders/HTDisplayLiteCommands.test.js +20 -0
- package/dist/encoders/HTDisplayLiteCommands.test.js.map +1 -0
- package/dist/encoders/HTPirLiteCommands.test.d.ts +2 -0
- package/dist/encoders/HTPirLiteCommands.test.d.ts.map +1 -0
- package/dist/encoders/HTPirLiteCommands.test.js +23 -0
- package/dist/encoders/HTPirLiteCommands.test.js.map +1 -0
- package/dist/encoders/HTSensorCommands.test.d.ts +2 -0
- package/dist/encoders/HTSensorCommands.test.d.ts.map +1 -0
- package/dist/encoders/HTSensorCommands.test.js +17 -0
- package/dist/encoders/HTSensorCommands.test.js.map +1 -0
- package/dist/encoders/MelissaCommands.test.d.ts +2 -0
- package/dist/encoders/MelissaCommands.test.d.ts.map +1 -0
- package/dist/encoders/MelissaCommands.test.js +14 -0
- package/dist/encoders/MelissaCommands.test.js.map +1 -0
- package/dist/encoders/MultiSensorCommands.test.d.ts +2 -0
- package/dist/encoders/MultiSensorCommands.test.d.ts.map +1 -0
- package/dist/encoders/MultiSensorCommands.test.js +41 -0
- package/dist/encoders/MultiSensorCommands.test.js.map +1 -0
- package/dist/encoders/OpenCloseSensorCommands.test.d.ts +2 -0
- package/dist/encoders/OpenCloseSensorCommands.test.d.ts.map +1 -0
- package/dist/encoders/OpenCloseSensorCommands.test.js +14 -0
- package/dist/encoders/OpenCloseSensorCommands.test.js.map +1 -0
- package/dist/encoders/PIRCommands.test.d.ts +2 -0
- package/dist/encoders/PIRCommands.test.d.ts.map +1 -0
- package/dist/encoders/PIRCommands.test.js +29 -0
- package/dist/encoders/PIRCommands.test.js.map +1 -0
- package/dist/encoders/Relay16Commands.test.d.ts +2 -0
- package/dist/encoders/Relay16Commands.test.d.ts.map +1 -0
- package/dist/encoders/Relay16Commands.test.js +44 -0
- package/dist/encoders/Relay16Commands.test.js.map +1 -0
- package/dist/encoders/Relay16DryCommands.test.d.ts +2 -0
- package/dist/encoders/Relay16DryCommands.test.d.ts.map +1 -0
- package/dist/encoders/Relay16DryCommands.test.js +32 -0
- package/dist/encoders/Relay16DryCommands.test.js.map +1 -0
- package/dist/encoders/SetAqiLedCommands.test.d.ts +2 -0
- package/dist/encoders/SetAqiLedCommands.test.d.ts.map +1 -0
- package/dist/encoders/SetAqiLedCommands.test.js +20 -0
- package/dist/encoders/SetAqiLedCommands.test.js.map +1 -0
- package/dist/encoders/TFloodCommands.test.d.ts +2 -0
- package/dist/encoders/TFloodCommands.test.d.ts.map +1 -0
- package/dist/encoders/TFloodCommands.test.js +23 -0
- package/dist/encoders/TFloodCommands.test.js.map +1 -0
- package/dist/encoders/TRingThermostatCommands.test.d.ts +2 -0
- package/dist/encoders/TRingThermostatCommands.test.d.ts.map +1 -0
- package/dist/encoders/TRingThermostatCommands.test.js +16 -0
- package/dist/encoders/TRingThermostatCommands.test.js.map +1 -0
- package/dist/encoders/TValveCommands.test.d.ts +2 -0
- package/dist/encoders/TValveCommands.test.d.ts.map +1 -0
- package/dist/encoders/TValveCommands.test.js +56 -0
- package/dist/encoders/TValveCommands.test.js.map +1 -0
- package/dist/encoders/TemperatureCommonCommands.test.d.ts +2 -0
- package/dist/encoders/TemperatureCommonCommands.test.d.ts.map +1 -0
- package/dist/encoders/TemperatureCommonCommands.test.js +14 -0
- package/dist/encoders/TemperatureCommonCommands.test.js.map +1 -0
- package/dist/encoders/VickiCommands.test.d.ts +2 -0
- package/dist/encoders/VickiCommands.test.d.ts.map +1 -0
- package/dist/encoders/VickiCommands.test.js +156 -0
- package/dist/encoders/VickiCommands.test.js.map +1 -0
- package/dist/encoders/WirelessThermostatCommands.test.d.ts +2 -0
- package/dist/encoders/WirelessThermostatCommands.test.d.ts.map +1 -0
- package/dist/encoders/WirelessThermostatCommands.test.js +41 -0
- package/dist/encoders/WirelessThermostatCommands.test.js.map +1 -0
- package/dist/test/payloadDecoders.test.js +34 -34
- package/dist/test/payloadDecoders.test.js.map +1 -1
- package/package.json +1 -1
- package/src/decoders/payloadParsers/multisensorPayloadParser.ts +96 -34
- package/src/encoders/ButtonCommands.test.ts +26 -0
- package/src/encoders/ChildLockCommands.test.ts +22 -0
- package/src/encoders/Co2DisplayCommands.test.ts +26 -0
- package/src/encoders/Co2DisplayLiteCommands.test.ts +30 -0
- package/src/encoders/Co2PirLiteCommands.test.ts +32 -0
- package/src/encoders/Co2SensorCommands.test.ts +79 -0
- package/src/encoders/DisplayCommands.test.ts +40 -0
- package/src/encoders/DskDeviceCommands.test.ts +26 -0
- package/src/encoders/FanCoilThermostatCommands.test.ts +204 -0
- package/src/encoders/GeneralCommands.test.ts +38 -0
- package/src/encoders/HTDisplayLiteCommands.test.ts +28 -0
- package/src/encoders/HTPirLiteCommands.test.ts +32 -0
- package/src/encoders/HTSensorCommands.test.ts +24 -0
- package/src/encoders/MelissaCommands.test.ts +16 -0
- package/src/encoders/MultiSensorCommands.test.ts +68 -0
- package/src/encoders/OpenCloseSensorCommands.test.ts +16 -0
- package/src/encoders/PIRCommands.test.ts +46 -0
- package/src/encoders/Relay16Commands.test.ts +76 -0
- package/src/encoders/Relay16DryCommands.test.ts +52 -0
- package/src/encoders/SetAqiLedCommands.test.ts +18 -0
- package/src/encoders/TFloodCommands.test.ts +34 -0
- package/src/encoders/TRingThermostatCommands.test.ts +23 -0
- package/src/encoders/TValveCommands.test.ts +98 -0
- package/src/encoders/TemperatureCommonCommands.test.ts +16 -0
- package/src/encoders/VickiCommands.test.ts +275 -0
- package/src/encoders/WirelessThermostatCommands.test.ts +70 -0
- package/src/test/payloadDecoders.test.ts +34 -34
- package/src/test.txt +1 -0
- package/dist/encoders/FanCoilThermostat.d.ts +0 -61
- package/dist/encoders/FanCoilThermostat.d.ts.map +0 -1
- package/dist/encoders/FanCoilThermostat.js +0 -719
- package/dist/encoders/FanCoilThermostat.js.map +0 -1
- package/dist/encoders/SetAqiLed.d.ts +0 -6
- package/dist/encoders/SetAqiLed.d.ts.map +0 -1
- package/dist/encoders/SetAqiLed.js +0 -46
- package/dist/encoders/SetAqiLed.js.map +0 -1
- package/dist/encoders/types/enumValidation.d.ts +0 -6
- package/dist/encoders/types/enumValidation.d.ts.map +0 -1
- package/dist/encoders/types/enumValidation.js +0 -50
- package/dist/encoders/types/enumValidation.js.map +0 -1
- package/dist/encoders/types/schemaValidatedEnums.d.ts +0 -40
- package/dist/encoders/types/schemaValidatedEnums.d.ts.map +0 -1
- package/dist/encoders/types/schemaValidatedEnums.js +0 -181
- package/dist/encoders/types/schemaValidatedEnums.js.map +0 -1
- package/dist/types/deviceTypes.d.ts +0 -19
- package/dist/types/deviceTypes.d.ts.map +0 -1
- package/dist/types/deviceTypes.js +0 -23
- package/dist/types/deviceTypes.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -18
- package/dist/types/index.js.map +0 -1
- package/dist/types/types.d.ts +0 -13
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/types.js +0 -9
- package/dist/types/types.js.map +0 -1
- package/dist/validation.d.ts +0 -3
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -8
- package/dist/validation.js.map +0 -1
- package/src/test/payloadEncoders.test.ts +0 -850
|
@@ -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('TFloodCommands payload encoder', () => {
|
|
6
|
+
const commandBuilder = new encoders_1.CommandBuilder('t_flood');
|
|
7
|
+
test('SetFloodAlarmTime encodes alarm time', () => {
|
|
8
|
+
expect(commandBuilder.build('SetFloodAlarmTime', { time: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetFloodAlarmTime', 0x04, 'a'));
|
|
9
|
+
});
|
|
10
|
+
test('SetKeepAlive encodes keepalive seconds as 2 bytes', () => {
|
|
11
|
+
expect(commandBuilder.build('SetKeepAlive', { time: 120 })).toStrictEqual(new encoders_1.BaseCommand('SetKeepAlive', 0x05, '0078'));
|
|
12
|
+
});
|
|
13
|
+
test('SetFloodEventSendTime encodes send time', () => {
|
|
14
|
+
expect(commandBuilder.build('SetFloodEventSendTime', { time: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetFloodEventSendTime', 0x08, '1e'));
|
|
15
|
+
});
|
|
16
|
+
test('SetFloodEventUplinkType encodes uplink type', () => {
|
|
17
|
+
expect(commandBuilder.build('SetFloodEventUplinkType', { type: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetFloodEventUplinkType', 0x13, '01'));
|
|
18
|
+
});
|
|
19
|
+
test('Invalid SetFloodAlarmTime throws validation error', () => {
|
|
20
|
+
expect(() => commandBuilder.build('SetFloodAlarmTime', { time: -1 })).toThrow(utils_1.CustomError);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=TFloodCommands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TFloodCommands.test.js","sourceRoot":"","sources":["../../src/encoders/TFloodCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC/C,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,SAAS,CAAC,CAAA;IAEpD,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAC5E,IAAI,sBAAW,CAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,CAAC,CAC/C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CACxE,IAAI,sBAAW,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAC7C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAChF,IAAI,sBAAW,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,CACpD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CACpF,IAAI,sBAAW,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IAC3F,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRingThermostatCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/TRingThermostatCommands.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const encoders_1 = require("../encoders");
|
|
4
|
+
describe('TringThermostatCommands payload encoder', () => {
|
|
5
|
+
const commandBuilder = new encoders_1.CommandBuilder('thermostat');
|
|
6
|
+
test('SetThermostatTarget encodes target temperature', () => {
|
|
7
|
+
expect(commandBuilder.build('SetThermostatTarget', { target: 21.5 })).toStrictEqual(new encoders_1.BaseCommand('SetThermostatTarget', 0x01, '00', '00', '00', 'D7', '00'));
|
|
8
|
+
});
|
|
9
|
+
test('SetThermostatConfig encodes config payload', () => {
|
|
10
|
+
expect(commandBuilder.build('SetThermostatConfig', { time: 5, temp_span: 2, temp_sampling: 3, target: 22 })).toStrictEqual(new encoders_1.BaseCommand('SetThermostatConfig', 0x02, '05', '02', '03', 'DC', '00'));
|
|
11
|
+
});
|
|
12
|
+
test('SetKeepAlive encodes keepalive payload with padding', () => {
|
|
13
|
+
expect(commandBuilder.build('SetKeepAlive', { time: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetKeepAlive', 0x02, '0A', '00', '00', '00', '00'));
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=TRingThermostatCommands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRingThermostatCommands.test.js","sourceRoot":"","sources":["../../src/encoders/TRingThermostatCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AAExD,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACxD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,YAAY,CAAC,CAAA;IAEvD,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAClF,IAAI,sBAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAC1E,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACvD,MAAM,CACL,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACpG,CAAC,aAAa,CAAC,IAAI,sBAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACvE,IAAI,sBAAW,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CACnE,CAAA;IACF,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TValveCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/TValveCommands.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const encoders_1 = require("../encoders");
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
describe('TValveCommands payload encoder', () => {
|
|
6
|
+
const commandBuilder = new encoders_1.CommandBuilder('t_valve');
|
|
7
|
+
test('SetOpenCloseTime encodes opening and closing time', () => {
|
|
8
|
+
expect(commandBuilder.build('SetOpenCloseTime', { openingTime: 5, closingTime: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetOpenCloseTime', 0x01, '05', '0A'));
|
|
9
|
+
});
|
|
10
|
+
test('SetLED encodes led id, behavior and seconds', () => {
|
|
11
|
+
expect(commandBuilder.build('SetLED', { ledId: 1, behavior: 2, seconds: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetLED', 0x02, '01', '02', '05'));
|
|
12
|
+
});
|
|
13
|
+
test('SetBuzzer packs volume/frequency and timing', () => {
|
|
14
|
+
expect(commandBuilder.build('SetBuzzer', { volume: 8, frequency: 4, activeTime: 10, onTime: 20, offTime: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetBuzzer', 0x03, '84', '0A', '02', '03'));
|
|
15
|
+
});
|
|
16
|
+
test('SetEmergencyOpenings encodes max openings', () => {
|
|
17
|
+
expect(commandBuilder.build('SetEmergencyOpenings', { maxOpenings: 7 })).toStrictEqual(new encoders_1.BaseCommand('SetEmergencyOpenings', 0x04, '07'));
|
|
18
|
+
});
|
|
19
|
+
test('SetManualControl encodes open/close bits', () => {
|
|
20
|
+
expect(commandBuilder.build('SetManualControl', { enableOpen: true, enableClose: false })).toStrictEqual(new encoders_1.BaseCommand('SetManualControl', 0x05, '00000001'));
|
|
21
|
+
});
|
|
22
|
+
test('SetFloodAlarmTime encodes alarm time', () => {
|
|
23
|
+
expect(commandBuilder.build('SetFloodAlarmTime', { time: 12 })).toStrictEqual(new encoders_1.BaseCommand('SetFloodAlarmTime', 0x06, '0C'));
|
|
24
|
+
});
|
|
25
|
+
test('SetKeepAlive encodes keepalive', () => {
|
|
26
|
+
expect(commandBuilder.build('SetKeepAlive', { time: 5 })).toStrictEqual(new encoders_1.BaseCommand('SetKeepAlive', 0x07, '05'));
|
|
27
|
+
});
|
|
28
|
+
test('SetWorkingVoltage scales voltage before encoding', () => {
|
|
29
|
+
expect(commandBuilder.build('SetWorkingVoltage', { voltage: 2000 })).toStrictEqual(new encoders_1.BaseCommand('SetWorkingVoltage', 0x09, '32'));
|
|
30
|
+
});
|
|
31
|
+
test('SetValveState encodes valve state', () => {
|
|
32
|
+
expect(commandBuilder.build('SetValveState', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetValveState', 0x0c, '01'));
|
|
33
|
+
});
|
|
34
|
+
test('SetOpenCloseTimeExtended encodes extended times', () => {
|
|
35
|
+
expect(commandBuilder.build('SetOpenCloseTimeExtended', { openingTime: 300, closingTime: 400 })).toStrictEqual(new encoders_1.BaseCommand('SetOpenCloseTimeExtended', 0x0d, '012C', '0190'));
|
|
36
|
+
});
|
|
37
|
+
test('SetSingleTimeValveState encodes state and time', () => {
|
|
38
|
+
expect(commandBuilder.build('SetSingleTimeValveState', { state: 1, time: 60 })).toStrictEqual(new encoders_1.BaseCommand('SetSingleTimeValveState', 0x14, '01', '003C'));
|
|
39
|
+
});
|
|
40
|
+
test('SetDeviceFloodSensor encodes enable bit', () => {
|
|
41
|
+
expect(commandBuilder.build('SetDeviceFloodSensor', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetDeviceFloodSensor', 0x0a, '1'));
|
|
42
|
+
});
|
|
43
|
+
test('SetJoinRetryPeriod scales minutes before encoding', () => {
|
|
44
|
+
expect(commandBuilder.build('SetJoinRetryPeriod', { period: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetJoinRetryPeriod', 0x15, '78'));
|
|
45
|
+
});
|
|
46
|
+
test('SetUplinkType forwards uplink type', () => {
|
|
47
|
+
expect(commandBuilder.build('SetUplinkType', { type: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetUplinkType', 0x17, '01'));
|
|
48
|
+
});
|
|
49
|
+
test('SetWatchDogParams encodes confirmed/unconfirmed uplinks', () => {
|
|
50
|
+
expect(commandBuilder.build('SetWatchDogParams', { confirmedUplinks: 2, unconfirmedUplinks: 3 })).toStrictEqual(new encoders_1.BaseCommand('SetWatchDogParams', 0x19, '02', '03'));
|
|
51
|
+
});
|
|
52
|
+
test('Invalid SetOpenCloseTime throws validation error', () => {
|
|
53
|
+
expect(() => commandBuilder.build('SetOpenCloseTime', { openingTime: -1, closingTime: 1 })).toThrow(utils_1.CustomError);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=TValveCommands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TValveCommands.test.js","sourceRoot":"","sources":["../../src/encoders/TValveCommands.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemperatureCommonCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/TemperatureCommonCommands.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('TemperatureCommonCommands payload encoder', () => {
|
|
6
|
+
const commandBuilder = new encoders_1.CommandBuilder('vicki');
|
|
7
|
+
test('SetTemperatureRange encodes min and max', () => {
|
|
8
|
+
expect(commandBuilder.build('SetTemperatureRange', { min: 5, max: 25 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureRange', 0x08, '05', '19'));
|
|
9
|
+
});
|
|
10
|
+
test('Invalid SetTemperatureRange throws validation error', () => {
|
|
11
|
+
expect(() => commandBuilder.build('SetTemperatureRange', { min: 0, max: 25 })).toThrow(utils_1.CustomError);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=TemperatureCommonCommands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemperatureCommonCommands.test.js","sourceRoot":"","sources":["../../src/encoders/TemperatureCommonCommands.test.ts"],"names":[],"mappings":";;AAAA,yCAAwD;AACxD,mCAAqC;AAErC,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IAC1D,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,OAAO,CAAC,CAAA;IAElD,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACrF,IAAI,sBAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CACxD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAW,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VickiCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/VickiCommands.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const encoders_1 = require("../encoders");
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
describe('VickiCommands payload encoder', () => {
|
|
6
|
+
const commandBuilder = new encoders_1.CommandBuilder('vicki');
|
|
7
|
+
test('SetOpenWindow encodes enabled, close time, motor position and delta', () => {
|
|
8
|
+
expect(commandBuilder.build('SetOpenWindow', { enabled: true, delta: 5, closeTime: 30, motorPosition: 300 })).toStrictEqual(new encoders_1.BaseCommand('SetOpenWindow', 0x06, '01', '06', '2C', '15', '5'));
|
|
9
|
+
});
|
|
10
|
+
test('SetInternalAlgoParams encodes period and P values', () => {
|
|
11
|
+
expect(commandBuilder.build('SetInternalAlgoParams', { period: 2, pFirstLast: 3, pNext: 4 })).toStrictEqual(new encoders_1.BaseCommand('SetInternalAlgoParams', 0x0c, '02', '03', '04'));
|
|
12
|
+
});
|
|
13
|
+
test('SetOperationalMode encodes mode', () => {
|
|
14
|
+
expect(commandBuilder.build('SetOperationalMode', { mode: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetOperationalMode', 0x0d, '01'));
|
|
15
|
+
});
|
|
16
|
+
test('SetTargetTemperature uses precise path for floats', () => {
|
|
17
|
+
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 21.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x51, '00D7'));
|
|
18
|
+
});
|
|
19
|
+
test('SetTargetTemperature uses integer path', () => {
|
|
20
|
+
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 22 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x0e, '16'));
|
|
21
|
+
});
|
|
22
|
+
test('SetExternalTemperature encodes temperature', () => {
|
|
23
|
+
expect(commandBuilder.build('SetExternalTemperature', { temp: 25 })).toStrictEqual(new encoders_1.BaseCommand('SetExternalTemperature', 0x0f, '19'));
|
|
24
|
+
});
|
|
25
|
+
test('SetInternalAlgoTdiffParams encodes cold and warm deltas', () => {
|
|
26
|
+
expect(commandBuilder.build('SetInternalAlgoTdiffParams', { cold: 10, warm: 20 })).toStrictEqual(new encoders_1.BaseCommand('SetInternalAlgoTdiffParams', 0x1a, '0A', '14'));
|
|
27
|
+
});
|
|
28
|
+
test('SetPrimaryOperationalMode encodes mode', () => {
|
|
29
|
+
expect(commandBuilder.build('SetPrimaryOperationalMode', { mode: '01' })).toStrictEqual(new encoders_1.BaseCommand('SetPrimaryOperationalMode', 0x1e, '01'));
|
|
30
|
+
});
|
|
31
|
+
test('SetBatteryRangesBoundaries encodes three boundaries', () => {
|
|
32
|
+
expect(commandBuilder.build('SetBatteryRangesBoundaries', { Boundary1: 100, Boundary2: 200, Boundary3: 300 })).toStrictEqual(new encoders_1.BaseCommand('SetBatteryRangesBoundaries', 0x20, '0064', '00C8', '012C'));
|
|
33
|
+
});
|
|
34
|
+
test('SetBatteryRangesOverVoltage encodes ranges with fixed first value', () => {
|
|
35
|
+
expect(commandBuilder.build('SetBatteryRangesOverVoltage', { Range1: 10, Range2: 20, Range3: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetBatteryRangesOverVoltage', 0x22, '0E', '0A', '14', '1E'));
|
|
36
|
+
});
|
|
37
|
+
test('SetOvac encodes ovac value', () => {
|
|
38
|
+
expect(commandBuilder.build('SetOvac', { ovac: 12 })).toStrictEqual(new encoders_1.BaseCommand('SetOvac', 0x26, '0C'));
|
|
39
|
+
});
|
|
40
|
+
test('SetProportionalAlgorithmParameters encodes coefficient and period', () => {
|
|
41
|
+
expect(commandBuilder.build('SetProportionalAlgorithmParameters', { coefficient: 5, period: 60 })).toStrictEqual(new encoders_1.BaseCommand('SetProportionalAlgorithmParameters', 0x2a, '05', '3C'));
|
|
42
|
+
});
|
|
43
|
+
test('SetTemperatureControlAlgorithm encodes algorithm', () => {
|
|
44
|
+
expect(commandBuilder.build('SetTemperatureControlAlgorithm', { algorithm: '02' })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureControlAlgorithm', 0x2c, '02'));
|
|
45
|
+
});
|
|
46
|
+
test('SetMotorPositionOnly encodes motor position', () => {
|
|
47
|
+
expect(commandBuilder.build('SetMotorPositionOnly', { position: 300 })).toStrictEqual(new encoders_1.BaseCommand('SetMotorPositionOnly', 0x2d, '012C'));
|
|
48
|
+
});
|
|
49
|
+
test('SetTargetTemperatureAndMotorPosition encodes position and temperature', () => {
|
|
50
|
+
expect(commandBuilder.build('SetTargetTemperatureAndMotorPosition', { motorPosition: 400, targetTemperature: 21 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperatureAndMotorPosition', 0x31, '0190', '15'));
|
|
51
|
+
});
|
|
52
|
+
test('SetChildLockBehavior encodes behavior', () => {
|
|
53
|
+
expect(commandBuilder.build('SetChildLockBehavior', { behavior: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetChildLockBehavior', 0x35, '01'));
|
|
54
|
+
});
|
|
55
|
+
test('SetProportionalGain encodes fixed-point gain', () => {
|
|
56
|
+
expect(commandBuilder.build('SetProportionalGain', { proportionalGain: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetProportionalGain', 0x37, '020000'));
|
|
57
|
+
});
|
|
58
|
+
test('SetExternalTemperatureFloat encodes temperature *10', () => {
|
|
59
|
+
expect(commandBuilder.build('SetExternalTemperatureFloat', { temp: 12.3 })).toStrictEqual(new encoders_1.BaseCommand('SetExternalTemperatureFloat', 0x3c, '007B'));
|
|
60
|
+
});
|
|
61
|
+
test('SetIntegralGain encodes fixed-point gain', () => {
|
|
62
|
+
expect(commandBuilder.build('SetIntegralGain', { integralGain: 2 })).toStrictEqual(new encoders_1.BaseCommand('SetIntegralGain', 0x3e, '040000'));
|
|
63
|
+
});
|
|
64
|
+
test('SetPiRunPeriod encodes period', () => {
|
|
65
|
+
expect(commandBuilder.build('SetPiRunPeriod', { period: 15 })).toStrictEqual(new encoders_1.BaseCommand('SetPiRunPeriod', 0x41, '0F'));
|
|
66
|
+
});
|
|
67
|
+
test('SetTemperatureHysteresis encodes hysteresis *10', () => {
|
|
68
|
+
expect(commandBuilder.build('SetTemperatureHysteresis', { hysteresis: 0.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureHysteresis', 0x43, '05'));
|
|
69
|
+
});
|
|
70
|
+
test('SetOpenWindowPrecisely encodes enable, duration and delta', () => {
|
|
71
|
+
expect(commandBuilder.build('SetOpenWindowPrecisely', { enabled: true, duration: 25, delta: 1.5 })).toStrictEqual(new encoders_1.BaseCommand('SetOpenWindowPrecisely', 0x45, '01', '05', '0F'));
|
|
72
|
+
});
|
|
73
|
+
test('SetForceAttach encodes enabled flag', () => {
|
|
74
|
+
expect(commandBuilder.build('SetForceAttach', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetForceAttach', 0x47, '01'));
|
|
75
|
+
});
|
|
76
|
+
test('SetAntiFreezeParams encodes temperatures *10', () => {
|
|
77
|
+
expect(commandBuilder.build('SetAntiFreezeParams', {
|
|
78
|
+
activatedTemperature: 5,
|
|
79
|
+
deactivatedTemperature: 6,
|
|
80
|
+
targetTemperature: 7,
|
|
81
|
+
})).toStrictEqual(new encoders_1.BaseCommand('SetAntiFreezeParams', 0x49, '32', '3C', '46'));
|
|
82
|
+
});
|
|
83
|
+
test('SetMaxAllowedIntegralValue encodes value *10', () => {
|
|
84
|
+
expect(commandBuilder.build('SetMaxAllowedIntegralValue', { value: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetMaxAllowedIntegralValue', 0x4c, '0064'));
|
|
85
|
+
});
|
|
86
|
+
test('SetValveOpennessInPercentage encodes openness', () => {
|
|
87
|
+
expect(commandBuilder.build('SetValveOpennessInPercentage', { value: 55 })).toStrictEqual(new encoders_1.BaseCommand('SetValveOpennessInPercentage', 0x4e, '37'));
|
|
88
|
+
});
|
|
89
|
+
test('SetValveOpennessRangeInPercentage encodes inverted range', () => {
|
|
90
|
+
expect(commandBuilder.build('SetValveOpennessRangeInPercentage', { min: 10, max: 90 })).toStrictEqual(new encoders_1.BaseCommand('SetValveOpennessRangeInPercentage', 0x4f, '0A', '5A'));
|
|
91
|
+
});
|
|
92
|
+
test('SetTemperatureOffset encodes offset', () => {
|
|
93
|
+
expect(commandBuilder.build('SetTemperatureOffset', { value: 0 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureOffset', 0x53, '1C'));
|
|
94
|
+
});
|
|
95
|
+
test('SetHeatingEvent encodes schedule payload', () => {
|
|
96
|
+
expect(commandBuilder.build('SetHeatingEvent', {
|
|
97
|
+
eventIndex: 0,
|
|
98
|
+
startHour: 8,
|
|
99
|
+
startMinute: 1,
|
|
100
|
+
targetTemperature: 25.8,
|
|
101
|
+
daysActive: {
|
|
102
|
+
monday: true,
|
|
103
|
+
tuesday: true,
|
|
104
|
+
wednesday: true,
|
|
105
|
+
thursday: true,
|
|
106
|
+
friday: true,
|
|
107
|
+
saturday: false,
|
|
108
|
+
sunday: false,
|
|
109
|
+
},
|
|
110
|
+
})).toStrictEqual(new encoders_1.BaseCommand('SetHeatingEvent', 0x59, '00', '08', '01', '0102', '1F'));
|
|
111
|
+
});
|
|
112
|
+
test('SetHeatingEventState encodes event index and state', () => {
|
|
113
|
+
expect(commandBuilder.build('SetHeatingEventState', { eventIndex: 16, active: true })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingEventState', 0x6b, '10', '01'));
|
|
114
|
+
});
|
|
115
|
+
test('SetTimeRequestByMACcommand encodes enable flag', () => {
|
|
116
|
+
expect(commandBuilder.build('SetTimeRequestByMACcommand', { enabled: true })).toStrictEqual(new encoders_1.BaseCommand('SetTimeRequestByMACcommand', 0x6d, '01'));
|
|
117
|
+
});
|
|
118
|
+
test('SetHeatingSchedule encodes schedule dates', () => {
|
|
119
|
+
expect(commandBuilder.build('SetHeatingSchedule', { startMonth: 0, startDay: 1, endMonth: 11, endDay: 31 })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingSchedule', 0x5b, '00', '01', '0B', '1F'));
|
|
120
|
+
});
|
|
121
|
+
test('SetDeviceTime encodes timestamp bytes', () => {
|
|
122
|
+
expect(commandBuilder.build('SetDeviceTime', { timestamp: 1690000000 })).toStrictEqual(new encoders_1.BaseCommand('SetDeviceTime', 0x5d, '64', 'BB', '5A', '80'));
|
|
123
|
+
});
|
|
124
|
+
test('SetDeviceTimeZone encodes offset with two’s complement for negatives', () => {
|
|
125
|
+
expect(commandBuilder.build('SetDeviceTimeZone', { offsetHours: -3 })).toStrictEqual(new encoders_1.BaseCommand('SetDeviceTimeZone', 0x5f, 'FD'));
|
|
126
|
+
});
|
|
127
|
+
test('SetAutomaticSetpointRestore encodes time/10', () => {
|
|
128
|
+
expect(commandBuilder.build('SetAutomaticSetpointRestore', { time: 30 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticSetpointRestore', 0x61, '03'));
|
|
129
|
+
});
|
|
130
|
+
test('SetOfflineTargetTemperature encodes target *10', () => {
|
|
131
|
+
expect(commandBuilder.build('SetOfflineTargetTemperature', { targetTemperature: 21.5 })).toStrictEqual(new encoders_1.BaseCommand('SetOfflineTargetTemperature', 0x65, '00D7'));
|
|
132
|
+
});
|
|
133
|
+
test('SetOfflineTargetTemperature encodes disable payload when target is 0', () => {
|
|
134
|
+
expect(commandBuilder.build('SetOfflineTargetTemperature', { targetTemperature: 0 })).toStrictEqual(new encoders_1.BaseCommand('SetOfflineTargetTemperature', 0x65, '0000'));
|
|
135
|
+
});
|
|
136
|
+
test('SetInternalAlgoTemporaryState encodes enable/disable flag', () => {
|
|
137
|
+
expect(commandBuilder.build('SetInternalAlgoTemporaryState', { enabled: false })).toStrictEqual(new encoders_1.BaseCommand('SetInternalAlgoTemporaryState', 0x67, '01'));
|
|
138
|
+
});
|
|
139
|
+
test('SetTemperatureLevels encodes six level temperatures', () => {
|
|
140
|
+
expect(commandBuilder.build('SetTemperatureLevels', {
|
|
141
|
+
scaleLevel0: 5.0,
|
|
142
|
+
scaleLevel1: 10.0,
|
|
143
|
+
scaleLevel2: 15.0,
|
|
144
|
+
scaleLevel3: 20.0,
|
|
145
|
+
scaleLevel4: 22.5,
|
|
146
|
+
scaleLevel5: 25.0,
|
|
147
|
+
})).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureLevels', 0x69, '0032', '0064', '0096', '00C8', '00E1', '00FA'));
|
|
148
|
+
});
|
|
149
|
+
test('SetLedIndicationDuration encodes doubled duration', () => {
|
|
150
|
+
expect(commandBuilder.build('SetLedIndicationDuration', { duration: 1.5 })).toStrictEqual(new encoders_1.BaseCommand('SetLedIndicationDuration', 0x63, '03'));
|
|
151
|
+
});
|
|
152
|
+
test('Invalid SetOpenWindow params throw validation error', () => {
|
|
153
|
+
expect(() => commandBuilder.build('SetOpenWindow', { enabled: true, delta: -1, closeTime: 1, motorPosition: 1 })).toThrow(utils_1.CustomError);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=VickiCommands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VickiCommands.test.js","sourceRoot":"","sources":["../../src/encoders/VickiCommands.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WirelessThermostatCommands.test.d.ts","sourceRoot":"","sources":["../../src/encoders/WirelessThermostatCommands.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('WirelessThermostatCommands payload encoder', () => {
|
|
6
|
+
const commandBuilder = new encoders_1.CommandBuilder('wireless_thermostat');
|
|
7
|
+
test('SetTargetTemperature uses precise path for floats', () => {
|
|
8
|
+
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 21.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x50, '00D7'));
|
|
9
|
+
});
|
|
10
|
+
test('SetTargetTemperature uses integer path', () => {
|
|
11
|
+
expect(commandBuilder.build('SetTargetTemperature', { targetTemperature: 22 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperature', 0x2e, '16'));
|
|
12
|
+
});
|
|
13
|
+
test('SetHeatingStatus encodes status flag', () => {
|
|
14
|
+
expect(commandBuilder.build('SetHeatingStatus', { status: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetHeatingStatus', 0x31, '01'));
|
|
15
|
+
});
|
|
16
|
+
test('SetDisplayRefreshPeriod encodes period', () => {
|
|
17
|
+
expect(commandBuilder.build('SetDisplayRefreshPeriod', { period: 4 })).toStrictEqual(new encoders_1.BaseCommand('SetDisplayRefreshPeriod', 0x33, '04'));
|
|
18
|
+
});
|
|
19
|
+
test('SetTargetSendDelay encodes delay', () => {
|
|
20
|
+
expect(commandBuilder.build('SetTargetSendDelay', { time: 10 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetSendDelay', 0x35, '0A'));
|
|
21
|
+
});
|
|
22
|
+
test('SetAutomaticHeatingStatus encodes toggle', () => {
|
|
23
|
+
expect(commandBuilder.build('SetAutomaticHeatingStatus', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetAutomaticHeatingStatus', 0x37, '01'));
|
|
24
|
+
});
|
|
25
|
+
test('SetSensorMode encodes mode', () => {
|
|
26
|
+
expect(commandBuilder.build('SetSensorMode', { state: 1 })).toStrictEqual(new encoders_1.BaseCommand('SetSensorMode', 0x39, '01'));
|
|
27
|
+
});
|
|
28
|
+
test('SetTemperatureHysteresis encodes hysteresis *10', () => {
|
|
29
|
+
expect(commandBuilder.build('SetTemperatureHysteresis', { hysteresis: 0.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTemperatureHysteresis', 0x4e, '05'));
|
|
30
|
+
});
|
|
31
|
+
test('SetTargetTemperaturePrecisely encodes temperature *10', () => {
|
|
32
|
+
expect(commandBuilder.build('SetTargetTemperaturePrecisely', { targetTemperature: 21.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperaturePrecisely', 0x50, '00D7'));
|
|
33
|
+
});
|
|
34
|
+
test('SetTargetTemperatureStep encodes step *10', () => {
|
|
35
|
+
expect(commandBuilder.build('SetTargetTemperatureStep', { value: 0.5 })).toStrictEqual(new encoders_1.BaseCommand('SetTargetTemperatureStep', 0x52, '05'));
|
|
36
|
+
});
|
|
37
|
+
test('Invalid SetTargetTemperatureStep throws validation error', () => {
|
|
38
|
+
expect(() => commandBuilder.build('SetTargetTemperatureStep', { value: 0 })).toThrow(utils_1.CustomError);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=WirelessThermostatCommands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WirelessThermostatCommands.test.js","sourceRoot":"","sources":["../../src/encoders/WirelessThermostatCommands.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -858,44 +858,44 @@ describe('HTPirLite payload decoder', () => {
|
|
|
858
858
|
});
|
|
859
859
|
describe('MultiSensor payload decoder', () => {
|
|
860
860
|
test('simple keepalive', () => {
|
|
861
|
-
expect((0, payloadParsers_1.uplinkPayloadParser)('
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
relativeHumidity:
|
|
866
|
-
|
|
867
|
-
staticAQI:
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
861
|
+
expect((0, payloadParsers_1.uplinkPayloadParser)('820F17CB2DA80D0600040A3A01DD03', types_1.DeviceType.MultiSensor)).toStrictEqual({
|
|
862
|
+
averageTemperature: 45.9,
|
|
863
|
+
minTemperature: 44.4,
|
|
864
|
+
maxTemperature: 47,
|
|
865
|
+
relativeHumidity: 45,
|
|
866
|
+
pressure: 956.94,
|
|
867
|
+
staticAQI: 25,
|
|
868
|
+
eCO2: 508.24,
|
|
869
|
+
bVOC: 4,
|
|
870
|
+
lightLevel: 39,
|
|
871
|
+
noiseLevel: 58,
|
|
872
|
+
pirTriggerCount: 1,
|
|
873
|
+
batteryVoltage: 3.51,
|
|
874
|
+
pir: false,
|
|
875
|
+
hallSensorEvent: false,
|
|
876
|
+
staticAQIAccuracy: 1,
|
|
877
|
+
powerSourceStatus: 1,
|
|
878
878
|
});
|
|
879
879
|
});
|
|
880
880
|
test('keepalive with response of preloaded code', () => {
|
|
881
|
-
expect((0, payloadParsers_1.uplinkPayloadParser)('
|
|
881
|
+
expect((0, payloadParsers_1.uplinkPayloadParser)('1202820F17CB2DA80D0600040A3A01DD03', types_1.DeviceType.MultiSensor)).toStrictEqual({
|
|
882
882
|
keepAliveTime: 2,
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
relativeHumidity:
|
|
887
|
-
|
|
888
|
-
staticAQI:
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
883
|
+
averageTemperature: 45.9,
|
|
884
|
+
minTemperature: 44.4,
|
|
885
|
+
maxTemperature: 47,
|
|
886
|
+
relativeHumidity: 45,
|
|
887
|
+
pressure: 956.94,
|
|
888
|
+
staticAQI: 25,
|
|
889
|
+
eCO2: 508.24,
|
|
890
|
+
bVOC: 4,
|
|
891
|
+
lightLevel: 39,
|
|
892
|
+
noiseLevel: 58,
|
|
893
|
+
pirTriggerCount: 1,
|
|
894
|
+
batteryVoltage: 3.51,
|
|
895
|
+
pir: false,
|
|
896
|
+
hallSensorEvent: false,
|
|
897
|
+
staticAQIAccuracy: 1,
|
|
898
|
+
powerSourceStatus: 1,
|
|
899
899
|
});
|
|
900
900
|
});
|
|
901
901
|
});
|