homebridge-easy-mqtt 1.4.0-beta.9 → 1.4.1-beta.0
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/CHANGELOG.md +28 -9
- package/README.md +237 -22
- package/config.schema.json +1361 -92
- package/dist/accessory/abstract/base.js +5 -5
- package/dist/accessory/abstract/base.js.map +1 -1
- package/dist/accessory/abstract/common.d.ts +43 -0
- package/dist/accessory/abstract/common.js +172 -0
- package/dist/accessory/abstract/common.js.map +1 -0
- package/dist/accessory/abstract/helper.d.ts +1 -0
- package/dist/accessory/abstract/helper.js +21 -2
- package/dist/accessory/abstract/helper.js.map +1 -1
- package/dist/accessory/abstract/mqtt.d.ts +15 -26
- package/dist/accessory/abstract/mqtt.js +26 -143
- package/dist/accessory/abstract/mqtt.js.map +1 -1
- package/dist/accessory/addons/addon.d.ts +24 -0
- package/dist/accessory/addons/addon.js +52 -0
- package/dist/accessory/addons/addon.js.map +1 -0
- package/dist/accessory/addons/filter.d.ts +11 -0
- package/dist/accessory/addons/filter.js +37 -0
- package/dist/accessory/addons/filter.js.map +1 -0
- package/dist/accessory/button.d.ts +10 -0
- package/dist/accessory/button.js +43 -0
- package/dist/accessory/button.js.map +1 -0
- package/dist/accessory/climate/active.js +14 -8
- package/dist/accessory/climate/active.js.map +1 -1
- package/dist/accessory/climate/fan2.d.ts +20 -0
- package/dist/accessory/climate/fan2.js +122 -0
- package/dist/accessory/climate/fan2.js.map +1 -0
- package/dist/accessory/climate/heaterCooler.js +4 -2
- package/dist/accessory/climate/heaterCooler.js.map +1 -1
- package/dist/accessory/climate/purifier.js +5 -3
- package/dist/accessory/climate/purifier.js.map +1 -1
- package/dist/accessory/climate/temperatureControl.d.ts +1 -1
- package/dist/accessory/climate/temperatureControl.js +10 -8
- package/dist/accessory/climate/temperatureControl.js.map +1 -1
- package/dist/accessory/climate/thermostat.js +8 -8
- package/dist/accessory/climate/thermostat.js.map +1 -1
- package/dist/accessory/garage.d.ts +17 -0
- package/dist/accessory/garage.js +110 -0
- package/dist/accessory/garage.js.map +1 -0
- package/dist/accessory/lock.d.ts +2 -2
- package/dist/accessory/lock.js +3 -3
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/lightbulb.js +9 -4
- package/dist/accessory/onoff/lightbulb.js.map +1 -1
- package/dist/accessory/onoff/onoff.js +1 -1
- package/dist/accessory/onoff/onoff.js.map +1 -1
- package/dist/accessory/onoff/outlet.js +1 -1
- package/dist/accessory/onoff/outlet.js.map +1 -1
- package/dist/accessory/position/blind.d.ts +10 -0
- package/dist/accessory/position/blind.js +22 -0
- package/dist/accessory/position/blind.js.map +1 -0
- package/dist/accessory/position/position.d.ts +14 -0
- package/dist/accessory/position/position.js +88 -0
- package/dist/accessory/position/position.js.map +1 -0
- package/dist/accessory/security.js +4 -4
- package/dist/accessory/security.js.map +1 -1
- package/dist/accessory/sensor/air.d.ts +14 -0
- package/dist/accessory/sensor/air.js +96 -0
- package/dist/accessory/sensor/air.js.map +1 -0
- package/dist/accessory/sensor/carbonDioxide.js +3 -3
- package/dist/accessory/sensor/carbonDioxide.js.map +1 -1
- package/dist/accessory/sensor/carbonMonoxide.js +3 -3
- package/dist/accessory/sensor/carbonMonoxide.js.map +1 -1
- package/dist/accessory/sensor/contact.js +1 -1
- package/dist/accessory/sensor/contact.js.map +1 -1
- package/dist/accessory/sensor/humidity.js +1 -1
- package/dist/accessory/sensor/humidity.js.map +1 -1
- package/dist/accessory/sensor/leak.js +1 -1
- package/dist/accessory/sensor/leak.js.map +1 -1
- package/dist/accessory/sensor/light.js +1 -1
- package/dist/accessory/sensor/light.js.map +1 -1
- package/dist/accessory/sensor/motion.js +1 -1
- package/dist/accessory/sensor/motion.js.map +1 -1
- package/dist/accessory/sensor/occupancy.js +1 -1
- package/dist/accessory/sensor/occupancy.js.map +1 -1
- package/dist/accessory/sensor/sensor.js +4 -4
- package/dist/accessory/sensor/sensor.js.map +1 -1
- package/dist/accessory/sensor/smoke.js +1 -1
- package/dist/accessory/sensor/smoke.js.map +1 -1
- package/dist/accessory/sensor/temperature.js +1 -1
- package/dist/accessory/sensor/temperature.js.map +1 -1
- package/dist/accessory/valve.js +7 -7
- package/dist/accessory/valve.js.map +1 -1
- package/dist/homebridge/platform.js +4 -2
- package/dist/homebridge/platform.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/homebridge-ui/public/ui.js +1 -1
- package/dist/i18n/en.d.ts +183 -16
- package/dist/i18n/en.js +236 -69
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts +452 -18
- package/dist/i18n/fr.js +269 -2
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/i18n.d.ts +185 -17
- package/dist/i18n/i18n.js +6 -0
- package/dist/i18n/i18n.js.map +1 -1
- package/dist/i18n/it.d.ts +1057 -0
- package/dist/i18n/it.js +526 -0
- package/dist/i18n/it.js.map +1 -0
- package/dist/i18n/ro.d.ts +347 -33
- package/dist/i18n/ro.js +164 -17
- package/dist/i18n/ro.js.map +1 -1
- package/dist/i18n/template.d.ts +183 -16
- package/dist/i18n/template.js +1 -1
- package/dist/i18n/vi.d.ts +1059 -0
- package/dist/i18n/vi.js +528 -0
- package/dist/i18n/vi.js.map +1 -0
- package/dist/model/enums.d.ts +35 -6
- package/dist/model/enums.js +34 -5
- package/dist/model/enums.js.map +1 -1
- package/dist/model/mqtt.d.ts +4 -3
- package/dist/model/mqtt.js +30 -9
- package/dist/model/mqtt.js.map +1 -1
- package/dist/model/types.d.ts +97 -4
- package/dist/tools/log.d.ts +7 -5
- package/dist/tools/log.js.map +1 -1
- package/dist/tools/properties.d.ts +11 -0
- package/dist/tools/properties.js +73 -0
- package/dist/tools/properties.js.map +1 -0
- package/dist/tools/temperature.d.ts +7 -3
- package/dist/tools/temperature.js +20 -9
- package/dist/tools/temperature.js.map +1 -1
- package/dist/tools/validation.d.ts +2 -0
- package/dist/tools/validation.js +11 -0
- package/dist/tools/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../../src/accessory/abstract/mqtt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../../src/accessory/abstract/mqtt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PrimitiveTypes, Service } from 'homebridge';
|
|
2
|
+
import { Common } from '../abstract/common.js';
|
|
3
|
+
import { AddonType } from '../../model/enums.js';
|
|
4
|
+
import { AddonConfig, CharacteristicType, MQTTAccessoryConfig } from '../../model/types.js';
|
|
5
|
+
import { Log } from '../../tools/log.js';
|
|
6
|
+
import { MQTTAccessory } from '../abstract/mqtt.js';
|
|
7
|
+
type AddonConstructor<C extends AddonConfig, A extends Addon<C>> = new (service: Service, parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, config: C) => A;
|
|
8
|
+
type AddonServiceType = typeof import('homebridge').Service[AddonType];
|
|
9
|
+
export declare abstract class Addon<C extends AddonConfig> extends Common<C> {
|
|
10
|
+
private readonly parentAccessory;
|
|
11
|
+
private readonly addonService;
|
|
12
|
+
private readonly addonConfig;
|
|
13
|
+
static new<C extends AddonConfig, A extends Addon<C>>(parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, addonServiceInstance: AddonServiceType, config: C, required: (keyof C)[], constructor: AddonConstructor<C, A>): A | undefined;
|
|
14
|
+
protected constructor(parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, addonService: Service, addonConfig: C);
|
|
15
|
+
protected get service(): Service;
|
|
16
|
+
protected get Characteristic(): CharacteristicType;
|
|
17
|
+
protected get log(): Log;
|
|
18
|
+
protected get disableLogging(): boolean;
|
|
19
|
+
protected get config(): C;
|
|
20
|
+
protected get identifier(): string;
|
|
21
|
+
protected get useStoredProperties(): boolean;
|
|
22
|
+
protected publish(rawTopic: string, value: PrimitiveTypes): void;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Common } from '../abstract/common.js';
|
|
2
|
+
import { assert } from '../../tools/validation.js';
|
|
3
|
+
export class Addon extends Common {
|
|
4
|
+
parentAccessory;
|
|
5
|
+
addonService;
|
|
6
|
+
addonConfig;
|
|
7
|
+
static new(parentAccessory, addonServiceInstance, config, required, constructor) {
|
|
8
|
+
const existingAddonService = parentAccessory.platformAccessory.getService(addonServiceInstance);
|
|
9
|
+
if (required.filter((key) => config[key] !== undefined).length === 0 || !assert(parentAccessory.log, parentAccessory.name, config, ...required)) {
|
|
10
|
+
if (existingAddonService !== undefined) {
|
|
11
|
+
parentAccessory.platformAccessory.removeService(existingAddonService);
|
|
12
|
+
}
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const addonService = existingAddonService ?? parentAccessory.platformAccessory.addService(addonServiceInstance);
|
|
16
|
+
if (existingAddonService === undefined) {
|
|
17
|
+
parentAccessory.service.addLinkedService(addonService);
|
|
18
|
+
}
|
|
19
|
+
return new constructor(addonService, parentAccessory, config);
|
|
20
|
+
}
|
|
21
|
+
constructor(parentAccessory, addonService, addonConfig) {
|
|
22
|
+
super(parentAccessory.name);
|
|
23
|
+
this.parentAccessory = parentAccessory;
|
|
24
|
+
this.addonService = addonService;
|
|
25
|
+
this.addonConfig = addonConfig;
|
|
26
|
+
}
|
|
27
|
+
get service() {
|
|
28
|
+
return this.addonService;
|
|
29
|
+
}
|
|
30
|
+
get Characteristic() {
|
|
31
|
+
return this.parentAccessory.Characteristic;
|
|
32
|
+
}
|
|
33
|
+
get log() {
|
|
34
|
+
return this.parentAccessory.log;
|
|
35
|
+
}
|
|
36
|
+
get disableLogging() {
|
|
37
|
+
return this.parentAccessory.disableLogging;
|
|
38
|
+
}
|
|
39
|
+
get config() {
|
|
40
|
+
return this.addonConfig;
|
|
41
|
+
}
|
|
42
|
+
get identifier() {
|
|
43
|
+
return `${this.parentAccessory.identifier}:${this.addonService.UUID}`;
|
|
44
|
+
}
|
|
45
|
+
get useStoredProperties() {
|
|
46
|
+
return this.parentAccessory.useStoredProperties;
|
|
47
|
+
}
|
|
48
|
+
publish(rawTopic, value) {
|
|
49
|
+
return this.parentAccessory.publish(rawTopic, value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=addon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon.js","sourceRoot":"","sources":["../../../src/accessory/addons/addon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAM/C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAYnD,MAAM,OAAgB,KAA6B,SAAQ,MAAS;IA6B/C;IACA;IACA;IA7BnB,MAAM,CAAC,GAAG,CACR,eAAmD,EACnD,oBAAsC,EACtC,MAAS,EACT,QAAqB,EACrB,WAAmC;QAGnC,MAAM,oBAAoB,GAAG,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAEhG,IAAI,QAAQ,CAAC,MAAM,CAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;YAClJ,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBACvC,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;YACxE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,oBAAoB,IAAI,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAEhH,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,WAAW,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,YACmB,eAAmD,EACnD,YAAqB,EACrB,WAAc;QAE/B,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAJX,oBAAe,GAAf,eAAe,CAAoC;QACnD,iBAAY,GAAZ,YAAY,CAAS;QACrB,gBAAW,GAAX,WAAW,CAAG;IAGjC,CAAC;IAED,IAAc,OAAO;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAc,cAAc;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,IAAc,cAAc;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,IAAc,MAAM;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,IAAc,mBAAmB;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;IAClD,CAAC;IAES,OAAO,CAAC,QAAgB,EAAE,KAAqB;QACvD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Service } from 'homebridge';
|
|
2
|
+
import { Addon } from './addon.js';
|
|
3
|
+
import { TopicHandler } from '../abstract/common.js';
|
|
4
|
+
import { FilterMaintenanceConfig, MQTTAccessoryConfig, ServiceType } from '../../model/types.js';
|
|
5
|
+
import { MQTTAccessory } from '../abstract/mqtt.js';
|
|
6
|
+
export declare class FilterMaintenance extends Addon<FilterMaintenanceConfig> {
|
|
7
|
+
static topicHandlers(Service: ServiceType, parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, config: FilterMaintenanceConfig): TopicHandler[];
|
|
8
|
+
constructor(service: Service, parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, config: FilterMaintenanceConfig);
|
|
9
|
+
private onChangeIndicationUpdate;
|
|
10
|
+
private onResetIndication;
|
|
11
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Addon } from './addon.js';
|
|
2
|
+
import { strings } from '../../i18n/i18n.js';
|
|
3
|
+
import { AddonType, CharacteristicKey } from '../../model/enums.js';
|
|
4
|
+
import { LogType } from '../../tools/log.js';
|
|
5
|
+
export class FilterMaintenance extends Addon {
|
|
6
|
+
static topicHandlers(Service, parentAccessory, config) {
|
|
7
|
+
const FilterMaintenanceService = Service[AddonType.FilterMaintenance];
|
|
8
|
+
const filterMaintenance = Addon.new(parentAccessory, FilterMaintenanceService, config, ['topicGetFilterChangeIndication'], FilterMaintenance);
|
|
9
|
+
return filterMaintenance?.topicHandlers ?? [];
|
|
10
|
+
}
|
|
11
|
+
constructor(service, parentAccessory, config) {
|
|
12
|
+
super(parentAccessory, service, config);
|
|
13
|
+
this.setup(CharacteristicKey.FilterChangeIndication, this.Characteristic.FilterChangeIndication.FILTER_OK, 'topicGetFilterChangeIndication', this.onChangeIndicationUpdate.bind(this), false);
|
|
14
|
+
this.setup(CharacteristicKey.FilterLifeLevel, 100, 'topicGetFilterLifeLevel', this.bindOnUpdateNumeric(CharacteristicKey.FilterLifeLevel, strings.filter.level), false);
|
|
15
|
+
this.setupSet(CharacteristicKey.ResetFilterIndication, 'topicResetFilterIndication', this.onResetIndication.bind(this));
|
|
16
|
+
}
|
|
17
|
+
async onChangeIndicationUpdate(topic, value) {
|
|
18
|
+
const indication = value === this.getPrimitiveValue('valueFilterChange') ? 1 : 0;
|
|
19
|
+
if (!this.onUpdate(CharacteristicKey.FilterChangeIndication, indication)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (indication === this.Characteristic.FilterChangeIndication.FILTER_OK) {
|
|
23
|
+
this.logIfDesired(strings.filter.ok);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.logIfDesired(LogType.WARNING, strings.filter.change);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async onResetIndication(value) {
|
|
30
|
+
if (!this.assert('valueFilterReset')) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.onSet(CharacteristicKey.ResetFilterIndication, value, this.config.valueFilterReset, 'topicResetFilterIndication', strings.filter.reset);
|
|
34
|
+
this.properties.set(CharacteristicKey.ResetFilterIndication, 0);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/accessory/addons/filter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,MAAM,OAAO,iBAAkB,SAAQ,KAA8B;IAEnE,MAAM,CAAC,aAAa,CAClB,OAAoB,EACpB,eAAmD,EACnD,MAA+B;QAE/B,MAAM,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACtE,MAAM,iBAAiB,GACrB,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,gCAAgC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtH,OAAO,iBAAiB,EAAE,aAAa,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,YACE,OAAgB,EAChB,eAAmD,EACnD,MAA+B;QAE/B,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAExC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EACvG,gCAAgC,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAErF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,eAAe,EAAE,GAAG,EAC/C,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvH,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1H,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,KAAa,EAAE,KAAqB;QAEzE,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC;YACxE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAA0B;QAExD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7I,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { BaseAccessory } from './abstract/base.js';
|
|
3
|
+
import { AccessoryType } from '../model/enums.js';
|
|
4
|
+
import { ButtonConfig, CharacteristicType, ServiceType } from '../model/types.js';
|
|
5
|
+
import { Log } from '../tools/log.js';
|
|
6
|
+
export declare class ButtonAccessory extends BaseAccessory<ButtonConfig> {
|
|
7
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: ButtonConfig, log: Log, isGrouped: boolean);
|
|
8
|
+
protected getAccessoryType(): AccessoryType;
|
|
9
|
+
private onPress;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BaseAccessory } from './abstract/base.js';
|
|
2
|
+
import { strings } from '../i18n/i18n.js';
|
|
3
|
+
import { AccessoryType } from '../model/enums.js';
|
|
4
|
+
export class ButtonAccessory extends BaseAccessory {
|
|
5
|
+
constructor(Service, Characteristic, accessory, config, log, isGrouped) {
|
|
6
|
+
super(Service, Characteristic, accessory, config, log, isGrouped);
|
|
7
|
+
if (!this.assert('topicEventButtonPress')) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (!config.valueSinglePress && !config.valueDoublePress && !config.valueLongPress) {
|
|
11
|
+
this.log.error(strings.button.noValues, this.name);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
this.topicHandlers.push({ topic: config.topicEventButtonPress, handler: this.onPress.bind(this) });
|
|
15
|
+
}
|
|
16
|
+
getAccessoryType() {
|
|
17
|
+
return AccessoryType.StatelessProgrammableSwitch;
|
|
18
|
+
}
|
|
19
|
+
async onPress(_topic, value) {
|
|
20
|
+
let charValue;
|
|
21
|
+
let logString;
|
|
22
|
+
switch (value) {
|
|
23
|
+
case this.getPrimitiveValue('valueSinglePress', false):
|
|
24
|
+
charValue = this.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS;
|
|
25
|
+
logString = strings.button.singlePress;
|
|
26
|
+
break;
|
|
27
|
+
case this.getPrimitiveValue('valueDoublePress', false):
|
|
28
|
+
charValue = this.Characteristic.ProgrammableSwitchEvent.DOUBLE_PRESS;
|
|
29
|
+
logString = strings.button.doublePress;
|
|
30
|
+
break;
|
|
31
|
+
case this.getPrimitiveValue('valueLongPress', false):
|
|
32
|
+
charValue = this.Characteristic.ProgrammableSwitchEvent.LONG_PRESS;
|
|
33
|
+
logString = strings.button.longPress;
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
this.logIfDesired(strings.button.unknownValue, `'${value}'`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.service.updateCharacteristic(this.Characteristic.ProgrammableSwitchEvent, charValue);
|
|
40
|
+
this.logIfDesired(logString);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/accessory/button.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD,MAAM,OAAO,eAAgB,SAAQ,aAA2B;IAE9D,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAoB,EAAE,GAAQ,EAAE,SAAkB;QACpJ,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,2BAA2B,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,KAAqB;QAEzD,IAAI,SAAiB,CAAC;QACtB,IAAI,SAAiB,CAAC;QAEtB,QAAQ,KAAK,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC;gBACpD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,YAAY,CAAC;gBACrE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvC,MAAM;YACR,KAAK,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC;gBACpD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,YAAY,CAAC;gBACrE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvC,MAAM;YACR,KAAK,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC;gBAClD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,UAAU,CAAC;gBACnE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBACrC,MAAM;YACR;gBACE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;gBAC7D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -4,17 +4,22 @@ import { CharacteristicKey } from '../../model/enums.js';
|
|
|
4
4
|
export class ActiveClimateAccessory extends TemperatureControlAccessory {
|
|
5
5
|
constructor(Service, Characteristic, accessory, config, log, isGrouped) {
|
|
6
6
|
super(Service, Characteristic, accessory, config, log, isGrouped);
|
|
7
|
-
this.
|
|
8
|
-
this.
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
this.setup(CharacteristicKey.Active, Characteristic.Active.INACTIVE, 'topicGetActive', this.bindOnUpdateNumericBoolean(CharacteristicKey.Active, 'valueStateActive', strings.active.active, strings.active.notActive), true, 'topicSetActive', this.onSetActive.bind(this));
|
|
8
|
+
this.setup(CharacteristicKey.LockPhysicalControls, Characteristic.LockPhysicalControls.CONTROL_LOCK_DISABLED, 'topicGetLockPhysicalControls', this.bindOnUpdateNumericBoolean(CharacteristicKey.LockPhysicalControls, 'valueControlLock', strings.active.controlsLocked, strings.active.controlsUnLocked), false, 'topicSetLockPhysicalControls', this.onSetLockControls.bind(this));
|
|
9
|
+
let rotationLogString = strings.active.rotationValueUpdate;
|
|
10
|
+
if (!config.maximumRotationSpeed || !this.assertType('number', 'maximumRotationSpeed')) {
|
|
11
|
+
config.maximumRotationSpeed = 100;
|
|
12
|
+
rotationLogString = strings.active.rotationPercentUpdate;
|
|
13
|
+
}
|
|
14
|
+
this.setup(CharacteristicKey.RotationSpeed, 0, 'topicGetRotationSpeed', this.bindOnUpdateNumeric(CharacteristicKey.RotationSpeed, rotationLogString), false, 'topicSetRotationSpeed', this.onSetRotationSpeed.bind(this))?.setProps({ maxValue: config.maximumRotationSpeed });
|
|
15
|
+
this.setup(CharacteristicKey.SwingMode, Characteristic.SwingMode.SWING_DISABLED, 'topicGetSwingMode', this.bindOnUpdateNumericBoolean(CharacteristicKey.SwingMode, 'valueSwingEnabled', strings.active.swingEnabled, strings.active.swingDisabled), false, 'topicSetSwingMode', this.onSetSwingMode.bind(this));
|
|
11
16
|
}
|
|
12
17
|
async onSetActive(value) {
|
|
13
18
|
if (!this.assert('valueStateActive', 'valueStateInactive')) {
|
|
14
19
|
return;
|
|
15
20
|
}
|
|
16
21
|
const active = value === this.Characteristic.Active.ACTIVE;
|
|
17
|
-
const logString = active ? strings.
|
|
22
|
+
const logString = active ? strings.active.activeSet : strings.active.inactiveSet;
|
|
18
23
|
const publish = active ? this.config.valueStateActive : this.config.valueStateInactive;
|
|
19
24
|
this.onSet(CharacteristicKey.Active, value, publish, 'topicSetActive', logString);
|
|
20
25
|
}
|
|
@@ -23,12 +28,13 @@ export class ActiveClimateAccessory extends TemperatureControlAccessory {
|
|
|
23
28
|
return;
|
|
24
29
|
}
|
|
25
30
|
const lock = value === this.Characteristic.LockPhysicalControls.CONTROL_LOCK_ENABLED;
|
|
26
|
-
const logString = lock ? strings.
|
|
31
|
+
const logString = lock ? strings.active.controlsLockFuture : strings.active.controlsUnlockFuture;
|
|
27
32
|
const publish = lock ? this.config.valueControlLock : this.config.valueControlUnlock;
|
|
28
33
|
this.onSet(CharacteristicKey.LockPhysicalControls, value, publish, 'topicSetLockPhysicalControls', logString);
|
|
29
34
|
}
|
|
30
35
|
async onSetRotationSpeed(value) {
|
|
31
|
-
const
|
|
36
|
+
const isPercent = this.config.maximumRotationSpeed === undefined || this.config.maximumRotationSpeed === 100;
|
|
37
|
+
const logString = (isPercent ? strings.active.rotationPercentSet : strings.active.rotationValueSet).replace('%d', value.toString());
|
|
32
38
|
this.onSet(CharacteristicKey.RotationSpeed, value, value, 'topicSetRotationSpeed', logString);
|
|
33
39
|
}
|
|
34
40
|
async onSetSwingMode(value) {
|
|
@@ -36,7 +42,7 @@ export class ActiveClimateAccessory extends TemperatureControlAccessory {
|
|
|
36
42
|
return;
|
|
37
43
|
}
|
|
38
44
|
const swing = value === this.Characteristic.SwingMode.SWING_ENABLED;
|
|
39
|
-
const logString = swing ? strings.
|
|
45
|
+
const logString = swing ? strings.active.swingEnabledFuture : strings.active.swingDisabledFuture;
|
|
40
46
|
const publish = swing ? this.config.valueSwingEnabled : this.config.valueSwingDisabled;
|
|
41
47
|
this.onSet(CharacteristicKey.SwingMode, value, publish, 'topicSetSwingMode', logString);
|
|
42
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active.js","sourceRoot":"","sources":["../../../src/accessory/climate/active.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKzD,MAAM,OAAgB,sBAA4E,SAAQ,2BAA8B;IAEtI,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAS,EAAE,GAAQ,EAAE,SAAkB;QACzI,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"active.js","sourceRoot":"","sources":["../../../src/accessory/climate/active.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { ActiveClimateAccessory } from './active.js';
|
|
3
|
+
import { AccessoryType } from '../../model/enums.js';
|
|
4
|
+
import { CharacteristicType, ServiceType, FanV2Config } from '../../model/types.js';
|
|
5
|
+
import { Log } from '../../tools/log.js';
|
|
6
|
+
export declare class FanV2Accessory extends ActiveClimateAccessory<FanV2Config> {
|
|
7
|
+
private readonly CURRENT_STATE_MAP;
|
|
8
|
+
private readonly TARGET_STATE_MAP;
|
|
9
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: FanV2Config, log: Log, isGrouped: boolean);
|
|
10
|
+
protected getAccessoryType(): AccessoryType;
|
|
11
|
+
private onCurrentStateUpdate;
|
|
12
|
+
private onTargetStateUpdate;
|
|
13
|
+
private onSetTargetState;
|
|
14
|
+
private onSetDirection;
|
|
15
|
+
private fromCVState;
|
|
16
|
+
private toCurrentCVState;
|
|
17
|
+
private toTargetCVState;
|
|
18
|
+
private stateStringForCurrentCV;
|
|
19
|
+
private stateStringForTargetCV;
|
|
20
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { ActiveClimateAccessory } from './active.js';
|
|
2
|
+
import { strings } from '../../i18n/i18n.js';
|
|
3
|
+
import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
|
|
4
|
+
export class FanV2Accessory extends ActiveClimateAccessory {
|
|
5
|
+
CURRENT_STATE_MAP;
|
|
6
|
+
TARGET_STATE_MAP;
|
|
7
|
+
constructor(Service, Characteristic, accessory, config, log, isGrouped) {
|
|
8
|
+
super(Service, Characteristic, accessory, config, log, isGrouped);
|
|
9
|
+
this.CURRENT_STATE_MAP = new Map([
|
|
10
|
+
['valueModeInactive', Characteristic.CurrentFanState.INACTIVE],
|
|
11
|
+
['valueModeIdle', Characteristic.CurrentFanState.IDLE],
|
|
12
|
+
['valueModeBlowing', Characteristic.CurrentFanState.BLOWING_AIR],
|
|
13
|
+
]);
|
|
14
|
+
this.TARGET_STATE_MAP = new Map([
|
|
15
|
+
['valueModeManual', Characteristic.TargetFanState.MANUAL],
|
|
16
|
+
['valueModeAuto', Characteristic.TargetFanState.AUTO],
|
|
17
|
+
]);
|
|
18
|
+
const validCurrentStates = Array.from(this.CURRENT_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
19
|
+
if (config.topicGetCurrentFanState !== undefined && validCurrentStates.length === 0) {
|
|
20
|
+
this.log.error(strings.fanv2.noCurrentStateValues, this.name);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.setup(CharacteristicKey.CurrentFanState, this.CURRENT_STATE_MAP.get(validCurrentStates[0]), 'topicGetCurrentFanState', this.onCurrentStateUpdate.bind(this), false)
|
|
24
|
+
?.setProps({ validValues: validCurrentStates.map((key) => this.CURRENT_STATE_MAP.get(key)) });
|
|
25
|
+
const validTargetStates = Array.from(this.TARGET_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
26
|
+
if (config.topicGetTargetFanState !== undefined && validTargetStates.length === 0) {
|
|
27
|
+
this.log.error(strings.fanv2.noTargetStateValues, this.name);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.setup(CharacteristicKey.TargetFanState, this.TARGET_STATE_MAP.get(validTargetStates[0]), 'topicGetTargetFanState', this.onTargetStateUpdate.bind(this), false, 'topicSetTargetFanState', this.onSetTargetState.bind(this))
|
|
31
|
+
?.setProps({ validValues: validTargetStates.map((key) => this.TARGET_STATE_MAP.get(key)) });
|
|
32
|
+
this.setup(CharacteristicKey.RotationDirection, Characteristic.RotationDirection.CLOCKWISE, 'topicGetRotationDirection', this.bindOnUpdateNumericBoolean(CharacteristicKey.RotationDirection, 'valueDirectionCounterClockwise', strings.fanv2.clockwise, strings.fanv2.counterClockwise), false, 'topicSetRotationDirection', this.onSetDirection.bind(this));
|
|
33
|
+
}
|
|
34
|
+
getAccessoryType() {
|
|
35
|
+
return AccessoryType.Fanv2;
|
|
36
|
+
}
|
|
37
|
+
async onCurrentStateUpdate(_topic, value) {
|
|
38
|
+
const state = this.toCurrentCVState(value);
|
|
39
|
+
if (state === undefined) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.onUpdate(CharacteristicKey.CurrentFanState, state, this.stateStringForCurrentCV(state));
|
|
43
|
+
}
|
|
44
|
+
async onTargetStateUpdate(_topic, value) {
|
|
45
|
+
const state = this.toTargetCVState(value);
|
|
46
|
+
if (state === undefined) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this.onUpdate(CharacteristicKey.TargetFanState, state, this.stateStringForTargetCV(state));
|
|
50
|
+
}
|
|
51
|
+
async onSetTargetState(value) {
|
|
52
|
+
const target = this.fromCVState(value);
|
|
53
|
+
if (target === undefined) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.onSet(CharacteristicKey.TargetFanState, value, target, 'topicSetTargetFanState', this.stateStringForTargetCV(value));
|
|
57
|
+
}
|
|
58
|
+
async onSetDirection(value) {
|
|
59
|
+
if (!this.assert('valueDirectionClockwise', 'valueDirectionCounterClockwise')) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const clockwise = value === this.Characteristic.RotationDirection.CLOCKWISE;
|
|
63
|
+
const logString = clockwise ? strings.fanv2.setDirectionClockwise : strings.fanv2.setDirectionCounterClockwise;
|
|
64
|
+
const publish = clockwise ? this.config.valueDirectionClockwise : this.config.valueDirectionCounterClockwise;
|
|
65
|
+
this.onSet(CharacteristicKey.RotationDirection, value, publish, 'topicSetRotationDirection', logString);
|
|
66
|
+
}
|
|
67
|
+
fromCVState(value) {
|
|
68
|
+
let primative = undefined;
|
|
69
|
+
this.TARGET_STATE_MAP.forEach((test, key) => {
|
|
70
|
+
if (value === test) {
|
|
71
|
+
primative = this.getPrimitiveValue(key);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
if (primative === undefined) {
|
|
75
|
+
this.log.error(strings.fanv2.badValue, this.name, `'${value}'`);
|
|
76
|
+
}
|
|
77
|
+
return primative;
|
|
78
|
+
}
|
|
79
|
+
toCurrentCVState(value) {
|
|
80
|
+
switch (value) {
|
|
81
|
+
case this.getPrimitiveValue('valueModeInactive', false):
|
|
82
|
+
return this.CURRENT_STATE_MAP.get('valueModeInactive');
|
|
83
|
+
case this.getPrimitiveValue('valueModeIdle', false):
|
|
84
|
+
return this.CURRENT_STATE_MAP.get('valueModeIdle');
|
|
85
|
+
case this.getPrimitiveValue('valueModeBlowing', false):
|
|
86
|
+
return this.CURRENT_STATE_MAP.get('valueModeBlowing');
|
|
87
|
+
}
|
|
88
|
+
this.logIfDesired(strings.fanv2.unknownValue, `'${value}'`);
|
|
89
|
+
}
|
|
90
|
+
toTargetCVState(value) {
|
|
91
|
+
switch (value) {
|
|
92
|
+
case this.getPrimitiveValue('valueModeAuto', false):
|
|
93
|
+
return this.TARGET_STATE_MAP.get('valueModeAuto');
|
|
94
|
+
case this.getPrimitiveValue('valueModeManual', false):
|
|
95
|
+
return this.TARGET_STATE_MAP.get('valueModeManual');
|
|
96
|
+
}
|
|
97
|
+
this.logIfDesired(strings.fanv2.unknownValue, `'${value}'`);
|
|
98
|
+
}
|
|
99
|
+
stateStringForCurrentCV(state) {
|
|
100
|
+
switch (state) {
|
|
101
|
+
case this.Characteristic.CurrentFanState.INACTIVE:
|
|
102
|
+
return strings.fanv2.stateInactive;
|
|
103
|
+
case this.Characteristic.CurrentFanState.IDLE:
|
|
104
|
+
return strings.fanv2.stateIdle;
|
|
105
|
+
case this.Characteristic.CurrentFanState.BLOWING_AIR:
|
|
106
|
+
return strings.fanv2.stateBlowing;
|
|
107
|
+
default:
|
|
108
|
+
return strings.fanv2.stateUnknown;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
stateStringForTargetCV(state) {
|
|
112
|
+
switch (state) {
|
|
113
|
+
case this.Characteristic.TargetFanState.AUTO:
|
|
114
|
+
return strings.fanv2.stateAuto;
|
|
115
|
+
case this.Characteristic.TargetFanState.MANUAL:
|
|
116
|
+
return strings.fanv2.stateManual;
|
|
117
|
+
default:
|
|
118
|
+
return strings.fanv2.stateUnknown;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=fan2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fan2.js","sourceRoot":"","sources":["../../../src/accessory/climate/fan2.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ActiveClimateAccessory } from './active.js';
|
|
2
|
+
import { FilterMaintenance } from '../addons/filter.js';
|
|
2
3
|
import { strings } from '../../i18n/i18n.js';
|
|
3
4
|
import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
|
|
4
5
|
export class HeaterCoolerAccessory extends ActiveClimateAccessory {
|
|
@@ -23,15 +24,16 @@ export class HeaterCoolerAccessory extends ActiveClimateAccessory {
|
|
|
23
24
|
this.log.error(strings.heaterCooler.noStateValues, this.name);
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
|
-
this.
|
|
27
|
+
this.setup(CharacteristicKey.CurrentHeaterCoolerState, this.CURRENT_STATE_MAP.get(validCurrentStates[0]), 'topicGetCurrentHeaterCoolerState', this.onCurrentStateUpdate.bind(this), true)
|
|
27
28
|
?.setProps({ validValues: validCurrentStates.map((key) => this.CURRENT_STATE_MAP.get(key)) });
|
|
28
29
|
const validTargetStates = Array.from(this.TARGET_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
29
30
|
if (validTargetStates.length === 0) {
|
|
30
31
|
this.log.error(strings.heaterCooler.noStateValues, this.name);
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
|
-
this.
|
|
34
|
+
this.setup(CharacteristicKey.TargetHeaterCoolerState, this.TARGET_STATE_MAP.get(validTargetStates[0]), 'topicGetTargetHeaterCoolerState', this.onTargetStateUpdate.bind(this), true, 'topicSetTargetHeaterCoolerState', this.onSetTargetState.bind(this))
|
|
34
35
|
?.setProps({ validValues: validTargetStates.map((key) => this.TARGET_STATE_MAP.get(key)) });
|
|
36
|
+
this.addTopicHandlers(FilterMaintenance.topicHandlers(Service, this, config));
|
|
35
37
|
}
|
|
36
38
|
getAccessoryType() {
|
|
37
39
|
return AccessoryType.HeaterCooler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heaterCooler.js","sourceRoot":"","sources":["../../../src/accessory/climate/heaterCooler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,OAAO,qBAAsB,SAAQ,sBAA0C;IAElE,iBAAiB,CAAwC;IACzD,gBAAgB,CAAwC;IAEzE,YACE,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EACtF,MAA0B,EAAE,GAAQ,EAAE,SAAkB;QACxD,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,sCAAsC,EAAE,CAAC;QAE9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC;YAC/B,CAAC,mBAAmB,EAAE,cAAc,CAAC,wBAAwB,CAAC,QAAQ,CAAC;YACvE,CAAC,eAAe,EAAE,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC;YAC/D,CAAC,eAAe,EAAE,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC;YAClE,CAAC,eAAe,EAAE,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC;SACnE,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC;YAC9B,CAAC,eAAe,EAAE,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;YAC9D,CAAC,eAAe,EAAE,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;YAC9D,CAAC,eAAe,EAAE,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;SAC/D,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QACjI,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"heaterCooler.js","sourceRoot":"","sources":["../../../src/accessory/climate/heaterCooler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ActiveClimateAccessory } from './active.js';
|
|
2
|
+
import { FilterMaintenance } from '../addons/filter.js';
|
|
2
3
|
import { strings } from '../../i18n/i18n.js';
|
|
3
4
|
import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
|
|
4
5
|
export class PurifierAccessory extends ActiveClimateAccessory {
|
|
@@ -12,23 +13,24 @@ export class PurifierAccessory extends ActiveClimateAccessory {
|
|
|
12
13
|
['valueModePurifying', Characteristic.CurrentAirPurifierState.PURIFYING_AIR],
|
|
13
14
|
]);
|
|
14
15
|
this.TARGET_STATE_MAP = new Map([
|
|
15
|
-
['valueModeAuto', Characteristic.TargetAirPurifierState.AUTO],
|
|
16
16
|
['valueModeManual', Characteristic.TargetAirPurifierState.MANUAL],
|
|
17
|
+
['valueModeAuto', Characteristic.TargetAirPurifierState.AUTO],
|
|
17
18
|
]);
|
|
18
19
|
const validCurrentStates = Array.from(this.CURRENT_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
19
20
|
if (validCurrentStates.length === 0) {
|
|
20
21
|
this.log.error(strings.purifier.noCurrentStateValues, this.name);
|
|
21
22
|
return;
|
|
22
23
|
}
|
|
23
|
-
this.
|
|
24
|
+
this.setup(CharacteristicKey.CurrentAirPurifierState, this.CURRENT_STATE_MAP.get(validCurrentStates[0]), 'topicGetCurrentPurifierState', this.onCurrentStateUpdate.bind(this), true)
|
|
24
25
|
?.setProps({ validValues: validCurrentStates.map((key) => this.CURRENT_STATE_MAP.get(key)) });
|
|
25
26
|
const validTargetStates = Array.from(this.TARGET_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
26
27
|
if (validTargetStates.length === 0) {
|
|
27
28
|
this.log.error(strings.purifier.noTargetStateValues, this.name);
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
|
-
this.
|
|
31
|
+
this.setup(CharacteristicKey.TargetAirPurifierState, this.TARGET_STATE_MAP.get(validTargetStates[0]), 'topicGetTargetPurifierState', this.onTargetStateUpdate.bind(this), true, 'topicSetTargetPurifierState', this.onSetTargetState.bind(this))
|
|
31
32
|
?.setProps({ validValues: validTargetStates.map((key) => this.TARGET_STATE_MAP.get(key)) });
|
|
33
|
+
this.addTopicHandlers(FilterMaintenance.topicHandlers(Service, this, config));
|
|
32
34
|
}
|
|
33
35
|
getAccessoryType() {
|
|
34
36
|
return AccessoryType.AirPurifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purifier.js","sourceRoot":"","sources":["../../../src/accessory/climate/purifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,OAAO,iBAAkB,SAAQ,sBAAsC;IAE1D,iBAAiB,CAAoC;IACrD,gBAAgB,CAAoC;IAErE,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAsB,EAAE,GAAQ,EAAE,SAAkB;QACtJ,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC;YAC/B,CAAC,mBAAmB,EAAE,cAAc,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACtE,CAAC,eAAe,EAAE,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;YAC9D,CAAC,oBAAoB,EAAE,cAAc,CAAC,uBAAuB,CAAC,aAAa,CAAC;SAC7E,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC;YAC9B,CAAC,
|
|
1
|
+
{"version":3,"file":"purifier.js","sourceRoot":"","sources":["../../../src/accessory/climate/purifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
2
|
import { BaseAccessory } from '../abstract/base.js';
|
|
3
|
-
import { TemperatureUnits } from '../../model/enums.js';
|
|
4
3
|
import { CharacteristicType, TemperatureControlConfig, ServiceType } from '../../model/types.js';
|
|
5
4
|
import { Log } from '../../tools/log.js';
|
|
5
|
+
import { TemperatureUnits } from '../../tools/temperature.js';
|
|
6
6
|
export declare const DEFAULT_TEMPERATURE = 10;
|
|
7
7
|
export declare abstract class TemperatureControlAccessory<C extends TemperatureControlConfig = TemperatureControlConfig> extends BaseAccessory<C> {
|
|
8
8
|
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: C, log: Log, isGrouped: boolean);
|