homebridge-kasa-python 2.7.0-beta.9 → 2.7.0

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.
Files changed (49) hide show
  1. package/README.md +343 -562
  2. package/config.schema.json +23 -1
  3. package/dist/accessoryInformation.js +28 -13
  4. package/dist/accessoryInformation.js.map +1 -1
  5. package/dist/config.d.ts +6 -0
  6. package/dist/config.js +25 -26
  7. package/dist/config.js.map +1 -1
  8. package/dist/devices/create.js +15 -9
  9. package/dist/devices/create.js.map +1 -1
  10. package/dist/devices/deviceManager.d.ts +5 -3
  11. package/dist/devices/deviceManager.js +32 -66
  12. package/dist/devices/deviceManager.js.map +1 -1
  13. package/dist/devices/homekitLightBulb.d.ts +11 -1
  14. package/dist/devices/homekitLightBulb.js +219 -119
  15. package/dist/devices/homekitLightBulb.js.map +1 -1
  16. package/dist/devices/homekitPlug.d.ts +10 -0
  17. package/dist/devices/homekitPlug.js +181 -82
  18. package/dist/devices/homekitPlug.js.map +1 -1
  19. package/dist/devices/homekitPowerStrip.d.ts +10 -0
  20. package/dist/devices/homekitPowerStrip.js +196 -93
  21. package/dist/devices/homekitPowerStrip.js.map +1 -1
  22. package/dist/devices/homekitSwitch.d.ts +11 -1
  23. package/dist/devices/homekitSwitch.js +188 -92
  24. package/dist/devices/homekitSwitch.js.map +1 -1
  25. package/dist/devices/homekitSwitchWithChildren.d.ts +34 -0
  26. package/dist/devices/homekitSwitchWithChildren.js +365 -0
  27. package/dist/devices/homekitSwitchWithChildren.js.map +1 -0
  28. package/dist/devices/index.d.ts +5 -6
  29. package/dist/devices/index.js +18 -17
  30. package/dist/devices/index.js.map +1 -1
  31. package/dist/devices/kasaDevices.d.ts +4 -11
  32. package/dist/devices/kasaDevices.js +83 -95
  33. package/dist/devices/kasaDevices.js.map +1 -1
  34. package/dist/platform.d.ts +8 -4
  35. package/dist/platform.js +73 -44
  36. package/dist/platform.js.map +1 -1
  37. package/dist/python/kasaApi.py +349 -171
  38. package/dist/python/pythonChecker.d.ts +6 -4
  39. package/dist/python/pythonChecker.js +53 -20
  40. package/dist/python/pythonChecker.js.map +1 -1
  41. package/dist/python/startKasaApi.py +25 -0
  42. package/dist/taskQueue.d.ts +11 -0
  43. package/dist/taskQueue.js +44 -0
  44. package/dist/taskQueue.js.map +1 -0
  45. package/dist/utils.d.ts +1 -1
  46. package/dist/utils.js +8 -4
  47. package/dist/utils.js.map +1 -1
  48. package/package.json +14 -15
  49. package/requirements.txt +3 -3
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from 'node:events';
1
2
  import HomeKitDevice from './index.js';
2
3
  import { deferAndCombine } from '../utils.js';
