homebridge-kasa-python 2.7.0-beta.3 → 2.7.0-beta.5
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/config.schema.json +19 -56
- package/dist/config.d.ts +2 -0
- package/dist/config.js +9 -7
- package/dist/config.js.map +1 -1
- package/dist/devices/deviceManager.d.ts +0 -2
- package/dist/devices/deviceManager.js +26 -69
- package/dist/devices/deviceManager.js.map +1 -1
- package/dist/devices/homekitLightBulb.d.ts +5 -5
- package/dist/devices/homekitLightBulb.js +69 -107
- package/dist/devices/homekitLightBulb.js.map +1 -1
- package/dist/devices/homekitPlug.d.ts +4 -4
- package/dist/devices/homekitPlug.js +42 -67
- package/dist/devices/homekitPlug.js.map +1 -1
- package/dist/devices/homekitPowerStrip.d.ts +4 -4
- package/dist/devices/homekitPowerStrip.js +47 -73
- package/dist/devices/homekitPowerStrip.js.map +1 -1
- package/dist/devices/homekitSwitch.d.ts +5 -5
- package/dist/devices/homekitSwitch.js +44 -77
- package/dist/devices/homekitSwitch.js.map +1 -1
- package/dist/devices/index.d.ts +1 -1
- package/dist/devices/index.js +3 -5
- package/dist/devices/index.js.map +1 -1
- package/dist/devices/kasaDevices.d.ts +0 -2
- package/dist/devices/kasaDevices.js +2 -0
- package/dist/devices/kasaDevices.js.map +1 -1
- package/dist/platform.d.ts +1 -1
- package/dist/platform.js +27 -89
- package/dist/platform.js.map +1 -1
- package/dist/python/kasaApi.py +182 -220
- 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/config.schema.json
CHANGED
|
@@ -17,53 +17,56 @@
|
|
|
17
17
|
"enableCredentials": {
|
|
18
18
|
"title": "Enable Credentials",
|
|
19
19
|
"type": "boolean",
|
|
20
|
-
"required": false,
|
|
21
20
|
"description": "Enable to use username and password for authentication.",
|
|
22
21
|
"default": false
|
|
23
22
|
},
|
|
24
23
|
"username": {
|
|
25
24
|
"title": "Username",
|
|
26
25
|
"type": "string",
|
|
27
|
-
"required": false,
|
|
28
26
|
"description": "Username for the Kasa account. Required for cloud devices.",
|
|
29
27
|
"placeholder": "Username",
|
|
30
|
-
"minLength": 1
|
|
28
|
+
"minLength": 1,
|
|
29
|
+
"condition": {
|
|
30
|
+
"functionBody": "return model.enableCredentials;"
|
|
31
|
+
}
|
|
31
32
|
},
|
|
32
33
|
"password": {
|
|
33
34
|
"title": "Password",
|
|
34
35
|
"type": "string",
|
|
35
|
-
"required": false,
|
|
36
36
|
"description": "Password for the Kasa account. Required for cloud devices.",
|
|
37
37
|
"placeholder": "Password",
|
|
38
|
-
"minLength": 1
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"condition": {
|
|
40
|
+
"functionBody": "return model.enableCredentials && model.username && model.username !== '';"
|
|
41
|
+
}
|
|
39
42
|
},
|
|
40
43
|
"pollingInterval": {
|
|
41
44
|
"title": "Polling Interval (seconds)",
|
|
42
45
|
"type": "integer",
|
|
43
|
-
"required": false,
|
|
44
46
|
"description": "How often to check device status in the background (seconds)",
|
|
45
|
-
"
|
|
47
|
+
"default": 5
|
|
48
|
+
},
|
|
49
|
+
"discoveryPollingInterval": {
|
|
50
|
+
"title": "Discovery Polling Interval (seconds)",
|
|
51
|
+
"type": "integer",
|
|
52
|
+
"description": "How often to discover new devices in the background (seconds)",
|
|
53
|
+
"default": 300
|
|
46
54
|
},
|
|
47
55
|
"additionalBroadcasts": {
|
|
48
56
|
"title": "Additional Broadcast Addresses",
|
|
49
57
|
"type": "array",
|
|
50
|
-
"buttonText": "Add Broadcast Address",
|
|
51
58
|
"items": {
|
|
52
59
|
"title": "Broadcast Address",
|
|
53
|
-
"type": "string"
|
|
54
|
-
"required": true
|
|
60
|
+
"type": "string"
|
|
55
61
|
},
|
|
56
|
-
"required": false,
|
|
57
62
|
"description": "List of additional broadcast addresses to discover devices on. Format: 192.168.1.255"
|
|
58
63
|
},
|
|
59
64
|
"manualDevices": {
|
|
60
65
|
"title": "Manual List Of Devices",
|
|
61
66
|
"type": "array",
|
|
62
|
-
"buttonText": "Add Manual Device",
|
|
63
67
|
"items": {
|
|
64
68
|
"title": "Manual Device",
|
|
65
69
|
"type": "object",
|
|
66
|
-
"required": ["host"],
|
|
67
70
|
"properties": {
|
|
68
71
|
"host": {
|
|
69
72
|
"type": "string",
|
|
@@ -73,57 +76,19 @@
|
|
|
73
76
|
"type": "string",
|
|
74
77
|
"title": "Alias",
|
|
75
78
|
"readonly": true,
|
|
76
|
-
"default": "Will Be Filled By Plug-In Automatically",
|
|
77
79
|
"condition": {
|
|
78
80
|
"functionBody": "return model.manualDevices && model.manualDevices[arrayIndices] && model.manualDevices[arrayIndices].host && model.manualDevices[arrayIndices].host !== '';"
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
84
|
},
|
|
83
|
-
"required": false,
|
|
84
85
|
"description": "List of devices to manually add."
|
|
85
86
|
},
|
|
86
87
|
"waitTimeUpdate": {
|
|
87
88
|
"title": "Wait Time Update (milliseconds)",
|
|
88
89
|
"type": "integer",
|
|
89
|
-
"required": false,
|
|
90
90
|
"description": "The time to wait to combine similar commands for a device before sending a command to a device (milliseconds). Default: 100.",
|
|
91
|
-
"
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
"dependencies": {
|
|
95
|
-
"enableCredentials": {
|
|
96
|
-
"oneOf": [
|
|
97
|
-
{
|
|
98
|
-
"properties": {
|
|
99
|
-
"enableCredentials": {
|
|
100
|
-
"enum": [false]
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"properties": {
|
|
106
|
-
"enableCredentials": {
|
|
107
|
-
"enum": [true]
|
|
108
|
-
},
|
|
109
|
-
"username": {
|
|
110
|
-
"type": "string",
|
|
111
|
-
"required": false,
|
|
112
|
-
"description": "Username for the Kasa account. Required for cloud devices.",
|
|
113
|
-
"placeholder": "Username",
|
|
114
|
-
"minLength": 1
|
|
115
|
-
},
|
|
116
|
-
"password": {
|
|
117
|
-
"type": "string",
|
|
118
|
-
"required": false,
|
|
119
|
-
"description": "Password for the Kasa account. Required for cloud devices.",
|
|
120
|
-
"placeholder": "Password",
|
|
121
|
-
"minLength": 1
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
"required": ["username", "password"]
|
|
125
|
-
}
|
|
126
|
-
]
|
|
91
|
+
"default": 100
|
|
127
92
|
}
|
|
128
93
|
}
|
|
129
94
|
},
|
|
@@ -149,6 +114,7 @@
|
|
|
149
114
|
"expandable": true,
|
|
150
115
|
"items": [
|
|
151
116
|
"pollingInterval",
|
|
117
|
+
"discoveryPollingInterval",
|
|
152
118
|
{
|
|
153
119
|
"type": "fieldset",
|
|
154
120
|
"title": "Additional Broadcasts",
|
|
@@ -158,11 +124,9 @@
|
|
|
158
124
|
{
|
|
159
125
|
"key": "additionalBroadcasts",
|
|
160
126
|
"type": "array",
|
|
161
|
-
"buttonText": "Add Broadcast Address",
|
|
162
127
|
"items": {
|
|
163
128
|
"title": "Broadcast Address",
|
|
164
|
-
"type": "string"
|
|
165
|
-
"required": true
|
|
129
|
+
"type": "string"
|
|
166
130
|
}
|
|
167
131
|
}
|
|
168
132
|
]
|
|
@@ -176,7 +140,6 @@
|
|
|
176
140
|
{
|
|
177
141
|
"key": "manualDevices",
|
|
178
142
|
"type": "array",
|
|
179
|
-
"buttonText": "Add Manual Device",
|
|
180
143
|
"items": [
|
|
181
144
|
"manualDevices[].host", "manualDevices[].alias"
|
|
182
145
|
]
|
package/dist/config.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface KasaPythonConfigInput {
|
|
|
12
12
|
username?: string;
|
|
13
13
|
password?: string;
|
|
14
14
|
pollingInterval?: number;
|
|
15
|
+
discoveryPollingInterval?: number;
|
|
15
16
|
additionalBroadcasts?: string[];
|
|
16
17
|
manualDevices?: (string | ConfigDevice)[];
|
|
17
18
|
waitTimeUpdate?: number;
|
|
@@ -23,6 +24,7 @@ export type KasaPythonConfig = {
|
|
|
23
24
|
password: string;
|
|
24
25
|
discoveryOptions: {
|
|
25
26
|
pollingInterval: number;
|
|
27
|
+
discoveryPollingInterval: number;
|
|
26
28
|
additionalBroadcasts: string[];
|
|
27
29
|
manualDevices: ConfigDevice[];
|
|
28
30
|
};
|
package/dist/config.js
CHANGED
|
@@ -41,6 +41,7 @@ export const defaultConfig = {
|
|
|
41
41
|
password: '',
|
|
42
42
|
discoveryOptions: {
|
|
43
43
|
pollingInterval: 5,
|
|
44
|
+
discoveryPollingInterval: 300,
|
|
44
45
|
additionalBroadcasts: [],
|
|
45
46
|
manualDevices: [],
|
|
46
47
|
},
|
|
@@ -64,18 +65,18 @@ function convertManualDevices(manualDevices) {
|
|
|
64
65
|
if (!manualDevices || manualDevices.length === 0) {
|
|
65
66
|
return [];
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
+
return manualDevices.map(device => {
|
|
68
69
|
if (typeof device === 'string') {
|
|
69
70
|
return { host: device, alias: 'Will Be Filled By Plug-In Automatically' };
|
|
70
71
|
}
|
|
71
|
-
else {
|
|
72
|
-
|
|
73
|
-
delete device.breakoutChildDevices;
|
|
74
|
-
}
|
|
75
|
-
return device;
|
|
72
|
+
else if ('breakoutChildDevices' in device) {
|
|
73
|
+
delete device.breakoutChildDevices;
|
|
76
74
|
}
|
|
75
|
+
else if ('host' in device && !('alias' in device)) {
|
|
76
|
+
device.alias = 'Will Be Filled By Plug-In Automatically';
|
|
77
|
+
}
|
|
78
|
+
return device;
|
|
77
79
|
});
|
|
78
|
-
return convertedDevices;
|
|
79
80
|
}
|
|
80
81
|
export function parseConfig(config) {
|
|
81
82
|
const ajv = new Ajv({ allErrors: true, strict: 'log' });
|
|
@@ -109,6 +110,7 @@ export function parseConfig(config) {
|
|
|
109
110
|
waitTimeUpdate: c.waitTimeUpdate ?? defaultConfig.waitTimeUpdate,
|
|
110
111
|
discoveryOptions: {
|
|
111
112
|
pollingInterval: (c.pollingInterval ?? defaultConfig.discoveryOptions.pollingInterval) * 1000,
|
|
113
|
+
discoveryPollingInterval: (c.discoveryPollingInterval ?? defaultConfig.discoveryOptions.discoveryPollingInterval) * 1000,
|
|
112
114
|
additionalBroadcasts: c.additionalBroadcasts ?? defaultConfig.discoveryOptions.additionalBroadcasts,
|
|
113
115
|
manualDevices: c.manualDevices ? convertManualDevices(c.manualDevices) : defaultConfig.discoveryOptions.manualDevices,
|
|
114
116
|
},
|
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;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,6 @@ export default class DeviceManager {
|
|
|
12
12
|
constructor(platform: KasaPythonPlatform);
|
|
13
13
|
private convertManualDevices;
|
|
14
14
|
private updateDeviceAlias;
|
|
15
|
-
private updateAliasForSysInfo;
|
|
16
15
|
private readConfigFile;
|
|
17
16
|
private writeConfigFile;
|
|
18
17
|
discoverDevices(): Promise<Record<string, KasaDevice>>;
|
|
@@ -20,5 +19,4 @@ export default class DeviceManager {
|
|
|
20
19
|
getSysInfo(deviceConfig: DeviceConfig): Promise<SysInfo | undefined>;
|
|
21
20
|
controlDevice(deviceConfig: DeviceConfig, feature: string, value: CharacteristicValue, child_num?: number): Promise<void>;
|
|
22
21
|
private performDeviceAction;
|
|
23
|
-
private logError;
|
|
24
22
|
}
|
|
@@ -24,23 +24,17 @@ export default class DeviceManager {
|
|
|
24
24
|
if (typeof device === 'string') {
|
|
25
25
|
return { host: device, alias: 'Will Be Filled By Plug-In Automatically' };
|
|
26
26
|
}
|
|
27
|
-
else {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
else if ('breakoutChildDevices' in device) {
|
|
28
|
+
delete device.breakoutChildDevices;
|
|
29
|
+
}
|
|
30
|
+
else if ('host' in device && !('alias' in device)) {
|
|
31
|
+
device.alias = 'Will Be Filled By Plug-In Automatically';
|
|
32
32
|
}
|
|
33
|
+
return device;
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
36
|
updateDeviceAlias(device) {
|
|
36
|
-
|
|
37
|
-
this.updateAliasForSysInfo(device.sys_info);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.updateAliasForSysInfo(device);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
updateAliasForSysInfo(sysInfo) {
|
|
37
|
+
const sysInfo = 'sys_info' in device ? device.sys_info : device;
|
|
44
38
|
if (sysInfo.alias) {
|
|
45
39
|
const aliasMappings = {
|
|
46
40
|
'TP-LINK_Power Strip_': 'Power Strip',
|
|
@@ -61,7 +55,7 @@ export default class DeviceManager {
|
|
|
61
55
|
return JSON.parse(configData);
|
|
62
56
|
}
|
|
63
57
|
catch (error) {
|
|
64
|
-
this.
|
|
58
|
+
this.log.error(`Error reading config file: ${error}`);
|
|
65
59
|
throw error;
|
|
66
60
|
}
|
|
67
61
|
}
|
|
@@ -70,64 +64,42 @@ export default class DeviceManager {
|
|
|
70
64
|
await fs.writeFile(configPath, JSON.stringify(fileConfig, null, 2), 'utf8');
|
|
71
65
|
}
|
|
72
66
|
catch (error) {
|
|
73
|
-
this.
|
|
67
|
+
this.log.error(`Error writing config file: ${error}`);
|
|
74
68
|
}
|
|
75
69
|
}
|
|
76
70
|
async discoverDevices() {
|
|
77
71
|
this.log.info('Discovering devices...');
|
|
78
72
|
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)}`);
|
|
73
|
+
const config = this.username && this.password ? { auth: { username: this.username, password: this.password } } : {};
|
|
89
74
|
const response = await axios.post(`${this.apiUrl}/discover`, {
|
|
90
75
|
additionalBroadcasts: this.additionalBroadcasts,
|
|
91
76
|
manualDevices: this.manualDevices,
|
|
92
77
|
}, config);
|
|
93
|
-
this.log.debug('Discovery request sent successfully');
|
|
94
78
|
const devices = response.data;
|
|
95
|
-
this.log.info(`Devices discovered: ${Object.keys(devices).length}`);
|
|
96
79
|
const configPath = path.join(this.platform.storagePath, 'config.json');
|
|
97
|
-
this.log.debug(`Reading config file from path: ${configPath}`);
|
|
98
80
|
const fileConfig = await this.readConfigFile(configPath);
|
|
99
|
-
this.log.debug('Config file read successfully');
|
|
100
81
|
const platformConfig = fileConfig.platforms.find((platformConfig) => platformConfig.platform === 'KasaPython');
|
|
101
82
|
if (!platformConfig) {
|
|
102
83
|
this.log.error('KasaPython configuration not found in config file.');
|
|
103
84
|
return {};
|
|
104
85
|
}
|
|
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
|
-
}
|
|
86
|
+
platformConfig.manualDevices = platformConfig.manualDevices || [];
|
|
87
|
+
platformConfig.manualDevices = platformConfig.manualDevices.filter((device) => {
|
|
88
|
+
if (typeof device === 'string') {
|
|
120
89
|
return true;
|
|
121
|
-
}
|
|
122
|
-
|
|
90
|
+
}
|
|
91
|
+
else if (!device.host) {
|
|
92
|
+
this.log.warn(`Removing manual device without host: ${JSON.stringify(device)}`);
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
});
|
|
123
97
|
if (platformConfig.manualDevices.length > 0 &&
|
|
124
98
|
(typeof platformConfig.manualDevices[0] === 'string' ||
|
|
125
|
-
platformConfig.manualDevices.some((device) => typeof device !== 'string'
|
|
126
|
-
this.log.debug('Converting manualDevices');
|
|
99
|
+
platformConfig.manualDevices.some((device) => typeof device !== 'string'))) {
|
|
127
100
|
platformConfig.manualDevices = this.convertManualDevices(platformConfig.manualDevices);
|
|
128
101
|
}
|
|
129
102
|
const processedDevices = {};
|
|
130
|
-
this.log.debug('Processing discovered devices');
|
|
131
103
|
Object.keys(devices).forEach(ip => {
|
|
132
104
|
const deviceInfo = devices[ip].sys_info;
|
|
133
105
|
const discoveryInfo = devices[ip].disc_info;
|
|
@@ -141,21 +113,16 @@ export default class DeviceManager {
|
|
|
141
113
|
};
|
|
142
114
|
this.processDevice(device, platformConfig);
|
|
143
115
|
processedDevices[ip] = device;
|
|
144
|
-
this.log.debug(`Processed device with IP: ${ip}`);
|
|
145
116
|
});
|
|
146
|
-
if (!platformConfig.manualDevices
|
|
147
|
-
this.log.debug('Removing manualDevices from config as it is empty or undefined');
|
|
117
|
+
if (!platformConfig.manualDevices.length) {
|
|
148
118
|
delete platformConfig.manualDevices;
|
|
149
119
|
}
|
|
150
|
-
this.log.debug('Writing updated config file');
|
|
151
120
|
await this.writeConfigFile(configPath, fileConfig);
|
|
152
|
-
this.log.debug('Config file written successfully');
|
|
153
121
|
this.platform.config = parseConfig(platformConfig);
|
|
154
|
-
this.log.debug('Platform config updated');
|
|
155
122
|
return processedDevices;
|
|
156
123
|
}
|
|
157
124
|
catch (error) {
|
|
158
|
-
this.
|
|
125
|
+
this.log.error(`An error occurred during device discovery: ${error}`);
|
|
159
126
|
return {};
|
|
160
127
|
}
|
|
161
128
|
}
|
|
@@ -175,7 +142,7 @@ export default class DeviceManager {
|
|
|
175
142
|
return sysInfo;
|
|
176
143
|
}
|
|
177
144
|
catch (error) {
|
|
178
|
-
this.
|
|
145
|
+
this.log.error(`An error occurred during getSysInfo: ${error}`);
|
|
179
146
|
}
|
|
180
147
|
}
|
|
181
148
|
async controlDevice(deviceConfig, feature, value, child_num) {
|
|
@@ -199,7 +166,7 @@ export default class DeviceManager {
|
|
|
199
166
|
await this.performDeviceAction(deviceConfig, feature, action, value, child_num);
|
|
200
167
|
}
|
|
201
168
|
catch (error) {
|
|
202
|
-
this.
|
|
169
|
+
this.log.error(`An error occurred performing action: ${error}`);
|
|
203
170
|
}
|
|
204
171
|
}
|
|
205
172
|
async performDeviceAction(deviceConfig, feature, action, value, childNumber) {
|
|
@@ -218,17 +185,7 @@ export default class DeviceManager {
|
|
|
218
185
|
}
|
|
219
186
|
}
|
|
220
187
|
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}`);
|
|
188
|
+
this.log.error(`Error performing action: ${error}`);
|
|
232
189
|
}
|
|
233
190
|
}
|
|
234
191
|
}
|
|
@@ -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;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,CAAC,OAAO,OAAO,aAAa;IAQZ;IAPZ,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,oBAAoB,CAAW;IAC/B,aAAa,CAAW;IAEhC,YAAoB,QAA4B;QAA5B,aAAQ,GAAR,QAAQ,CAAoB;QAC9C,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,oBAAoB,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;QAClF,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjG,CAAC;IAEO,oBAAoB,CAAC,aAAwC;QACnE,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;YAC5E,CAAC;iBAAM,
|
|
1
|
+
{"version":3,"file":"deviceManager.js","sourceRoot":"","sources":["../../src/devices/deviceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,19 +4,19 @@ import type { LightBulb } from './kasaDevices.js';
|
|
|
4
4
|
export default class HomeKitDeviceLightBulb extends HomekitDevice {
|
|
5
5
|
protected kasaDevice: LightBulb;
|
|
6
6
|
private isUpdating;
|
|
7
|
-
private previousKasaDevice;
|
|
8
7
|
private getSysInfo;
|
|
9
8
|
private hasBrightness;
|
|
10
9
|
private hasColorTemp;
|
|
11
10
|
private hasHSV;
|
|
11
|
+
private previousKasaDevice;
|
|
12
12
|
constructor(platform: KasaPythonPlatform, kasaDevice: LightBulb);
|
|
13
|
-
private
|
|
14
|
-
|
|
15
|
-
private
|
|
13
|
+
private checkService;
|
|
14
|
+
private checkCharacteristics;
|
|
15
|
+
private getOrAddCharacteristic;
|
|
16
16
|
private handleOnGet;
|
|
17
|
-
private getCharacteristicValue;
|
|
18
17
|
private getDefaultValue;
|
|
19
18
|
private handleOnSet;
|
|
20
19
|
protected updateState(): Promise<void>;
|
|
21
20
|
private startPolling;
|
|
21
|
+
identify(): void;
|
|
22
22
|
}
|