homebridge-kasa-python 1.0.2 → 2.0.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 (45) hide show
  1. package/README.md +21 -6
  2. package/config.schema.json +2 -33
  3. package/dist/accessoryInformation.d.ts +1 -1
  4. package/dist/accessoryInformation.js +14 -18
  5. package/dist/accessoryInformation.js.map +1 -1
  6. package/dist/categoriesParse.d.ts +8 -0
  7. package/dist/categoriesParse.js +44 -0
  8. package/dist/categoriesParse.js.map +1 -0
  9. package/dist/config.d.ts +12 -155
  10. package/dist/config.js +52 -100
  11. package/dist/config.js.map +1 -1
  12. package/dist/devices/create.d.ts +3 -9
  13. package/dist/devices/create.js +6 -7
  14. package/dist/devices/create.js.map +1 -1
  15. package/dist/devices/deviceManager.d.ts +6 -8
  16. package/dist/devices/deviceManager.js +47 -126
  17. package/dist/devices/deviceManager.js.map +1 -1
  18. package/dist/devices/homekitPlug.d.ts +10 -16
  19. package/dist/devices/homekitPlug.js +93 -74
  20. package/dist/devices/homekitPlug.js.map +1 -1
  21. package/dist/devices/homekitPowerstrip.d.ts +11 -17
  22. package/dist/devices/homekitPowerstrip.js +106 -73
  23. package/dist/devices/homekitPowerstrip.js.map +1 -1
  24. package/dist/devices/index.d.ts +12 -19
  25. package/dist/devices/index.js +44 -71
  26. package/dist/devices/index.js.map +1 -1
  27. package/dist/devices/kasaDevices.d.ts +4 -5
  28. package/dist/platform.d.ts +22 -29
  29. package/dist/platform.js +127 -131
  30. package/dist/platform.js.map +1 -1
  31. package/dist/python/kasaApi.py +109 -0
  32. package/dist/python/pythonChecker.d.ts +2 -2
  33. package/dist/python/pythonChecker.js +24 -89
  34. package/dist/python/pythonChecker.js.map +1 -1
  35. package/dist/utils.d.ts +3 -18
  36. package/dist/utils.js +72 -116
  37. package/dist/utils.js.map +1 -1
  38. package/package.json +20 -19
  39. package/requirements.txt +4 -1
  40. package/dist/python/discover.py +0 -38
  41. package/dist/python/getSysInfo.py +0 -39
  42. package/dist/python/turnOff.py +0 -20
  43. package/dist/python/turnOffChild.py +0 -22
  44. package/dist/python/turnOn.py +0 -20
  45. package/dist/python/turnOnChild.py +0 -22
@@ -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":"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;AAE1C,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;AAqCD,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE;QAChB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,SAAS;QAC5B,mBAAmB,EAAE,SAAS;QAC9B,OAAO,EAAE,SAAS;KACnB;IACD,iBAAiB,EAAE,KAAK;IACxB,gBAAgB,EAAE,SAAS;IAC3B,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,MAAM,UAAU,WAAW,CAAC,MAA+B;IACzD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,aAAa,CAAC;QAChB,aAAa;QACb,UAAU;QACV,aAAa;QACb,YAAY;QACZ,UAAU;QACV,eAAe;QACf,eAAe;QACf,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,gBAAgB,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;QAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QAC9C,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QAC9C,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU;QACpD,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,aAAa,CAAC,iBAAiB;QACzE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,aAAa,CAAC,gBAAgB;QACtE,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc;QAChE,gBAAgB,EAAE;YAChB,eAAe,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,IAAI,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,IAAI;YAC9G,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,IAAI,aAAa,CAAC,gBAAgB,CAAC,iBAAiB;YAC3G,mBAAmB,EAAE,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,IAAI,aAAa,CAAC,gBAAgB,CAAC,mBAAmB;YACjH,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC,OAAO;SAC9E;KACF,CAAC;AACJ,CAAC"}
@@ -1,10 +1,4 @@
1
- import type { PlatformAccessory } from 'homebridge';
2
- import { KasaPythonConfig } from '../config.js';
3
- import type KasaPythonPlatform from '../platform.js';
4
- import type { KasaPythonAccessoryContext } from '../platform.js';
5
- import type { KasaDevice } from '../utils.js';
6
1
  import HomekitDevice from './index.js';
