homebridge-easy-mqtt 1.4.0-beta.12 → 1.4.0-beta.13
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 +3 -1
- package/README.md +7 -0
- package/config.schema.json +41 -2
- package/dist/accessory/abstract/base.js +1 -1
- package/dist/accessory/abstract/base.js.map +1 -1
- package/dist/accessory/abstract/common.d.ts +13 -9
- package/dist/accessory/abstract/common.js +13 -14
- package/dist/accessory/abstract/common.js.map +1 -1
- package/dist/accessory/abstract/helper.d.ts +1 -0
- package/dist/accessory/abstract/helper.js +4 -0
- package/dist/accessory/abstract/helper.js.map +1 -1
- package/dist/accessory/abstract/mqtt.d.ts +11 -4
- package/dist/accessory/abstract/mqtt.js +25 -9
- package/dist/accessory/abstract/mqtt.js.map +1 -1
- package/dist/accessory/addons/addon.d.ts +19 -7
- package/dist/accessory/addons/addon.js +39 -12
- package/dist/accessory/addons/addon.js.map +1 -1
- package/dist/accessory/addons/filter.d.ts +6 -6
- package/dist/accessory/addons/filter.js +6 -5
- package/dist/accessory/addons/filter.js.map +1 -1
- package/dist/accessory/climate/heaterCooler.js +1 -1
- package/dist/accessory/climate/heaterCooler.js.map +1 -1
- package/dist/accessory/climate/purifier.js +1 -1
- package/dist/accessory/climate/purifier.js.map +1 -1
- package/dist/accessory/climate/thermostat.js +1 -1
- package/dist/accessory/climate/thermostat.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/i18n/en.d.ts +3 -0
- package/dist/i18n/en.js +3 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/i18n.d.ts +3 -0
- package/dist/i18n/ro.d.ts +3 -0
- package/dist/i18n/template.d.ts +3 -0
- package/dist/model/mqtt.js +21 -21
- package/dist/model/mqtt.js.map +1 -1
- package/dist/model/types.d.ts +2 -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/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to homebridge-dummy will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## 1.4.0-beta.
|
|
5
|
+
## 1.4.0-beta.13 (2025-09-24)
|
|
6
6
|
|
|
7
7
|
### Added
|
|
8
8
|
- Support for Air Purifier, GarageDoorOpener, HeaterCooler, LightSensor, and Valve
|
|
@@ -12,6 +12,8 @@ All notable changes to homebridge-dummy will be documented in this file.
|
|
|
12
12
|
- Traduceri în limba română. Mulțumesc, [@rursache](https://github.com/sponsors/rursache)!
|
|
13
13
|
|
|
14
14
|
### Changed
|
|
15
|
+
- ⚠️ All accessory states are now saved across plugin/Homebridge restarts
|
|
16
|
+
- If you want to keep the old behavior, select the `Reset on Restart` option for each accessory you want to reset
|
|
15
17
|
- Optimized MQTT connections by sharing across multiple accessories when possible
|
|
16
18
|
- Previously, every accessory had its own connection
|
|
17
19
|
- Better field validation in config UI (Thank you, [@justjam2013](https://github.com/sponsors/justjam2013) for teaching me this!)
|
package/README.md
CHANGED
|
@@ -87,6 +87,7 @@ Using the Homebridge Config UI is the easiest way to set up this plugin. However
|
|
|
87
87
|
}
|
|
88
88
|
…
|
|
89
89
|
],
|
|
90
|
+
"resetOnRestart": false,
|
|
90
91
|
"disableLogging": false,
|
|
91
92
|
… // See Topics & Values below for additional attributes for each accessory type
|
|
92
93
|
],
|
|
@@ -539,6 +540,12 @@ Due to the complexity, this was intentionally left out of the plugin config UI,
|
|
|
539
540
|
|
|
540
541
|
Since `customCharacteristics` is an array, you may define as many custom characteristics as you wish.
|
|
541
542
|
|
|
543
|
+
## Persistance
|
|
544
|
+
|
|
545
|
+
By default, all accessory values are saved and reloaded when the plugin restarts. However, you may override this behavior by selecting `Reset on Restart` option and accessories will be reset to defaults whenever the plugin or Homebridge restarts.
|
|
546
|
+
|
|
547
|
+
- `"resetOnRestart": true`
|
|
548
|
+
|
|
542
549
|
## Credits
|
|
543
550
|
|
|
544
551
|
[@arachnetech](https://github.com/arachnetech) for the fantastic [homebridge-mqttthing](https://github.com/arachnetech/homebridge-mqttthing) plugin which serves as the main inspiration for this project
|
package/config.schema.json
CHANGED
|
@@ -634,6 +634,10 @@
|
|
|
634
634
|
"type": "string",
|
|
635
635
|
"title": "${config.title.valueDoorStateStopped}"
|
|
636
636
|
},
|
|
637
|
+
"resetOnRestart": {
|
|
638
|
+
"type": "boolean",
|
|
639
|
+
"title": "${config.title.resetOnRestart}"
|
|
640
|
+
},
|
|
637
641
|
"disableLogging": {
|
|
638
642
|
"type": "boolean",
|
|
639
643
|
"title": "${config.title.disableLogging}"
|
|
@@ -1291,7 +1295,21 @@
|
|
|
1291
1295
|
]
|
|
1292
1296
|
},
|
|
1293
1297
|
"accessories[].mqtt.options",
|
|
1294
|
-
|
|
1298
|
+
{
|
|
1299
|
+
"type": "div",
|
|
1300
|
+
"displayFlex": true,
|
|
1301
|
+
"flex-direction": "row",
|
|
1302
|
+
"items": [
|
|
1303
|
+
{
|
|
1304
|
+
"key": "accessories[].resetOnRestart",
|
|
1305
|
+
"flex": "0 0 25%"
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"key": "accessories[].disableLogging",
|
|
1309
|
+
"flex": "0 0 25%"
|
|
1310
|
+
}
|
|
1311
|
+
]
|
|
1312
|
+
},
|
|
1295
1313
|
{
|
|
1296
1314
|
"type": "fieldset",
|
|
1297
1315
|
"title": "${config.title.topics}",
|
|
@@ -2418,6 +2436,27 @@
|
|
|
2418
2436
|
"flex": "0 0 25%"
|
|
2419
2437
|
}
|
|
2420
2438
|
]
|
|
2439
|
+
},
|
|
2440
|
+
{
|
|
2441
|
+
"type": "div",
|
|
2442
|
+
"displayFlex": true,
|
|
2443
|
+
"flex-direction": "row",
|
|
2444
|
+
"items": [
|
|
2445
|
+
{
|
|
2446
|
+
"key": "accessories[].valueLockStateSecured",
|
|
2447
|
+
"title": "${config.title.valueLockStateSecuredOptional}",
|
|
2448
|
+
"flex": "0 0 25%"
|
|
2449
|
+
},
|
|
2450
|
+
{
|
|
2451
|
+
"key": "accessories[].valueLockStateUnsecured",
|
|
2452
|
+
"title": "${config.title.valueLockStateUnsecuredOptional}",
|
|
2453
|
+
"flex": "0 0 25%"
|
|
2454
|
+
},
|
|
2455
|
+
{
|
|
2456
|
+
"key": "accessories[].valueLockStateJammed",
|
|
2457
|
+
"flex": "0 0 25%"
|
|
2458
|
+
}
|
|
2459
|
+
]
|
|
2421
2460
|
}
|
|
2422
2461
|
]
|
|
2423
2462
|
},
|
|
@@ -2426,7 +2465,7 @@
|
|
|
2426
2465
|
"displayFlex": true,
|
|
2427
2466
|
"flex-direction": "row",
|
|
2428
2467
|
"condition": {
|
|
2429
|
-
"functionBody": "return
|
|
2468
|
+
"functionBody": "return model.accessories?.[arguments[1]]?.info?.type === 'LockMechanism';"
|
|
2430
2469
|
},
|
|
2431
2470
|
"items": [
|
|
2432
2471
|
{
|
|
@@ -13,7 +13,7 @@ export class BaseAccessory extends MQTTAccessory {
|
|
|
13
13
|
.setCharacteristic(Characteristic.ConfiguredName, config.info.name)
|
|
14
14
|
.setCharacteristic(Characteristic.Manufacturer, config.info.manufacturer ?? PLATFORM_NAME)
|
|
15
15
|
.setCharacteristic(Characteristic.Model, config.info.model ?? config.info.type)
|
|
16
|
-
.setCharacteristic(Characteristic.SerialNumber, config.info.serialNumber ??
|
|
16
|
+
.setCharacteristic(Characteristic.SerialNumber, config.info.serialNumber ?? this.identifier)
|
|
17
17
|
.setCharacteristic(Characteristic.FirmwareRevision, config.info.version ?? getVersion());
|
|
18
18
|
}
|
|
19
19
|
this.setupCharacteristic(CharacteristicKey.BatteryLevel, 100, 'topicGetBatteryLevel', this.bindOnUpdateNumeric(CharacteristicKey.BatteryLevel, strings.accessory.batteryLevel), false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/accessory/abstract/base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAO,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAgB,aAAmE,SAAQ,aAAgB;IAE/G,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,SAAS,EAAE,CAAC;YACjB,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAE;iBAChD,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBACxD,iBAAiB,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClE,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,aAAa,CAAC;iBACzF,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC9E,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/accessory/abstract/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { CharacteristicKey } from '../../model/enums.js';
|
|
|
3
3
|
import { CharacteristicType, TemperatureConfig } from '../../model/types.js';
|
|
4
4
|
import { Log, LogType } from '../../tools/log.js';
|
|
5
5
|
import { Assertable } from '../../tools/validation.js';
|
|
6
|
+
import { Properties } from '../../tools/properties.js';
|
|
6
7
|
type OnUpdateHandler = (topic: string, value: PrimitiveTypes) => (Promise<void>);
|
|
7
8
|
export type TopicHandler = {
|
|
8
9
|
topic: string;
|
|
@@ -10,22 +11,25 @@ export type TopicHandler = {
|
|
|
10
11
|
};
|
|
11
12
|
export type PublishHandler = (topic: string, value: PrimitiveTypes) => void;
|
|
12
13
|
export declare abstract class Common<C extends Assertable> {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
private readonly disableLogging;
|
|
16
|
-
protected readonly config: C;
|
|
17
|
-
protected readonly name: string;
|
|
18
|
-
private readonly publishHandler;
|
|
19
|
-
protected readonly properties: Map<string, CharacteristicValue>;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
private _properties;
|
|
20
16
|
readonly topicHandlers: TopicHandler[];
|
|
21
|
-
constructor(
|
|
17
|
+
constructor(name: string);
|
|
22
18
|
protected abstract get service(): Service;
|
|
19
|
+
protected abstract get Characteristic(): CharacteristicType;
|
|
20
|
+
protected abstract get log(): Log;
|
|
21
|
+
protected abstract get disableLogging(): boolean;
|
|
22
|
+
protected abstract get config(): C;
|
|
23
|
+
protected abstract get identifier(): string;
|
|
24
|
+
protected abstract get useStoredProperties(): boolean;
|
|
25
|
+
protected abstract publish(rawTopic: string, value: PrimitiveTypes): void;
|
|
26
|
+
protected get properties(): Properties;
|
|
23
27
|
protected assert(...keys: (keyof C)[]): boolean;
|
|
24
28
|
protected getRawValue(property: keyof C, assert?: boolean): string | undefined;
|
|
25
29
|
protected getPrimitiveValue(property: keyof C, assert?: boolean): PrimitiveTypes | undefined;
|
|
26
30
|
protected addTopicHandlers(topicHandlers: TopicHandler[]): void;
|
|
27
31
|
protected setupCharacteristic(characteristicKey: CharacteristicKey, defaultValue: CharacteristicValue, getTopicKey: keyof C, onUpdateHandler: OnUpdateHandler, assertGetTopic?: boolean, setTopicKey?: keyof C | undefined, onSetHandler?: CharacteristicSetHandler | undefined): Characteristic | undefined;
|
|
28
|
-
|
|
32
|
+
private setupCharacteristicOnGet;
|
|
29
33
|
protected setupCharacteristicOnSet(characteristicKey: CharacteristicKey, setTopicKey?: keyof C | undefined, onSetHandler?: CharacteristicSetHandler | undefined): void;
|
|
30
34
|
protected bindOnUpdateNumeric(charKey: CharacteristicKey, logTemplate: string): OnUpdateHandler;
|
|
31
35
|
protected bindOnUpdateNumericBoolean(charKey: CharacteristicKey, valueKey: keyof C, logTrue: string, logFalse: string): OnUpdateHandler;
|
|
@@ -4,22 +4,19 @@ import { LogType } from '../../tools/log.js';
|
|
|
4
4
|
import { toNumber, toPrimitive } from '../../tools/primitive.js';
|
|
5
5
|
import { assert } from '../../tools/validation.js';
|
|
6
6
|
import { toCelsius } from '../../tools/temperature.js';
|
|
7
|
+
import { Properties } from '../../tools/properties.js';
|
|
7
8
|
export class Common {
|
|
8
|
-
Characteristic;
|
|
9
|
-
log;
|
|
10
|
-
disableLogging;
|
|
11
|
-
config;
|
|
12
9
|
name;
|
|
13
|
-
|
|
14
|
-
properties = new Map();
|
|
10
|
+
_properties = undefined;
|
|
15
11
|
topicHandlers = [];
|
|
16
|
-
constructor(
|
|
17
|
-
this.Characteristic = Characteristic;
|
|
18
|
-
this.log = log;
|
|
19
|
-
this.disableLogging = disableLogging;
|
|
20
|
-
this.config = config;
|
|
12
|
+
constructor(name) {
|
|
21
13
|
this.name = name;
|
|
22
|
-
|
|
14
|
+
}
|
|
15
|
+
get properties() {
|
|
16
|
+
if (this._properties === undefined) {
|
|
17
|
+
this._properties = new Properties(this.identifier, this.useStoredProperties);
|
|
18
|
+
}
|
|
19
|
+
return this._properties;
|
|
23
20
|
}
|
|
24
21
|
assert(...keys) {
|
|
25
22
|
return assert(this.log, this.name, this.config, ...keys);
|
|
@@ -63,8 +60,10 @@ export class Common {
|
|
|
63
60
|
}
|
|
64
61
|
return;
|
|
65
62
|
}
|
|
63
|
+
const startingValue = (this.useStoredProperties && this.properties.get(characteristicKey)) ?? defaultValue;
|
|
66
64
|
const characteristic = this.service.getCharacteristic(this.Characteristic[characteristicKey]);
|
|
67
|
-
|
|
65
|
+
characteristic.setValue(startingValue);
|
|
66
|
+
this.properties.set(characteristicKey, startingValue);
|
|
68
67
|
characteristic.onGet(async () => {
|
|
69
68
|
return this.properties.get(characteristicKey) ?? null;
|
|
70
69
|
});
|
|
@@ -132,7 +131,7 @@ export class Common {
|
|
|
132
131
|
}
|
|
133
132
|
this.properties.set(key, value);
|
|
134
133
|
this.service.updateCharacteristic(this.Characteristic[key], value);
|
|
135
|
-
this.
|
|
134
|
+
this.publish(this.config[topic], publish);
|
|
136
135
|
}
|
|
137
136
|
logIfDesired(levelOrMessage, ...rest) {
|
|
138
137
|
if (this.disableLogging) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/accessory/abstract/common.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAqB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,EAAO,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAc,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAOvD,MAAM,OAAgB,MAAM;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/accessory/abstract/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,5 @@ import { PlatformAccessory } from 'homebridge';
|
|
|
2
2
|
import { BaseAccessory } from './base.js';
|
|
3
3
|
import * as Configs from '../../model/types.js';
|
|
4
4
|
import { Log } from '../../tools/log.js';
|
|
5
|
+
export declare function createIdentifier(info: Configs.InfoConfig): string;
|
|
5
6
|
export declare function createAccessory(Service: Configs.ServiceType, Characteristic: Configs.CharacteristicType, platformAccessory: PlatformAccessory, accessoryConfig: Configs.BaseAccessoryConfig, log: Log, isGrouped?: boolean): BaseAccessory | undefined;
|
|
@@ -20,6 +20,10 @@ import { OccupancySensorAccessory } from '../sensor/occupancy.js';
|
|
|
20
20
|
import { SmokeSensorAccessory } from '../sensor/smoke.js';
|
|
21
21
|
import { TemperatureSensorAccessory } from '../sensor/temperature.js';
|
|
22
22
|
import { ValveAccessory } from '../valve.js';
|
|
23
|
+
import { PLUGIN_NAME } from '../../homebridge/settings.js';
|
|
24
|
+
export function createIdentifier(info) {
|
|
25
|
+
return info.id ?? `${PLUGIN_NAME}:${info.type}:${info.name}`;
|
|
26
|
+
}
|
|
23
27
|
export function createAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped = false) {
|
|
24
28
|
switch (accessoryConfig.info.type) {
|
|
25
29
|
case AccessoryType.AirPurifier:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/accessory/abstract/helper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/accessory/abstract/helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,21 @@ import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
|
|
|
4
4
|
import { CharacteristicType, MQTTAccessoryConfig, ServiceType } from '../../model/types.js';
|
|
5
5
|
import { Log } from '../../tools/log.js';
|
|
6
6
|
export declare abstract class MQTTAccessory<C extends MQTTAccessoryConfig> extends Common<C> {
|
|
7
|
+
readonly Characteristic: CharacteristicType;
|
|
8
|
+
readonly platformAccessory: PlatformAccessory;
|
|
9
|
+
readonly config: C;
|
|
10
|
+
readonly log: Log;
|
|
7
11
|
private readonly mqttClient;
|
|
8
|
-
|
|
9
|
-
constructor(Service: ServiceType, Characteristic: CharacteristicType,
|
|
12
|
+
private readonly accessoryService;
|
|
13
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, platformAccessory: PlatformAccessory, config: C, log: Log, isGrouped: boolean);
|
|
10
14
|
protected abstract getAccessoryType(): AccessoryType;
|
|
11
|
-
|
|
15
|
+
get service(): Service;
|
|
16
|
+
get identifier(): string;
|
|
17
|
+
get useStoredProperties(): boolean;
|
|
18
|
+
get disableLogging(): boolean;
|
|
12
19
|
get subtype(): string | undefined;
|
|
13
20
|
private setupCustomCharacteristics;
|
|
14
|
-
|
|
21
|
+
publish(topic: string, value: PrimitiveTypes): void;
|
|
15
22
|
teardown(): void;
|
|
16
23
|
protected setCharacteristicValue(key: CharacteristicKey, value: CharacteristicValue): void;
|
|
17
24
|
}
|
|
@@ -2,13 +2,20 @@ import { Common } from './common.js';
|
|
|
2
2
|
import { CustomCharacteristic } from './customCharacteristic.js';
|
|
3
3
|
import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
import { MQTT } from '../../model/mqtt.js';
|
|
5
|
+
import { createIdentifier } from './helper.js';
|
|
5
6
|
export class MQTTAccessory extends Common {
|
|
7
|
+
Characteristic;
|
|
8
|
+
platformAccessory;
|
|
9
|
+
config;
|
|
10
|
+
log;
|
|
6
11
|
mqttClient;
|
|
7
12
|
accessoryService;
|
|
8
|
-
constructor(Service, Characteristic,
|
|
9
|
-
super(
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
constructor(Service, Characteristic, platformAccessory, config, log, isGrouped) {
|
|
14
|
+
super(config.info.name);
|
|
15
|
+
this.Characteristic = Characteristic;
|
|
16
|
+
this.platformAccessory = platformAccessory;
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.log = log;
|
|
12
19
|
this.mqttClient = MQTT.connect(log, config.mqtt, this.name, (client) => {
|
|
13
20
|
this.topicHandlers.forEach(topicHandler => {
|
|
14
21
|
client.subscribe(topicHandler.topic, topicHandler.handler);
|
|
@@ -16,19 +23,19 @@ export class MQTTAccessory extends Common {
|
|
|
16
23
|
});
|
|
17
24
|
const serviceInstance = Service[this.getAccessoryType()];
|
|
18
25
|
if (isGrouped) {
|
|
19
|
-
let accessoryService =
|
|
26
|
+
let accessoryService = platformAccessory.getServiceById(serviceInstance, this.identifier);
|
|
20
27
|
if (!accessoryService) {
|
|
21
|
-
accessoryService =
|
|
28
|
+
accessoryService = platformAccessory.addService(serviceInstance, config.info.name, this.identifier);
|
|
22
29
|
accessoryService.setCharacteristic(Characteristic.ConfiguredName, config.info.name);
|
|
23
30
|
}
|
|
24
31
|
this.accessoryService = accessoryService;
|
|
25
32
|
return;
|
|
26
33
|
}
|
|
27
|
-
this.accessoryService =
|
|
34
|
+
this.accessoryService = platformAccessory.getService(serviceInstance) || platformAccessory.addService(serviceInstance);
|
|
28
35
|
for (const type of Object.values(AccessoryType)) {
|
|
29
|
-
const existingService =
|
|
36
|
+
const existingService = platformAccessory.getService(Service[type]);
|
|
30
37
|
if (existingService && type !== config.info.type) {
|
|
31
|
-
|
|
38
|
+
platformAccessory.removeService(existingService);
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
41
|
this.setupCustomCharacteristics();
|
|
@@ -36,6 +43,15 @@ export class MQTTAccessory extends Common {
|
|
|
36
43
|
get service() {
|
|
37
44
|
return this.accessoryService;
|
|
38
45
|
}
|
|
46
|
+
get identifier() {
|
|
47
|
+
return createIdentifier(this.config.info);
|
|
48
|
+
}
|
|
49
|
+
get useStoredProperties() {
|
|
50
|
+
return this.config.resetOnRestart !== true;
|
|
51
|
+
}
|
|
52
|
+
get disableLogging() {
|
|
53
|
+
return this.config.disableLogging;
|
|
54
|
+
}
|
|
39
55
|
get subtype() {
|
|
40
56
|
return this.accessoryService.subtype;
|
|
41
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../../src/accessory/abstract/mqtt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../../src/accessory/abstract/mqtt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Common
|
|
1
|
+
import { PrimitiveTypes, Service } from 'homebridge';
|
|
2
|
+
import { Common } from '../abstract/common.js';
|
|
3
3
|
import { AddonType } from '../../model/enums.js';
|
|
4
|
-
import { AddonConfig, CharacteristicType,
|
|
4
|
+
import { AddonConfig, CharacteristicType, MQTTAccessoryConfig } from '../../model/types.js';
|
|
5
5
|
import { Log } from '../../tools/log.js';
|
|
6
|
-
|
|
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];
|
|
7
9
|
export declare abstract class Addon<C extends AddonConfig> extends Common<C> {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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;
|
|
11
23
|
}
|
|
12
24
|
export {};
|
|
@@ -1,25 +1,52 @@
|
|
|
1
1
|
import { Common } from '../abstract/common.js';
|
|
2
2
|
import { assert } from '../../tools/validation.js';
|
|
3
3
|
export class Addon extends Common {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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)) {
|
|
9
10
|
if (existingAddonService !== undefined) {
|
|
10
|
-
|
|
11
|
+
parentAccessory.platformAccessory.removeService(existingAddonService);
|
|
11
12
|
}
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
|
-
const addonService = existingAddonService ??
|
|
15
|
+
const addonService = existingAddonService ?? parentAccessory.platformAccessory.addService(addonServiceInstance);
|
|
15
16
|
if (existingAddonService === undefined) {
|
|
16
|
-
|
|
17
|
+
parentAccessory.service.addLinkedService(addonService);
|
|
17
18
|
}
|
|
18
|
-
return new constructor(addonService,
|
|
19
|
+
return new constructor(addonService, parentAccessory, config);
|
|
19
20
|
}
|
|
20
|
-
constructor(
|
|
21
|
-
super(
|
|
22
|
-
this.
|
|
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);
|
|
23
50
|
}
|
|
24
51
|
}
|
|
25
52
|
//# sourceMappingURL=addon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addon.js","sourceRoot":"","sources":["../../../src/accessory/addons/addon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,
|
|
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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Service } from 'homebridge';
|
|
2
2
|
import { Addon } from './addon.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { TopicHandler } from '../abstract/common.js';
|
|
4
|
+
import { FilterMaintenanceConfig, MQTTAccessoryConfig, ServiceType } from '../../model/types.js';
|
|
5
|
+
import { MQTTAccessory } from '../abstract/mqtt.js';
|
|
6
6
|
export declare class FilterMaintenance extends Addon<FilterMaintenanceConfig> {
|
|
7
|
-
static topicHandlers(Service: ServiceType,
|
|
8
|
-
constructor(service: Service,
|
|
7
|
+
static topicHandlers(Service: ServiceType, parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, config: FilterMaintenanceConfig): TopicHandler[];
|
|
8
|
+
constructor(service: Service, parentAccessory: MQTTAccessory<MQTTAccessoryConfig>, config: FilterMaintenanceConfig);
|
|
9
9
|
private onChangeIndicationUpdate;
|
|
10
10
|
private onResetIndication;
|
|
11
11
|
}
|
|
@@ -3,13 +3,14 @@ import { strings } from '../../i18n/i18n.js';
|
|
|
3
3
|
import { AddonType, CharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
import { LogType } from '../../tools/log.js';
|
|
5
5
|
export class FilterMaintenance extends Addon {
|
|
6
|
-
static topicHandlers(Service,
|
|
7
|
-
const
|
|
6
|
+
static topicHandlers(Service, parentAccessory, config) {
|
|
7
|
+
const FilterMaintenanceService = Service[AddonType.FilterMaintenance];
|
|
8
|
+
const filterMaintenance = Addon.new(parentAccessory, FilterMaintenanceService, config, ['topicGetFilterChangeIndication'], FilterMaintenance);
|
|
8
9
|
return filterMaintenance?.topicHandlers ?? [];
|
|
9
10
|
}
|
|
10
|
-
constructor(service,
|
|
11
|
-
super(
|
|
12
|
-
this.setupCharacteristic(CharacteristicKey.FilterChangeIndication, Characteristic.FilterChangeIndication.FILTER_OK, 'topicGetFilterChangeIndication', this.onChangeIndicationUpdate.bind(this));
|
|
11
|
+
constructor(service, parentAccessory, config) {
|
|
12
|
+
super(parentAccessory, service, config);
|
|
13
|
+
this.setupCharacteristic(CharacteristicKey.FilterChangeIndication, this.Characteristic.FilterChangeIndication.FILTER_OK, 'topicGetFilterChangeIndication', this.onChangeIndicationUpdate.bind(this));
|
|
13
14
|
this.setupCharacteristic(CharacteristicKey.FilterLifeLevel, 100, 'topicGetFilterLifeLevel', this.bindOnUpdateNumeric(CharacteristicKey.FilterLifeLevel, strings.filter.level));
|
|
14
15
|
this.setupCharacteristicOnSet(CharacteristicKey.ResetFilterIndication, 'topicResetFilterIndication', this.onResetIndication.bind(this));
|
|
15
16
|
}
|
|
@@ -1 +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,
|
|
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,mBAAmB,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EACrH,gCAAgC,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,EAAE,GAAG,EAC7D,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhH,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1I,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"}
|
|
@@ -33,7 +33,7 @@ export class HeaterCoolerAccessory extends ActiveClimateAccessory {
|
|
|
33
33
|
}
|
|
34
34
|
this.setupCharacteristic(CharacteristicKey.TargetHeaterCoolerState, this.TARGET_STATE_MAP.get(validTargetStates[0]), 'topicGetTargetHeaterCoolerState', this.onTargetStateUpdate.bind(this), true, 'topicSetTargetHeaterCoolerState', this.onSetTargetState.bind(this))
|
|
35
35
|
?.setProps({ validValues: validTargetStates.map((key) => this.TARGET_STATE_MAP.get(key)) });
|
|
36
|
-
this.addTopicHandlers(FilterMaintenance.topicHandlers(Service,
|
|
36
|
+
this.addTopicHandlers(FilterMaintenance.topicHandlers(Service, this, config));
|
|
37
37
|
}
|
|
38
38
|
getAccessoryType() {
|
|
39
39
|
return AccessoryType.HeaterCooler;
|