homebridge-kasa-python 2.7.0-beta.2 → 2.7.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/dist/config.js +1 -2
- package/dist/config.js.map +1 -1
- package/dist/devices/deviceManager.d.ts +3 -6
- package/dist/devices/deviceManager.js +25 -69
- package/dist/devices/deviceManager.js.map +1 -1
- package/dist/devices/homekitLightBulb.d.ts +11 -1
- package/dist/devices/homekitLightBulb.js +147 -13
- package/dist/devices/homekitLightBulb.js.map +1 -1
- package/dist/devices/homekitPlug.d.ts +10 -1
- package/dist/devices/homekitPlug.js +112 -7
- package/dist/devices/homekitPlug.js.map +1 -1
- package/dist/devices/homekitPowerStrip.d.ts +10 -1
- package/dist/devices/homekitPowerStrip.js +121 -8
- package/dist/devices/homekitPowerStrip.js.map +1 -1
- package/dist/devices/homekitSwitch.d.ts +11 -1
- package/dist/devices/homekitSwitch.js +118 -8
- package/dist/devices/homekitSwitch.js.map +1 -1
- package/dist/devices/index.d.ts +4 -14
- package/dist/devices/index.js +6 -215
- package/dist/devices/index.js.map +1 -1
- package/dist/devices/kasaDevices.d.ts +4 -6
- package/dist/devices/kasaDevices.js +2 -0
- package/dist/devices/kasaDevices.js.map +1 -1
- package/dist/platform.d.ts +0 -1
- package/dist/platform.js +12 -85
- package/dist/platform.js.map +1 -1
- package/dist/python/kasaApi.py +182 -232
- package/dist/python/pythonChecker.js +6 -10
- package/dist/python/pythonChecker.js.map +1 -1
- package/dist/utils.d.ts +2 -8
- package/dist/utils.js +2 -19
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/requirements.txt +0 -1
package/dist/config.js
CHANGED
|
@@ -64,7 +64,7 @@ function convertManualDevices(manualDevices) {
|
|
|
64
64
|
if (!manualDevices || manualDevices.length === 0) {
|
|
65
65
|
return [];
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
return manualDevices.map(device => {
|
|
68
68
|
if (typeof device === 'string') {
|
|
69
69
|
return { host: device, alias: 'Will Be Filled By Plug-In Automatically' };
|
|
70
70
|
}
|
|
@@ -75,7 +75,6 @@ function convertManualDevices(manualDevices) {
|
|
|
75
75
|
return device;
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
|
-
return convertedDevices;
|
|
79
78
|
}
|
|
80
79
|
export function parseConfig(config) {
|
|
81
80
|
const ajv = new Ajv({ allErrors: true, strict: 'log' });
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoB,MAAM,KAAK,CAAC;AACvC,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,IAAI,WAA6B,CAAC;AAElC,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGhC;IACA;IAHT,YACE,OAAe,EACR,MAAuE,EACvE,YAAsB;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,WAAM,GAAN,MAAM,CAAiE;QACvE,iBAAY,GAAZ,YAAY,CAAU;QAG7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACjE,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAEO,aAAa,CACnB,OAAe,EACf,MAAuE,EACvE,YAAsB;QAEtB,IAAI,gBAAgB,GAAG,OAAO,CAAC;QAC/B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,MAAM,aAAa,GAAG,eAAe,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvH,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC;YACjF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,gBAAgB,IAAI,MAAM,cAAc,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,YAAY,YAAY,KAAK,EAAE,CAAC;YAClC,gBAAgB,IAAI,uBAAuB,YAAY,CAAC,OAAO,EAAE,CAAC;QACpE,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,gBAAgB,IAAI,qDAAqD,YAAY,GAAG,CAAC;QAC3F,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF;AA0BD,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,aAAa;IACnB,iBAAiB,EAAE,KAAK;IACxB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,gBAAgB,EAAE;QAChB,eAAe,EAAE,CAAC;QAClB,oBAAoB,EAAE,EAAE;QACxB,aAAa,EAAE,EAAE;KAClB;IACD,cAAc,EAAE,GAAG;CACpB,CAAC;AAEF,SAAS,UAAU;IACjB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gBAAgB,CAAC,sBAAsB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,aAA2D;IACvF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
@@ -13,13 +12,11 @@ export default class DeviceManager {
|
|
|
13
12
|
constructor(platform: KasaPythonPlatform);
|
|
14
13
|
private convertManualDevices;
|
|
15
14
|
private updateDeviceAlias;
|
|
16
|
-
private updateAliasForSysInfo;
|
|
17
15
|
private readConfigFile;
|
|
18
16
|
private writeConfigFile;
|
|
19
17
|
discoverDevices(): Promise<Record<string, KasaDevice>>;
|
|
20
18
|
private processDevice;
|
|
21
|
-
getSysInfo(
|
|
22
|
-
controlDevice(
|
|
19
|
+
getSysInfo(deviceConfig: DeviceConfig): Promise<SysInfo | undefined>;
|
|
20
|
+
controlDevice(deviceConfig: DeviceConfig, feature: string, value: CharacteristicValue, child_num?: number): Promise<void>;
|
|
23
21
|
private performDeviceAction;
|
|
24
|
-
private logError;
|
|
25
22
|
}
|
|
@@ -33,14 +33,7 @@ export default class DeviceManager {
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
updateDeviceAlias(device) {
|
|
36
|
-
|
|
37
|
-
this.updateAliasForSysInfo(device.sys_info);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.updateAliasForSysInfo(device);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
updateAliasForSysInfo(sysInfo) {
|
|
36
|
+
const sysInfo = 'sys_info' in device ? device.sys_info : device;
|
|
44
37
|
if (sysInfo.alias) {
|
|
45
38
|
const aliasMappings = {
|
|
46
39
|
'TP-LINK_Power Strip_': 'Power Strip',
|
|
@@ -61,7 +54,7 @@ export default class DeviceManager {
|
|
|
61
54
|
return JSON.parse(configData);
|
|
62
55
|
}
|
|
63
56
|
catch (error) {
|
|
64
|
-
this.
|
|
57
|
+
this.log.error(`Error reading config file: ${error}`);
|
|
65
58
|
throw error;
|
|
66
59
|
}
|
|
67
60
|
}
|
|
@@ -70,64 +63,42 @@ export default class DeviceManager {
|
|
|
70
63
|
await fs.writeFile(configPath, JSON.stringify(fileConfig, null, 2), 'utf8');
|
|
71
64
|
}
|
|
72
65
|
catch (error) {
|
|
73
|
-
this.
|
|
66
|
+
this.log.error(`Error writing config file: ${error}`);
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
async discoverDevices() {
|
|
77
70
|
this.log.info('Discovering devices...');
|
|
78
71
|
try {
|
|
79
|
-
const config = {
|
|
80
|
-
...(this.username && this.password && {
|
|
81
|
-
auth: {
|
|
82
|
-
username: this.username,
|
|
83
|
-
password: this.password,
|
|
84
|
-
},
|
|
85
|
-
}),
|
|
86
|
-
};
|
|
87
|
-
this.log.debug(`Sending discovery request with additionalBroadcasts: ${JSON.stringify(this.additionalBroadcasts)}, ` +
|
|
88
|
-
`and manualDevices: ${JSON.stringify(this.manualDevices)}`);
|
|
72
|
+
const config = this.username && this.password ? { auth: { username: this.username, password: this.password } } : {};
|
|
89
73
|
const response = await axios.post(`${this.apiUrl}/discover`, {
|
|
90
74
|
additionalBroadcasts: this.additionalBroadcasts,
|
|
91
75
|
manualDevices: this.manualDevices,
|
|
92
76
|
}, config);
|
|
93
|
-
this.log.debug('Discovery request sent successfully');
|
|
94
77
|
const devices = response.data;
|
|
95
|
-
this.log.info(`Devices discovered: ${Object.keys(devices).length}`);
|
|
96
78
|
const configPath = path.join(this.platform.storagePath, 'config.json');
|
|
97
|
-
this.log.debug(`Reading config file from path: ${configPath}`);
|
|
98
79
|
const fileConfig = await this.readConfigFile(configPath);
|
|
99
|
-
this.log.debug('Config file read successfully');
|
|
100
80
|
const platformConfig = fileConfig.platforms.find((platformConfig) => platformConfig.platform === 'KasaPython');
|
|
101
81
|
if (!platformConfig) {
|
|
102
82
|
this.log.error('KasaPython configuration not found in config file.');
|
|
103
83
|
return {};
|
|
104
84
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
platformConfig.manualDevices = [];
|
|
109
|
-
}
|
|
110
|
-
if (platformConfig.manualDevices.length > 0) {
|
|
111
|
-
this.log.debug('Filtering manualDevices to remove entries without a host');
|
|
112
|
-
platformConfig.manualDevices = platformConfig.manualDevices.filter((device) => {
|
|
113
|
-
if (typeof device === 'string') {
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
else if (!device.host) {
|
|
117
|
-
this.log.warn(`Removing manual device without host: ${JSON.stringify(device)}`);
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
85
|
+
platformConfig.manualDevices = platformConfig.manualDevices || [];
|
|
86
|
+
platformConfig.manualDevices = platformConfig.manualDevices.filter((device) => {
|
|
87
|
+
if (typeof device === 'string') {
|
|
120
88
|
return true;
|
|
121
|
-
}
|
|
122
|
-
|
|
89
|
+
}
|
|
90
|
+
else if (!device.host) {
|
|
91
|
+
this.log.warn(`Removing manual device without host: ${JSON.stringify(device)}`);
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
});
|
|
123
96
|
if (platformConfig.manualDevices.length > 0 &&
|
|
124
97
|
(typeof platformConfig.manualDevices[0] === 'string' ||
|
|
125
98
|
platformConfig.manualDevices.some((device) => typeof device !== 'string' && 'breakoutChildDevices' in device))) {
|
|
126
|
-
this.log.debug('Converting manualDevices');
|
|
127
99
|
platformConfig.manualDevices = this.convertManualDevices(platformConfig.manualDevices);
|
|
128
100
|
}
|
|
129
101
|
const processedDevices = {};
|
|
130
|
-
this.log.debug('Processing discovered devices');
|
|
131
102
|
Object.keys(devices).forEach(ip => {
|
|
132
103
|
const deviceInfo = devices[ip].sys_info;
|
|
133
104
|
const discoveryInfo = devices[ip].disc_info;
|
|
@@ -141,21 +112,16 @@ export default class DeviceManager {
|
|
|
141
112
|
};
|
|
142
113
|
this.processDevice(device, platformConfig);
|
|
143
114
|
processedDevices[ip] = device;
|
|
144
|
-
this.log.debug(`Processed device with IP: ${ip}`);
|
|
145
115
|
});
|
|
146
|
-
if (!platformConfig.manualDevices
|
|
147
|
-
this.log.debug('Removing manualDevices from config as it is empty or undefined');
|
|
116
|
+
if (!platformConfig.manualDevices.length) {
|
|
148
117
|
delete platformConfig.manualDevices;
|
|
149
118
|
}
|
|
150
|
-
this.log.debug('Writing updated config file');
|
|
151
119
|
await this.writeConfigFile(configPath, fileConfig);
|
|
152
|
-
this.log.debug('Config file written successfully');
|
|
153
120
|
this.platform.config = parseConfig(platformConfig);
|
|
154
|
-
this.log.debug('Platform config updated');
|
|
155
121
|
return processedDevices;
|
|
156
122
|
}
|
|
157
123
|
catch (error) {
|
|
158
|
-
this.
|
|
124
|
+
this.log.error(`An error occurred during device discovery: ${error}`);
|
|
159
125
|
return {};
|
|
160
126
|
}
|
|
161
127
|
}
|
|
@@ -167,18 +133,18 @@ export default class DeviceManager {
|
|
|
167
133
|
existingDevice.alias = device.sys_info.alias;
|
|
168
134
|
}
|
|
169
135
|
}
|
|
170
|
-
async getSysInfo(
|
|
136
|
+
async getSysInfo(deviceConfig) {
|
|
171
137
|
try {
|
|
172
|
-
const response = await axios.post(`${this.apiUrl}/getSysInfo`, { device_config:
|
|
138
|
+
const response = await axios.post(`${this.apiUrl}/getSysInfo`, { device_config: deviceConfig });
|
|
173
139
|
const sysInfo = response.data.sys_info;
|
|
174
140
|
this.updateDeviceAlias(sysInfo);
|
|
175
141
|
return sysInfo;
|
|
176
142
|
}
|
|
177
143
|
catch (error) {
|
|
178
|
-
this.
|
|
144
|
+
this.log.error(`An error occurred during getSysInfo: ${error}`);
|
|
179
145
|
}
|
|
180
146
|
}
|
|
181
|
-
async controlDevice(
|
|
147
|
+
async controlDevice(deviceConfig, feature, value, child_num) {
|
|
182
148
|
try {
|
|
183
149
|
let action;
|
|
184
150
|
switch (feature) {
|
|
@@ -196,16 +162,16 @@ export default class DeviceManager {
|
|
|
196
162
|
default:
|
|
197
163
|
throw new Error(`Unsupported feature: ${feature}`);
|
|
198
164
|
}
|
|
199
|
-
await this.performDeviceAction(
|
|
165
|
+
await this.performDeviceAction(deviceConfig, feature, action, value, child_num);
|
|
200
166
|
}
|
|
201
167
|
catch (error) {
|
|
202
|
-
this.
|
|
168
|
+
this.log.error(`An error occurred performing action: ${error}`);
|
|
203
169
|
}
|
|
204
170
|
}
|
|
205
|
-
async performDeviceAction(
|
|
171
|
+
async performDeviceAction(deviceConfig, feature, action, value, childNumber) {
|
|
206
172
|
const url = `${this.apiUrl}/controlDevice`;
|
|
207
173
|
const data = {
|
|
208
|
-
device_config:
|
|
174
|
+
device_config: deviceConfig,
|
|
209
175
|
feature,
|
|
210
176
|
action,
|
|
211
177
|
value,
|
|
@@ -218,17 +184,7 @@ export default class DeviceManager {
|
|
|
218
184
|
}
|
|
219
185
|
}
|
|
220
186
|
catch (error) {
|
|
221
|
-
this.
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
logError(message, error, child_num) {
|
|
225
|
-
this.log.error(`${message}: ${axios.isAxiosError(error) ? error.message : 'An unknown error occurred'}`);
|
|
226
|
-
if (axios.isAxiosError(error) && error.response) {
|
|
227
|
-
this.log.error(`Response status: ${error.response.status}`);
|
|
228
|
-
this.log.error(`Response data: ${JSON.stringify(error.response.data)}`);
|
|
229
|
-
}
|
|
230
|
-
if (child_num !== undefined) {
|
|
231
|
-
this.log.error(`Child number: ${child_num}`);
|
|
187
|
+
this.log.error(`Error performing action: ${error}`);
|
|
232
188
|
}
|
|
233
189
|
}
|
|
234
190
|
}
|
|
@@ -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 getSysInfo;
|
|
6
8
|
private hasBrightness;
|
|
7
9
|
private hasColorTemp;
|
|
8
10
|
private hasHSV;
|
|
11
|
+
private previousKasaDevice;
|
|
9
12
|
constructor(platform: KasaPythonPlatform, kasaDevice: LightBulb);
|
|
10
|
-
private
|
|
13
|
+
private checkService;
|
|
14
|
+
private checkCharacteristics;
|
|
15
|
+
private getOrAddCharacteristic;
|
|
16
|
+
private handleOnGet;
|
|
17
|
+
private getDefaultValue;
|
|
18
|
+
private handleOnSet;
|
|
19
|
+
protected updateState(): Promise<void>;
|
|
20
|
+
private startPolling;
|
|
11
21
|
identify(): void;
|
|
12
22
|
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import HomekitDevice from './index.js';
|
|
2
|
+
import { deferAndCombine } from '../utils.js';
|
|
2
3
|
export default class HomeKitDeviceLightBulb extends HomekitDevice {
|
|
3
4
|
kasaDevice;
|
|
5
|
+
isUpdating = false;
|
|
6
|
+
getSysInfo;
|
|
4
7
|
hasBrightness;
|
|
5
8
|
hasColorTemp;
|
|
6
9
|
hasHSV;
|
|
10
|
+
previousKasaDevice;
|
|
7
11
|
constructor(platform, kasaDevice) {
|
|
8
12
|
super(platform, kasaDevice, 5 /* Categories.LIGHTBULB */, 'LIGHTBULB');
|
|
9
13
|
this.kasaDevice = kasaDevice;
|
|
@@ -11,24 +15,154 @@ export default class HomeKitDeviceLightBulb extends HomekitDevice {
|
|
|
11
15
|
this.hasBrightness = !!this.kasaDevice.feature_info.brightness;
|
|
12
16
|
this.hasColorTemp = !!this.kasaDevice.feature_info.color_temp;
|
|
13
17
|
this.hasHSV = !!this.kasaDevice.feature_info.hsv;
|
|
14
|
-
this.
|
|
18
|
+
this.checkService();
|
|
19
|
+
this.getSysInfo = deferAndCombine(async () => {
|
|
20
|
+
if (this.deviceManager) {
|
|
21
|
+
this.previousKasaDevice = JSON.parse(JSON.stringify(this.kasaDevice));
|
|
22
|
+
this.kasaDevice.sys_info = await this.deviceManager.getSysInfo(this.deviceConfig);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.log.warn('Device manager is not available');
|
|
26
|
+
}
|
|
27
|
+
}, platform.config.waitTimeUpdate);
|
|
28
|
+
this.startPolling();
|
|
15
29
|
}
|
|
16
|
-
|
|
30
|
+
checkService() {
|
|
17
31
|
const { Lightbulb } = this.platform.Service;
|
|
18
|
-
const
|
|
19
|
-
this.
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
const service = this.homebridgeAccessory.getService(Lightbulb) ?? this.addService(Lightbulb, this.name);
|
|
33
|
+
this.checkCharacteristics(service);
|
|
34
|
+
return service;
|
|
35
|
+
}
|
|
36
|
+
checkCharacteristics(service) {
|
|
37
|
+
const characteristics = [
|
|
38
|
+
{
|
|
39
|
+
type: this.platform.Characteristic.On,
|
|
40
|
+
name: this.platform.getCharacteristicName(this.platform.Characteristic.On),
|
|
41
|
+
},
|
|
42
|
+
this.hasBrightness && {
|
|
43
|
+
type: this.platform.Characteristic.Brightness,
|
|
44
|
+
name: this.platform.getCharacteristicName(this.platform.Characteristic.Brightness),
|
|
45
|
+
},
|
|
46
|
+
this.hasColorTemp && {
|
|
47
|
+
type: this.platform.Characteristic.ColorTemperature,
|
|
48
|
+
name: this.platform.getCharacteristicName(this.platform.Characteristic.ColorTemperature),
|
|
49
|
+
},
|
|
50
|
+
this.hasHSV && {
|
|
51
|
+
type: this.platform.Characteristic.Hue,
|
|
52
|
+
name: this.platform.getCharacteristicName(this.platform.Characteristic.Hue),
|
|
53
|
+
},
|
|
54
|
+
this.hasHSV && {
|
|
55
|
+
type: this.platform.Characteristic.Saturation,
|
|
56
|
+
name: this.platform.getCharacteristicName(this.platform.Characteristic.Saturation),
|
|
57
|
+
},
|
|
58
|
+
].filter(Boolean);
|
|
59
|
+
characteristics.forEach(({ type, name }) => {
|
|
60
|
+
this.getOrAddCharacteristic(service, type, name);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
getOrAddCharacteristic(service, characteristicType, characteristicName) {
|
|
64
|
+
const characteristic = service.getCharacteristic(characteristicType) ??
|
|
65
|
+
service.addCharacteristic(characteristicType);
|
|
66
|
+
characteristic.onGet(this.handleOnGet.bind(this, service, characteristicType, characteristicName));
|
|
67
|
+
characteristic.onSet(this.handleOnSet.bind(this, service, characteristicType, characteristicName));
|
|
68
|
+
return characteristic;
|
|
69
|
+
}
|
|
70
|
+
async handleOnGet(service, characteristicType, characteristicName) {
|
|
71
|
+
try {
|
|
72
|
+
const characteristicValue = service.getCharacteristic(characteristicType).value;
|
|
73
|
+
return characteristicValue ?? this.getDefaultValue(characteristicType);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
this.log.error(`Error getting current value for characteristic ${characteristicName} for device: ${this.name}:`, error);
|
|
22
77
|
}
|
|
23
|
-
|
|
24
|
-
|
|
78
|
+
return this.getDefaultValue(characteristicType);
|
|
79
|
+
}
|
|
80
|
+
getDefaultValue(characteristicType) {
|
|
81
|
+
const zeroValueCharacteristics = [
|
|
82
|
+
this.platform.Characteristic.Brightness,
|
|
83
|
+
this.platform.Characteristic.ColorTemperature,
|
|
84
|
+
this.platform.Characteristic.Hue,
|
|
85
|
+
this.platform.Characteristic.Saturation,
|
|
86
|
+
];
|
|
87
|
+
if (zeroValueCharacteristics.includes(characteristicType)) {
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
async handleOnSet(service, characteristicType, characteristicName, value) {
|
|
93
|
+
if (this.deviceManager) {
|
|
94
|
+
try {
|
|
95
|
+
this.isUpdating = true;
|
|
96
|
+
const characteristicMap = {
|
|
97
|
+
Brightness: 'brightness',
|
|
98
|
+
On: 'state',
|
|
99
|
+
ColorTemperature: 'color_temp',
|
|
100
|
+
Hue: 'hue',
|
|
101
|
+
Saturation: 'saturation',
|
|
102
|
+
};
|
|
103
|
+
const characteristicKey = characteristicMap[characteristicName ?? ''];
|
|
104
|
+
if (!characteristicKey) {
|
|
105
|
+
throw new Error(`Characteristic key not found for ${characteristicName}`);
|
|
106
|
+
}
|
|
107
|
+
await this.deviceManager.controlDevice(this.deviceConfig, characteristicKey, value);
|
|
108
|
+
this.kasaDevice.sys_info[characteristicKey] = value;
|
|
109
|
+
this.updateValue(service, service.getCharacteristic(characteristicType), this.name, value);
|
|
110
|
+
this.previousKasaDevice = JSON.parse(JSON.stringify(this.kasaDevice));
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
this.logRejection(error);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
this.isUpdating = false;
|
|
117
|
+
}
|
|
25
118
|
}
|
|
26
|
-
else
|
|
27
|
-
|
|
28
|
-
this.addCharacteristic(lightbulbService, this.platform.Characteristic.Saturation);
|
|
119
|
+
else {
|
|
120
|
+
throw new Error('Device manager is undefined.');
|
|
29
121
|
}
|
|
30
|
-
|
|
31
|
-
|
|
122
|
+
}
|
|
123
|
+
async updateState() {
|
|
124
|
+
if (this.isUpdating) {
|
|
125
|
+
this.log.debug('Update already in progress, skipping updateState');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
this.isUpdating = true;
|
|
129
|
+
try {
|
|
130
|
+
await this.getSysInfo();
|
|
131
|
+
const service = this.homebridgeAccessory.getService(this.platform.Service.Lightbulb);
|
|
132
|
+
if (service && this.previousKasaDevice) {
|
|
133
|
+
const { state, brightness, color_temp, hsv } = this.kasaDevice.sys_info;
|
|
134
|
+
const prevState = this.previousKasaDevice.sys_info;
|
|
135
|
+
if (prevState.state !== state) {
|
|
136
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.On), this.name, state ?? false);
|
|
137
|
+
}
|
|
138
|
+
if (this.hasBrightness && prevState.brightness !== brightness) {
|
|
139
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.Brightness), this.name, brightness ?? 0);
|
|
140
|
+
}
|
|
141
|
+
if (this.hasColorTemp && prevState.color_temp !== color_temp) {
|
|
142
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.ColorTemperature), this.name, color_temp ?? 0);
|
|
143
|
+
}
|
|
144
|
+
if (this.hasHSV) {
|
|
145
|
+
if (prevState.hsv?.hue !== hsv?.hue) {
|
|
146
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.Hue), this.name, hsv?.hue ?? 0);
|
|
147
|
+
}
|
|
148
|
+
if (prevState.hsv?.saturation !== hsv?.saturation) {
|
|
149
|
+
this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.Saturation), this.name, hsv?.saturation ?? 0);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.log.warn(`Service not found for device: ${this.name} or previous Kasa device is undefined`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
this.log.error('Error updating device state:', error);
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
this.isUpdating = false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
startPolling() {
|
|
165
|
+
setInterval(this.updateState.bind(this), this.platform.config.discoveryOptions.pollingInterval);
|
|
32
166
|
}
|
|
33
167
|
identify() {
|
|
34
168
|
this.log.info('identify');
|
|
@@ -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
|
-
private
|
|
10
|
+
private checkService;
|
|
11
|
+
private checkCharacteristics;
|
|
12
|
+
private getOrAddCharacteristic;
|
|
13
|
+
private handleOnGet;
|
|
14
|
+
private handleOnSet;
|
|
15
|
+
protected updateState(): Promise<void>;
|
|
16
|
+
private startPolling;
|
|
8
17
|
identify(): void;
|
|
9
18
|
}
|