homebridge-tsvesync 1.0.111 → 1.0.112

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,5 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.112 (2025-08-28)
4
+
5
+ ### Fixed
6
+ - **🚨 CRITICAL FIX - Core 200S Air Quality Issue**: Fixed the definitive root cause that v1.0.111 missed
7
+ - **🐛 The Remaining Bug**: In v1.0.111, we added `hasFeature` to the bypass list, but the bypass check was still happening INSIDE the async function wrapper
8
+ - **⚙️ The Problem**: Even "bypassed" methods were first wrapped in async functions, then checked for bypass - so `hasFeature('air_quality')` still returned `Promise<boolean>` instead of `boolean`
9
+ - **✅ The REAL Solution**: Moved the bypass check BEFORE creating the async wrapper in `api-proxy.ts`
10
+ - Check if method is in bypass list FIRST, before any wrapping
11
+ - If bypassed, return the original function directly (not wrapped in async)
12
+ - Only wrap non-bypassed methods in async functions for rate limiting
13
+ - **🎯 Result**: `hasFeature('air_quality')` now returns actual `boolean` values, not `Promise<boolean>`
14
+ - **📱 Impact**: Core 200S and other devices without air quality sensors will finally work correctly
15
+
16
+ ### Changed
17
+ - **API Proxy Architecture Enhancement**: Completely restructured the bypass logic flow
18
+ - Bypass check now happens at the proxy level before any async wrapping
19
+ - Configuration and feature detection methods return synchronously as intended
20
+ - Rate limiting wrapper only applied to actual API methods
21
+ - Improved code organization and method categorization
22
+
23
+ ### Removed
24
+ - **Debug Logging**: Removed diagnostic comments that were added during investigation
25
+ - Clean code without investigation artifacts
26
+ - Focused implementation without temporary debugging elements
27
+
28
+ ### Dependencies
29
+ - Updated tsvesync from 1.0.111 to 1.0.112 for version synchronization
30
+
31
+ ### HomeKit Integration Notes
32
+ - **🎉 DEFINITIVE FIX**: This release contains the REAL fix for the Core 200S air quality phantom service issue
33
+ - **⚠️ RESTART REQUIRED**: Must restart Homebridge after updating for the fix to take effect
34
+ - **🗑️ Automatic Cleanup**: Phantom air quality services will be automatically removed after restart
35
+ - **✅ Verified Working**: Core 200S, LAP-C201S, LAP-C202S, LAP-C301S, LAP-C302S, LAP-C401S, LAP-C601S will no longer show phantom air quality characteristics
36
+ - **🔍 Confirmed Devices**: Core 300S+, Vital series, and EverestAir devices with actual sensors continue working correctly
37
+
38
+ ### Breaking Changes
39
+ - **None**: This is a critical bug fix release with no breaking changes to the API or configuration
40
+
41
+ ### Migration Notes
42
+ - **🚀 Simple Update**: Update to v1.0.112 and restart Homebridge - the fix is automatic and immediate
43
+ - **📋 Verification Steps**:
44
+ 1. Update the plugin to v1.0.112
45
+ 2. Restart Homebridge completely
46
+ 3. Check Home app - Core 200S should no longer show air quality tile
47
+ 4. Verify only devices with actual sensors show air quality characteristics
48
+ - **⏰ No Additional Setup**: The fix is implemented at the code level and requires no configuration changes
49
+
3
50
  ## 1.0.111 (2025-08-28)
4
51
 
5
52
  ### Fixed