7
- /**
8
- * Factory method to create a HomeKitDevicePlug or HomeKitDevicePowerstrip.
9
- */
10
- export default function create(platform: KasaPythonPlatform, config: KasaPythonConfig, homebridgeAccessory: PlatformAccessory<KasaPythonAccessoryContext> | undefined, KasaDevice: KasaDevice): HomekitDevice | undefined;
2
+ import type KasaPythonPlatform from '../platform.js';
3
+ import type { KasaDevice } from './kasaDevices.js';
4
+ export default function create(platform: KasaPythonPlatform, KasaDevice: KasaDevice): HomekitDevice | undefined;
@@ -6,15 +6,14 @@ function isPlug(device) {
6
6
  function isPowerStrip(device) {
7
7
  return device.sys_info.child_num !== undefined && device.sys_info.child_num > 1 && Array.isArray(device.sys_info.children);
8
8
  }
9
- /**
10
- * Factory method to create a HomeKitDevicePlug or HomeKitDevicePowerstrip.
11
- */
12
- export default function create(platform, config, homebridgeAccessory, KasaDevice) {
9
+ export default function create(platform, KasaDevice) {
13
10
  if (isPowerStrip(KasaDevice)) {
14
- return new HomeKitDevicePowerStrip(platform, config, homebridgeAccessory, KasaDevice, KasaDevice.device_config);
11
+ return new HomeKitDevicePowerStrip(platform, KasaDevice);
15
12
  }
16
- else if (isPlug(KasaDevice)) {
17
- return new HomeKitDevicePlug(platform, config, homebridgeAccessory, KasaDevice, KasaDevice.device_config);
13
+ if (isPlug(KasaDevice)) {
14
+ return new HomeKitDevicePlug(platform, KasaDevice);
18
15
  }
16
+ platform.log.error('Unknown device type:', KasaDevice);
17
+ return undefined;
19
18
  }
20
19
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/devices/create.ts"],"names":[],"mappings":"AAQA,OAAO,iBAAiB,MAAM,kBAAkB,CAAC;AACjD,OAAO,uBAAuB,MAAM,wBAAwB,CAAC;AAG7D,SAAS,MAAM,CAAC,MAAkB;IAChC,OAAO,UAAU,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB;IACtC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7H,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,QAA4B,EAC5B,MAAwB,EACxB,mBAA8E,EAC9E,UAAsB;IAEtB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,uBAAuB,CAChC,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,UAAU,EACV,UAAU,CAAC,aAAa,CACzB,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,iBAAiB,CAC1B,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,UAAU,EACV,UAAU,CAAC,aAAa,CACzB,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/devices/create.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,kBAAkB,CAAC;AACjD,OAAO,uBAAuB,MAAM,wBAAwB,CAAC;AAI7D,SAAS,MAAM,CAAC,MAAkB;IAChC,OAAO,UAAU,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB;IACtC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7H,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,QAA4B,EAC5B,UAAsB;IAEtB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,15 +1,13 @@
1
- import KasaPythonPlatform from '../platform.js';
2
- import { KasaDevice } from '../utils.js';
3
1
  import HomekitDevice from './index.js';
2
+ import KasaPythonPlatform from '../platform.js';
3
+ import type { KasaDevice } from './kasaDevices.js';
4
4
  export default class DeviceManager {
5
- private log;
6
5
  private platform;
6
+ private log;
7
+ private apiUrl;
7
8
  constructor(platform: KasaPythonPlatform);
8
- private executePythonScript;
9
+ private performDeviceAction;
9
10
  discoverDevices(): Promise<void>;
10
11
  getSysInfo(device: HomekitDevice): Promise<KasaDevice | undefined>;
11
- turnOn(device: HomekitDevice): Promise<void>;
12
- turnOff(device: HomekitDevice): Promise<void>;
13
- turnOnChild(device: HomekitDevice, child_num: number): Promise<void>;
14
- turnOffChild(device: HomekitDevice, child_num: number): Promise<void>;
12
+ toggleDevice(device: HomekitDevice, state: boolean, child_num?: number): Promise<void>;
15
13
  }
@@ -1,156 +1,77 @@
1
- import * as fs from 'fs';
2
- import * as util from 'util';
3
- import { runCommand } from '../utils.js';
4
- const readFileAsync = util.promisify(fs.readFile);
1
+ import axios from 'axios';
5
2
  export default class DeviceManager {
6
- log;
7
3
  platform;
4
+ log;
5
+ apiUrl;
8
6
  constructor(platform) {
9
- this.log = platform.log;
10
7
  this.platform = platform;
8
+ this.log = platform.log;
9
+ this.apiUrl = `http://127.0.0.1:${platform.port}`;
11
10
  }
12
- async executePythonScript(scriptName, deviceId, deviceConfigJson, childNumber, outputToFile) {
13
- const scriptPath = `${this.platform.storagePath}/node_modules/homebridge-kasa-python/dist/python/${scriptName}.py`;
14
- const args = [scriptPath];
15
- if (deviceConfigJson) {
16
- args.push(deviceConfigJson);
17
- }
18
- if (childNumber) {
19
- args.push(childNumber);
20
- }
21
- if (outputToFile) {
22
- const outputFileName = deviceId ? `${deviceId}_${scriptName}_output.json` : `${scriptName}_output.json`;
23
- args.push(`> ${this.platform.storagePath}/kasa-python/${outputFileName}`);
24
- }
25
- return await runCommand(this.log, this.platform.venvPythonExecutable, args);
26
- }
27
- async discoverDevices() {
28
- this.log.info('Discovering devices...');
11
+ async performDeviceAction(device, action, childNumber) {
12
+ const url = `${this.apiUrl}/controlDevice`;
13
+ const data = {
14
+ device_config: device.deviceConfig,
15
+ action,
16
+ ...(childNumber !== undefined && { child_num: childNumber }),
17
+ };
29
18
  try {
30
- const [stdout, stderr, exitCode] = await this.executePythonScript('discover', undefined, undefined, undefined, true);
31
- const outputPath = `${this.platform.storagePath}/kasa-python/discover_output.json`;
32
- if (exitCode !== 0) {
33
- this.log.error(`Error executing discovery script: ${stderr}. Output: ${stdout}`);
34
- return;
35
- }
36
- if (fs.existsSync(outputPath)) {
37
- try {
38
- const data = await readFileAsync(outputPath, 'utf8');
39
- const devices = JSON.parse(data);
40
- let index = 0;
41
- Object.keys(devices).forEach(ip => {
42
- const device = devices[ip].device_info;
43
- device.device_config = devices[ip].device_config;
44
- this.platform.foundDevice(device);
45
- index += 1;
46
- });
47
- this.log.info('Discovered %d devices.', index);
48
- }
49
- catch (error) {
50
- this.log.error(`An error occurred during device discovery: ${error}`);
51
- }
52
- }
53
- else {
54
- this.log.error(`Discovery script did not output to ${outputPath}`);
19
+ const response = await axios.post(url, data);
20
+ if (response.data.status !== 'success') {
21
+ this.log.error(`Error performing action: ${response.data.message}`);
55
22
  }
56
23
  }
57
24
  catch (error) {
58
- this.log.error(`An error occurred during device discovery: ${error}`);
25
+ this.log.error(`Error performing action: ${axios.isAxiosError(error) ? error.message : 'An unknown error occurred'}`);
59
26
  }
60
27
  }
61
- async getSysInfo(device) {
62
- this.log.info('Getting system info for device: %s', device.name);
28
+ async discoverDevices() {
29
+ this.log.debug('Discovering devices...');
63
30
  try {
64
- const deviceConfigJson = `'${JSON.stringify(device.deviceConfig)}'`;
65
- const [stdout, stderr, exitCode] = await this.executePythonScript('getSysInfo', device.id, deviceConfigJson, undefined, true);
66
- const outputPath = `${this.platform.storagePath}/kasa-python/${device.id}_getSysInfo_output.json`;
67
- if (exitCode !== 0) {
68
- this.log.error(`Error executing getSysInfo script: ${stderr}. Output: ${stdout}`);
69
- return;
70
- }
71
- if (fs.existsSync(outputPath)) {
72
- try {
73
- const data = await readFileAsync(outputPath, 'utf8');
74
- const device_info = JSON.parse(data);
75
- const new_device = device_info.device_info;
76
- return new_device;
31
+ const response = await axios.get(`${this.apiUrl}/discover`);
32
+ const devices = response.data;
33
+ Object.keys(devices).forEach(ip => {
34
+ const device = devices[ip].device_info;
35
+ if (device.alias.includes('TP-LINK_Power Strip_')) {
36
+ device.alias = `Power Strip ${device.alias.slice(-4)}`;
77
37
  }
78
- catch (error) {
79
- this.log.error(`An error occurred during device getSysInfo: ${error}`);
80
- }
81
- }
82
- else {
83
- this.log.error(`GetSysInfo script did not output to ${outputPath}`);
84
- }
85
- }
86
- catch (error) {
87
- this.log.error(`An error occurred during device getSysInfo: ${error}`);
88
- }
89
- }
90
- async turnOn(device) {
91
- this.log.info('Turning on device: %s', device.name);
92
- try {
93
- const deviceConfigJson = JSON.stringify(device.deviceConfig);
94
- const [stdout, stderr, exitCode] = await this.executePythonScript('turnOn', undefined, deviceConfigJson);
95
- if (exitCode !== 0) {
96
- this.log.error(`Error executing turnOn script: ${stderr}`);
97
- return;
98
- }
99
- const state = JSON.parse(stdout);
100
- this.log.debug('Device %s turnOn is %s', device.name, state);
38
+ device.device_config = devices[ip].device_config;
39
+ this.platform.foundDevice(device);
40
+ });
41
+ this.log.debug(`Discovered ${Object.keys(devices).length} devices.`);
101
42
  }
102
43
  catch (error) {
103
- this.log.error('An error occurred turning on device %s: %s', device.name, error);
44
+ this.log.error(`An error occurred during device discovery: ${axios.isAxiosError(error) ? error.message : 'An unknown error occurred'}`);
104
45
  }
105
46
  }
106
- async turnOff(device) {
107
- this.log.info('Turning off device: %s', device.name);
47
+ async getSysInfo(device) {
48
+ this.log.debug(`Getting system info for device: ${device.name}`);
108
49
  try {
109
- const deviceConfigJson = JSON.stringify(device.deviceConfig);
110
- const [stdout, stderr, exitCode] = await this.executePythonScript('turnOff', undefined, deviceConfigJson);
111
- if (exitCode !== 0) {
112
- this.log.error(`Error executing turnOff script: ${stderr}`);
113
- return;
50
+ this.log.debug(`Requesting system info with config: ${JSON.stringify(device.deviceConfig)}`);
51
+ const response = await axios.post(`${this.apiUrl}/getSysInfo`, { device_config: device.deviceConfig });
52
+ const kasaDevice = response.data.device_info;
53
+ if (kasaDevice.alias.includes('TP-LINK_Power Strip_')) {
54
+ kasaDevice.alias = `Power Strip ${kasaDevice.alias.slice(-4)}`;
114
55
  }
115
- const state = JSON.parse(stdout);
116
- this.log.debug('Device %s turnOff is %s', device.name, state);
56
+ return kasaDevice;
117
57
  }
118
58
  catch (error) {
119
- this.log.error('An error occurred turning off device %s: %s', device.name, error);
120
- }
121
- }
122
- async turnOnChild(device, child_num) {
123
- this.log.info('Turning on device %s: child %s', device.name, child_num);
124
- try {
125
- const childNumberJson = JSON.stringify(child_num);
126
- const deviceConfigJson = JSON.stringify(device.deviceConfig);
127
- const [stdout, stderr, exitCode] = await this.executePythonScript('turnOnChild', undefined, deviceConfigJson, childNumberJson);
128
- if (exitCode !== 0) {
129
- this.log.error(`Error executing turnOnChild script: ${stderr}`);
130
- return;
59
+ this.log.error(`An error occurred during device getSysInfo: ${axios.isAxiosError(error) ? error.message : 'An unknown error occurred'}`);
60
+ if (axios.isAxiosError(error) && error.response) {
61
+ this.log.error(`Response status: ${error.response.status}`);
62
+ this.log.error(`Response data: ${JSON.stringify(error.response.data)}`);
131
63
  }
132
- const state = JSON.parse(stdout);
133
- this.log.debug('Device %s Child %s turnOn is %s', device.name, child_num, state);
134
- }
135
- catch (error) {
136
- this.log.error('An error occurred turning on device %s child %s: %s', device.name, child_num, error);
137
64
  }
138
65
  }
139
- async turnOffChild(device, child_num) {
140
- this.log.info('Turning off device %s: child %s', device.name, child_num);
66
+ async toggleDevice(device, state, child_num) {
67
+ const action = state ? 'turn_on' : 'turn_off';
68
+ const childText = child_num !== undefined ? ` child ${child_num}` : '';
141
69
  try {
142
- const childNumberJson = JSON.stringify(child_num);
143
- const deviceConfigJson = JSON.stringify(device.deviceConfig);
144
- const [stdout, stderr, exitCode] = await this.executePythonScript('turnOffChild', undefined, deviceConfigJson, childNumberJson);
145
- if (exitCode !== 0) {
146
- this.log.error(`Error executing turnOffChild script: ${stderr}`);
147
- return;
148
- }
149
- const state = JSON.parse(stdout);
150
- this.log.debug('Device %s Child %s turnOff is %s', device.name, child_num, state);
70
+ await this.performDeviceAction(device, action, child_num);
71
+ this.log.debug(`Turned ${state ? 'on' : 'off'} device: ${device.name}${childText}`);
151
72
  }
152
73
  catch (error) {
153
- this.log.error('An error occurred turning off device %s child %s: %s', device.name, child_num, error);
74
+ this.log.error(`An error occurred turning ${state ? 'on' : 'off'} device ${device.name}${childText}: ${axios.isAxiosError(error) ? error.message : 'An unknown error occurred'}`);
154
75
  }
155
76
  }
156
77
  }
@@ -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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"}
@@ -1,23 +1,17 @@
1
- import type { PlatformAccessory } from 'homebridge';
2
1
  import HomekitDevice from './index.js';
3
- import { KasaPythonConfig } from '../config.js';
4
- import DeviceManager from './deviceManager.js';
5
2
  import type KasaPythonPlatform from '../platform.js';
6
- import type { KasaPythonAccessoryContext } from '../platform.js';
7
- import type { DeviceConfig, Plug } from './kasaDevices.js';
3
+ import type { Plug } from './kasaDevices.js';
8
4
  export default class HomeKitDevicePlug extends HomekitDevice {
9
- readonly config: KasaPythonConfig;
10
- readonly kasaDevice: Plug;
11
- readonly deviceConfig: DeviceConfig;
12
- constructor(platform: KasaPythonPlatform, config: KasaPythonConfig, homebridgeAccessory: PlatformAccessory<KasaPythonAccessoryContext> | undefined, kasaDevice: Plug, deviceConfig: DeviceConfig, deviceManager?: DeviceManager);
13
- /**
14
- * Aggregates getSysInfo requests
15
- *
16
- * @private
17
- */
5
+ protected kasaDevice: Plug;
18
6
  private getSysInfo;
7
+ private previousKasaDevice;
8
+ private isUpdating;
9
+ constructor(platform: KasaPythonPlatform, kasaDevice: Plug);
19
10
  private addOutletService;
20
- private addOnCharacteristic;
21
- private addOutletInUseCharacteristic;
11
+ private addCharacteristic;
12
+ private handleOnGet;
13
+ private handleOnSet;
14
+ private updateState;
15
+ private startPolling;
22
16
  identify(): void;
23
17
  }
@@ -1,98 +1,117 @@
1
1
  import HomekitDevice from './index.js';
2
2
  import { deferAndCombine, getOrAddCharacteristic } from '../utils.js';
3
3
  export default class HomeKitDevicePlug extends HomekitDevice {
4
- config;
5
4
  kasaDevice;
6
- deviceConfig;
7
- constructor(platform, config, homebridgeAccessory, kasaDevice, deviceConfig, deviceManager) {
8
- super(platform, config, homebridgeAccessory, kasaDevice, 7 /* Categories.OUTLET */, deviceConfig, deviceManager);
9
- this.config = config;
5
+ getSysInfo;
6
+ previousKasaDevice;
7
+ isUpdating = false;
8
+ constructor(platform, kasaDevice) {
9
+ super(platform, kasaDevice, 7 /* Categories.OUTLET */);
10
10
  this.kasaDevice = kasaDevice;
11
- this.deviceConfig = deviceConfig;
12
11
  this.addOutletService();
13
12
  this.getSysInfo = deferAndCombine(async (requestCount) => {
14
13
  this.log.debug(`executing deferred getSysInfo count: ${requestCount}`);
15
- return Promise.resolve(await this.deviceManager.getSysInfo(this));
14
+ if (this.deviceManager) {
15
+ const newKasaDevice = await this.deviceManager.getSysInfo(this);
16
+ this.previousKasaDevice = this.kasaDevice;
17
+ this.kasaDevice = newKasaDevice;
18
+ return this.kasaDevice;
19
+ }
20
+ return undefined;
16
21
  }, platform.config.waitTimeUpdate);
22
+ this.startPolling();
17
23
  }
18
- /**
19
- * Aggregates getSysInfo requests
20
- *
21
- * @private
22
- */
23
- getSysInfo;
24
24
  addOutletService() {
25
25
  const { Outlet } = this.platform.Service;
26
- const outletService = this.homebridgeAccessory.getService(Outlet) ??
27
- this.addService(Outlet, this.name);
28
- this.addOnCharacteristic(outletService);
29
- this.addOutletInUseCharacteristic(outletService);
26
+ const outletService = this.homebridgeAccessory.getService(Outlet) ?? this.addService(Outlet, this.name);
27
+ this.addCharacteristic(outletService, this.platform.Characteristic.On);
28
+ this.addCharacteristic(outletService, this.platform.Characteristic.OutletInUse);
30
29
  return outletService;
31
30
  }
32
- addOnCharacteristic(service) {
33
- const onCharacteristic = getOrAddCharacteristic(service, this.platform.Characteristic.On);
34
- onCharacteristic
35
- .onGet(async () => {
36
- const device = await this.getSysInfo().catch(this.logRejection.bind(this));
37
- if (device) {
38
- const state = device.sys_info.relay_state;
39
- this.log.debug(`Current State of On is: ${state === 1 ? true : false} for ${this.name}`);
40
- return state ?? 0;
41
- }
42
- return 0;
43
- })
44
- .onSet(async (value) => {
45
- this.log.info(`Setting On to: ${value} for ${this.name}`);
46
- if (typeof value === 'boolean' && value === true) {
47
- this.deviceManager.turnOn(this).catch(this.logRejection.bind(this));
48
- return;
31
+ addCharacteristic(service, characteristicType) {
32
+ const characteristic = getOrAddCharacteristic(service, characteristicType);
33
+ characteristic.onGet(this.handleOnGet.bind(this, characteristicType));
34
+ if (characteristicType === this.platform.Characteristic.On) {
35
+ characteristic.onSet(this.handleOnSet.bind(this));
36
+ }
37
+ return service;
38
+ }
39
+ async handleOnGet(characteristicType) {
40
+ try {
41
+ const stateValue = this.kasaDevice.sys_info.relay_state === 1;
42
+ const characteristicName = this.platform.getCharacteristicName(characteristicType);
43
+ this.log.debug(`Current State of ${characteristicName} is: ${stateValue} for ${this.name}`);
44
+ return this.kasaDevice.sys_info.relay_state ?? 0;
45
+ }
46
+ catch (error) {
47
+ this.log.error('Error getting device state:', error);
48
+ }
49
+ return 0;
50
+ }
51
+ async handleOnSet(value) {
52
+ this.log.info(`Setting On to: ${value} for ${this.name}`);
53
+ if (typeof value === 'boolean') {
54
+ if (this.deviceManager) {
55
+ try {
56
+ this.isUpdating = true;
57
+ await this.deviceManager.toggleDevice(this, value);
58
+ this.kasaDevice.sys_info.relay_state = value ? 1 : 0;
59
+ this.previousKasaDevice = this.kasaDevice;
60
+ const service = this.homebridgeAccessory.getService(this.platform.Service.Outlet);
61
+ if (service) {
62
+ const onCharacteristic = service.getCharacteristic(this.platform.Characteristic.On);
63
+ const outletInUseCharacteristic = service.getCharacteristic(this.platform.Characteristic.OutletInUse);
64
+ this.updateValue(service, onCharacteristic, value);
65
+ this.updateValue(service, outletInUseCharacteristic, value);
66
+ }
67
+ return;
68
+ }
69
+ catch (error) {
70
+ this.logRejection(error);
71
+ }
72
+ finally {
73
+ this.isUpdating = false;
74
+ }
49
75
  }
50
- else if (typeof value === 'boolean' && value === false) {
51
- this.deviceManager.turnOff(this).catch(this.logRejection.bind(this));
52
- return;
76
+ else {
77
+ throw new Error('Device manager is undefined.');
53
78
  }
79
+ }
80
+ else {
54
81
  this.log.warn('setValue: Invalid On:', value);
55
82
  throw new Error(`setValue: Invalid On: ${value}`);
56
- });
57
- let oldState = this.kasaDevice.sys_info.relay_state;
58
- setInterval(async () => {
59
- const device = await this.getSysInfo().catch(this.logRejection.bind(this));
60
- let newState;
61
- if (device) {
62
- newState = device.sys_info.relay_state;
63
- }
64
- if (newState !== undefined && newState !== oldState) {
65
- this.updateValue(service, onCharacteristic, newState);
66
- oldState = newState;
67
- }
68
- }, this.config.discoveryOptions.pollingInterval);
69
- return service;
83
+ }
70
84
  }
71
- addOutletInUseCharacteristic(service) {
72
- const outletInUseCharacteristic = getOrAddCharacteristic(service, this.platform.Characteristic.OutletInUse);
73
- outletInUseCharacteristic
74
- .onGet(async () => {
75
- const device = await this.getSysInfo().catch(this.logRejection.bind(this));
76
- if (device) {
77
- const state = device.sys_info.relay_state;
78
- this.log.debug(`Current State of On is: ${state === 1 ? true : false} for ${this.name}`);
79
- return state ?? 0;
80
- }
81
- return 0;
82
- });
83
- let oldState = this.kasaDevice.sys_info.relay_state;
84
- setInterval(async () => {
85
- const device = await this.getSysInfo().catch(this.logRejection.bind(this));
86
- let newState;
85
+ async updateState() {
86
+ if (this.isUpdating) {
87
+ return;
88
+ }
89
+ this.isUpdating = true;
90
+ try {
91
+ const device = await this.getSysInfo();
87
92
  if (device) {
88
- newState = device.sys_info.relay_state;
89
- }
90
- if (newState !== undefined && newState !== oldState) {
91
- this.updateValue(service, outletInUseCharacteristic, newState);
92
- oldState = newState;
93
+ const service = this.homebridgeAccessory.getService(this.platform.Service.Outlet);
94
+ if (service && this.previousKasaDevice) {
95
+ const previousRelayState = this.previousKasaDevice.sys_info.relay_state;
96
+ if (previousRelayState !== device.sys_info.relay_state) {
97
+ this.kasaDevice.sys_info.relay_state = device.sys_info.relay_state;
98
+ const onCharacteristic = service.getCharacteristic(this.platform.Characteristic.On);
99
+ const outletInUseCharacteristic = service.getCharacteristic(this.platform.Characteristic.OutletInUse);
100
+ this.updateValue(service, onCharacteristic, device.sys_info.relay_state === 1);
101
+ this.updateValue(service, outletInUseCharacteristic, device.sys_info.relay_state === 1);
102
+ }
103
+ }
93
104
  }
94
- }, this.config.discoveryOptions.pollingInterval);
95
- return service;
105
+ }
106
+ catch (error) {
107
+ this.log.error('Error updating device state:', error);
108
+ }
109
+ finally {
110
+ this.isUpdating = false;
111
+ }
112
+ }
113
+ startPolling() {
114
+ setInterval(this.updateState.bind(this), this.platform.config.discoveryOptions.pollingInterval);
96
115
  }
97
116
  identify() {
98
117
  this.log.info('identify');
@@ -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":"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"}