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 CHANGED
@@ -64,7 +64,7 @@ function convertManualDevices(manualDevices) {
64
64
  if (!manualDevices || manualDevices.length === 0) {
65
65
  return [];
66
66
  }
67
- const convertedDevices = manualDevices.map(device => {
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' });
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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(device: HomekitDevice): Promise<SysInfo | undefined>;
22
- controlDevice(device: HomekitDevice, feature: string, value: CharacteristicValue, child_num?: number): Promise<void>;
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
- if ('sys_info' in device) {
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.logError('Error reading config file', error);
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.logError('Error writing config file', error);
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
- this.log.debug('KasaPython configuration found in config file');
106
- if (!platformConfig.manualDevices) {
107
- this.log.debug('Initializing manualDevices as an empty array');
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 || platformConfig.manualDevices.length === 0) {
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.logError('An error occurred during device discovery', error);
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(device) {
136
+ async getSysInfo(deviceConfig) {
171
137
  try {
172
- const response = await axios.post(`${this.apiUrl}/getSysInfo`, { device_config: device.deviceConfig });
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.logError('An error occurred during getSysInfo', error);
144
+ this.log.error(`An error occurred during getSysInfo: ${error}`);
179
145
  }
180
146
  }
181
- async controlDevice(device, feature, value, child_num) {
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(device, feature, action, value, child_num);
165
+ await this.performDeviceAction(deviceConfig, feature, action, value, child_num);
200
166
  }
201
167
  catch (error) {
202
- this.logError(`An error occurred performing action ${feature} with value ${value} for device ${device.name}`, error, child_num);
168
+ this.log.error(`An error occurred performing action: ${error}`);
203
169
  }
204
170
  }
205
- async performDeviceAction(device, feature, action, value, childNumber) {
171
+ async performDeviceAction(deviceConfig, feature, action, value, childNumber) {
206
172
  const url = `${this.apiUrl}/controlDevice`;
207
173
  const data = {
208
- device_config: device.deviceConfig,
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.logError('Error performing action', error);
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":"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"}
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 addLightBulbService;
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.addLightBulbService();
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
- addLightBulbService() {
30
+ checkService() {
17
31
  const { Lightbulb } = this.platform.Service;
18
- const lightbulbService = this.homebridgeAccessory.getService(Lightbulb) ?? this.addService(Lightbulb, this.name);
19
- this.log.debug(`Adding characteristics for lightbulb service: ${this.name}`);
20
- if (this.hasBrightness) {
21
- this.addCharacteristic(lightbulbService, this.platform.Characteristic.Brightness);
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
- else if (this.hasColorTemp) {
24
- this.addCharacteristic(lightbulbService, this.platform.Characteristic.ColorTemperature);
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 if (this.hasHSV) {
27
- this.addCharacteristic(lightbulbService, this.platform.Characteristic.Hue);
28
- this.addCharacteristic(lightbulbService, this.platform.Characteristic.Saturation);
119
+ else {
120
+ throw new Error('Device manager is undefined.');
29
121
  }
30
- this.addCharacteristic(lightbulbService, this.platform.Characteristic.On);
31
- return lightbulbService;
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;AAIvC,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,aAAa;IAOnD;IANJ,aAAa,CAAU;IACvB,YAAY,CAAU;IACtB,MAAM,CAAU;IAExB,YACE,QAA4B,EAClB,UAAqB;QAE/B,KAAK,CACH,QAAQ,EACR,UAAU,gCAEV,WAAW,CACZ,CAAC;QAPQ,eAAU,GAAV,UAAU,CAAW;QAQ/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC;QACjD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAE5C,MAAM,gBAAgB,GACpB,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iDAAiD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,CAAC;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAE1E,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;CACF"}
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 addOutletService;
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
  }