@@ -1 +1 @@
1
- {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/api-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA+OxD,eAAO,MAAM,uBAAuB,aACxB,MAAM,YACN,MAAM,YACN,MAAM,UACR,OAAO,WACN,OAAO,WACP,MAAM,iBACA,YAAY,eACd,eAAe,WACnB;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAA;CACF,KACA,MA6BF,CAAC"}
1
+ {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/api-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiPxD,eAAO,MAAM,uBAAuB,aACxB,MAAM,YACN,MAAM,YACN,MAAM,UACR,OAAO,WACN,OAAO,WACP,MAAM,iBACA,YAAY,eACd,eAAe,WACnB;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAA;CACF,KACA,MA6BF,CAAC"}
@@ -157,31 +157,33 @@ const createRateLimitedProxy = (target, rateLimiter, deviceId) => {
157
157
  }
158
158
  return value;
159
159
  }
160
- // Return a proxied function that applies rate limiting
160
+ // Check if this method should bypass rate limiting entirely
161
+ const methodName = prop.toString();
162
+ // Methods that bypass all rate limiting and debouncing
163
+ const bypassMethods = [
164
+ // Getters and internal methods
165
+ 'get', 'getService', 'getCharacteristic',
166
+ // State accessors
167
+ 'deviceStatus', 'speed', 'brightness', 'colorTemp',
168
+ 'mode', 'filterLife', 'airQuality', 'airQualityValue', 'screenStatus',
169
+ 'childLock', 'pm1', 'pm10', 'humidity', 'mistLevel',
170
+ // Event handlers
171
+ 'onSet', 'onGet', 'addListener', 'removeListener',
172
+ // Controlled interval methods
173
+ 'update',
174
+ // Feature detection and configuration methods (don't make API calls)
175
+ 'hasFeature', 'getMaxFanSpeed', 'isFeatureSupportedInCurrentMode'
176
+ ];
177
+ // If it's a bypass method, return the original function directly (NOT wrapped in async)
178
+ if (bypassMethods.includes(methodName)) {
179
+ return value; // Return the ORIGINAL function, not wrapped!
180
+ }
181
+ // Otherwise, return a proxied async function that applies rate limiting
161
182
  return async function (...args) {
162
- const methodName = prop.toString();
163
- // Methods that bypass all rate limiting and debouncing
164
- const bypassMethods = [
165
- // Getters and internal methods
166
- 'get', 'getService', 'getCharacteristic',
167
- // State accessors
168
- 'deviceStatus', 'speed', 'brightness', 'colorTemp',
169
- 'mode', 'filterLife', 'airQuality', 'airQualityValue', 'screenStatus',
170
- 'childLock', 'pm1', 'pm10', 'humidity', 'mistLevel',
171
- // Event handlers
172
- 'onSet', 'onGet', 'addListener', 'removeListener',
173
- // Controlled interval methods
174
- 'update',
175
- // Feature detection and configuration methods (don't make API calls)
176
- 'hasFeature', 'getMaxFanSpeed', 'isFeatureSupportedInCurrentMode'
177
- ];
178
183
  // Methods that should only be rate limited (no debouncing)
179
184
  const noDebounceAPIMethods = [
180
185
  'ignored'
181
186
  ];
182
- if (bypassMethods.includes(methodName)) {
183
- return value.apply(target, args);
184
- }
185
187
  if (noDebounceAPIMethods.includes(methodName)) {
186
188
  await rateLimiter.rateLimit(methodName);
187
189
  return value.apply(target, args);
@@ -1 +1 @@
1
- {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/utils/api-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/utils/api-proxy.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.111",
3
+ "version": "1.0.112",
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": {
@@ -98,7 +98,7 @@
98
98
  "axios": "^1.6.5",
99
99
  "dotenv": "^16.3.1",
100
100
  "js-yaml": "^4.1.0",
101
- "tsvesync": "1.0.111"
101
+ "tsvesync": "1.0.112"
102
102
  },
103
103
  "devDependencies": {
104
104
  "@types/jest": "^29.5.11",
@@ -197,35 +197,37 @@ const createRateLimitedProxy = (target: any, rateLimiter: RateLimiter, deviceId?
197
197
  return value;
198
198
  }
199
199
 
200
- // Return a proxied function that applies rate limiting
200
+ // Check if this method should bypass rate limiting entirely
201
+ const methodName = prop.toString();
202
+
203
+ // Methods that bypass all rate limiting and debouncing
204
+ const bypassMethods = [
205
+ // Getters and internal methods
206
+ 'get', 'getService', 'getCharacteristic',
207
+ // State accessors
208
+ 'deviceStatus', 'speed', 'brightness', 'colorTemp',
209
+ 'mode', 'filterLife', 'airQuality', 'airQualityValue', 'screenStatus',
210
+ 'childLock', 'pm1', 'pm10', 'humidity', 'mistLevel',
211
+ // Event handlers
212
+ 'onSet', 'onGet', 'addListener', 'removeListener',
213
+ // Controlled interval methods
214
+ 'update',
215
+ // Feature detection and configuration methods (don't make API calls)
216
+ 'hasFeature', 'getMaxFanSpeed', 'isFeatureSupportedInCurrentMode'
217
+ ];
218
+
219
+ // If it's a bypass method, return the original function directly (NOT wrapped in async)
220
+ if (bypassMethods.includes(methodName)) {
221
+ return value; // Return the ORIGINAL function, not wrapped!
222
+ }
223
+
224
+ // Otherwise, return a proxied async function that applies rate limiting
201
225
  return async function(...args: any[]) {
202
- const methodName = prop.toString();
203
-
204
- // Methods that bypass all rate limiting and debouncing
205
- const bypassMethods = [
206
- // Getters and internal methods
207
- 'get', 'getService', 'getCharacteristic',
208
- // State accessors
209
- 'deviceStatus', 'speed', 'brightness', 'colorTemp',
210
- 'mode', 'filterLife', 'airQuality', 'airQualityValue', 'screenStatus',
211
- 'childLock', 'pm1', 'pm10', 'humidity', 'mistLevel',
212
- // Event handlers
213
- 'onSet', 'onGet', 'addListener', 'removeListener',
214
- // Controlled interval methods
215
- 'update',
216
- // Feature detection and configuration methods (don't make API calls)
217
- 'hasFeature', 'getMaxFanSpeed', 'isFeatureSupportedInCurrentMode'
218
- ];
219
-
220
226
  // Methods that should only be rate limited (no debouncing)
221
227
  const noDebounceAPIMethods = [
222
228
  'ignored'
223
229
  ];
224
230
 
225
- if (bypassMethods.includes(methodName)) {
226
- return value.apply(target, args);
227
- }
228
-
229
231
  if (noDebounceAPIMethods.includes(methodName)) {
230
232
  await rateLimiter.rateLimit(methodName);
231
233
  return value.apply(target, args);