homebridge-easy-mqtt 1.2.0-beta.3 → 1.2.0-beta.4
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 -0
- package/config.schema.json +230 -114
- package/dist/accessory/abstract/base.d.ts +12 -33
- package/dist/accessory/abstract/base.js +54 -132
- package/dist/accessory/abstract/base.js.map +1 -1
- package/dist/accessory/abstract/mqtt.d.ts +36 -0
- package/dist/accessory/abstract/mqtt.js +154 -0
- package/dist/accessory/abstract/mqtt.js.map +1 -0
- package/dist/accessory/lock.d.ts +2 -2
- package/dist/accessory/lock.js +11 -9
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/lightbulb.js +1 -1
- package/dist/accessory/onoff/lightbulb.js.map +1 -1
- package/dist/accessory/onoff/onoff.d.ts +3 -3
- package/dist/accessory/onoff/onoff.js +7 -7
- 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/onoff/switch.js +1 -1
- package/dist/accessory/onoff/switch.js.map +1 -1
- package/dist/accessory/security.d.ts +2 -2
- package/dist/accessory/security.js +7 -6
- package/dist/accessory/security.js.map +1 -1
- package/dist/accessory/temperatureSensor.d.ts +2 -2
- package/dist/accessory/temperatureSensor.js +3 -3
- package/dist/accessory/temperatureSensor.js.map +1 -1
- package/dist/homebridge/platform.d.ts +2 -2
- package/dist/homebridge/platform.js +20 -20
- 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 +10 -10
- package/dist/i18n/en.js +11 -11
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/i18n.d.ts +10 -10
- package/dist/i18n/template.d.ts +10 -10
- package/dist/model/enums.d.ts +2 -0
- package/dist/model/enums.js +2 -0
- package/dist/model/enums.js.map +1 -1
- package/dist/model/types.d.ts +11 -12
- package/dist/tools/validation.d.ts +2 -2
- package/dist/tools/validation.js +1 -2
- package/dist/tools/validation.js.map +1 -1
- package/package.json +1 -1
- package/dist/accessory/abstract/statusActive.d.ts +0 -10
- package/dist/accessory/abstract/statusActive.js +0 -29
- package/dist/accessory/abstract/statusActive.js.map +0 -1
|
@@ -1,147 +1,69 @@
|
|
|
1
|
+
import { MQTTAccessory } from './mqtt.js';
|
|
1
2
|
import { PLATFORM_NAME } from '../../homebridge/settings.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
3
|
+
import { strings } from '../../i18n/i18n.js';
|
|
4
|
+
import { CharacteristicKey } from '../../model/enums.js';
|
|
5
|
+
import { LogType } from '../../tools/log.js';
|
|
4
6
|
import getVersion from '../../tools/version.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Service;
|
|
9
|
-
Characteristic;
|
|
10
|
-
accessory;
|
|
11
|
-
config;
|
|
12
|
-
log;
|
|
13
|
-
mqttClient;
|
|
14
|
-
properties = {};
|
|
15
|
-
topicHandlers = [];
|
|
16
|
-
accessoryService;
|
|
17
|
-
constructor(Service, Characteristic, accessory, config, log, caller) {
|
|
18
|
-
this.Service = Service;
|
|
19
|
-
this.Characteristic = Characteristic;
|
|
20
|
-
this.accessory = accessory;
|
|
21
|
-
this.config = config;
|
|
22
|
-
this.log = log;
|
|
23
|
-
const name = config.info.name;
|
|
24
|
-
if (this.assert('mqtt')) {
|
|
25
|
-
this.mqttClient = new MQTT(log, config.mqtt, this.onMQTTConnect.bind(this), name);
|
|
26
|
-
this.mqttClient.connect();
|
|
27
|
-
}
|
|
7
|
+
export class BaseAccessory extends MQTTAccessory {
|
|
8
|
+
constructor(Service, Characteristic, accessory, config, log) {
|
|
9
|
+
super(Service, Characteristic, accessory, config, log);
|
|
28
10
|
accessory.getService(Service.AccessoryInformation)
|
|
29
|
-
.setCharacteristic(Characteristic.Name, name)
|
|
30
|
-
.setCharacteristic(Characteristic.ConfiguredName, name)
|
|
31
|
-
.setCharacteristic(Characteristic.Manufacturer,
|
|
32
|
-
.setCharacteristic(Characteristic.
|
|
33
|
-
.setCharacteristic(Characteristic.
|
|
34
|
-
.setCharacteristic(Characteristic.FirmwareRevision,
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
addTopicHandler(topicKey, handler, assert = true) {
|
|
68
|
-
if (!topicKey.toString().startsWith('topic')) {
|
|
69
|
-
throw new Error(`Trying to fetch topic with unexpected property name '${topicKey.toString()}'`);
|
|
70
|
-
}
|
|
71
|
-
if (assert && !this.assert(topicKey)) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const topic = this.config[topicKey];
|
|
75
|
-
if (topic === undefined) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
this.topicHandlers.push({ topic: topic, handler });
|
|
79
|
-
}
|
|
80
|
-
get name() {
|
|
81
|
-
return this.config.info.name;
|
|
82
|
-
}
|
|
83
|
-
getRawValue(property, assert = true) {
|
|
84
|
-
if (!property.toString().startsWith('value')) {
|
|
85
|
-
throw new Error(`Trying to fetch value with unexpected property name '${property.toString()}'`);
|
|
86
|
-
}
|
|
87
|
-
if (assert && !this.assert(property)) {
|
|
11
|
+
.setCharacteristic(Characteristic.Name, config.info.name)
|
|
12
|
+
.setCharacteristic(Characteristic.ConfiguredName, config.info.name)
|
|
13
|
+
.setCharacteristic(Characteristic.Manufacturer, PLATFORM_NAME)
|
|
14
|
+
.setCharacteristic(Characteristic.Model, config.info.type)
|
|
15
|
+
.setCharacteristic(Characteristic.SerialNumber, config.info.id)
|
|
16
|
+
.setCharacteristic(Characteristic.FirmwareRevision, getVersion());
|
|
17
|
+
this.set(CharacteristicKey.BatteryLevel, 100);
|
|
18
|
+
this.bind(Characteristic.BatteryLevel, 'topicGetBatteryLevel', this.getBatteryLevel.bind(this));
|
|
19
|
+
this.set(CharacteristicKey.StatusLowBattery, false);
|
|
20
|
+
this.bind(Characteristic.BatteryLevel, 'topicGetBatteryLow', this.getBatteryLow.bind(this));
|
|
21
|
+
this.set(CharacteristicKey.StatusActive, true);
|
|
22
|
+
this.bind(Characteristic.StatusActive, 'topicGetStatusActive', this.getStatusActive.bind(this));
|
|
23
|
+
}
|
|
24
|
+
addTopicHandlers() {
|
|
25
|
+
this.addTopicHandler('topicGetBatteryLevel', this.onBatteryLevelUpdate.bind(this), false);
|
|
26
|
+
this.addTopicHandler('topicGetBatteryLow', this.onBatteryLowUpdate.bind(this), false);
|
|
27
|
+
this.addTopicHandler('topicGetStatusActive', this.onStatusActiveUpdate.bind(this), false);
|
|
28
|
+
}
|
|
29
|
+
async getBatteryLevel() {
|
|
30
|
+
return this.get(CharacteristicKey.BatteryLevel);
|
|
31
|
+
}
|
|
32
|
+
async getBatteryLow() {
|
|
33
|
+
return this.get(CharacteristicKey.StatusLowBattery);
|
|
34
|
+
}
|
|
35
|
+
async getStatusActive() {
|
|
36
|
+
return this.get(CharacteristicKey.StatusActive);
|
|
37
|
+
}
|
|
38
|
+
async onBatteryLevelUpdate(topic, value) {
|
|
39
|
+
if (this.assertNumber(value, strings.accessory.badBatteryLevel)) {
|
|
40
|
+
const logString = strings.accessory.batteryLevel.replace('%d', `${value.toString()}%`);
|
|
41
|
+
this.onUpdate(CharacteristicKey.BatteryLevel, value, logString); // TODO not working
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async onBatteryLowUpdate(topic, value) {
|
|
45
|
+
const batteryLow = value === this.getPrimitiveValue('valueBatteryLow');
|
|
46
|
+
if (!this.onUpdate(CharacteristicKey.StatusLowBattery, batteryLow)) {
|
|
88
47
|
return;
|
|
89
48
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
getPrimitiveValue(property, assert = true) {
|
|
93
|
-
const stringValue = this.getRawValue(property, assert);
|
|
94
|
-
return stringValue ? toPrimitive(stringValue) : undefined;
|
|
95
|
-
}
|
|
96
|
-
publish(topic, value) {
|
|
97
|
-
this.mqttClient?.publish(topic, value);
|
|
98
|
-
}
|
|
99
|
-
teardown() {
|
|
100
|
-
this.mqttClient?.teardown();
|
|
101
|
-
}
|
|
102
|
-
get(key) {
|
|
103
|
-
return this.properties[key];
|
|
104
|
-
}
|
|
105
|
-
set(key, value) {
|
|
106
|
-
this.properties[key] = value;
|
|
107
|
-
}
|
|
108
|
-
assert(...keys) {
|
|
109
|
-
return assert(this.log, this.name, this.config, ...keys);
|
|
110
|
-
}
|
|
111
|
-
assertNumber(value, error) {
|
|
112
|
-
if (typeof value === 'number') {
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
this.log.error(error, this.name, `'${value}'`);
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
onUpdate(key, value, logString = undefined) {
|
|
119
|
-
if (value === this.get(key)) {
|
|
120
|
-
return false;
|
|
49
|
+
if (batteryLow) {
|
|
50
|
+
this.logIfDesired(LogType.WARNING, strings.accessory.batteryLow);
|
|
121
51
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (logString) {
|
|
125
|
-
this.logIfDesired(logString);
|
|
52
|
+
else {
|
|
53
|
+
this.logIfDesired(strings.accessory.batteryNotLow);
|
|
126
54
|
}
|
|
127
|
-
return true;
|
|
128
55
|
}
|
|
129
|
-
|
|
130
|
-
|
|
56
|
+
async onStatusActiveUpdate(topic, value) {
|
|
57
|
+
const statusActive = value === this.getPrimitiveValue('valueStatusActive');
|
|
58
|
+
if (!this.onUpdate(CharacteristicKey.StatusActive, statusActive)) {
|
|
131
59
|
return;
|
|
132
60
|
}
|
|
133
|
-
if (
|
|
134
|
-
this.logIfDesired(
|
|
61
|
+
if (statusActive) {
|
|
62
|
+
this.logIfDesired(strings.accessory.statusActive);
|
|
135
63
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
this.publish(this.config[topic], publish);
|
|
139
|
-
}
|
|
140
|
-
logIfDesired(message, ...parameters) {
|
|
141
|
-
if (this.config.disableLogging) {
|
|
142
|
-
return;
|
|
64
|
+
else {
|
|
65
|
+
this.logIfDesired(LogType.WARNING, strings.accessory.statusInactive);
|
|
143
66
|
}
|
|
144
|
-
this.log.always(message, this.name, ...parameters);
|
|
145
67
|
}
|
|
146
68
|
}
|
|
147
69
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/accessory/abstract/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/accessory/abstract/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Characteristic, CharacteristicGetHandler, CharacteristicSetHandler, CharacteristicValue, PlatformAccessory, PrimitiveTypes, Service, WithUUID } from 'homebridge';
|
|
2
|
+
import { CharacteristicKey } from '../../model/enums.js';
|
|
3
|
+
import { CharacteristicType, MQTTAccessoryConfig, ServiceType } from '../../model/types.js';
|
|
4
|
+
import { Log, LogType } from '../../tools/log.js';
|
|
5
|
+
export declare abstract class MQTTAccessory<C extends MQTTAccessoryConfig> {
|
|
6
|
+
protected readonly Service: ServiceType;
|
|
7
|
+
protected readonly Characteristic: CharacteristicType;
|
|
8
|
+
protected readonly accessory: PlatformAccessory;
|
|
9
|
+
protected readonly config: C;
|
|
10
|
+
protected readonly log: Log;
|
|
11
|
+
private readonly mqttClient;
|
|
12
|
+
private readonly properties;
|
|
13
|
+
private readonly topicHandlers;
|
|
14
|
+
protected readonly accessoryService: Service;
|
|
15
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: C, log: Log);
|
|
16
|
+
private onMQTTConnect;
|
|
17
|
+
protected abstract getAccessoryService(): Service;
|
|
18
|
+
protected bind(constructor: WithUUID<{
|
|
19
|
+
new (): Characteristic;
|
|
20
|
+
}>, getTopic: keyof C, getHandler: CharacteristicGetHandler, setTopic?: keyof C | undefined, setHandler?: CharacteristicSetHandler | undefined): void;
|
|
21
|
+
protected abstract addTopicHandlers(): void;
|
|
22
|
+
protected addTopicHandler(topicKey: keyof C, handler: (topic: string, value: PrimitiveTypes) => Promise<void>, assert?: boolean): void;
|
|
23
|
+
protected get name(): string;
|
|
24
|
+
protected getRawValue(property: keyof C, assert?: boolean): string | undefined;
|
|
25
|
+
protected getPrimitiveValue(property: keyof C, assert?: boolean): PrimitiveTypes | undefined;
|
|
26
|
+
protected publish(topic: string, value: PrimitiveTypes): void;
|
|
27
|
+
teardown(): void;
|
|
28
|
+
protected get(key: CharacteristicKey): CharacteristicValue;
|
|
29
|
+
protected set(key: CharacteristicKey, value: CharacteristicValue): void;
|
|
30
|
+
protected assert(...keys: (keyof C)[]): boolean;
|
|
31
|
+
protected assertNumber(value: PrimitiveTypes, error: string): boolean;
|
|
32
|
+
protected onUpdate(key: CharacteristicKey, value: CharacteristicValue, logString?: string | undefined): boolean;
|
|
33
|
+
protected onSet(key: CharacteristicKey, value: CharacteristicValue, publish: PrimitiveTypes, topic: keyof C, logString: string | undefined): void;
|
|
34
|
+
protected logIfDesired(message: string, ...parameters: string[]): void;
|
|
35
|
+
protected logIfDesired(level: LogType, message: string, ...parameters: string[]): void;
|
|
36
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { AccessoryType } from '../../model/enums.js';
|
|
2
|
+
import { MQTT } from '../../model/mqtt.js';
|
|
3
|
+
import { LogType } from '../../tools/log.js';
|
|
4
|
+
import { assert } from '../../tools/validation.js';
|
|
5
|
+
import { toPrimitive } from '../../tools/primitive.js';
|
|
6
|
+
export class MQTTAccessory {
|
|
7
|
+
Service;
|
|
8
|
+
Characteristic;
|
|
9
|
+
accessory;
|
|
10
|
+
config;
|
|
11
|
+
log;
|
|
12
|
+
mqttClient;
|
|
13
|
+
properties = {};
|
|
14
|
+
topicHandlers = [];
|
|
15
|
+
accessoryService;
|
|
16
|
+
constructor(Service, Characteristic, accessory, config, log) {
|
|
17
|
+
this.Service = Service;
|
|
18
|
+
this.Characteristic = Characteristic;
|
|
19
|
+
this.accessory = accessory;
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.log = log;
|
|
22
|
+
const name = config.info.name;
|
|
23
|
+
if (this.assert('mqtt')) {
|
|
24
|
+
this.mqttClient = new MQTT(log, config.mqtt, this.onMQTTConnect.bind(this), name);
|
|
25
|
+
this.mqttClient.connect();
|
|
26
|
+
}
|
|
27
|
+
this.accessoryService = this.getAccessoryService();
|
|
28
|
+
for (const type of Object.values(AccessoryType)) {
|
|
29
|
+
const existingService = accessory.getService(Service[type]);
|
|
30
|
+
if (existingService && type !== config.info.type) {
|
|
31
|
+
accessory.removeService(existingService);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
this.addTopicHandlers();
|
|
35
|
+
}
|
|
36
|
+
async onMQTTConnect() {
|
|
37
|
+
this.topicHandlers.forEach(topicHandler => {
|
|
38
|
+
this.mqttClient?.subscribe(topicHandler.topic, topicHandler.handler);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
bind(constructor, getTopic, getHandler, setTopic = undefined, setHandler = undefined) {
|
|
42
|
+
if (this.config[getTopic] === undefined && (setTopic === undefined || setHandler === undefined || this.config[setTopic] !== undefined)) {
|
|
43
|
+
for (const characteristic of this.accessoryService.characteristics) {
|
|
44
|
+
if (characteristic.UUID === constructor.UUID) {
|
|
45
|
+
this.accessoryService.removeCharacteristic(characteristic);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const characteristic = this.accessoryService.getCharacteristic(constructor);
|
|
52
|
+
if (this.config[getTopic] !== undefined) {
|
|
53
|
+
characteristic.onGet(getHandler);
|
|
54
|
+
}
|
|
55
|
+
if (setTopic !== undefined && setHandler !== undefined && this.config[setTopic] !== undefined) {
|
|
56
|
+
characteristic.onSet(setHandler);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
addTopicHandler(topicKey, handler, assert = true) {
|
|
60
|
+
if (!topicKey.toString().startsWith('topic')) {
|
|
61
|
+
throw new Error(`Trying to fetch topic with unexpected property name '${topicKey.toString()}'`);
|
|
62
|
+
}
|
|
63
|
+
if (assert && !this.assert(topicKey)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const topic = this.config[topicKey];
|
|
67
|
+
if (topic === undefined) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.topicHandlers.push({ topic: topic, handler });
|
|
71
|
+
}
|
|
72
|
+
get name() {
|
|
73
|
+
return this.config.info.name;
|
|
74
|
+
}
|
|
75
|
+
getRawValue(property, assert = true) {
|
|
76
|
+
if (!property.toString().startsWith('value')) {
|
|
77
|
+
throw new Error(`Trying to fetch value with unexpected property name '${property.toString()}'`);
|
|
78
|
+
}
|
|
79
|
+
if (assert && !this.assert(property)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
return this.config[property];
|
|
83
|
+
}
|
|
84
|
+
getPrimitiveValue(property, assert = true) {
|
|
85
|
+
const stringValue = this.getRawValue(property, assert);
|
|
86
|
+
return stringValue ? toPrimitive(stringValue) : undefined;
|
|
87
|
+
}
|
|
88
|
+
publish(topic, value) {
|
|
89
|
+
this.mqttClient?.publish(topic, value);
|
|
90
|
+
}
|
|
91
|
+
teardown() {
|
|
92
|
+
this.mqttClient?.teardown();
|
|
93
|
+
}
|
|
94
|
+
get(key) {
|
|
95
|
+
return this.properties[key];
|
|
96
|
+
}
|
|
97
|
+
set(key, value) {
|
|
98
|
+
this.properties[key] = value;
|
|
99
|
+
}
|
|
100
|
+
assert(...keys) {
|
|
101
|
+
return assert(this.log, this.name, this.config, ...keys);
|
|
102
|
+
}
|
|
103
|
+
assertNumber(value, error) {
|
|
104
|
+
if (typeof value === 'number') {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
this.log.error(error, this.name, `'${value}'`);
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
onUpdate(key, value, logString = undefined) {
|
|
111
|
+
if (value === this.get(key)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
this.set(key, value);
|
|
115
|
+
this.accessoryService.updateCharacteristic(this.Characteristic[key], value);
|
|
116
|
+
if (logString) {
|
|
117
|
+
this.logIfDesired(logString);
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
onSet(key, value, publish, topic, logString) {
|
|
122
|
+
if (!this.assert(topic)) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (logString && value !== this.get(key)) {
|
|
126
|
+
this.logIfDesired(logString);
|
|
127
|
+
}
|
|
128
|
+
this.set(key, value);
|
|
129
|
+
this.accessoryService.updateCharacteristic(this.Characteristic[key], value);
|
|
130
|
+
this.publish(this.config[topic], publish);
|
|
131
|
+
}
|
|
132
|
+
logIfDesired(levelOrMessage, ...rest) {
|
|
133
|
+
if (this.config.disableLogging) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (typeof levelOrMessage === 'string') {
|
|
137
|
+
this.log.always(levelOrMessage, this.name, ...rest);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const [message, ...parameters] = rest;
|
|
141
|
+
switch (levelOrMessage) {
|
|
142
|
+
case LogType.WARNING:
|
|
143
|
+
this.log.warning(message, this.name, ...parameters);
|
|
144
|
+
break;
|
|
145
|
+
case LogType.ERROR:
|
|
146
|
+
this.log.error(message, this.name, ...parameters);
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
this.log.always(message, this.name, ...parameters);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=mqtt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../../src/accessory/abstract/mqtt.ts"],"names":[],"mappings":"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"}
|
package/dist/accessory/lock.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PlatformAccessory, Service } from 'homebridge';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseAccessory } from './abstract/base.js';
|
|
3
3
|
import { CharacteristicType, LockMechanismConfig, ServiceType } from '../model/types.js';
|
|
4
4
|
import { Log } from '../tools/log.js';
|
|
5
|
-
export declare class LockMechanismAccessory extends
|
|
5
|
+
export declare class LockMechanismAccessory extends BaseAccessory<LockMechanismConfig> {
|
|
6
6
|
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: LockMechanismConfig, log: Log);
|
|
7
7
|
protected getAccessoryService(): Service;
|
|
8
8
|
addTopicHandlers(): void;
|
package/dist/accessory/lock.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseAccessory } from './abstract/base.js';
|
|
2
2
|
import { strings } from '../i18n/i18n.js';
|
|
3
3
|
import { CharacteristicKey } from '../model/enums.js';
|
|
4
|
-
|
|
4
|
+
import { LogType } from '../tools/log.js';
|
|
5
|
+
export class LockMechanismAccessory extends BaseAccessory {
|
|
5
6
|
constructor(Service, Characteristic, accessory, config, log) {
|
|
6
|
-
super(Service, Characteristic, accessory, config, log
|
|
7
|
+
super(Service, Characteristic, accessory, config, log);
|
|
7
8
|
this.set(CharacteristicKey.LockCurrentState, Characteristic.LockCurrentState.UNKNOWN);
|
|
8
9
|
this.set(CharacteristicKey.LockTargetState, Characteristic.LockTargetState.SECURED);
|
|
9
10
|
this.accessoryService.getCharacteristic(this.Characteristic.LockCurrentState)
|
|
@@ -24,10 +25,10 @@ export class LockMechanismAccessory extends StatusActiveAccessory {
|
|
|
24
25
|
this.addTopicHandler('topicGetCurrentLockState', this.onCurrentStateUpdate.bind(this));
|
|
25
26
|
}
|
|
26
27
|
if (this.config.topicGetLockTargetState !== undefined && this.config.topicGetTargetLockState === undefined) {
|
|
27
|
-
this.addTopicHandler('topicGetLockTargetState', this.
|
|
28
|
+
this.addTopicHandler('topicGetLockTargetState', this.onTargetStateUpdate.bind(this));
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
30
|
-
this.addTopicHandler('topicGetTargetLockState', this.
|
|
31
|
+
this.addTopicHandler('topicGetTargetLockState', this.onTargetStateUpdate.bind(this));
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
async getCurrentState() {
|
|
@@ -45,7 +46,7 @@ export class LockMechanismAccessory extends StatusActiveAccessory {
|
|
|
45
46
|
return;
|
|
46
47
|
}
|
|
47
48
|
if (current === this.Characteristic.LockCurrentState.JAMMED) {
|
|
48
|
-
this.
|
|
49
|
+
this.logIfDesired(LogType.ERROR, this.stringForState(current));
|
|
49
50
|
}
|
|
50
51
|
else {
|
|
51
52
|
this.logIfDesired(this.stringForState(current));
|
|
@@ -56,8 +57,12 @@ export class LockMechanismAccessory extends StatusActiveAccessory {
|
|
|
56
57
|
this.onUpdate(CharacteristicKey.LockTargetState, target, this.stringForState(target, true));
|
|
57
58
|
}
|
|
58
59
|
async onSetTargetState(value) {
|
|
60
|
+
if (!this.assert('valueLockStateSecured', 'valueLockStateUnsecured')) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
59
63
|
const target = this.valueFromTargetState(value);
|
|
60
64
|
if (target === undefined) {
|
|
65
|
+
this.log.error(strings.lock.badValue, this.name, `'${value}'`);
|
|
61
66
|
return;
|
|
62
67
|
}
|
|
63
68
|
if (this.config.topicSetTargetState !== undefined && this.config.topicSetTargetLockState === undefined) {
|
|
@@ -100,9 +105,6 @@ export class LockMechanismAccessory extends StatusActiveAccessory {
|
|
|
100
105
|
return this.getPrimitiveValue('valueLockStateSecured');
|
|
101
106
|
case this.Characteristic.LockTargetState.UNSECURED:
|
|
102
107
|
return this.getPrimitiveValue('valueLockStateUnsecured');
|
|
103
|
-
default:
|
|
104
|
-
this.log.error(strings.lock.badTarget, this.name, `'${value}'`);
|
|
105
|
-
return undefined;
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
stringForState(state, future = false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/accessory/lock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/accessory/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { strings } from '../../i18n/i18n.js';
|
|
|
3
3
|
import { CharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
export class LightbulbAccessory extends OnOffAccessory {
|
|
5
5
|
constructor(Service, Characteristic, accessory, config, log) {
|
|
6
|
-
super(Service, Characteristic, accessory, config, log
|
|
6
|
+
super(Service, Characteristic, accessory, config, log);
|
|
7
7
|
this.set(CharacteristicKey.Brightness, 100);
|
|
8
8
|
this.set(CharacteristicKey.ColorTemperature, 500);
|
|
9
9
|
this.set(CharacteristicKey.Hue, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightbulb.js","sourceRoot":"","sources":["../../../src/accessory/onoff/lightbulb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,kBAAmB,SAAQ,cAA+B;IAErE,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAuB,EAAE,GAAQ;QACnI,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"lightbulb.js","sourceRoot":"","sources":["../../../src/accessory/onoff/lightbulb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PlatformAccessory } from 'homebridge';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseAccessory } from '../abstract/base.js';
|
|
3
3
|
import { CharacteristicType, OnOffConfig, ServiceType } from '../../model/types.js';
|
|
4
4
|
import { Log } from '../../tools/log.js';
|
|
5
|
-
export declare abstract class OnOffAccessory<C extends OnOffConfig = OnOffConfig> extends
|
|
6
|
-
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: C, log: Log
|
|
5
|
+
export declare abstract class OnOffAccessory<C extends OnOffConfig = OnOffConfig> extends BaseAccessory<C> {
|
|
6
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: C, log: Log);
|
|
7
7
|
addTopicHandlers(): void;
|
|
8
8
|
private getOn;
|
|
9
9
|
private onOnUpdate;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseAccessory } from '../abstract/base.js';
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { CharacteristicKey } from '../../model/enums.js';
|
|
4
|
-
export class OnOffAccessory extends
|
|
5
|
-
constructor(Service, Characteristic, accessory, config, log
|
|
6
|
-
super(Service, Characteristic, accessory, config, log
|
|
4
|
+
export class OnOffAccessory extends BaseAccessory {
|
|
5
|
+
constructor(Service, Characteristic, accessory, config, log) {
|
|
6
|
+
super(Service, Characteristic, accessory, config, log);
|
|
7
7
|
this.set(CharacteristicKey.On, false);
|
|
8
8
|
this.accessoryService.getCharacteristic(Characteristic.On)
|
|
9
9
|
.onGet(this.getOn.bind(this))
|
|
@@ -17,7 +17,7 @@ export class OnOffAccessory extends StatusActiveAccessory {
|
|
|
17
17
|
return this.get(CharacteristicKey.On);
|
|
18
18
|
}
|
|
19
19
|
async onOnUpdate(topic, value) {
|
|
20
|
-
const on = this.booleanForValue(value, 'valueOn', 'valueOff'
|
|
20
|
+
const on = this.booleanForValue(value, 'valueOn', 'valueOff');
|
|
21
21
|
if (on !== undefined) {
|
|
22
22
|
this.onUpdate(CharacteristicKey.On, on, this.stringForState(on));
|
|
23
23
|
}
|
|
@@ -28,7 +28,7 @@ export class OnOffAccessory extends StatusActiveAccessory {
|
|
|
28
28
|
this.onSet(CharacteristicKey.On, value, on, 'topicSetOn', this.stringForState(value, true));
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
booleanForValue(value, positive, negative
|
|
31
|
+
booleanForValue(value, positive, negative) {
|
|
32
32
|
let bool = undefined;
|
|
33
33
|
if (value === this.getPrimitiveValue(positive)) {
|
|
34
34
|
bool = true;
|
|
@@ -37,7 +37,7 @@ export class OnOffAccessory extends StatusActiveAccessory {
|
|
|
37
37
|
bool = false;
|
|
38
38
|
}
|
|
39
39
|
if (bool === undefined) {
|
|
40
|
-
this.
|
|
40
|
+
this.logIfDesired(strings.onOff.unknownValue, `'${value}'`);
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
return bool;
|