homebridge-kasa-python 2.7.0-beta.2 → 2.7.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devices/deviceManager.d.ts +3 -4
- package/dist/devices/deviceManager.js +7 -7
- package/dist/devices/deviceManager.js.map +1 -1
- package/dist/devices/homekitLightBulb.d.ts +10 -0
- package/dist/devices/homekitLightBulb.js +175 -3
- package/dist/devices/homekitLightBulb.js.map +1 -1
- package/dist/devices/homekitPlug.d.ts +9 -0
- package/dist/devices/homekitPlug.js +130 -0
- package/dist/devices/homekitPlug.js.map +1 -1
- package/dist/devices/homekitPowerStrip.d.ts +9 -0
- package/dist/devices/homekitPowerStrip.js +139 -0
- package/dist/devices/homekitPowerStrip.js.map +1 -1
- package/dist/devices/homekitSwitch.d.ts +10 -0
- package/dist/devices/homekitSwitch.js +143 -0
- package/dist/devices/homekitSwitch.js.map +1 -1
- package/dist/devices/index.d.ts +4 -14
- package/dist/devices/index.js +6 -213
- package/dist/devices/index.js.map +1 -1
- package/dist/devices/kasaDevices.d.ts +4 -4
- package/dist/python/kasaApi.py +0 -12
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CharacteristicValue } from 'homebridge';
|
|
2
|
-
import HomekitDevice from './index.js';
|
|
3
2
|
import KasaPythonPlatform from '../platform.js';
|
|
4
|
-
import type { KasaDevice, SysInfo } from './kasaDevices.js';
|
|
3
|
+
import type { DeviceConfig, KasaDevice, SysInfo } from './kasaDevices.js';
|
|
5
4
|
export default class DeviceManager {
|
|
6
5
|
private platform;
|
|
7
6
|
private log;
|
|
@@ -18,8 +17,8 @@ export default class DeviceManager {
|
|
|
18
17
|
private writeConfigFile;
|
|
19
18
|
discoverDevices(): Promise<Record<string, KasaDevice>>;
|
|
20
19
|
private processDevice;
|
|
21
|
-
getSysInfo(
|
|
22
|
-
controlDevice(
|
|
20
|
+
getSysInfo(deviceConfig: DeviceConfig): Promise<SysInfo | undefined>;
|
|
21
|
+
controlDevice(deviceConfig: DeviceConfig, feature: string, value: CharacteristicValue, child_num?: number): Promise<void>;
|
|
23
22
|
private performDeviceAction;
|
|
24
23
|
private logError;
|
|
25
24
|
}
|
|
@@ -167,9 +167,9 @@ export default class DeviceManager {
|
|
|
167
167
|
existingDevice.alias = device.sys_info.alias;
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
async getSysInfo(
|
|
170
|
+
async getSysInfo(deviceConfig) {
|
|
171
171
|
try {
|
|
172
|
-
const response = await axios.post(`${this.apiUrl}/getSysInfo`, { device_config:
|
|
172
|
+
const response = await axios.post(`${this.apiUrl}/getSysInfo`, { device_config: deviceConfig });
|
|
173
173
|
const sysInfo = response.data.sys_info;
|
|
174
174
|
this.updateDeviceAlias(sysInfo);
|
|
175
175
|
return sysInfo;
|
|
@@ -178,7 +178,7 @@ export default class DeviceManager {
|
|
|
178
178
|
this.logError('An error occurred during getSysInfo', error);
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
|
-
async controlDevice(
|
|
181
|
+
async controlDevice(deviceConfig, feature, value, child_num) {
|
|
182
182
|
try {
|
|
183
183
|
let action;
|
|
184
184
|
switch (feature) {
|
|
@@ -196,16 +196,16 @@ export default class DeviceManager {
|
|
|
196
196
|
default:
|
|
197
197
|
throw new Error(`Unsupported feature: ${feature}`);
|
|
198
198
|
}
|
|
199
|
-
await this.performDeviceAction(
|
|
199
|
+
await this.performDeviceAction(deviceConfig, feature, action, value, child_num);
|
|
200
200
|
}
|
|
201
201
|
catch (error) {
|
|
202
|
-
this.logError(
|
|
202
|
+
this.logError('An error occurred performing action', error);
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
async performDeviceAction(
|
|
205
|
+
async performDeviceAction(deviceConfig, feature, action, value, childNumber) {
|
|
206
206
|
const url = `${this.apiUrl}/controlDevice`;
|
|
207
207
|
const data = {
|
|
208
|
-
device_config:
|
|
208
|
+
device_config: deviceConfig,
|
|
209
209
|
feature,
|
|
210
210
|
action,
|
|
211
211
|
value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceManager.js","sourceRoot":"","sources":["../../src/devices/deviceManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"deviceManager.js","sourceRoot":"","sources":["../../src/devices/deviceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,20 @@ import type KasaPythonPlatform from '../platform.js';
|
|
|
3
3
|
import type { LightBulb } from './kasaDevices.js';
|
|
4
4
|
export default class HomeKitDeviceLightBulb extends HomekitDevice {
|
|
5
5
|
protected kasaDevice: LightBulb;
|
|
6
|
+
private isUpdating;
|
|
7
|
+
private previousKasaDevice;
|
|
8
|
+
private getSysInfo;
|
|
6
9
|
private hasBrightness;
|
|
7
10
|
private hasColorTemp;
|
|
8
11
|
private hasHSV;
|
|
9
12
|
constructor(platform: KasaPythonPlatform, kasaDevice: LightBulb);
|
|
10
13
|
private addLightBulbService;
|
|
11
14
|
identify(): void;
|
|
15
|
+
private addCharacteristic;
|
|
16
|
+
private handleOnGet;
|
|
17
|
+
private getCharacteristicValue;
|
|
18
|
+
private getDefaultValue;
|
|
19
|
+
private handleOnSet;
|
|
20
|
+
protected updateState(): Promise<void>;
|
|
21
|
+
private startPolling;
|
|
12
22
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import HomekitDevice from './index.js';
|
|
2
|
+
import { deferAndCombine, getOrAddCharacteristic } from '../utils.js';
|
|
2
3
|
export default class HomeKitDeviceLightBulb extends HomekitDevice {
|
|
3
4
|
kasaDevice;
|
|
5
|
+
isUpdating = false;
|
|
6
|
+
previousKasaDevice;
|
|
7
|
+
getSysInfo;
|
|
4
8
|
hasBrightness;
|
|
5
9
|
hasColorTemp;
|
|
6
10
|
hasHSV;
|
|
@@ -12,26 +16,194 @@ export default class HomeKitDeviceLightBulb extends HomekitDevice {
|
|
|
12
16
|
this.hasColorTemp = !!this.kasaDevice.feature_info.color_temp;
|
|
13
17
|
this.hasHSV = !!this.kasaDevice.feature_info.hsv;
|
|
14
18
|
this.addLightBulbService();
|
|
19
|
+
this.getSysInfo = deferAndCombine(async (requestCount) => {
|
|
20
|
+
this.log.debug(`Executing deferred getSysInfo count: ${requestCount}`);
|
|
21
|
+
if (this.deviceManager) {
|
|
22
|
+
this.log.debug('Fetching new SysInfo from device manager');
|
|
23
|
+
this.previousKasaDevice = this.kasaDevice;
|
|
24
|
+
this.kasaDevice.sys_info = await this.deviceManager.getSysInfo(this.deviceConfig);
|
|
25
|
+
this.log.debug('Updated SysInfo from device manager');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.log.warn('Device manager is not available');
|
|
29
|
+
}
|
|
30
|
+
}, platform.config.waitTimeUpdate);
|
|
31
|
+
this.startPolling();
|
|
15
32
|
}
|
|
16
33
|
addLightBulbService() {
|
|
17
34
|
const { Lightbulb } = this.platform.Service;
|
|
18
35
|
const lightbulbService = this.homebridgeAccessory.getService(Lightbulb) ?? this.addService(Lightbulb, this.name);
|
|
19
36
|
this.log.debug(`Adding characteristics for lightbulb service: ${this.name}`);
|
|
37
|
+
this.addCharacteristic(lightbulbService, this.platform.Characteristic.On);
|
|
20
38
|
if (this.hasBrightness) {
|
|
21
39
|
this.addCharacteristic(lightbulbService, this.platform.Characteristic.Brightness);
|
|
22
40
|
}
|
|
23
|
-
|
|
41
|
+
if (this.hasColorTemp) {
|
|
24
42
|
this.addCharacteristic(lightbulbService, this.platform.Characteristic.ColorTemperature);
|
|
25
43
|
}
|
|
26
|
-
|
|
44
|
+
if (this.hasHSV) {
|
|
27
45
|
this.addCharacteristic(lightbulbService, this.platform.Characteristic.Hue);
|
|
28
46
|
this.addCharacteristic(lightbulbService, this.platform.Characteristic.Saturation);
|
|
29
47
|
}
|
|
30
|
-
this.addCharacteristic(lightbulbService, this.platform.Characteristic.On);
|
|
31
48
|
return lightbulbService;
|
|
32
49
|
}
|
|
33
50
|
identify() {
|
|
34
51
|
this.log.info('identify');
|
|
35
52
|
}
|
|
53
|
+
addCharacteristic(service, characteristicType) {
|
|
54
|
+
this.log.debug(`Adding characteristic ${this.platform.getCharacteristicName(characteristicType)} for device: ${this.name}`);
|
|
55
|
+
const characteristic = getOrAddCharacteristic(service, characteristicType);
|
|
56
|
+
characteristic.onGet(this.handleOnGet.bind(this, characteristicType));
|
|
57
|
+
characteristic.onSet(this.handleOnSet.bind(this, service, characteristicType));
|
|
58
|
+
return service;
|
|
59
|
+
}
|
|
60
|
+
async handleOnGet(characteristicType) {
|
|
61
|
+
const characteristicName = this.platform.getCharacteristicName(characteristicType);
|
|
62
|
+
if (!characteristicName) {
|
|
63
|
+
throw new Error('Characteristic name is undefined');
|
|
64
|
+
}
|
|
65
|
+
this.log.debug(`Getting current value for characteristic ${characteristicName} for device: ${this.name}`);
|
|
66
|
+
try {
|
|
67
|
+
const characteristicValue = this.getCharacteristicValue(characteristicType);
|
|
68
|
+
this.log.debug(`Current Value of ${characteristicName} is: ${characteristicValue} for ${this.name}`);
|
|
69
|
+
return characteristicValue ?? this.getDefaultValue(characteristicType);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.log.error(`Error getting current value for characteristic ${characteristicName} for device: ${this.name}:`, error);
|
|
73
|
+
}
|
|
74
|
+
return this.getDefaultValue(characteristicType);
|
|
75
|
+
}
|
|
76
|
+
getCharacteristicValue(characteristicType) {
|
|
77
|
+
const characteristicMap = {
|
|
78
|
+
Brightness: 'brightness',
|
|
79
|
+
On: 'state',
|
|
80
|
+
ColorTemperature: 'color_temp',
|
|
81
|
+
Hue: 'hue',
|
|
82
|
+
Saturation: 'saturation',
|
|
83
|
+
};
|
|
84
|
+
const characteristicKey = characteristicMap[characteristicType.name];
|
|
85
|
+
if (!characteristicKey) {
|
|
86
|
+
this.log.warn(`Characteristic ${characteristicType.name} is not supported`);
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
const value = this.kasaDevice.sys_info[characteristicKey];
|
|
90
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || value === null) {
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
getDefaultValue(characteristicType) {
|
|
96
|
+
if (characteristicType === this.platform.Characteristic.Brightness) {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
async handleOnSet(service, characteristicType, value) {
|
|
102
|
+
const characteristicName = this.platform.getCharacteristicName(characteristicType);
|
|
103
|
+
if (!characteristicName) {
|
|
104
|
+
throw new Error('Characteristic name is undefined');
|
|
105
|
+
}
|
|
106
|
+
this.log.info(`Setting ${characteristicName} to: ${value} for ${this.name}`);
|
|
107
|
+
if (this.deviceManager) {
|
|
108
|
+
try {
|
|
109
|
+
this.isUpdating = true;
|
|
110
|
+
const characteristicMap = {
|
|
111
|
+
Brightness: 'brightness',
|
|
112
|
+
On: 'state',
|
|
113
|
+
ColorTemperature: 'color_temp',
|
|
114
|
+
Hue: 'hue',
|
|
115
|
+
Saturation: 'saturation',
|
|
116
|
+
};
|
|
117
|
+
const characteristicKey = characteristicMap[characteristicName];
|
|
118
|
+
if (!characteristicKey) {
|
|
119
|
+
throw new Error(`Characteristic key not found for ${characteristicName}`);
|
|
120
|
+
}
|
|
121
|
+
await this.deviceManager.controlDevice(this.deviceConfig, characteristicKey, value);
|
|
122
|
+
this.kasaDevice.sys_info[characteristicKey] = value;
|
|
123
|
+
this.previousKasaDevice = this.kasaDevice;
|
|
124
|
+
this.updateValue(service, service.getCharacteristic(characteristicType), value);
|
|
125
|
+
this.log.debug(`Successfully set ${characteristicName} to ${value} for ${this.name}`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
this.logRejection(error);
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
this.isUpdating = false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
throw new Error('Device manager is undefined.');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async updateState() {
|
|
140
|
+
if (this.isUpdating) {
|
|
141
|
+
this.log.debug('Update already in progress, skipping updateState');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.isUpdating = true;
|
|
145
|
+
try {
|
|
146
|
+
this.log.debug('Updating device state');
|
|
147
|
+
await this.getSysInfo();
|
|
148
|
+
const service = this.homebridgeAccessory.getService(this.platform.Service.Lightbulb);
|
|
149
|
+
if (service && this.previousKasaDevice) {
|
|
150
|
+
if (this.previousKasaDevice.sys_info.state !== this.kasaDevice.sys_info.state) {
|
|
151
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.On), this.kasaDevice.sys_info.state ?? false);
|
|
152
|
+
this.log.debug(`Updated state for device: ${this.name} to ${this.kasaDevice.sys_info.state}`);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.log.debug(`State unchanged for device: ${this.name}`);
|
|
156
|
+
}
|
|
157
|
+
if (this.hasBrightness) {
|
|
158
|
+
if (this.previousKasaDevice.sys_info.brightness !== this.kasaDevice.sys_info.brightness) {
|
|
159
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.Brightness), this.kasaDevice.sys_info.brightness ?? 0);
|
|
160
|
+
this.log.debug(`Updated brightness for device: ${this.name} to ${this.kasaDevice.sys_info.brightness}`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.log.debug(`Brightness unchanged for device: ${this.name}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (this.hasColorTemp) {
|
|
167
|
+
if (this.previousKasaDevice.sys_info.color_temp !== this.kasaDevice.sys_info.color_temp) {
|
|
168
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.ColorTemperature), this.kasaDevice.sys_info.color_temp ?? 0);
|
|
169
|
+
this.log.debug(`Updated color temperature for device: ${this.name} to ${this.kasaDevice.sys_info.color_temp}`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
this.log.debug(`Color temperature unchanged for device: ${this.name}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (this.hasHSV) {
|
|
176
|
+
if (this.previousKasaDevice.sys_info.hsv?.hue !== this.kasaDevice.sys_info.hsv?.hue) {
|
|
177
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.Hue), typeof this.kasaDevice.sys_info.hsv?.hue === 'number' ? this.kasaDevice.sys_info.hsv?.hue : 0);
|
|
178
|
+
this.log.debug(`Updated hue for device: ${this.name} to ${this.kasaDevice.sys_info.hsv?.hue}`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.log.debug(`Hue unchanged for device: ${this.name}`);
|
|
182
|
+
}
|
|
183
|
+
if (this.previousKasaDevice.sys_info.hsv?.saturation !== this.kasaDevice.sys_info.hsv?.saturation) {
|
|
184
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.Saturation), typeof this.kasaDevice.sys_info.hsv?.saturation === 'number' ? this.kasaDevice.sys_info.hsv?.saturation : 0);
|
|
185
|
+
this.log.debug(`Updated saturation for device: ${this.name} to ${this.kasaDevice.sys_info.hsv?.saturation}`);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.log.debug(`Saturation unchanged for device: ${this.name}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
this.log.warn(`Service not found for device: ${this.name} or previous Kasa device is undefined`);
|
|
194
|
+
}
|
|
195
|
+
this.log.debug('Device state updated successfully');
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
this.log.error('Error updating device state:', error);
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
this.isUpdating = false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
startPolling() {
|
|
205
|
+
this.log.debug('Starting polling for device state updates');
|
|
206
|
+
setInterval(this.updateState.bind(this), this.platform.config.discoveryOptions.pollingInterval);
|
|
207
|
+
}
|
|
36
208
|
}
|
|
37
209
|
//# sourceMappingURL=homekitLightBulb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homekitLightBulb.js","sourceRoot":"","sources":["../../src/devices/homekitLightBulb.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"homekitLightBulb.js","sourceRoot":"","sources":["../../src/devices/homekitLightBulb.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,16 @@ import type KasaPythonPlatform from '../platform.js';
|
|
|
3
3
|
import type { Plug } from './kasaDevices.js';
|
|
4
4
|
export default class HomeKitDevicePlug extends HomekitDevice {
|
|
5
5
|
protected kasaDevice: Plug;
|
|
6
|
+
private isUpdating;
|
|
7
|
+
private previousKasaDevice;
|
|
8
|
+
private getSysInfo;
|
|
6
9
|
constructor(platform: KasaPythonPlatform, kasaDevice: Plug);
|
|
7
10
|
private addOutletService;
|
|
8
11
|
identify(): void;
|
|
12
|
+
private addCharacteristic;
|
|
13
|
+
private handleOnGet;
|
|
14
|
+
private getCharacteristicValue;
|
|
15
|
+
private handleOnSet;
|
|
16
|
+
protected updateState(): Promise<void>;
|
|
17
|
+
private startPolling;
|
|
9
18
|
}
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import HomekitDevice from './index.js';
|
|
2
|
+
import { deferAndCombine, getOrAddCharacteristic } from '../utils.js';
|
|
2
3
|
export default class HomeKitDevicePlug extends HomekitDevice {
|
|
3
4
|
kasaDevice;
|
|
5
|
+
isUpdating = false;
|
|
6
|
+
previousKasaDevice;
|
|
7
|
+
getSysInfo;
|
|
4
8
|
constructor(platform, kasaDevice) {
|
|
5
9
|
super(platform, kasaDevice, 7 /* Categories.OUTLET */, 'OUTLET');
|
|
6
10
|
this.kasaDevice = kasaDevice;
|
|
7
11
|
this.log.debug(`Initializing HomeKitDevicePlug for device: ${kasaDevice.sys_info.alias}`);
|
|
8
12
|
this.addOutletService();
|
|
13
|
+
this.getSysInfo = deferAndCombine(async (requestCount) => {
|
|
14
|
+
this.log.debug(`Executing deferred getSysInfo count: ${requestCount}`);
|
|
15
|
+
if (this.deviceManager) {
|
|
16
|
+
this.log.debug('Fetching new SysInfo from device manager');
|
|
17
|
+
this.previousKasaDevice = this.kasaDevice;
|
|
18
|
+
this.kasaDevice.sys_info = await this.deviceManager.getSysInfo(this.deviceConfig);
|
|
19
|
+
;
|
|
20
|
+
this.log.debug('Updated SysInfo from device manager');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.log.warn('Device manager is not available');
|
|
24
|
+
}
|
|
25
|
+
}, platform.config.waitTimeUpdate);
|
|
26
|
+
this.startPolling();
|
|
9
27
|
}
|
|
10
28
|
addOutletService() {
|
|
11
29
|
const { Outlet } = this.platform.Service;
|
|
@@ -18,5 +36,117 @@ export default class HomeKitDevicePlug extends HomekitDevice {
|
|
|
18
36
|
identify() {
|
|
19
37
|
this.log.info('identify');
|
|
20
38
|
}
|
|
39
|
+
addCharacteristic(service, characteristicType) {
|
|
40
|
+
this.log.debug(`Adding characteristic ${this.platform.getCharacteristicName(characteristicType)} for device: ${this.name}`);
|
|
41
|
+
const characteristic = getOrAddCharacteristic(service, characteristicType);
|
|
42
|
+
characteristic.onGet(this.handleOnGet.bind(this, characteristicType));
|
|
43
|
+
if (characteristicType === this.platform.Characteristic.On) {
|
|
44
|
+
characteristic.onSet(this.handleOnSet.bind(this, service, characteristicType));
|
|
45
|
+
}
|
|
46
|
+
return service;
|
|
47
|
+
}
|
|
48
|
+
async handleOnGet(characteristicType) {
|
|
49
|
+
const characteristicName = this.platform.getCharacteristicName(characteristicType);
|
|
50
|
+
if (!characteristicName) {
|
|
51
|
+
throw new Error('Characteristic name is undefined');
|
|
52
|
+
}
|
|
53
|
+
this.log.debug(`Getting current value for characteristic ${characteristicName} for device: ${this.name}`);
|
|
54
|
+
try {
|
|
55
|
+
const characteristicValue = this.getCharacteristicValue(characteristicType);
|
|
56
|
+
this.log.debug(`Current Value of ${characteristicName} is: ${characteristicValue} for ${this.name}`);
|
|
57
|
+
return characteristicValue ?? false;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.log.error(`Error getting current value for characteristic ${characteristicName} for device: ${this.name}:`, error);
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
getCharacteristicValue(characteristicType) {
|
|
65
|
+
const characteristicMap = {
|
|
66
|
+
On: 'state',
|
|
67
|
+
OutletInUse: 'state',
|
|
68
|
+
};
|
|
69
|
+
const characteristicKey = characteristicMap[characteristicType.name];
|
|
70
|
+
if (!characteristicKey) {
|
|
71
|
+
this.log.warn(`Characteristic ${characteristicType.name} is not supported`);
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const value = this.kasaDevice.sys_info[characteristicKey];
|
|
75
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || value === null) {
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
async handleOnSet(service, characteristicType, value) {
|
|
81
|
+
const characteristicName = this.platform.getCharacteristicName(characteristicType);
|
|
82
|
+
if (!characteristicName) {
|
|
83
|
+
throw new Error('Characteristic name is undefined');
|
|
84
|
+
}
|
|
85
|
+
this.log.info(`Setting ${characteristicName} to: ${value} for ${this.name}`);
|
|
86
|
+
if (this.deviceManager) {
|
|
87
|
+
try {
|
|
88
|
+
this.isUpdating = true;
|
|
89
|
+
const characteristicMap = {
|
|
90
|
+
On: 'state',
|
|
91
|
+
};
|
|
92
|
+
const characteristicKey = characteristicMap[characteristicName];
|
|
93
|
+
if (!characteristicKey) {
|
|
94
|
+
throw new Error(`Characteristic key not found for ${characteristicName}`);
|
|
95
|
+
}
|
|
96
|
+
await this.deviceManager.controlDevice(this.deviceConfig, characteristicKey, value);
|
|
97
|
+
this.kasaDevice.sys_info[characteristicKey] = value;
|
|
98
|
+
this.previousKasaDevice = this.kasaDevice;
|
|
99
|
+
this.updateValue(service, service.getCharacteristic(characteristicType), value);
|
|
100
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), value);
|
|
101
|
+
this.log.debug(`Successfully set ${characteristicName} to ${value} for ${this.name}`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
this.logRejection(error);
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
this.isUpdating = false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
throw new Error('Device manager is undefined.');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async updateState() {
|
|
116
|
+
if (this.isUpdating) {
|
|
117
|
+
this.log.debug('Update already in progress, skipping updateState');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this.isUpdating = true;
|
|
121
|
+
try {
|
|
122
|
+
this.log.debug('Updating device state');
|
|
123
|
+
await this.getSysInfo();
|
|
124
|
+
const service = this.homebridgeAccessory.getService(this.platform.Service.Outlet);
|
|
125
|
+
if (service && this.previousKasaDevice) {
|
|
126
|
+
if (this.previousKasaDevice.sys_info.state !== this.kasaDevice.sys_info.state) {
|
|
127
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.On), this.kasaDevice.sys_info.state ?? false);
|
|
128
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), this.kasaDevice.sys_info.state ?? false);
|
|
129
|
+
this.log.debug(`Updated state for device: ${this.name} to ${this.kasaDevice.sys_info.state}`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.log.debug(`State unchanged for device: ${this.name}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.log.warn(`Service not found for device: ${this.name} or previous Kasa device is undefined`);
|
|
137
|
+
}
|
|
138
|
+
this.log.debug('Device state updated successfully');
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
this.log.error('Error updating device state:', error);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
this.isUpdating = false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
startPolling() {
|
|
148
|
+
this.log.debug('Starting polling for device state updates');
|
|
149
|
+
setInterval(this.updateState.bind(this), this.platform.config.discoveryOptions.pollingInterval);
|
|
150
|
+
}
|
|
21
151
|
}
|
|
22
152
|
//# sourceMappingURL=homekitPlug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homekitPlug.js","sourceRoot":"","sources":["../../src/devices/homekitPlug.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"homekitPlug.js","sourceRoot":"","sources":["../../src/devices/homekitPlug.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAItE,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAO9C;IANJ,UAAU,GAAY,KAAK,CAAC;IAC5B,kBAAkB,CAAyB;IAC3C,UAAU,CAAsB;IAExC,YACE,QAA4B,EAClB,UAAgB;QAE1B,KAAK,CACH,QAAQ,EACR,UAAU,6BAEV,QAAQ,CACT,CAAC;QAPQ,eAAU,GAAV,UAAU,CAAM;QAQ1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,YAAoB,EAAE,EAAE;YAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAY,CAAC;gBAAA,CAAC;gBAC9F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEzC,MAAM,aAAa,GACf,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEhF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAEO,iBAAiB,CACvB,OAAgB,EAChB,kBAAsD;QAEtD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5H,MAAM,cAAc,GAAmB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC3F,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACtE,IAAI,kBAAkB,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YAC3D,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,kBAAsD;QAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QACnF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,kBAAkB,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;YAC5E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,kBAAkB,QAAQ,mBAAmB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrG,OAAO,mBAAmB,IAAI,KAAK,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,kDAAkD,kBAAkB,gBAAgB,IAAI,CAAC,IAAI,GAAG,EAChG,KAAK,CACN,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,sBAAsB,CAC5B,kBAAsD;QAEtD,MAAM,iBAAiB,GAAqC;YAC1D,EAAE,EAAE,OAAO;YACX,WAAW,EAAE,OAAO;SACrB,CAAC;QAEF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAC5E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAkC,CAAC,CAAC;QAE3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3G,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAgB,EAChB,kBAAsD,EACtD,KAA0B;QAE1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QACnF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,kBAAkB,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvB,MAAM,iBAAiB,GAA8B;oBACnD,EAAE,EAAE,OAAO;iBACZ,CAAC;gBAEF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;gBAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,kBAAkB,EAAE,CAAC,CAAC;gBAC5E,CAAC;gBAED,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACnF,IAAI,CAAC,UAAU,CAAC,QAA2D,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;gBAExG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,kBAAkB,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtF,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClF,IAAI,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC9E,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;oBAC/H,IAAI,CAAC,WAAW,CACd,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CACtH,CAAC;oBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChG,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,IAAI,uCAAuC,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC5D,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAClG,CAAC;CACF"}
|
|
@@ -3,7 +3,16 @@ import type KasaPythonPlatform from '../platform.js';
|
|
|
3
3
|
import type { PowerStrip } from './kasaDevices.js';
|
|
4
4
|
export default class HomeKitDevicePowerStrip extends HomekitDevice {
|
|
5
5
|
protected kasaDevice: PowerStrip;
|
|
6
|
+
private isUpdating;
|
|
7
|
+
private previousKasaDevice;
|
|
8
|
+
private getSysInfo;
|
|
6
9
|
constructor(platform: KasaPythonPlatform, kasaDevice: PowerStrip);
|
|
7
10
|
private addOutletService;
|
|
8
11
|
identify(): void;
|
|
12
|
+
private addCharacteristic;
|
|
13
|
+
private handleOnGet;
|
|
14
|
+
private getCharacteristicValue;
|
|
15
|
+
private handleOnSet;
|
|
16
|
+
protected updateState(): Promise<void>;
|
|
17
|
+
private startPolling;
|
|
9
18
|
}
|