homebridge-tsvesync 1.0.31 → 1.0.32
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/CHANGELOG.md +5 -8
- package/dist/accessories/base.accessory.d.ts +8 -12
- package/dist/accessories/base.accessory.d.ts.map +1 -1
- package/dist/accessories/base.accessory.js +21 -62
- package/dist/accessories/base.accessory.js.map +1 -1
- package/dist/platform.d.ts +1 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +35 -16
- package/dist/platform.js.map +1 -1
- package/dist/types/polling.types.d.ts +0 -1
- package/dist/types/polling.types.d.ts.map +1 -1
- package/dist/types/polling.types.js +5 -43
- package/dist/types/polling.types.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +8 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/polling-manager.d.ts +6 -7
- package/dist/utils/polling-manager.d.ts.map +1 -1
- package/dist/utils/polling-manager.js +14 -17
- package/dist/utils/polling-manager.js.map +1 -1
- package/package.json +1 -1
- package/src/accessories/base.accessory.ts +23 -71
- package/src/platform.ts +41 -16
- package/src/types/polling.types.ts +6 -45
- package/src/utils/logger.ts +7 -9
- package/src/utils/polling-manager.ts +14 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
## [1.0.31] - 2025-01-04
|
|
1
|
+
# Change Log
|
|
4
2
|
|
|
3
|
+
# 1.0.32 (2025-01-04)
|
|
5
4
|
### Fixed
|
|
6
|
-
- Fixed issue where devices were not being refreshed
|
|
7
|
-
|
|
8
|
-
## [1.0.30] - 2025-01-04
|
|
5
|
+
- Fixed issue where devices were not being refreshed and polling too frequently
|
|
9
6
|
|
|
7
|
+
# 1.0.30 (2025-01-04)
|
|
10
8
|
### Fixed
|
|
11
9
|
- Fixed issue where login token was not being refreshed
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
# 1.0.27 (2025-01-02)
|
|
15
12
|
### Fixed
|
|
16
13
|
- Fixed invalid speed setting issues for air purifiers, fans, and humidifiers
|
|
17
14
|
- Speed 0 now properly turns off the device instead of attempting to set an invalid speed
|
|
@@ -33,6 +33,10 @@ export declare abstract class BaseAccessory {
|
|
|
33
33
|
* Update device-specific states
|
|
34
34
|
*/
|
|
35
35
|
protected abstract updateDeviceSpecificStates(details: any): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Update device states from platform
|
|
38
|
+
*/
|
|
39
|
+
updateFromPlatform(details: any): Promise<void>;
|
|
36
40
|
/**
|
|
37
41
|
* Get device capabilities
|
|
38
42
|
*/
|
|
@@ -53,18 +57,6 @@ export declare abstract class BaseAccessory {
|
|
|
53
57
|
* Set up the accessory services and start polling
|
|
54
58
|
*/
|
|
55
59
|
private setupAccessory;
|
|
56
|
-
/**
|
|
57
|
-
* Start polling for device updates
|
|
58
|
-
*/
|
|
59
|
-
protected startPolling(): void;
|
|
60
|
-
/**
|
|
61
|
-
* Stop polling for device updates
|
|
62
|
-
*/
|
|
63
|
-
protected stopPolling(): void;
|
|
64
|
-
/**
|
|
65
|
-
* Update the polling manager with the device's active state
|
|
66
|
-
*/
|
|
67
|
-
protected updatePollingState(isActive: boolean): void;
|
|
68
60
|
/**
|
|
69
61
|
* Sync the device state with VeSync
|
|
70
62
|
*/
|
|
@@ -89,5 +81,9 @@ export declare abstract class BaseAccessory {
|
|
|
89
81
|
* Handle device errors with appropriate recovery actions
|
|
90
82
|
*/
|
|
91
83
|
protected handleDeviceError(message: string, error: Error | any): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Update polling state based on device activity
|
|
86
|
+
*/
|
|
87
|
+
protected updatePollingState(isActive: boolean): void;
|
|
92
88
|
}
|
|
93
89
|
//# sourceMappingURL=base.accessory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/base.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAKlF,8BAAsB,aAAa;IACjC,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAK;gBAG7C,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"base.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/base.accessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ class BaseAccessory {
|
|
|
20
20
|
});
|
|
21
21
|
// Initialize managers
|
|
22
22
|
this.logger = new logger_1.PluginLogger(this.platform.log, this.platform.config.debug);
|
|
23
|
-
this.pollingManager = new polling_manager_1.PollingManager(this.
|
|
23
|
+
this.pollingManager = new polling_manager_1.PollingManager(this.platform.log, this.platform.config.polling);
|
|
24
24
|
this.retryManager = new retry_1.RetryManager(this.platform.log, this.platform.config.retry);
|
|
25
25
|
// Set up the accessory
|
|
26
26
|
this.setupAccessory();
|
|
@@ -54,6 +54,12 @@ class BaseAccessory {
|
|
|
54
54
|
throw error;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Update device states from platform
|
|
59
|
+
*/
|
|
60
|
+
async updateFromPlatform(details) {
|
|
61
|
+
await this.updateDeviceSpecificStates(details);
|
|
62
|
+
}
|
|
57
63
|
/**
|
|
58
64
|
* Get the device type for polling configuration
|
|
59
65
|
*/
|
|
@@ -136,66 +142,13 @@ class BaseAccessory {
|
|
|
136
142
|
}
|
|
137
143
|
// Set up device-specific service
|
|
138
144
|
this.setupService();
|
|
139
|
-
//
|
|
145
|
+
// Initialize the accessory
|
|
140
146
|
this.initializationPromise.then(() => {
|
|
141
|
-
if (this.isInitialized) {
|
|
142
|
-
this.
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
this.logger.warn('=== INIT: Device failed to initialize, not starting polling ===', this.getLogContext());
|
|
147
|
+
if (!this.isInitialized) {
|
|
148
|
+
this.logger.warn('=== INIT: Device failed to initialize ===', this.getLogContext());
|
|
146
149
|
}
|
|
147
150
|
});
|
|
148
151
|
}
|
|
149
|
-
/**
|
|
150
|
-
* Start polling for device updates
|
|
151
|
-
*/
|
|
152
|
-
startPolling() {
|
|
153
|
-
// Only start polling if device is initialized
|
|
154
|
-
if (!this.isInitialized) {
|
|
155
|
-
this.logger.warn('=== POLLING: Cannot start polling - device not initialized ===', this.getLogContext());
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
this.pollingManager.startPolling(async () => {
|
|
159
|
-
try {
|
|
160
|
-
// Wait for platform to be ready
|
|
161
|
-
if (typeof this.platform.isReady === 'function') {
|
|
162
|
-
await this.platform.isReady();
|
|
163
|
-
}
|
|
164
|
-
// If device becomes uninitialized, try to reinitialize
|
|
165
|
-
if (!this.isInitialized) {
|
|
166
|
-
this.logger.warn('=== POLLING: Device lost initialization, attempting to reinitialize ===', this.getLogContext());
|
|
167
|
-
await this.initialize();
|
|
168
|
-
if (!this.isInitialized) {
|
|
169
|
-
this.logger.error('=== POLLING: Failed to reinitialize device, stopping polling ===', this.getLogContext());
|
|
170
|
-
this.stopPolling();
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
await this.syncDeviceState();
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
178
|
-
this.logger.error('Failed during polling', this.getLogContext(), err);
|
|
179
|
-
// If error during polling and device is not initialized, stop polling
|
|
180
|
-
if (!this.isInitialized) {
|
|
181
|
-
this.logger.error('=== POLLING: Device not initialized after error, stopping polling ===', this.getLogContext());
|
|
182
|
-
this.stopPolling();
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Stop polling for device updates
|
|
189
|
-
*/
|
|
190
|
-
stopPolling() {
|
|
191
|
-
this.pollingManager.stopPolling();
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Update the polling manager with the device's active state
|
|
195
|
-
*/
|
|
196
|
-
updatePollingState(isActive) {
|
|
197
|
-
this.pollingManager.updateDeviceState(isActive);
|
|
198
|
-
}
|
|
199
152
|
/**
|
|
200
153
|
* Sync the device state with VeSync
|
|
201
154
|
*/
|
|
@@ -239,14 +192,14 @@ class BaseAccessory {
|
|
|
239
192
|
const char = targetService.getCharacteristic(characteristic);
|
|
240
193
|
if (onGet) {
|
|
241
194
|
char.onGet(async () => {
|
|
242
|
-
const context = this.getLogContext('get characteristic', characteristic.name);
|
|
243
195
|
try {
|
|
244
|
-
|
|
245
|
-
this.
|
|
246
|
-
|
|
196
|
+
// Get fresh data from API first
|
|
197
|
+
await this.platform.updateDeviceStatesFromAPI(true);
|
|
198
|
+
// Now get the value using the updated state
|
|
199
|
+
return await this.withRetry(onGet, `get ${characteristic.name}`);
|
|
247
200
|
}
|
|
248
201
|
catch (error) {
|
|
249
|
-
this.logger.error('Failed to get characteristic value',
|
|
202
|
+
this.logger.error('Failed to get characteristic value', this.getLogContext(), error);
|
|
250
203
|
throw error;
|
|
251
204
|
}
|
|
252
205
|
});
|
|
@@ -326,6 +279,12 @@ class BaseAccessory {
|
|
|
326
279
|
this.logger.error(message, context, wrappedError);
|
|
327
280
|
this.needsRetry = true;
|
|
328
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Update polling state based on device activity
|
|
284
|
+
*/
|
|
285
|
+
updatePollingState(isActive) {
|
|
286
|
+
this.pollingManager.updateDeviceStates(isActive);
|
|
287
|
+
}
|
|
329
288
|
}
|
|
330
289
|
exports.BaseAccessory = BaseAccessory;
|
|
331
290
|
//# sourceMappingURL=base.accessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.accessory.js","sourceRoot":"","sources":["../../src/accessories/base.accessory.ts"],"names":[],"mappings":";;;AAGA,8DAA0D;AAC1D,0CAA8C;AAC9C,4CAA2D;AAE3D,MAAsB,aAAa;IAgBjC,YACE,QAA0B,EAC1B,SAA4B,EAC5B,MAA6B;QAXvB,eAAU,GAAG,KAAK,CAAC;QACnB,kBAAa,GAAG,KAAK,CAAC;QAGtB,mBAAc,GAAG,KAAK,CAAC;QACvB,2BAAsB,GAAG,CAAC,CAAC;QAClB,8BAAyB,GAAG,CAAC,CAAC;QAO7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,gCAAgC;QAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,CAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAC3B,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CACtC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"base.accessory.js","sourceRoot":"","sources":["../../src/accessories/base.accessory.ts"],"names":[],"mappings":";;;AAGA,8DAA0D;AAC1D,0CAA8C;AAC9C,4CAA2D;AAE3D,MAAsB,aAAa;IAgBjC,YACE,QAA0B,EAC1B,SAA4B,EAC5B,MAA6B;QAXvB,eAAU,GAAG,KAAK,CAAC;QACnB,kBAAa,GAAG,KAAK,CAAC;QAGtB,mBAAc,GAAG,KAAK,CAAC;QACvB,2BAAsB,GAAG,CAAC,CAAC;QAClB,8BAAyB,GAAG,CAAC,CAAC;QAO7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,gCAAgC;QAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,CAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAC3B,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAC7B,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAY,CAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAC3B,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,SAAkB,EAClB,cAAuB,EACvB,KAAW;QAEX,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;YAChC,SAAS;YACT,cAAc;YACd,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,SAAS,CACvB,SAA2B,EAC3B,aAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAElD,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE;gBAChD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,SAAS,EAAE,aAAa;aACzB,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,6EAA6E;YAC7E,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAYD;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAAC,OAAY;QAC1C,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAOD;;OAEG;IACO,aAAa;QACrB,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxD,OAAO,aAAa,CAAC;SACtB;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACtE,OAAO,YAAY,CAAC;SACrB;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC/D,OAAO,KAAK,CAAC;SACd;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChE,OAAO,OAAO,CAAC;SAChB;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAClE,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI;YACF,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,EAAE;gBACnE,IAAI;oBACF,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,OAAO;iBACR;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAE9B,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,yBAAyB,EAAE;wBACjE,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wBACtE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,IAAI,CAAC,yBAAyB,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;wBAC9I,MAAM,GAAG,CAAC;qBACX;oBAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;iBAC1D;aACF;SACF;gBAAS;YACR,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB;QAEjC,gCAAgC;QAChC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE;YAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SAC/B;QAED,sCAAsC;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;IAEH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC1F,IAAI,WAAW,EAAE;YACf,WAAW;iBACR,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;iBACtE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;iBAC7E,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACnF;QAED,iCAAiC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2BAA2B;QAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;aACrF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe;QAC1B,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAClC,KAAK,IAAI,EAAE;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAE/B,2EAA2E;gBAC3E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;oBAC7B,OAAO,IAAI,CAAC;iBACb;gBAED,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC,EACD,mBAAmB,CACpB,CAAC;YAEF,OAAO,OAAO,KAAK,IAAI,CAAC;SACzB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAED;;OAEG;IACO,0BAA0B,CAAC,IAAY;QAC/C,IAAI,IAAI,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,CAAE,YAAY;QACvC,IAAI,IAAI,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,CAAE,OAAO;QAClC,IAAI,IAAI,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,CAAE,OAAO;QAClC,IAAI,IAAI,IAAI,GAAG;YAAE,OAAO,CAAC,CAAC,CAAC,WAAW;QACtC,OAAO,CAAC,CAAC,CAAkB,OAAO;IACpC,CAAC;IAED;;OAEG;IACO,mBAAmB,CAC3B,cAAmB,EACnB,KAA0C,EAC1C,KAAqD,EACrD,KAA2B,EAC3B,OAAiB;QAEjB,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI;oBACF,gCAAgC;oBAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;oBAEpD,4CAA4C;oBAC5C,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;iBAClE;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,oCAAoC,EACpC,IAAI,CAAC,aAAa,EAAE,EACpB,KAAc,CACf,CAAC;oBACF,MAAM,KAAK,CAAC;iBACb;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAChC,oBAAoB,EACpB,cAAc,CAAC,IAAI,EACnB,KAAK,CACN,CAAC;gBAEF,IAAI;oBACF,MAAM,IAAI,CAAC,SAAS,CAClB,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAClB,OAAO,cAAc,CAAC,IAAI,OAAO,KAAK,EAAE,CACzC,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAqB,CAAC,CAAC;iBAChD;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,oCAAoC,EACpC,OAAO,EACP,KAAc,CACf,CAAC;oBACF,MAAM,KAAK,CAAC;iBACb;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC;IAED;;OAEG;IACO,yBAAyB,CACjC,cAAmB,EACnB,KAA0B;QAE1B,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACtB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;YAC1E,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;SACnB,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,kBAAkB,CAAC,GAAW,EAAE,KAAc;;QAC5D,IAAI;YACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG;gBAC9B,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;gBAChC,OAAO,EAAE;oBACP,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,0CAAE,OAAO;oBACzC,CAAC,GAAG,CAAC,EAAE,KAAK;iBACb;aACF,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAEpE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,WAAW,GAAG,OAAO,KAAK,EAAE,EAC5B,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CACpC,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,QAAQ,EAAE,KAAc,CAAC,CAAC;SAChE;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,KAAkB;;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvF,gCAAgC;QAChC,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,IAAI,MAAK,OAAO,KAAI,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,GAAG,0CAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA,EAAE;YACrF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,0BAA0B;QAC1B,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,QAAQ,CAAC,YAAY,CAAC,MAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAE;YAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YACtF,OAAO;SACR;QAED,wBAAwB;QACxB,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,UAAU,CAAC,OAAO,CAAC,KAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,WAAW,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YACzD,OAAO;SACR;QAED,sBAAsB;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,QAAiB;QAC5C,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF;AAhYD,sCAgYC"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
22
22
|
private initializationPromise;
|
|
23
23
|
private initializationResolver;
|
|
24
24
|
private isInitialized;
|
|
25
|
+
private pollingManager;
|
|
25
26
|
constructor(log: Logger, config: PlatformConfig, api: API);
|
|
26
27
|
/**
|
|
27
28
|
* Check if platform is ready
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5H;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,qBAAqB;aAqB1C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAtB1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAGpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAE3E,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAkB;gBAGtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAkE1B;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrC;;OAEG;YACW,qBAAqB;IAyBnC;;OAEG;YACW,kBAAkB;IAiChC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAK/C;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,WAAW;IAuCzB;;OAEG;IACU,yBAAyB,CAAC,cAAc,UAAQ;IA+E7D;;OAEG;YACW,kBAAkB;IAShC;;OAEG;IACG,eAAe;IA0ErB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAO3B"}
|
package/dist/platform.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.TSVESyncPlatform = void 0;
|
|
|
4
4
|
const settings_1 = require("./settings");
|
|
5
5
|
const tsvesync_1 = require("tsvesync");
|
|
6
6
|
const device_factory_1 = require("./utils/device-factory");
|
|
7
|
+
const polling_manager_1 = require("./utils/polling-manager");
|
|
7
8
|
/**
|
|
8
9
|
* HomebridgePlatform
|
|
9
10
|
* This class is the main constructor for your plugin, this is where you should
|
|
@@ -33,8 +34,10 @@ class TSVESyncPlatform {
|
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
36
|
// Get config values with defaults
|
|
36
|
-
this.updateInterval = config.updateInterval ||
|
|
37
|
+
this.updateInterval = config.updateInterval || 300; // Default to 5 minutes
|
|
37
38
|
this.debug = config.debug || false;
|
|
39
|
+
// Initialize polling manager
|
|
40
|
+
this.pollingManager = new polling_manager_1.PollingManager(this.log, config.polling);
|
|
38
41
|
// Initialize VeSync client with all configuration
|
|
39
42
|
this.client = new tsvesync_1.VeSync(config.username, config.password, Intl.DateTimeFormat().resolvedOptions().timeZone, this.debug, true, // redact sensitive info
|
|
40
43
|
config.apiUrl, this.log);
|
|
@@ -56,13 +59,8 @@ class TSVESyncPlatform {
|
|
|
56
59
|
try {
|
|
57
60
|
// Initialize platform
|
|
58
61
|
await this.initializePlatform();
|
|
59
|
-
//
|
|
60
|
-
this.
|
|
61
|
-
this.updateDeviceStates().catch(error => {
|
|
62
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
63
|
-
this.log.error('=== UPDATE INTERVAL: Failed to update device states ===', err);
|
|
64
|
-
});
|
|
65
|
-
}, this.updateInterval * 1000);
|
|
62
|
+
// Start polling for device updates
|
|
63
|
+
this.pollingManager.startPolling(() => this.updateDeviceStates());
|
|
66
64
|
}
|
|
67
65
|
catch (error) {
|
|
68
66
|
this.log.error('Failed to initialize platform:', error);
|
|
@@ -70,9 +68,7 @@ class TSVESyncPlatform {
|
|
|
70
68
|
});
|
|
71
69
|
// Clean up when shutting down
|
|
72
70
|
this.api.on('shutdown', () => {
|
|
73
|
-
|
|
74
|
-
clearInterval(this.deviceUpdateInterval);
|
|
75
|
-
}
|
|
71
|
+
this.pollingManager.stopPolling();
|
|
76
72
|
});
|
|
77
73
|
}
|
|
78
74
|
/**
|
|
@@ -188,6 +184,7 @@ class TSVESyncPlatform {
|
|
|
188
184
|
}
|
|
189
185
|
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
190
186
|
}
|
|
187
|
+
this.log.info('=== LOGIN EXPIRED: Attempting login ===');
|
|
191
188
|
this.lastLoginAttempt = new Date();
|
|
192
189
|
const loginResult = await this.client.login();
|
|
193
190
|
if (!loginResult) {
|
|
@@ -218,35 +215,54 @@ class TSVESyncPlatform {
|
|
|
218
215
|
async updateDeviceStatesFromAPI(isPolledUpdate = false) {
|
|
219
216
|
if (!this.isInitialized) {
|
|
220
217
|
if (this.debug) {
|
|
221
|
-
this.log.debug('
|
|
218
|
+
this.log.debug('=== UPDATE API: Platform not initialized, skipping update ===');
|
|
222
219
|
}
|
|
223
220
|
return;
|
|
224
221
|
}
|
|
225
222
|
try {
|
|
223
|
+
if (this.debug) {
|
|
224
|
+
this.log.debug('=== UPDATE API: Starting device state update ===');
|
|
225
|
+
}
|
|
226
226
|
// Ensure we're logged in
|
|
227
227
|
const loginSuccess = await this.ensureLogin();
|
|
228
228
|
if (!loginSuccess) {
|
|
229
229
|
throw new Error('Failed to login for device state update');
|
|
230
230
|
}
|
|
231
|
-
|
|
231
|
+
if (this.debug) {
|
|
232
|
+
this.log.debug('=== UPDATE API: Successfully logged in ===');
|
|
233
|
+
}
|
|
234
|
+
// Get devices from API - this includes all device states
|
|
232
235
|
const success = await this.client.getDevices();
|
|
233
236
|
if (!success) {
|
|
234
237
|
throw new Error('Failed to get devices from API');
|
|
235
238
|
}
|
|
239
|
+
if (this.debug) {
|
|
240
|
+
this.log.debug('=== UPDATE API: Successfully retrieved devices ===');
|
|
241
|
+
}
|
|
236
242
|
// Get all devices
|
|
237
243
|
const devices = this.getAllDevices();
|
|
238
244
|
if (!devices || !devices.length) {
|
|
239
|
-
if (!isPolledUpdate) {
|
|
245
|
+
if (!isPolledUpdate || this.debug) {
|
|
240
246
|
this.log.warn('=== UPDATE API: No devices found during state update ===');
|
|
241
247
|
}
|
|
242
248
|
return;
|
|
243
249
|
}
|
|
244
|
-
|
|
250
|
+
if (this.debug) {
|
|
251
|
+
this.log.debug(`=== UPDATE API: Found ${devices.length} devices to update ===`);
|
|
252
|
+
}
|
|
253
|
+
// Update each accessory with the device data we already have
|
|
245
254
|
for (const device of devices) {
|
|
246
255
|
const accessory = this.deviceAccessories.get(this.generateDeviceUUID(device));
|
|
247
256
|
if (accessory) {
|
|
248
257
|
try {
|
|
249
|
-
|
|
258
|
+
if (this.debug) {
|
|
259
|
+
this.log.debug(`=== UPDATE API: Updating device ${device.deviceName} ===`);
|
|
260
|
+
}
|
|
261
|
+
// Pass the device data directly since we already have it
|
|
262
|
+
await accessory.updateFromPlatform(device);
|
|
263
|
+
if (this.debug) {
|
|
264
|
+
this.log.debug(`=== UPDATE API: Successfully updated device ${device.deviceName} ===`);
|
|
265
|
+
}
|
|
250
266
|
}
|
|
251
267
|
catch (error) {
|
|
252
268
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
@@ -254,6 +270,9 @@ class TSVESyncPlatform {
|
|
|
254
270
|
}
|
|
255
271
|
}
|
|
256
272
|
}
|
|
273
|
+
if (this.debug) {
|
|
274
|
+
this.log.debug('=== UPDATE API: Completed device state updates ===');
|
|
275
|
+
}
|
|
257
276
|
}
|
|
258
277
|
catch (error) {
|
|
259
278
|
const err = error instanceof Error ? error : new Error(String(error));
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling.types.d.ts","sourceRoot":"","sources":["../../src/types/polling.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAE5B,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IAEpB,cAAc,EAAE,OAAO,CAAC;IAExB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,sBAAsB,EAAE,aAMpC,CAAC
|
|
1
|
+
{"version":3,"file":"polling.types.d.ts","sourceRoot":"","sources":["../../src/types/polling.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAE5B,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IAEpB,cAAc,EAAE,OAAO,CAAC;IAExB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,sBAAsB,EAAE,aAMpC,CAAC"}
|
|
@@ -1,49 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DEFAULT_POLLING_CONFIG = void 0;
|
|
4
4
|
exports.DEFAULT_POLLING_CONFIG = {
|
|
5
|
-
baseInterval:
|
|
6
|
-
maxInterval:
|
|
7
|
-
minInterval:
|
|
5
|
+
baseInterval: 300000,
|
|
6
|
+
maxInterval: 900000,
|
|
7
|
+
minInterval: 60000,
|
|
8
8
|
dynamicPolling: true,
|
|
9
|
-
inactiveMultiplier:
|
|
10
|
-
};
|
|
11
|
-
// Device-specific polling configurations
|
|
12
|
-
exports.DEVICE_POLLING_CONFIGS = {
|
|
13
|
-
airPurifier: {
|
|
14
|
-
baseInterval: 15000,
|
|
15
|
-
maxInterval: 60000,
|
|
16
|
-
minInterval: 10000,
|
|
17
|
-
dynamicPolling: true,
|
|
18
|
-
inactiveMultiplier: 2,
|
|
19
|
-
},
|
|
20
|
-
humidifier: {
|
|
21
|
-
baseInterval: 20000,
|
|
22
|
-
maxInterval: 120000,
|
|
23
|
-
minInterval: 10000,
|
|
24
|
-
dynamicPolling: true,
|
|
25
|
-
inactiveMultiplier: 2,
|
|
26
|
-
},
|
|
27
|
-
fan: {
|
|
28
|
-
baseInterval: 30000,
|
|
29
|
-
maxInterval: 180000,
|
|
30
|
-
minInterval: 15000,
|
|
31
|
-
dynamicPolling: true,
|
|
32
|
-
inactiveMultiplier: 3,
|
|
33
|
-
},
|
|
34
|
-
light: {
|
|
35
|
-
baseInterval: 30000,
|
|
36
|
-
maxInterval: 300000,
|
|
37
|
-
minInterval: 15000,
|
|
38
|
-
dynamicPolling: false,
|
|
39
|
-
inactiveMultiplier: 2,
|
|
40
|
-
},
|
|
41
|
-
outlet: {
|
|
42
|
-
baseInterval: 20000,
|
|
43
|
-
maxInterval: 120000,
|
|
44
|
-
minInterval: 10000,
|
|
45
|
-
dynamicPolling: true,
|
|
46
|
-
inactiveMultiplier: 2,
|
|
47
|
-
},
|
|
9
|
+
inactiveMultiplier: 3,
|
|
48
10
|
};
|
|
49
11
|
//# sourceMappingURL=polling.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling.types.js","sourceRoot":"","sources":["../../src/types/polling.types.ts"],"names":[],"mappings":";;;AAaa,QAAA,sBAAsB,GAAkB;IACnD,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"polling.types.js","sourceRoot":"","sources":["../../src/types/polling.types.ts"],"names":[],"mappings":";;;AAaa,QAAA,sBAAsB,GAAkB;IACnD,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,CAAC;CACtB,CAAC"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class PluginLogger {
|
|
|
23
23
|
*/
|
|
24
24
|
error(message: string, context: Partial<LogContext>, error?: Error): void;
|
|
25
25
|
/**
|
|
26
|
-
* Log a debug message
|
|
26
|
+
* Log a debug message
|
|
27
27
|
*/
|
|
28
28
|
debug(message: string, context: Partial<LogContext>): void;
|
|
29
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,OAAe;IAG7C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAIzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAYxE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAYzE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAM1D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,OAAe;IAG7C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAIzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAYxE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAYzE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAM1D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAStC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAIlD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAQ/D;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GACnE,IAAI;IAOP;;OAEG;IACH,OAAO,CAAC,aAAa;CAoBtB"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -43,7 +43,7 @@ class PluginLogger {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* Log a debug message
|
|
46
|
+
* Log a debug message
|
|
47
47
|
*/
|
|
48
48
|
debug(message, context) {
|
|
49
49
|
if (this.debugMode) {
|
|
@@ -54,10 +54,13 @@ class PluginLogger {
|
|
|
54
54
|
* Log a state change
|
|
55
55
|
*/
|
|
56
56
|
stateChange(context) {
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
const message = `${context.operation}: ${context.characteristic} = ${context.value}`;
|
|
58
|
+
if (this.debugMode) {
|
|
59
|
+
this.debug(message, context);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.info(message, context);
|
|
63
|
+
}
|
|
61
64
|
}
|
|
62
65
|
/**
|
|
63
66
|
* Log an operation start
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;AAUA,MAAa,YAAY;IACvB,YACmB,GAAW,EACX,YAAqB,KAAK;QAD1B,QAAG,GAAH,GAAG,CAAQ;QACX,cAAS,GAAT,SAAS,CAAiB;IAC1C,CAAC;IAEJ;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,OAA4B;QAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,OAA4B,EAAE,KAAa;QAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,gBAAgB,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;gBACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC5B;SACF;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACjC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,OAA4B,EAAE,KAAa;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,gBAAgB,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;gBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC7B;SACF;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;SAClC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,OAA4B;QACjD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAmB;QAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,10 @@ export declare class PollingManager {
|
|
|
4
4
|
private currentInterval;
|
|
5
5
|
private timer;
|
|
6
6
|
private lastPollTime;
|
|
7
|
-
private
|
|
7
|
+
private hasActiveDevices;
|
|
8
8
|
private readonly config;
|
|
9
|
-
private readonly deviceType;
|
|
10
9
|
private readonly log;
|
|
11
|
-
constructor(
|
|
10
|
+
constructor(log: Logger, customConfig?: Partial<PollingConfig>);
|
|
12
11
|
/**
|
|
13
12
|
* Start polling with the configured interval
|
|
14
13
|
* @param callback Function to call on each poll
|
|
@@ -19,10 +18,10 @@ export declare class PollingManager {
|
|
|
19
18
|
*/
|
|
20
19
|
stopPolling(): void;
|
|
21
20
|
/**
|
|
22
|
-
* Update the
|
|
23
|
-
* @param
|
|
21
|
+
* Update the active state of devices
|
|
22
|
+
* @param hasActiveDevices Whether any devices are currently active
|
|
24
23
|
*/
|
|
25
|
-
|
|
24
|
+
updateDeviceStates(hasActiveDevices: boolean): void;
|
|
26
25
|
/**
|
|
27
26
|
* Schedule the next poll based on current conditions
|
|
28
27
|
* @param callback Function to call on next poll
|
|
@@ -30,7 +29,7 @@ export declare class PollingManager {
|
|
|
30
29
|
*/
|
|
31
30
|
private scheduleNextPoll;
|
|
32
31
|
/**
|
|
33
|
-
* Adjust the polling interval based on device
|
|
32
|
+
* Adjust the polling interval based on device states and conditions
|
|
34
33
|
* @param wasError Whether the last poll resulted in an error
|
|
35
34
|
*/
|
|
36
35
|
private adjustPollingInterval;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling-manager.d.ts","sourceRoot":"","sources":["../../src/utils/polling-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"polling-manager.d.ts","sourceRoot":"","sources":["../../src/utils/polling-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAA0B,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/E,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAG3B,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAavC;;;OAGG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAoBxD;;OAEG;IACI,WAAW,IAAI,IAAI;IAO1B;;;OAGG;IACI,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,GAAG,IAAI;IAS1D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;OAEG;IACI,kBAAkB,IAAI,MAAM;CAGpC"}
|
|
@@ -3,17 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PollingManager = void 0;
|
|
4
4
|
const polling_types_1 = require("../types/polling.types");
|
|
5
5
|
class PollingManager {
|
|
6
|
-
constructor(
|
|
6
|
+
constructor(log, customConfig) {
|
|
7
7
|
this.timer = null;
|
|
8
8
|
this.lastPollTime = 0;
|
|
9
|
-
this.
|
|
10
|
-
this.deviceType = deviceType;
|
|
9
|
+
this.hasActiveDevices = false;
|
|
11
10
|
this.log = log;
|
|
12
|
-
// Get device-specific config or default
|
|
13
|
-
const baseConfig = polling_types_1.DEVICE_POLLING_CONFIGS[deviceType] || polling_types_1.DEFAULT_POLLING_CONFIG;
|
|
14
11
|
// Merge with custom config if provided
|
|
15
12
|
this.config = {
|
|
16
|
-
...
|
|
13
|
+
...polling_types_1.DEFAULT_POLLING_CONFIG,
|
|
17
14
|
...customConfig,
|
|
18
15
|
};
|
|
19
16
|
this.currentInterval = this.config.baseInterval;
|
|
@@ -32,7 +29,7 @@ class PollingManager {
|
|
|
32
29
|
this.scheduleNextPoll(callback);
|
|
33
30
|
}
|
|
34
31
|
catch (error) {
|
|
35
|
-
this.log.error(
|
|
32
|
+
this.log.error('Polling error:', error);
|
|
36
33
|
// On error, schedule next poll but maybe with a longer interval
|
|
37
34
|
this.scheduleNextPoll(callback, true);
|
|
38
35
|
}
|
|
@@ -50,14 +47,14 @@ class PollingManager {
|
|
|
50
47
|
}
|
|
51
48
|
}
|
|
52
49
|
/**
|
|
53
|
-
* Update the
|
|
54
|
-
* @param
|
|
50
|
+
* Update the active state of devices
|
|
51
|
+
* @param hasActiveDevices Whether any devices are currently active
|
|
55
52
|
*/
|
|
56
|
-
|
|
57
|
-
if (this.
|
|
53
|
+
updateDeviceStates(hasActiveDevices) {
|
|
54
|
+
if (this.hasActiveDevices === hasActiveDevices) {
|
|
58
55
|
return;
|
|
59
56
|
}
|
|
60
|
-
this.
|
|
57
|
+
this.hasActiveDevices = hasActiveDevices;
|
|
61
58
|
this.adjustPollingInterval();
|
|
62
59
|
}
|
|
63
60
|
/**
|
|
@@ -70,14 +67,14 @@ class PollingManager {
|
|
|
70
67
|
this.timer = setTimeout(() => this.startPolling(callback), this.currentInterval);
|
|
71
68
|
}
|
|
72
69
|
/**
|
|
73
|
-
* Adjust the polling interval based on device
|
|
70
|
+
* Adjust the polling interval based on device states and conditions
|
|
74
71
|
* @param wasError Whether the last poll resulted in an error
|
|
75
72
|
*/
|
|
76
73
|
adjustPollingInterval(wasError = false) {
|
|
77
74
|
let interval = this.config.baseInterval;
|
|
78
|
-
// If dynamic polling is enabled, adjust based on device
|
|
75
|
+
// If dynamic polling is enabled, adjust based on device states
|
|
79
76
|
if (this.config.dynamicPolling) {
|
|
80
|
-
if (!this.
|
|
77
|
+
if (!this.hasActiveDevices) {
|
|
81
78
|
interval *= this.config.inactiveMultiplier;
|
|
82
79
|
}
|
|
83
80
|
}
|
|
@@ -87,8 +84,8 @@ class PollingManager {
|
|
|
87
84
|
}
|
|
88
85
|
// Ensure interval stays within configured bounds
|
|
89
86
|
this.currentInterval = Math.min(Math.max(interval, this.config.minInterval), this.config.maxInterval);
|
|
90
|
-
this.log.debug(`
|
|
91
|
-
`(Active: ${this.
|
|
87
|
+
this.log.debug(`Adjusted polling interval: ${this.currentInterval}ms ` +
|
|
88
|
+
`(Active Devices: ${this.hasActiveDevices}, Error: ${wasError})`);
|
|
92
89
|
}
|
|
93
90
|
/**
|
|
94
91
|
* Get the time since the last successful poll
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling-manager.js","sourceRoot":"","sources":["../../src/utils/polling-manager.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"polling-manager.js","sourceRoot":"","sources":["../../src/utils/polling-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -42,7 +42,6 @@ export abstract class BaseAccessory {
|
|
|
42
42
|
);
|
|
43
43
|
|
|
44
44
|
this.pollingManager = new PollingManager(
|
|
45
|
-
this.getDeviceType(),
|
|
46
45
|
this.platform.log,
|
|
47
46
|
this.platform.config.polling
|
|
48
47
|
);
|
|
@@ -105,6 +104,13 @@ export abstract class BaseAccessory {
|
|
|
105
104
|
*/
|
|
106
105
|
protected abstract updateDeviceSpecificStates(details: any): Promise<void>;
|
|
107
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Update device states from platform
|
|
109
|
+
*/
|
|
110
|
+
public async updateFromPlatform(details: any): Promise<void> {
|
|
111
|
+
await this.updateDeviceSpecificStates(details);
|
|
112
|
+
}
|
|
113
|
+
|
|
108
114
|
/**
|
|
109
115
|
* Get device capabilities
|
|
110
116
|
*/
|
|
@@ -198,72 +204,14 @@ export abstract class BaseAccessory {
|
|
|
198
204
|
// Set up device-specific service
|
|
199
205
|
this.setupService();
|
|
200
206
|
|
|
201
|
-
//
|
|
207
|
+
// Initialize the accessory
|
|
202
208
|
this.initializationPromise.then(() => {
|
|
203
|
-
if (this.isInitialized) {
|
|
204
|
-
this.
|
|
205
|
-
} else {
|
|
206
|
-
this.logger.warn('=== INIT: Device failed to initialize, not starting polling ===', this.getLogContext());
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Start polling for device updates
|
|
213
|
-
*/
|
|
214
|
-
protected startPolling(): void {
|
|
215
|
-
// Only start polling if device is initialized
|
|
216
|
-
if (!this.isInitialized) {
|
|
217
|
-
this.logger.warn('=== POLLING: Cannot start polling - device not initialized ===', this.getLogContext());
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
this.pollingManager.startPolling(async () => {
|
|
222
|
-
try {
|
|
223
|
-
// Wait for platform to be ready
|
|
224
|
-
if (typeof this.platform.isReady === 'function') {
|
|
225
|
-
await this.platform.isReady();
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// If device becomes uninitialized, try to reinitialize
|
|
229
|
-
if (!this.isInitialized) {
|
|
230
|
-
this.logger.warn('=== POLLING: Device lost initialization, attempting to reinitialize ===', this.getLogContext());
|
|
231
|
-
await this.initialize();
|
|
232
|
-
if (!this.isInitialized) {
|
|
233
|
-
this.logger.error('=== POLLING: Failed to reinitialize device, stopping polling ===', this.getLogContext());
|
|
234
|
-
this.stopPolling();
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
await this.syncDeviceState();
|
|
240
|
-
} catch (error) {
|
|
241
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
242
|
-
this.logger.error('Failed during polling', this.getLogContext(), err);
|
|
243
|
-
|
|
244
|
-
// If error during polling and device is not initialized, stop polling
|
|
245
|
-
if (!this.isInitialized) {
|
|
246
|
-
this.logger.error('=== POLLING: Device not initialized after error, stopping polling ===', this.getLogContext());
|
|
247
|
-
this.stopPolling();
|
|
248
|
-
}
|
|
209
|
+
if (!this.isInitialized) {
|
|
210
|
+
this.logger.warn('=== INIT: Device failed to initialize ===', this.getLogContext());
|
|
249
211
|
}
|
|
250
212
|
});
|
|
251
213
|
}
|
|
252
214
|
|
|
253
|
-
/**
|
|
254
|
-
* Stop polling for device updates
|
|
255
|
-
*/
|
|
256
|
-
protected stopPolling(): void {
|
|
257
|
-
this.pollingManager.stopPolling();
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Update the polling manager with the device's active state
|
|
262
|
-
*/
|
|
263
|
-
protected updatePollingState(isActive: boolean): void {
|
|
264
|
-
this.pollingManager.updateDeviceState(isActive);
|
|
265
|
-
}
|
|
266
|
-
|
|
267
215
|
/**
|
|
268
216
|
* Sync the device state with VeSync
|
|
269
217
|
*/
|
|
@@ -317,19 +265,16 @@ export abstract class BaseAccessory {
|
|
|
317
265
|
|
|
318
266
|
if (onGet) {
|
|
319
267
|
char.onGet(async () => {
|
|
320
|
-
const context = this.getLogContext(
|
|
321
|
-
'get characteristic',
|
|
322
|
-
characteristic.name
|
|
323
|
-
);
|
|
324
|
-
|
|
325
268
|
try {
|
|
326
|
-
|
|
327
|
-
this.
|
|
328
|
-
|
|
269
|
+
// Get fresh data from API first
|
|
270
|
+
await this.platform.updateDeviceStatesFromAPI(true);
|
|
271
|
+
|
|
272
|
+
// Now get the value using the updated state
|
|
273
|
+
return await this.withRetry(onGet, `get ${characteristic.name}`);
|
|
329
274
|
} catch (error) {
|
|
330
275
|
this.logger.error(
|
|
331
276
|
'Failed to get characteristic value',
|
|
332
|
-
|
|
277
|
+
this.getLogContext(),
|
|
333
278
|
error as Error
|
|
334
279
|
);
|
|
335
280
|
throw error;
|
|
@@ -437,4 +382,11 @@ export abstract class BaseAccessory {
|
|
|
437
382
|
this.logger.error(message, context, wrappedError);
|
|
438
383
|
this.needsRetry = true;
|
|
439
384
|
}
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Update polling state based on device activity
|
|
388
|
+
*/
|
|
389
|
+
protected updatePollingState(isActive: boolean): void {
|
|
390
|
+
this.pollingManager.updateDeviceStates(isActive);
|
|
391
|
+
}
|
|
440
392
|
}
|
package/src/platform.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { PLATFORM_NAME, PLUGIN_NAME } from './settings';
|
|
|
3
3
|
import { VeSync } from 'tsvesync';
|
|
4
4
|
import { DeviceFactory } from './utils/device-factory';
|
|
5
5
|
import { BaseAccessory } from './accessories/base.accessory';
|
|
6
|
+
import { PollingManager } from './utils/polling-manager';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* HomebridgePlatform
|
|
@@ -27,6 +28,7 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
27
28
|
private initializationPromise: Promise<void>;
|
|
28
29
|
private initializationResolver!: () => void;
|
|
29
30
|
private isInitialized = false;
|
|
31
|
+
private pollingManager!: PollingManager;
|
|
30
32
|
|
|
31
33
|
constructor(
|
|
32
34
|
public readonly log: Logger,
|
|
@@ -45,9 +47,12 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
// Get config values with defaults
|
|
48
|
-
this.updateInterval = config.updateInterval ||
|
|
50
|
+
this.updateInterval = config.updateInterval || 300; // Default to 5 minutes
|
|
49
51
|
this.debug = config.debug || false;
|
|
50
52
|
|
|
53
|
+
// Initialize polling manager
|
|
54
|
+
this.pollingManager = new PollingManager(this.log, config.polling);
|
|
55
|
+
|
|
51
56
|
// Initialize VeSync client with all configuration
|
|
52
57
|
this.client = new VeSync(
|
|
53
58
|
config.username,
|
|
@@ -81,13 +86,8 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
81
86
|
// Initialize platform
|
|
82
87
|
await this.initializePlatform();
|
|
83
88
|
|
|
84
|
-
//
|
|
85
|
-
this.
|
|
86
|
-
this.updateDeviceStates().catch(error => {
|
|
87
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
88
|
-
this.log.error('=== UPDATE INTERVAL: Failed to update device states ===', err);
|
|
89
|
-
});
|
|
90
|
-
}, this.updateInterval * 1000);
|
|
89
|
+
// Start polling for device updates
|
|
90
|
+
this.pollingManager.startPolling(() => this.updateDeviceStates());
|
|
91
91
|
} catch (error) {
|
|
92
92
|
this.log.error('Failed to initialize platform:', error);
|
|
93
93
|
}
|
|
@@ -95,9 +95,7 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
95
95
|
|
|
96
96
|
// Clean up when shutting down
|
|
97
97
|
this.api.on('shutdown', () => {
|
|
98
|
-
|
|
99
|
-
clearInterval(this.deviceUpdateInterval);
|
|
100
|
-
}
|
|
98
|
+
this.pollingManager.stopPolling();
|
|
101
99
|
});
|
|
102
100
|
}
|
|
103
101
|
|
|
@@ -229,6 +227,7 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
229
227
|
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
230
228
|
}
|
|
231
229
|
|
|
230
|
+
this.log.info('=== LOGIN EXPIRED: Attempting login ===');
|
|
232
231
|
this.lastLoginAttempt = new Date();
|
|
233
232
|
const loginResult = await this.client.login();
|
|
234
233
|
|
|
@@ -261,39 +260,62 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
261
260
|
public async updateDeviceStatesFromAPI(isPolledUpdate = false) {
|
|
262
261
|
if (!this.isInitialized) {
|
|
263
262
|
if (this.debug) {
|
|
264
|
-
this.log.debug('
|
|
263
|
+
this.log.debug('=== UPDATE API: Platform not initialized, skipping update ===');
|
|
265
264
|
}
|
|
266
265
|
return;
|
|
267
266
|
}
|
|
268
267
|
|
|
269
268
|
try {
|
|
269
|
+
if (this.debug) {
|
|
270
|
+
this.log.debug('=== UPDATE API: Starting device state update ===');
|
|
271
|
+
}
|
|
272
|
+
|
|
270
273
|
// Ensure we're logged in
|
|
271
274
|
const loginSuccess = await this.ensureLogin();
|
|
272
275
|
if (!loginSuccess) {
|
|
273
276
|
throw new Error('Failed to login for device state update');
|
|
274
277
|
}
|
|
275
278
|
|
|
276
|
-
|
|
279
|
+
if (this.debug) {
|
|
280
|
+
this.log.debug('=== UPDATE API: Successfully logged in ===');
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Get devices from API - this includes all device states
|
|
277
284
|
const success = await this.client.getDevices();
|
|
278
285
|
if (!success) {
|
|
279
286
|
throw new Error('Failed to get devices from API');
|
|
280
287
|
}
|
|
281
288
|
|
|
289
|
+
if (this.debug) {
|
|
290
|
+
this.log.debug('=== UPDATE API: Successfully retrieved devices ===');
|
|
291
|
+
}
|
|
292
|
+
|
|
282
293
|
// Get all devices
|
|
283
294
|
const devices = this.getAllDevices();
|
|
284
295
|
if (!devices || !devices.length) {
|
|
285
|
-
if (!isPolledUpdate) {
|
|
296
|
+
if (!isPolledUpdate || this.debug) {
|
|
286
297
|
this.log.warn('=== UPDATE API: No devices found during state update ===');
|
|
287
298
|
}
|
|
288
299
|
return;
|
|
289
300
|
}
|
|
290
301
|
|
|
291
|
-
|
|
302
|
+
if (this.debug) {
|
|
303
|
+
this.log.debug(`=== UPDATE API: Found ${devices.length} devices to update ===`);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Update each accessory with the device data we already have
|
|
292
307
|
for (const device of devices) {
|
|
293
308
|
const accessory = this.deviceAccessories.get(this.generateDeviceUUID(device));
|
|
294
309
|
if (accessory) {
|
|
295
310
|
try {
|
|
296
|
-
|
|
311
|
+
if (this.debug) {
|
|
312
|
+
this.log.debug(`=== UPDATE API: Updating device ${device.deviceName} ===`);
|
|
313
|
+
}
|
|
314
|
+
// Pass the device data directly since we already have it
|
|
315
|
+
await accessory.updateFromPlatform(device);
|
|
316
|
+
if (this.debug) {
|
|
317
|
+
this.log.debug(`=== UPDATE API: Successfully updated device ${device.deviceName} ===`);
|
|
318
|
+
}
|
|
297
319
|
} catch (error) {
|
|
298
320
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
299
321
|
this.log.error(`=== UPDATE API: Failed to update state for device ${device.deviceName} ===`, err);
|
|
@@ -301,6 +323,9 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
301
323
|
}
|
|
302
324
|
}
|
|
303
325
|
|
|
326
|
+
if (this.debug) {
|
|
327
|
+
this.log.debug('=== UPDATE API: Completed device state updates ===');
|
|
328
|
+
}
|
|
304
329
|
} catch (error) {
|
|
305
330
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
306
331
|
|
|
@@ -5,55 +5,16 @@ export interface PollingConfig {
|
|
|
5
5
|
maxInterval: number;
|
|
6
6
|
// Minimum interval between polls in milliseconds
|
|
7
7
|
minInterval: number;
|
|
8
|
-
// Whether to increase polling frequency when device is active
|
|
8
|
+
// Whether to increase polling frequency when any device is active
|
|
9
9
|
dynamicPolling: boolean;
|
|
10
|
-
// Factor to multiply polling interval by when
|
|
10
|
+
// Factor to multiply polling interval by when no devices are active
|
|
11
11
|
inactiveMultiplier: number;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export const DEFAULT_POLLING_CONFIG: PollingConfig = {
|
|
15
|
-
baseInterval:
|
|
16
|
-
maxInterval:
|
|
17
|
-
minInterval:
|
|
15
|
+
baseInterval: 300000, // 5 minutes
|
|
16
|
+
maxInterval: 900000, // 15 minutes
|
|
17
|
+
minInterval: 60000, // 1 minute
|
|
18
18
|
dynamicPolling: true,
|
|
19
|
-
inactiveMultiplier:
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// Device-specific polling configurations
|
|
23
|
-
export const DEVICE_POLLING_CONFIGS: Record<string, PollingConfig> = {
|
|
24
|
-
airPurifier: {
|
|
25
|
-
baseInterval: 15000, // 15 seconds - more frequent for air quality updates
|
|
26
|
-
maxInterval: 60000, // 1 minute
|
|
27
|
-
minInterval: 10000, // 10 seconds
|
|
28
|
-
dynamicPolling: true,
|
|
29
|
-
inactiveMultiplier: 2,
|
|
30
|
-
},
|
|
31
|
-
humidifier: {
|
|
32
|
-
baseInterval: 20000, // 20 seconds - moderate frequency for humidity updates
|
|
33
|
-
maxInterval: 120000, // 2 minutes
|
|
34
|
-
minInterval: 10000, // 10 seconds
|
|
35
|
-
dynamicPolling: true,
|
|
36
|
-
inactiveMultiplier: 2,
|
|
37
|
-
},
|
|
38
|
-
fan: {
|
|
39
|
-
baseInterval: 30000, // 30 seconds - less frequent updates needed
|
|
40
|
-
maxInterval: 180000, // 3 minutes
|
|
41
|
-
minInterval: 15000, // 15 seconds
|
|
42
|
-
dynamicPolling: true,
|
|
43
|
-
inactiveMultiplier: 3,
|
|
44
|
-
},
|
|
45
|
-
light: {
|
|
46
|
-
baseInterval: 30000, // 30 seconds - less frequent updates needed
|
|
47
|
-
maxInterval: 300000, // 5 minutes
|
|
48
|
-
minInterval: 15000, // 15 seconds
|
|
49
|
-
dynamicPolling: false,
|
|
50
|
-
inactiveMultiplier: 2,
|
|
51
|
-
},
|
|
52
|
-
outlet: {
|
|
53
|
-
baseInterval: 20000, // 20 seconds - moderate frequency for power monitoring
|
|
54
|
-
maxInterval: 120000, // 2 minutes
|
|
55
|
-
minInterval: 10000, // 10 seconds
|
|
56
|
-
dynamicPolling: true,
|
|
57
|
-
inactiveMultiplier: 2,
|
|
58
|
-
},
|
|
19
|
+
inactiveMultiplier: 3,
|
|
59
20
|
};
|
package/src/utils/logger.ts
CHANGED
|
@@ -52,7 +52,7 @@ export class PluginLogger {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
* Log a debug message
|
|
55
|
+
* Log a debug message
|
|
56
56
|
*/
|
|
57
57
|
debug(message: string, context: Partial<LogContext>): void {
|
|
58
58
|
if (this.debugMode) {
|
|
@@ -64,14 +64,12 @@ export class PluginLogger {
|
|
|
64
64
|
* Log a state change
|
|
65
65
|
*/
|
|
66
66
|
stateChange(context: LogContext): void {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
context
|
|
74
|
-
);
|
|
67
|
+
const message = `${context.operation}: ${context.characteristic} = ${context.value}`;
|
|
68
|
+
if (this.debugMode) {
|
|
69
|
+
this.debug(message, context);
|
|
70
|
+
} else {
|
|
71
|
+
this.info(message, context);
|
|
72
|
+
}
|
|
75
73
|
}
|
|
76
74
|
|
|
77
75
|
/**
|
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
import { Logger } from 'homebridge';
|
|
2
|
-
import { DEFAULT_POLLING_CONFIG,
|
|
2
|
+
import { DEFAULT_POLLING_CONFIG, PollingConfig } from '../types/polling.types';
|
|
3
3
|
|
|
4
4
|
export class PollingManager {
|
|
5
5
|
private currentInterval: number;
|
|
6
6
|
private timer: NodeJS.Timeout | null = null;
|
|
7
7
|
private lastPollTime: number = 0;
|
|
8
|
-
private
|
|
8
|
+
private hasActiveDevices: boolean = false;
|
|
9
9
|
private readonly config: PollingConfig;
|
|
10
|
-
private readonly deviceType: string;
|
|
11
10
|
private readonly log: Logger;
|
|
12
11
|
|
|
13
12
|
constructor(
|
|
14
|
-
deviceType: string,
|
|
15
13
|
log: Logger,
|
|
16
14
|
customConfig?: Partial<PollingConfig>
|
|
17
15
|
) {
|
|
18
|
-
this.deviceType = deviceType;
|
|
19
16
|
this.log = log;
|
|
20
17
|
|
|
21
|
-
// Get device-specific config or default
|
|
22
|
-
const baseConfig = DEVICE_POLLING_CONFIGS[deviceType] || DEFAULT_POLLING_CONFIG;
|
|
23
|
-
|
|
24
18
|
// Merge with custom config if provided
|
|
25
19
|
this.config = {
|
|
26
|
-
...
|
|
20
|
+
...DEFAULT_POLLING_CONFIG,
|
|
27
21
|
...customConfig,
|
|
28
22
|
};
|
|
29
23
|
|
|
@@ -44,7 +38,7 @@ export class PollingManager {
|
|
|
44
38
|
this.lastPollTime = Date.now();
|
|
45
39
|
this.scheduleNextPoll(callback);
|
|
46
40
|
} catch (error) {
|
|
47
|
-
this.log.error(
|
|
41
|
+
this.log.error('Polling error:', error);
|
|
48
42
|
// On error, schedule next poll but maybe with a longer interval
|
|
49
43
|
this.scheduleNextPoll(callback, true);
|
|
50
44
|
}
|
|
@@ -65,15 +59,15 @@ export class PollingManager {
|
|
|
65
59
|
}
|
|
66
60
|
|
|
67
61
|
/**
|
|
68
|
-
* Update the
|
|
69
|
-
* @param
|
|
62
|
+
* Update the active state of devices
|
|
63
|
+
* @param hasActiveDevices Whether any devices are currently active
|
|
70
64
|
*/
|
|
71
|
-
public
|
|
72
|
-
if (this.
|
|
65
|
+
public updateDeviceStates(hasActiveDevices: boolean): void {
|
|
66
|
+
if (this.hasActiveDevices === hasActiveDevices) {
|
|
73
67
|
return;
|
|
74
68
|
}
|
|
75
69
|
|
|
76
|
-
this.
|
|
70
|
+
this.hasActiveDevices = hasActiveDevices;
|
|
77
71
|
this.adjustPollingInterval();
|
|
78
72
|
}
|
|
79
73
|
|
|
@@ -92,15 +86,15 @@ export class PollingManager {
|
|
|
92
86
|
}
|
|
93
87
|
|
|
94
88
|
/**
|
|
95
|
-
* Adjust the polling interval based on device
|
|
89
|
+
* Adjust the polling interval based on device states and conditions
|
|
96
90
|
* @param wasError Whether the last poll resulted in an error
|
|
97
91
|
*/
|
|
98
92
|
private adjustPollingInterval(wasError: boolean = false): void {
|
|
99
93
|
let interval = this.config.baseInterval;
|
|
100
94
|
|
|
101
|
-
// If dynamic polling is enabled, adjust based on device
|
|
95
|
+
// If dynamic polling is enabled, adjust based on device states
|
|
102
96
|
if (this.config.dynamicPolling) {
|
|
103
|
-
if (!this.
|
|
97
|
+
if (!this.hasActiveDevices) {
|
|
104
98
|
interval *= this.config.inactiveMultiplier;
|
|
105
99
|
}
|
|
106
100
|
}
|
|
@@ -117,8 +111,8 @@ export class PollingManager {
|
|
|
117
111
|
);
|
|
118
112
|
|
|
119
113
|
this.log.debug(
|
|
120
|
-
`
|
|
121
|
-
`(Active: ${this.
|
|
114
|
+
`Adjusted polling interval: ${this.currentInterval}ms ` +
|
|
115
|
+
`(Active Devices: ${this.hasActiveDevices}, Error: ${wasError})`
|
|
122
116
|
);
|
|
123
117
|
}
|
|
124
118
|
|