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 CHANGED
@@ -1,17 +1,14 @@
1
- # Changelog
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
- ## [1.0.27] - 2025-01-02
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":"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"}
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.getDeviceType(), this.platform.log, this.platform.config.polling);
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
- // Don't start polling immediately - wait for successful initialization
145
+ // Initialize the accessory
140
146
  this.initializationPromise.then(() => {
141
- if (this.isInitialized) {
142
- this.startPolling();
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
- const value = await this.withRetry(onGet, `get ${characteristic.name}`);
245
- this.logger.stateChange({ ...context, value });
246
- return value;
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', context, error);
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":"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"}
1
+ {"version":3,"file":"base.accessory.js","sourceRoot":"","sources":["../../src/accessories/base.accessory.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -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;AAM5H;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,qBAAqB;aAoB1C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IArB1B,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;gBAGZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAsE1B;;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;IAsCzB;;OAEG;IACU,yBAAyB,CAAC,cAAc,UAAQ;IAqD7D;;OAEG;YACW,kBAAkB;IAShC;;OAEG;IACG,eAAe;IA0ErB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAO3B"}
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 || 30;
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
- // Set up periodic device updates
60
- this.deviceUpdateInterval = setInterval(() => {
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
- if (this.deviceUpdateInterval) {
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('Skipping device state update - platform not initialized');
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
- // Get devices from API
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
- // Update each device
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
- await accessory.syncDeviceState();
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));
@@ -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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"}
@@ -6,5 +6,4 @@ export interface PollingConfig {
6
6
  inactiveMultiplier: number;
7
7
  }
8
8
  export declare const DEFAULT_POLLING_CONFIG: PollingConfig;
9
- export declare const DEVICE_POLLING_CONFIGS: Record<string, PollingConfig>;
10
9
  //# sourceMappingURL=polling.types.d.ts.map
@@ -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;AAGF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAoChE,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.DEVICE_POLLING_CONFIGS = exports.DEFAULT_POLLING_CONFIG = void 0;
3
+ exports.DEFAULT_POLLING_CONFIG = void 0;
4
4
  exports.DEFAULT_POLLING_CONFIG = {
5
- baseInterval: 30000,
6
- maxInterval: 300000,
7
- minInterval: 10000,
5
+ baseInterval: 300000,
6
+ maxInterval: 900000,
7
+ minInterval: 60000,
8
8
  dynamicPolling: true,
9
- inactiveMultiplier: 2,
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,KAAK;IACnB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEF,yCAAyC;AAC5B,QAAA,sBAAsB,GAAkC;IACnE,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,CAAC;KACtB;IACD,UAAU,EAAE;QACV,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,CAAC;KACtB;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,CAAC;KACtB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,CAAC;KACtB;IACD,MAAM,EAAE;QACN,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,CAAC;KACtB;CACF,CAAC"}
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"}
@@ -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 (only if debug mode is enabled)
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;IAWtC;;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"}
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"}
@@ -43,7 +43,7 @@ class PluginLogger {
43
43
  }
44
44
  }
45
45
  /**
46
- * Log a debug message (only if debug mode is enabled)
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 valueStr = typeof context.value === 'object'
58
- ? JSON.stringify(context.value)
59
- : context.value;
60
- this.debug(`State change: ${context.characteristic} = ${valueStr}`, context);
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
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
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 isDeviceActive;
7
+ private hasActiveDevices;
8
8
  private readonly config;
9
- private readonly deviceType;
10
9
  private readonly log;
11
- constructor(deviceType: string, log: Logger, customConfig?: Partial<PollingConfig>);
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 device's active state, which may affect polling frequency
23
- * @param isActive Whether the device is currently active
21
+ * Update the active state of devices
22
+ * @param hasActiveDevices Whether any devices are currently active
24
23
  */
25
- updateDeviceState(isActive: boolean): void;
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 state and conditions
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,EAAkD,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvG,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAG3B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAiBvC;;;OAGG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAoBxD;;OAEG;IACI,WAAW,IAAI,IAAI;IAO1B;;;OAGG;IACI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IASjD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;OAEG;IACI,kBAAkB,IAAI,MAAM;CAGpC"}
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(deviceType, log, customConfig) {
6
+ constructor(log, customConfig) {
7
7
  this.timer = null;
8
8
  this.lastPollTime = 0;
9
- this.isDeviceActive = false;
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
- ...baseConfig,
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(`[${this.deviceType}] Polling error:`, 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 device's active state, which may affect polling frequency
54
- * @param isActive Whether the device is currently active
50
+ * Update the active state of devices
51
+ * @param hasActiveDevices Whether any devices are currently active
55
52
  */
56
- updateDeviceState(isActive) {
57
- if (this.isDeviceActive === isActive) {
53
+ updateDeviceStates(hasActiveDevices) {
54
+ if (this.hasActiveDevices === hasActiveDevices) {
58
55
  return;
59
56
  }
60
- this.isDeviceActive = isActive;
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 state and conditions
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 state
75
+ // If dynamic polling is enabled, adjust based on device states
79
76
  if (this.config.dynamicPolling) {
80
- if (!this.isDeviceActive) {
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(`[${this.deviceType}] Adjusted polling interval: ${this.currentInterval}ms ` +
91
- `(Active: ${this.isDeviceActive}, Error: ${wasError})`);
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":"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"}
1
+ {"version":3,"file":"polling-manager.js","sourceRoot":"","sources":["../../src/utils/polling-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-tsvesync",
3
- "version": "1.0.31",
3
+ "version": "1.0.32",
4
4
  "description": "Homebridge plugin for VeSync devices including Levoit air purifiers, humidifiers, and Etekcity smart outlets",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -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
- // Don't start polling immediately - wait for successful initialization
207
+ // Initialize the accessory
202
208
  this.initializationPromise.then(() => {
203
- if (this.isInitialized) {
204
- this.startPolling();
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
- const value = await this.withRetry(onGet, `get ${characteristic.name}`);
327
- this.logger.stateChange({ ...context, value } as LogContext);
328
- return value;
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
- context,
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 || 30;
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
- // Set up periodic device updates
85
- this.deviceUpdateInterval = setInterval(() => {
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
- if (this.deviceUpdateInterval) {
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('Skipping device state update - platform not initialized');
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
- // Get devices from API
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
- // Update each device
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
- await accessory.syncDeviceState();
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 device is inactive
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: 30000, // 30 seconds
16
- maxInterval: 300000, // 5 minutes
17
- minInterval: 10000, // 10 seconds
15
+ baseInterval: 300000, // 5 minutes
16
+ maxInterval: 900000, // 15 minutes
17
+ minInterval: 60000, // 1 minute
18
18
  dynamicPolling: true,
19
- inactiveMultiplier: 2,
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
  };
@@ -52,7 +52,7 @@ export class PluginLogger {
52
52
  }
53
53
 
54
54
  /**
55
- * Log a debug message (only if debug mode is enabled)
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 valueStr = typeof context.value === 'object'
68
- ? JSON.stringify(context.value)
69
- : context.value;
70
-
71
- this.debug(
72
- `State change: ${context.characteristic} = ${valueStr}`,
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, DEVICE_POLLING_CONFIGS, PollingConfig } from '../types/polling.types';
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 isDeviceActive: boolean = false;
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
- ...baseConfig,
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(`[${this.deviceType}] Polling error:`, 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 device's active state, which may affect polling frequency
69
- * @param isActive Whether the device is currently active
62
+ * Update the active state of devices
63
+ * @param hasActiveDevices Whether any devices are currently active
70
64
  */
71
- public updateDeviceState(isActive: boolean): void {
72
- if (this.isDeviceActive === isActive) {
65
+ public updateDeviceStates(hasActiveDevices: boolean): void {
66
+ if (this.hasActiveDevices === hasActiveDevices) {
73
67
  return;
74
68
  }
75
69
 
76
- this.isDeviceActive = isActive;
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 state and conditions
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 state
95
+ // If dynamic polling is enabled, adjust based on device states
102
96
  if (this.config.dynamicPolling) {
103
- if (!this.isDeviceActive) {
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
- `[${this.deviceType}] Adjusted polling interval: ${this.currentInterval}ms ` +
121
- `(Active: ${this.isDeviceActive}, Error: ${wasError})`
114
+ `Adjusted polling interval: ${this.currentInterval}ms ` +
115
+ `(Active Devices: ${this.hasActiveDevices}, Error: ${wasError})`
122
116
  );
123
117
  }
124
118