3
4
  export default class HomeKitDevicePlug extends HomeKitDevice {
@@ -6,6 +7,8 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
6
7
  previousKasaDevice;
7
8
  getSysInfo;
8
9
  pollingInterval;
10
+ updateEmitter = new EventEmitter();
11
+ static locks = new Map();
9
12
  constructor(platform, kasaDevice) {
10
13
  super(platform, kasaDevice, 7 /* Categories.OUTLET */, 'OUTLET');
11
14
  this.kasaDevice = kasaDevice;
@@ -14,7 +17,7 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
14
17
  this.getSysInfo = deferAndCombine(async () => {
15
18
  if (this.deviceManager) {
16
19
  this.previousKasaDevice = JSON.parse(JSON.stringify(this.kasaDevice));
17
- this.kasaDevice.sys_info = await this.deviceManager.getSysInfo(this.deviceConfig);
20
+ this.kasaDevice.sys_info = await this.deviceManager.getSysInfo(this.kasaDevice.sys_info.host);
18
21
  this.log.debug(`Updated sys_info for device: ${this.kasaDevice.sys_info.alias}`);
19
22
  }
20
23
  else {
@@ -22,28 +25,54 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
22
25
  }
23
26
  }, platform.config.advancedOptions.waitTimeUpdate);
24
27
  this.startPolling();
28
+ platform.periodicDeviceDiscoveryEmitter.on('periodicDeviceDiscoveryComplete', () => {
29
+ this.updateEmitter.emit('periodicDeviceDiscoveryComplete');
30
+ });
31
+ }
32
+ async withLock(key, action) {
33
+ let lock = HomeKitDevicePlug.locks.get(key);
34
+ if (!lock) {
35
+ lock = Promise.resolve();
36
+ }
37
+ const currentLock = lock.then(async () => {
38
+ try {
39
+ return await action();
40
+ }
41
+ finally {
42
+ if (HomeKitDevicePlug.locks.get(key) === currentLock) {
43
+ HomeKitDevicePlug.locks.delete(key);
44
+ }
45
+ }
46
+ });
47
+ HomeKitDevicePlug.locks.set(key, currentLock.then(() => { }));
48
+ return currentLock;
25
49
  }
26
50
  checkService() {
27
- const { Outlet } = this.platform.Service;
28
- const service = this.homebridgeAccessory.getService(Outlet) ?? this.addService(Outlet, this.name);
51
+ const serviceType = this.getServiceType();
52
+ const service = this.homebridgeAccessory.getService(serviceType) ?? this.addService(serviceType, this.name);
29
53
  this.checkCharacteristics(service);
30
- return service;
54
+ }
55
+ getServiceType() {
56
+ const { Outlet } = this.platform.Service;
57
+ return Outlet;
31
58
  }
32
59
  checkCharacteristics(service) {
33
- const characteristics = [
34
- {
35
- type: this.platform.Characteristic.On,
36
- name: this.platform.getCharacteristicName(this.platform.Characteristic.On),
37
- },
38
- {
39
- type: this.platform.Characteristic.OutletInUse,
40
- name: this.platform.getCharacteristicName(this.platform.Characteristic.OutletInUse),
41
- },
42
- ].filter(Boolean);
60
+ const characteristics = this.getCharacteristics();
43
61
  characteristics.forEach(({ type, name }) => {
44
62
  this.getOrAddCharacteristic(service, type, name);
45
63
  });
46
64
  }
65
+ getCharacteristics() {
66
+ const characteristics = [];
67
+ characteristics.push({
68
+ type: this.platform.Characteristic.On,
69
+ name: this.platform.getCharacteristicName(this.platform.Characteristic.On),
70
+ }, {
71
+ type: this.platform.Characteristic.OutletInUse,
72
+ name: this.platform.getCharacteristicName(this.platform.Characteristic.OutletInUse),
73
+ });
74
+ return characteristics;
75
+ }
47
76
  getOrAddCharacteristic(service, characteristicType, characteristicName) {
48
77
  const characteristic = service.getCharacteristic(characteristicType) ??
49
78
  service.addCharacteristic(characteristicType);
@@ -51,14 +80,13 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
51
80
  if (characteristicType === this.platform.Characteristic.On) {
52
81
  characteristic.onSet(this.handleOnSet.bind(this, service, characteristicType, characteristicName));
53
82
  }
54
- return service;
55
83
  }
56
84
  async handleOnGet(service, characteristicType, characteristicName) {
85
+ if (this.kasaDevice.offline || this.platform.isShuttingDown) {
86
+ this.log.warn(`Device is offline or platform is shutting down, cannot get value for characteristic ${characteristicName}`);
87
+ return false;
88
+ }
57
89
  try {
58
- if (this.kasaDevice.offline || this.platform.isShuttingDown) {
59
- this.log.warn(`Device is offline or platform is shutting down, cannot set value for characteristic ${characteristicName}`);
60
- return false;
61
- }
62
90
  let characteristicValue = service.getCharacteristic(characteristicType).value;
63
91
  if (!characteristicValue) {
64
92
  characteristicValue = this.getInitialValue(characteristicType);
@@ -71,8 +99,8 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
71
99
  this.log.error(`Error getting current value for characteristic ${characteristicName} for device: ${this.name}:`, error);
72
100
  this.kasaDevice.offline = true;
73
101
  this.stopPolling();
102
+ return false;
74
103
  }
75
- return false;
76
104
  }
77
105
  getInitialValue(characteristicType) {
78
106
  if (characteristicType === this.platform.Characteristic.On || characteristicType === this.platform.Characteristic.OutletInUse) {
@@ -81,79 +109,149 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
81
109
  return false;
82
110
  }
83
111
  async handleOnSet(service, characteristicType, characteristicName, value) {
84
- if (this.kasaDevice.offline || this.platform.isShuttingDown) {
85
- this.log.warn(`Device is offline or platform is shutting down, cannot set value for characteristic ${characteristicName}`);
86
- return;
87
- }
88
- if (this.deviceManager) {
89
- try {
90
- this.isUpdating = true;
91
- this.log.debug(`Setting value for characteristic ${characteristicName} to ${value}`);
92
- const characteristicMap = {
93
- On: 'state',
94
- };
95
- const characteristicKey = characteristicMap[characteristicName ?? ''];
96
- if (!characteristicKey) {
97
- throw new Error(`Characteristic key not found for ${characteristicName}`);
98
- }
99
- await this.deviceManager.controlDevice(this.deviceConfig, characteristicKey, value);
100
- this.kasaDevice.sys_info[characteristicKey] = value;
101
- this.updateValue(service, service.getCharacteristic(characteristicType), this.name, value);
102
- this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), this.name, value);
103
- this.previousKasaDevice = JSON.parse(JSON.stringify(this.kasaDevice));
104
- this.log.debug(`Set value for characteristic ${characteristicName} to ${value} successfully`);
112
+ const lockKey = `${this.kasaDevice.sys_info.device_id}`;
113
+ await this.withLock(lockKey, async () => {
114
+ if (this.kasaDevice.offline || this.platform.isShuttingDown) {
115
+ this.log.warn(`Device is offline or platform is shutting down, cannot set value for characteristic ${characteristicName}`);
116
+ return;
117
+ }
118
+ if (this.isUpdating || this.platform.periodicDeviceDiscovering) {
119
+ await Promise.race([
120
+ new Promise((resolve) => this.updateEmitter.once('updateComplete', resolve)),
121
+ new Promise((resolve) => this.updateEmitter.once('periodicDeviceDiscoveryComplete', resolve)),
122
+ ]);
105
123
  }
106
- catch (error) {
107
- this.log.error(`Error setting current value for characteristic ${characteristicName} for device: ${this.name}:`, error);
108
- this.kasaDevice.offline = true;
124
+ const task = async () => {
125
+ if (this.deviceManager) {
126
+ try {
127
+ this.isUpdating = true;
128
+ this.log.debug(`Setting value for characteristic ${characteristicName} to ${value}`);
129
+ const characteristicKey = this.getCharacteristicKey(characteristicName);
130
+ if (!characteristicKey) {
131
+ throw new Error(`Characteristic key not found for ${characteristicName}`);
132
+ }
133
+ await this.deviceManager.controlDevice(this.kasaDevice.sys_info.host, characteristicKey, value);
134
+ this.kasaDevice.sys_info[characteristicKey] = value;
135
+ this.updateValue(service, service.getCharacteristic(characteristicType), this.name, value);
136
+ this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), this.name, value);
137
+ this.previousKasaDevice = JSON.parse(JSON.stringify(this.kasaDevice));
138
+ this.log.debug(`Set value for characteristic ${characteristicName} to ${value} successfully`);
139
+ }
140
+ catch (error) {
141
+ this.log.error(`Error setting current value for characteristic ${characteristicName} for device: ${this.name}:`, error);
142
+ this.kasaDevice.offline = true;
143
+ this.stopPolling();
144
+ }
145
+ finally {
146
+ this.isUpdating = false;
147
+ this.updateEmitter.emit('updateComplete');
148
+ }
149
+ }
150
+ else {
151
+ throw new Error('Device manager is undefined.');
152
+ }
153
+ };
154
+ await task();
155
+ });
156
+ }
157
+ getCharacteristicKey(characteristicName) {
158
+ const characteristicMap = {
159
+ On: 'state',
160
+ };
161
+ return characteristicMap[characteristicName ?? ''];
162
+ }
163
+ async updateState() {
164
+ const lockKey = `${this.kasaDevice.sys_info.device_id}`;
165
+ await this.withLock(lockKey, async () => {
166
+ if (this.kasaDevice.offline || this.platform.isShuttingDown) {
109
167
  this.stopPolling();
168
+ return;
110
169
  }
111
- finally {
112
- this.isUpdating = false;
170
+ if (this.isUpdating || this.platform.periodicDeviceDiscovering) {
171
+ let periodicDiscoveryComplete = false;
172
+ await Promise.race([
173
+ new Promise((resolve) => this.updateEmitter.once('updateComplete', resolve)),
174
+ new Promise((resolve) => {
175
+ this.updateEmitter.once('periodicDeviceDiscoveryComplete', () => {
176
+ periodicDiscoveryComplete = true;
177
+ resolve();
178
+ });
179
+ }),
180
+ ]);
181
+ if (periodicDiscoveryComplete) {
182
+ if (this.pollingInterval) {
183
+ await new Promise((resolve) => setTimeout(resolve, this.platform.config.discoveryOptions.pollingInterval));
184
+ }
185
+ else {
186
+ return;
187
+ }
188
+ }
189
+ }
190
+ this.isUpdating = true;
191
+ const task = async () => {
192
+ try {
193
+ await this.getSysInfo();
194
+ const service = this.getService();
195
+ if (service && this.previousKasaDevice) {
196
+ this.updateDeviceState(service);
197
+ }
198
+ else {
199
+ this.log.warn(`Service not found for device: ${this.name} or previous Kasa device is undefined`);
200
+ }
201
+ }
202
+ catch (error) {
203
+ this.log.error('Error updating device state:', error);
204
+ this.kasaDevice.offline = true;
205
+ this.stopPolling();
206
+ }
207
+ finally {
208
+ this.isUpdating = false;
209
+ this.updateEmitter.emit('updateComplete');
210
+ }
211
+ };
212
+ await task();
213
+ });
214
+ }
215
+ getService() {
216
+ return this.homebridgeAccessory.getService(this.platform.Service.Outlet);
217
+ ;
218
+ }
219
+ updateDeviceState(service) {
220
+ const previousKasaDevice = this.previousKasaDevice;
221
+ if (previousKasaDevice) {
222
+ if (previousKasaDevice.sys_info.state !== this.kasaDevice.sys_info.state) {
223
+ this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.On), this.name, this.kasaDevice.sys_info.state ?? false);
224
+ this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), this.name, this.kasaDevice.sys_info.state ?? false);
225
+ this.log.debug(`Updated state for child device: ${this.name} to ${this.kasaDevice.sys_info.state}`);
113
226
  }
114
- }
115
- else {
116
- throw new Error('Device manager is undefined.');
117
227
  }
118
228
  }
119
- async updateState() {
120
- if (this.kasaDevice.offline || this.platform.isShuttingDown) {
121
- this.stopPolling();
122
- return;
229
+ updateAfterPeriodicDiscovery() {
230
+ const serviceType = this.getServiceType();
231
+ const service = this.homebridgeAccessory.getService(serviceType);
232
+ if (service) {
233
+ this.updateCharacteristics(service);
123
234
  }
124
- if (this.isUpdating || this.platform.periodicDeviceDiscovering) {
125
- return;
235
+ else {
236
+ this.log.debug(`Service not found for device: ${this.name}`);
126
237
  }
127
- this.isUpdating = true;
128
- const task = (async () => {
129
- try {
130
- await this.getSysInfo();
131
- const service = this.homebridgeAccessory.getService(this.platform.Service.Outlet);
132
- if (service && this.previousKasaDevice) {
133
- const { state } = 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
- this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), this.name, state ?? false);
138
- this.log.debug(`Updated state for device: ${this.name} to ${state}`);
238
+ }
239
+ updateCharacteristics(service) {
240
+ const characteristics = this.getCharacteristics();
241
+ characteristics.forEach(({ type, name }) => {
242
+ if (type === this.platform.Characteristic.On) {
243
+ const characteristic = service.getCharacteristic(type);
244
+ if (characteristic) {
245
+ const characteristicKey = this.getCharacteristicKey(name);
246
+ if (this.kasaDevice.sys_info[characteristicKey] !== undefined) {
247
+ const value = this.kasaDevice.sys_info[characteristicKey];
248
+ this.log.debug(`Setting value for characteristic ${name} to ${value}`);
249
+ this.updateValue(service, characteristic, this.name, value);
250
+ this.updateValue(service, service.getCharacteristic(this.platform.Characteristic.OutletInUse), this.name, value);
139
251
  }
140
252
  }
141
- else {
142
- this.log.warn(`Service not found for device: ${this.name} or previous Kasa device is undefined`);
143
- }
144
253
  }
145
- catch (error) {
146
- this.log.error('Error updating device state:', error);
147
- this.kasaDevice.offline = true;
148
- this.stopPolling();
149
- }
150
- finally {
151
- this.isUpdating = false;
152
- }
153
- })();
154
- this.platform.ongoingTasks.push(task);
155
- await task;
156
- this.platform.ongoingTasks = this.platform.ongoingTasks.filter(t => t !== task);
254
+ });
157
255
  }
158
256
  startPolling() {
159
257
  if (this.kasaDevice.offline || this.platform.isShuttingDown) {
@@ -168,6 +266,7 @@ export default class HomeKitDevicePlug extends HomeKitDevice {
168
266
  if (this.kasaDevice.offline || this.platform.isShuttingDown) {
169
267
  if (this.isUpdating) {
170
268
  this.isUpdating = false;
269
+ this.updateEmitter.emit('updateComplete');
171
270
  }
172
271
  this.stopPolling();
173
272
  }
@@ -1 +1 @@
1
- {"version":3,"file":"homekitPlug.js","sourceRoot":"","sources":["../../src/devices/homekitPlug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"homekitPlug.js","sourceRoot":"","sources":["../../src/devices/homekitPlug.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,aAAa,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAUjD;IATF,UAAU,GAAY,KAAK,CAAC;IAC3B,kBAAkB,CAAyB;IAC3C,UAAU,CAAsB;IAChC,eAAe,CAA6B;IAC5C,aAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;IACjD,MAAM,CAAC,KAAK,GAA+B,IAAI,GAAG,EAAE,CAAC;IAE7D,YACE,QAA4B,EACrB,UAAgB;QAEvB,KAAK,CACH,QAAQ,EACR,UAAU,6BAEV,QAAQ,CACT,CAAC;QAPK,eAAU,GAAV,UAAU,CAAM;QAQvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAY,CAAC;gBACzG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACjF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAI,GAAW,EAAE,MAAwB;QAC7D,IAAI,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC;gBACH,OAAO,MAAM,MAAM,EAAE,CAAC;YACxB,CAAC;oBAAS,CAAC;gBACT,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC;oBACrD,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,YAAY;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,OAAO,GACX,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,cAAc;QACpB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,oBAAoB,CAAC,OAAgB;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;YACzC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,MAAM,eAAe,GAA6E,EAAE,CAAC;QACrG,eAAe,CAAC,IAAI,CAClB;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACrC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;SAC3E,EACD;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW;YAC9C,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;SACpF,CACF,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,sBAAsB,CAC5B,OAAgB,EAChB,kBAAsD,EACtD,kBAAsC;QAEtC,MAAM,cAAc,GAAmB,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;YAClF,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QAChD,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACnG,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,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAgB,EAChB,kBAAsD,EACtD,kBAAsC;QAEtC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uFAAuF,kBAAkB,EAAE,CAAC,CAAC;YAC3H,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,IAAI,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC;YAC9E,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;gBAC/D,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,kBAAkB,KAAK,mBAAmB,EAAE,CAAC,CAAC;YAC7F,OAAO,mBAAmB,IAAI,KAAK,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,kBAAkB,gBAAgB,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACxH,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,kBAAsD;QAC5E,IAAI,kBAAkB,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,kBAAkB,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAC9H,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAgB,EAChB,kBAAsD,EACtD,kBAAsC,EACtC,KAA0B;QAE1B,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACtC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uFAAuF,kBAAkB,EAAE,CAAC,CAAC;gBAC3H,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC;gBAC/D,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;oBAClF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;iBACpG,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;gBACtB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;wBACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,kBAAkB,OAAO,KAAK,EAAE,CAAC,CAAC;wBACrF,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;wBACxE,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,kBAAkB,EAAE,CAAC,CAAC;wBAC5E,CAAC;wBACD,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;wBAC/F,IAAI,CAAC,UAAU,CAAC,QAAgD,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;wBAC7F,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC3F,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBACjH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACtE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,kBAAkB,OAAO,KAAK,eAAe,CAAC,CAAC;oBAChG,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,kBAAkB,gBAAgB,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;wBACxH,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,CAAC;4BAAS,CAAC;wBACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;wBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC;YACF,MAAM,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,kBAAsC;QACjE,MAAM,iBAAiB,GAA8B;YACnD,EAAE,EAAE,OAAO;SACZ,CAAC;QACF,OAAO,iBAAiB,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACtC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC;gBAC/D,IAAI,yBAAyB,GAAG,KAAK,CAAC;gBACtC,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;oBAClF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;4BAC9D,yBAAyB,GAAG,IAAI,CAAC;4BACjC,OAAO,EAAE,CAAC;wBACZ,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC;iBACH,CAAC,CAAC;gBACH,IAAI,yBAAyB,EAAE,CAAC;oBAC9B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;wBACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;oBAC7G,CAAC;yBAAM,CAAC;wBACN,OAAO;oBACT,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,IAAI,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBACvC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,IAAI,uCAAuC,CAAC,CAAC;oBACnG,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;oBACtD,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC;YACF,MAAM,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAAA,CAAC;IAC5E,CAAC;IAEO,iBAAiB,CAAC,OAAgB;QACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnD,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACzE,IAAI,CAAC,WAAW,CACd,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CACxH,CAAC;gBACF,IAAI,CAAC,WAAW,CACd,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CACjI,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAEM,4BAA4B;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAwB,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACtF,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,OAAgB;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;YACzC,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,cAAc,GAAmB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAkC,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAkC,CAAmC,CAAC;wBAC7G,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC;wBACvE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACnH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,YAAY;QACjB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,CAAC;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC"}
@@ -7,14 +7,24 @@ export default class HomeKitDevicePowerStrip extends HomeKitDevice {
7
7
  private previousKasaDevice;
8
8
  private getSysInfo;
9
9
  private pollingInterval;
10
+ private updateEmitter;
11
+ private static locks;
10
12
  constructor(platform: KasaPythonPlatform, kasaDevice: PowerStrip);
13
+ private withLock;
11
14
  private checkService;
15
+ private getServiceType;
12
16
  private checkCharacteristics;
17
+ private getCharacteristics;
13
18
  private getOrAddCharacteristic;
14
19
  private handleOnGet;
15
20
  private getInitialValue;
16
21
  private handleOnSet;
22
+ private getCharacteristicKey;
17
23
  protected updateState(): Promise<void>;
24
+ private getService;
25
+ private updateChildState;
26
+ updateAfterPeriodicDiscovery(): void;
27
+ private updateCharacteristics;
18
28
  startPolling(): void;
19
29
  stopPolling(): void;
20
30
  identify(): void;