homebridge-tsvesync 1.0.12 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/accessories/air-purifier.accessory.d.ts +32 -2
  2. package/dist/accessories/air-purifier.accessory.d.ts.map +1 -1
  3. package/dist/accessories/air-purifier.accessory.js +110 -51
  4. package/dist/accessories/air-purifier.accessory.js.map +1 -1
  5. package/dist/accessories/base.accessory.d.ts +12 -3
  6. package/dist/accessories/base.accessory.d.ts.map +1 -1
  7. package/dist/accessories/base.accessory.js +53 -24
  8. package/dist/accessories/base.accessory.js.map +1 -1
  9. package/dist/accessories/fan.accessory.d.ts +6 -2
  10. package/dist/accessories/fan.accessory.d.ts.map +1 -1
  11. package/dist/accessories/fan.accessory.js +27 -33
  12. package/dist/accessories/fan.accessory.js.map +1 -1
  13. package/dist/accessories/humidifier.accessory.d.ts +6 -2
  14. package/dist/accessories/humidifier.accessory.d.ts.map +1 -1
  15. package/dist/accessories/humidifier.accessory.js +38 -37
  16. package/dist/accessories/humidifier.accessory.js.map +1 -1
  17. package/dist/accessories/light.accessory.d.ts +5 -1
  18. package/dist/accessories/light.accessory.d.ts.map +1 -1
  19. package/dist/accessories/light.accessory.js +25 -19
  20. package/dist/accessories/light.accessory.js.map +1 -1
  21. package/dist/accessories/outlet.accessory.d.ts +7 -1
  22. package/dist/accessories/outlet.accessory.d.ts.map +1 -1
  23. package/dist/accessories/outlet.accessory.js +25 -14
  24. package/dist/accessories/outlet.accessory.js.map +1 -1
  25. package/dist/platform.js +2 -2
  26. package/dist/platform.js.map +1 -1
  27. package/dist/types/device.types.d.ts +2 -2
  28. package/dist/types/device.types.d.ts.map +1 -1
  29. package/dist/utils/device-factory.d.ts +1 -1
  30. package/dist/utils/device-factory.d.ts.map +1 -1
  31. package/package.json +4 -3
  32. package/src/accessories/air-purifier.accessory.ts +117 -84
  33. package/src/accessories/base.accessory.ts +62 -35
  34. package/src/accessories/fan.accessory.ts +40 -44
  35. package/src/accessories/humidifier.accessory.ts +61 -48
  36. package/src/accessories/light.accessory.ts +32 -18
  37. package/src/accessories/outlet.accessory.ts +33 -14
  38. package/src/platform.ts +1 -1
  39. package/src/types/device.types.ts +2 -2
  40. package/src/utils/device-factory.ts +1 -1
@@ -3,11 +3,37 @@ import { BaseAccessory } from './base.accessory';
3
3
  import { TSVESyncPlatform } from '../platform';
4
4
  import { DeviceCapabilities, VeSyncAirPurifier } from '../types/device.types';
5
5
  export declare class AirPurifierAccessory extends BaseAccessory {
6
+ private readonly capabilities;
6
7
  protected readonly device: VeSyncAirPurifier;
7
8
  constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncAirPurifier);
9
+ /**
10
+ * Set up the air purifier service
11
+ */
8
12
  protected setupService(): void;
9
- protected updateDeviceSpecificStates(details: any): void;
13
+ /**
14
+ * Get device capabilities
15
+ */
10
16
  protected getDeviceCapabilities(): DeviceCapabilities;
17
+ /**
18
+ * Update device states based on the latest details
19
+ */
20
+ protected updateDeviceSpecificStates(details: any): Promise<void>;
21
+ /**
22
+ * Handle set active state
23
+ */
24
+ private handleSetActive;
25
+ /**
26
+ * Handle set target state
27
+ */
28
+ private handleSetTargetState;
29
+ /**
30
+ * Handle set rotation speed
31
+ */
32
+ private handleSetRotationSpeed;
33
+ /**
34
+ * Handle set child lock
35
+ */
36
+ private handleSetChildLock;
11
37
  private getActive;
12
38
  private setActive;
13
39
  private getCurrentAirPurifierState;
@@ -16,10 +42,14 @@ export declare class AirPurifierAccessory extends BaseAccessory {
16
42
  private getAirQuality;
17
43
  private getPM25Density;
18
44
  private getRotationSpeed;
19
- private setRotationSpeed;
45
+ /**
46
+ * Convert HomeKit rotation speed (0-100) to fan speed (1-maxSpeed)
47
+ */
48
+ private convertRotationSpeedToFanSpeed;
20
49
  private getLockPhysicalControls;
21
50
  private setLockPhysicalControls;
22
51
  private getFilterChangeIndication;
23
52
  private getFilterLifeLevel;
53
+ protected updateRotationSpeed(speed: number): Promise<void>;
24
54
  }
25
55
  //# sourceMappingURL=air-purifier.accessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"air-purifier.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/air-purifier.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBAG3C,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB;IAM3B,SAAS,CAAC,YAAY,IAAI,IAAI;IAmF9B,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAsExD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YAIT,SAAS;YAeT,0BAA0B;YAI1B,yBAAyB;YAIzB,yBAAyB;YAezB,aAAa;YAMb,cAAc;YAed,gBAAgB;YAOhB,gBAAgB;YAehB,uBAAuB;YAIvB,uBAAuB;YAmBvB,yBAAyB;YAIzB,kBAAkB;CAGjC"}
1
+ {"version":3,"file":"air-purifier.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/air-purifier.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBAG3C,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB;IAO3B;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAmF9B;;OAEG;IACH,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAcrD;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvE;;OAEG;YACW,eAAe;IAc7B;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,sBAAsB;IAOpC;;OAEG;YACW,kBAAkB;YAYlB,SAAS;YAIT,SAAS;YAeT,0BAA0B;YAI1B,yBAAyB;YAIzB,yBAAyB;YAezB,aAAa;YAMb,cAAc;YAed,gBAAgB;IAO9B;;OAEG;IACH,OAAO,CAAC,8BAA8B;YAQxB,uBAAuB;YAIvB,uBAAuB;YAmBvB,yBAAyB;YAIzB,kBAAkB;cAIhB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKlE"}
@@ -6,7 +6,11 @@ class AirPurifierAccessory extends base_accessory_1.BaseAccessory {
6
6
  constructor(platform, accessory, device) {
7
7
  super(platform, accessory, device);
8
8
  this.device = device;
9
+ this.capabilities = this.getDeviceCapabilities();
9
10
  }
11
+ /**
12
+ * Set up the air purifier service
13
+ */
10
14
  setupService() {
11
15
  // Get or create the air purifier service
12
16
  this.service = this.accessory.getService(this.platform.Service.AirPurifier) ||
@@ -26,7 +30,7 @@ class AirPurifierAccessory extends base_accessory_1.BaseAccessory {
26
30
  this.setupCharacteristic(this.platform.Characteristic.PM2_5Density, this.getPM25Density.bind(this), undefined, undefined, airQualityService);
27
31
  }
28
32
  if (capabilities.hasSpeed) {
29
- this.setupCharacteristic(this.platform.Characteristic.RotationSpeed, this.getRotationSpeed.bind(this), this.setRotationSpeed.bind(this));
33
+ this.setupCharacteristic(this.platform.Characteristic.RotationSpeed, this.getRotationSpeed.bind(this), this.handleSetRotationSpeed.bind(this));
30
34
  }
31
35
  if (capabilities.hasChildLock) {
32
36
  this.setupCharacteristic(this.platform.Characteristic.LockPhysicalControls, this.getLockPhysicalControls.bind(this), this.setLockPhysicalControls.bind(this));
@@ -37,55 +41,108 @@ class AirPurifierAccessory extends base_accessory_1.BaseAccessory {
37
41
  // Add Name characteristic
38
42
  this.setupCharacteristic(this.platform.Characteristic.Name, async () => this.device.deviceName);
39
43
  }
40
- updateDeviceSpecificStates(details) {
41
- const capabilities = this.getDeviceCapabilities();
42
- if (capabilities.hasAirQuality) {
43
- const airQualityService = this.accessory.getService(this.platform.Service.AirQualitySensor);
44
- if (airQualityService) {
45
- // Ensure we have a valid number for air quality
46
- const airQuality = typeof details.airQuality === 'number' && !isNaN(details.airQuality)
47
- ? details.airQuality
48
- : 0;
49
- airQualityService.updateCharacteristic(this.platform.Characteristic.AirQuality, this.convertAirQualityToHomeKit(airQuality));
50
- // Ensure PM2.5 value is a valid number
51
- const pm25Value = typeof details.pm25 === 'number' && !isNaN(details.pm25)
52
- ? details.pm25
53
- : typeof airQuality === 'number' && !isNaN(airQuality)
54
- ? airQuality
55
- : 0;
56
- airQualityService.updateCharacteristic(this.platform.Characteristic.PM2_5Density, pm25Value);
57
- }
58
- }
59
- if (capabilities.hasSpeed && details.speed !== undefined && details.speed !== null) {
60
- const normalizedSpeed = Math.min(Math.max((details.speed / (this.device.maxSpeed || 1)) * 100, 0), 100);
61
- this.updateCharacteristicValue(this.platform.Characteristic.RotationSpeed, normalizedSpeed);
62
- }
63
- if (capabilities.hasChildLock && details.childLock !== undefined) {
64
- this.updateCharacteristicValue(this.platform.Characteristic.LockPhysicalControls, details.childLock ? 1 : 0);
65
- }
66
- if (details.filterLife !== undefined && details.filterLife !== null) {
67
- this.updateCharacteristicValue(this.platform.Characteristic.FilterChangeIndication, details.filterLife <= 20 ? 1 : 0);
68
- this.updateCharacteristicValue(this.platform.Characteristic.FilterLifeLevel, details.filterLife);
69
- }
70
- // Update air purifier state
71
- const isActive = details.deviceStatus === 'on';
72
- this.updateCharacteristicValue(this.platform.Characteristic.Active, isActive ? 1 : 0);
73
- this.updateCharacteristicValue(this.platform.Characteristic.CurrentAirPurifierState, isActive ? 2 : 0 // 0 = INACTIVE, 2 = PURIFYING_AIR
74
- );
75
- }
44
+ /**
45
+ * Get device capabilities
46
+ */
76
47
  getDeviceCapabilities() {
77
48
  return {
49
+ hasSpeed: true,
50
+ hasAirQuality: true,
51
+ hasChildLock: true,
78
52
  hasBrightness: false,
79
53
  hasColorTemp: false,
80
54
  hasColor: false,
81
- hasSpeed: true,
82
55
  hasHumidity: false,
83
- hasAirQuality: true,
84
56
  hasWaterLevel: false,
85
- hasChildLock: true,
86
57
  hasSwingMode: false,
87
58
  };
88
59
  }
60
+ /**
61
+ * Update device states based on the latest details
62
+ */
63
+ async updateDeviceSpecificStates(details) {
64
+ var _a, _b;
65
+ // Update power state
66
+ const isOn = details.enabled;
67
+ this.service.updateCharacteristic(this.platform.Characteristic.Active, isOn ? 1 : 0);
68
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentAirPurifierState, isOn ? 2 : 0);
69
+ // Update rotation speed
70
+ const speed = details.speed;
71
+ const rotationSpeed = Math.round((speed / this.device.maxSpeed) * 100);
72
+ this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, rotationSpeed);
73
+ // Update air quality if available
74
+ if (this.capabilities.hasAirQuality) {
75
+ const pm25 = (_b = (_a = details.airQuality) === null || _a === void 0 ? void 0 : _a.pm25) !== null && _b !== void 0 ? _b : 0;
76
+ const airQuality = this.convertAirQualityToHomeKit(pm25);
77
+ this.service.updateCharacteristic(this.platform.Characteristic.AirQuality, airQuality);
78
+ this.service.updateCharacteristic(this.platform.Characteristic.PM2_5Density, pm25);
79
+ }
80
+ // Update filter life if available
81
+ if (details.filterLife !== undefined) {
82
+ const filterLife = details.filterLife;
83
+ this.service.updateCharacteristic(this.platform.Characteristic.FilterLifeLevel, filterLife);
84
+ this.service.updateCharacteristic(this.platform.Characteristic.FilterChangeIndication, filterLife <= 20 ? 1 : 0);
85
+ }
86
+ // Update device state based on activity
87
+ this.updatePollingState(isOn);
88
+ }
89
+ /**
90
+ * Handle set active state
91
+ */
92
+ async handleSetActive(value) {
93
+ try {
94
+ const newState = value;
95
+ if (newState === 1) {
96
+ await this.device.turnOn();
97
+ }
98
+ else {
99
+ await this.device.turnOff();
100
+ }
101
+ }
102
+ catch (err) {
103
+ await this.handleDeviceError('set active state', err);
104
+ throw err;
105
+ }
106
+ }
107
+ /**
108
+ * Handle set target state
109
+ */
110
+ async handleSetTargetState(value) {
111
+ try {
112
+ const newState = value;
113
+ if (this.device.setMode) {
114
+ await this.device.setMode(newState === 1 ? 'auto' : 'manual');
115
+ }
116
+ }
117
+ catch (err) {
118
+ await this.handleDeviceError('set target state', err);
119
+ throw err;
120
+ }
121
+ }
122
+ /**
123
+ * Handle set rotation speed
124
+ */
125
+ async handleSetRotationSpeed(value) {
126
+ const speed = Math.round((value / 100) * this.device.maxSpeed);
127
+ await this.withRetry(async () => {
128
+ await this.device.changeFanSpeed(speed);
129
+ }, 'set rotation speed');
130
+ }
131
+ /**
132
+ * Handle set child lock
133
+ */
134
+ async handleSetChildLock(value) {
135
+ try {
136
+ const enabled = value === 1;
137
+ if (this.device.setChildLock) {
138
+ await this.device.setChildLock(enabled);
139
+ }
140
+ }
141
+ catch (err) {
142
+ await this.handleDeviceError('set child lock', err);
143
+ throw err;
144
+ }
145
+ }
89
146
  async getActive() {
90
147
  return this.device.deviceStatus === 'on' ? 1 : 0;
91
148
  }
@@ -144,18 +201,15 @@ class AirPurifierAccessory extends base_accessory_1.BaseAccessory {
144
201
  }
145
202
  return Math.min(Math.max((this.device.speed / this.device.maxSpeed) * 100, 0), 100);
146
203
  }
147
- async setRotationSpeed(value) {
148
- try {
149
- const speed = Math.round((value / 100) * this.device.maxSpeed);
150
- const success = await this.device.setSpeed(speed);
151
- if (!success) {
152
- throw new Error(`Failed to set speed to ${speed}`);
153
- }
154
- await this.persistDeviceState('speed', speed);
155
- }
156
- catch (error) {
157
- this.handleDeviceError('set rotation speed', error);
204
+ /**
205
+ * Convert HomeKit rotation speed (0-100) to fan speed (1-maxSpeed)
206
+ */
207
+ convertRotationSpeedToFanSpeed(value) {
208
+ if (value === 0) {
209
+ return 0; // Off
158
210
  }
211
+ // Convert from 0-100 to 1-maxSpeed
212
+ return Math.max(1, Math.round((value / 100) * this.device.maxSpeed));
159
213
  }
160
214
  async getLockPhysicalControls() {
161
215
  return this.device.childLock ? 1 : 0;
@@ -182,6 +236,11 @@ class AirPurifierAccessory extends base_accessory_1.BaseAccessory {
182
236
  async getFilterLifeLevel() {
183
237
  return this.device.filterLife;
184
238
  }
239
+ async updateRotationSpeed(speed) {
240
+ await this.withRetry(async () => {
241
+ await this.device.changeFanSpeed(speed);
242
+ }, 'update rotation speed');
243
+ }
185
244
  }
186
245
  exports.AirPurifierAccessory = AirPurifierAccessory;
187
246
  //# sourceMappingURL=air-purifier.accessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"air-purifier.accessory.js","sourceRoot":"","sources":["../../src/accessories/air-purifier.accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"air-purifier.accessory.js","sourceRoot":"","sources":["../../src/accessories/air-purifier.accessory.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare abstract class BaseAccessory {
9
9
  private readonly pollingManager;
10
10
  private readonly retryManager;
11
11
  private readonly logger;
12
+ private needsRetry;
12
13
  constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncDeviceWithPower);
13
14
  /**
14
15
  * Get base context for logging
@@ -25,7 +26,7 @@ export declare abstract class BaseAccessory {
25
26
  /**
26
27
  * Update device-specific states
27
28
  */
28
- protected abstract updateDeviceSpecificStates(details: any): void;
29
+ protected abstract updateDeviceSpecificStates(details: any): Promise<void>;
29
30
  /**
30
31
  * Get device capabilities
31
32
  */
@@ -71,8 +72,16 @@ export declare abstract class BaseAccessory {
71
72
  */
72
73
  protected persistDeviceState(key: string, value: unknown): Promise<void>;
73
74
  /**
74
- * Handle device errors consistently
75
+ * Handle device errors with appropriate recovery actions
75
76
  */
76
- protected handleDeviceError(operation: string, error: unknown): void;
77
+ protected handleDeviceError(operation: string, error: unknown): Promise<void>;
78
+ /**
79
+ * Attempt to reconnect to the device by triggering device discovery
80
+ */
81
+ private attemptReconnection;
82
+ /**
83
+ * Mark the device for retry on next update cycle
84
+ */
85
+ private markForRetry;
77
86
  }
78
87
  //# 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;gBAGpC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,qBAAqB;IA6B/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;cACa,SAAS,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,CAAC;IAkBb;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAEvC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAEjE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,IAAI,kBAAkB;IAE9D;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,MAAM;IAgBjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIrD;;OAEG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAkChD;;OAEG;IACH,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ1D;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAC3B,cAAc,EAAE,GAAG,EACnB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,EAC1C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,EACrD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IAwDP;;OAEG;IACH,SAAS,CAAC,yBAAyB,CACjC,cAAc,EAAE,GAAG,EACnB,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAUP;;OAEG;cACa,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9E;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CASrE"}
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;gBAGzB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,qBAAqB;IA6B/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;cACa,SAAS,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,CAAC;IAsBb;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAEvC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,IAAI,kBAAkB;IAE9D;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,MAAM;IAgBjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIrD;;OAEG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBhD;;OAEG;IACH,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ1D;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAC3B,cAAc,EAAE,GAAG,EACnB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,EAC1C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,EACrD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IAwDP;;OAEG;IACH,SAAS,CAAC,yBAAyB,CACjC,cAAc,EAAE,GAAG,EACnB,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAUP;;OAEG;cACa,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9E;;OAEG;cACa,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnF;;OAEG;YACW,mBAAmB;IAUjC;;OAEG;IACH,OAAO,CAAC,YAAY;CAGrB"}
@@ -6,6 +6,7 @@ const retry_1 = require("../utils/retry");
6
6
  const logger_1 = require("../utils/logger");
7
7
  class BaseAccessory {
8
8
  constructor(platform, accessory, device) {
9
+ this.needsRetry = false;
9
10
  this.platform = platform;
10
11
  this.accessory = accessory;
11
12
  this.device = device;
@@ -45,6 +46,7 @@ class BaseAccessory {
45
46
  }
46
47
  catch (error) {
47
48
  this.logger.operationEnd(context, error);
49
+ await this.handleDeviceError(`Failed to ${operationName}`, error instanceof Error ? error : new Error(String(error)));
48
50
  throw error;
49
51
  }
50
52
  }
@@ -111,29 +113,17 @@ class BaseAccessory {
111
113
  * Sync the device state with VeSync
112
114
  */
113
115
  async syncDeviceState() {
114
- const context = this.getLogContext('sync device state');
115
116
  try {
116
- await this.withRetry(async () => {
117
- await this.device.getDetails();
118
- const details = {
119
- deviceStatus: this.device.deviceStatus,
120
- // Add any other properties needed from the device
121
- };
122
- // Update polling state based on device status
123
- const isActive = details.deviceStatus === 'on';
124
- this.updatePollingState(isActive);
125
- this.logger.pollingEvent({
126
- ...context,
127
- interval: this.pollingManager.getCurrentInterval(),
128
- active: isActive,
129
- });
130
- // Update device-specific states
131
- this.updateDeviceSpecificStates(details);
132
- }, 'sync device state');
117
+ if (this.needsRetry) {
118
+ this.platform.log.debug(`[${this.accessory.displayName}] Retrying previous failed operation`);
119
+ }
120
+ const details = await this.device.getDetails();
121
+ this.needsRetry = false; // Clear retry flag on success
122
+ // Update the device state
123
+ await this.updateDeviceSpecificStates(details);
133
124
  }
134
125
  catch (error) {
135
- this.logger.error('Failed to sync device state', context, error);
136
- throw error; // Let polling manager handle the error
126
+ await this.handleDeviceError('Failed to sync device state', error instanceof Error ? error : new Error(String(error)));
137
127
  }
138
128
  }
139
129
  /**
@@ -219,12 +209,51 @@ class BaseAccessory {
219
209
  }
220
210
  }
221
211
  /**
222
- * Handle device errors consistently
212
+ * Handle device errors with appropriate recovery actions
223
213
  */
224
- handleDeviceError(operation, error) {
214
+ async handleDeviceError(operation, error) {
215
+ var _a, _b;
225
216
  const errorObj = error instanceof Error ? error : new Error(String(error));
226
- this.logger.error(`Failed to ${operation}`, this.getLogContext(operation), errorObj);
227
- throw errorObj;
217
+ const errorDetails = errorObj;
218
+ const errorCode = ((_a = errorDetails === null || errorDetails === void 0 ? void 0 : errorDetails.error) === null || _a === void 0 ? void 0 : _a.code) || (errorDetails === null || errorDetails === void 0 ? void 0 : errorDetails.code);
219
+ const errorMsg = ((_b = errorDetails === null || errorDetails === void 0 ? void 0 : errorDetails.error) === null || _b === void 0 ? void 0 : _b.msg) || (errorDetails === null || errorDetails === void 0 ? void 0 : errorDetails.msg);
220
+ // Log the error with context
221
+ this.platform.log.error(`[${this.accessory.displayName}] ${operation}: ${JSON.stringify(errorDetails)}`);
222
+ // Handle specific error codes
223
+ switch (errorCode) {
224
+ case 4041008: // Device not found
225
+ this.platform.log.warn(`[${this.accessory.displayName}] Device not found, will attempt to rediscover`);
226
+ await this.attemptReconnection();
227
+ break;
228
+ case -11102086: // Internal error
229
+ this.platform.log.warn(`[${this.accessory.displayName}] VeSync API internal error, will retry later`);
230
+ // Mark device for retry on next update cycle
231
+ this.markForRetry();
232
+ break;
233
+ default:
234
+ if (errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.includes('not found')) {
235
+ await this.attemptReconnection();
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * Attempt to reconnect to the device by triggering device discovery
241
+ */
242
+ async attemptReconnection() {
243
+ try {
244
+ // Attempt to refresh the device list
245
+ await this.platform.discoverDevices();
246
+ this.platform.log.info(`[${this.accessory.displayName}] Successfully refreshed device list`);
247
+ }
248
+ catch (error) {
249
+ this.platform.log.error(`[${this.accessory.displayName}] Failed to reconnect: ${error}`);
250
+ }
251
+ }
252
+ /**
253
+ * Mark the device for retry on next update cycle
254
+ */
255
+ markForRetry() {
256
+ this.needsRetry = true;
228
257
  }
229
258
  }
230
259
  exports.BaseAccessory = BaseAccessory;
@@ -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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"}
@@ -4,14 +4,18 @@ import { TSVESyncPlatform } from '../platform';
4
4
  import { DeviceCapabilities, VeSyncFan } from '../types/device.types';
5
5
  export declare class FanAccessory extends BaseAccessory {
6
6
  protected readonly device: VeSyncFan;
7
+ private readonly capabilities;
7
8
  constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncFan);
8
9
  protected setupService(): void;
9
- protected updateDeviceSpecificStates(details: any): void;
10
+ /**
11
+ * Update device states based on the latest details
12
+ */
13
+ protected updateDeviceSpecificStates(details: any): Promise<void>;
10
14
  protected getDeviceCapabilities(): DeviceCapabilities;
11
15
  private getActive;
12
16
  private setActive;
17
+ private handleSetRotationSpeed;
13
18
  private getRotationSpeed;
14
- private setRotationSpeed;
15
19
  private getRotationDirection;
16
20
  private setRotationDirection;
17
21
  private getSwingMode;
@@ -1 +1 @@
1
- {"version":3,"file":"fan.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/fan.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMtE,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;gBAGnC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,SAAS;IAMnB,SAAS,CAAC,YAAY,IAAI,IAAI;IAuD9B,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IA4CxD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YAIT,SAAS;YAeT,gBAAgB;YAIhB,gBAAgB;YAehB,oBAAoB;YAMpB,oBAAoB;YAmBpB,YAAY;YAIZ,YAAY;YAmBZ,uBAAuB;YAIvB,uBAAuB;CAkBtC"}
1
+ {"version":3,"file":"fan.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/fan.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMtE,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAGhD,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,SAAS;IAOnB,SAAS,CAAC,YAAY,IAAI,IAAI;IAuD9B;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YAIT,SAAS;YAeT,sBAAsB;YAOtB,gBAAgB;YAIhB,oBAAoB;YAMpB,oBAAoB;YAmBpB,YAAY;YAIZ,YAAY;YAmBZ,uBAAuB;YAIvB,uBAAuB;CAkBtC"}
@@ -9,6 +9,7 @@ class FanAccessory extends base_accessory_1.BaseAccessory {
9
9
  constructor(platform, accessory, device) {
10
10
  super(platform, accessory, device);
11
11
  this.device = device;
12
+ this.capabilities = this.getDeviceCapabilities();
12
13
  }
13
14
  setupService() {
14
15
  // Get or create the fan service
@@ -19,7 +20,7 @@ class FanAccessory extends base_accessory_1.BaseAccessory {
19
20
  // Set up optional characteristics based on device capabilities
20
21
  const capabilities = this.getDeviceCapabilities();
21
22
  if (capabilities.hasSpeed) {
22
- this.setupCharacteristic(this.platform.Characteristic.RotationSpeed, this.getRotationSpeed.bind(this), this.setRotationSpeed.bind(this));
23
+ this.setupCharacteristic(this.platform.Characteristic.RotationSpeed, this.getRotationSpeed.bind(this), this.handleSetRotationSpeed.bind(this));
23
24
  }
24
25
  // Add rotation direction (if supported by the device)
25
26
  if ('setRotationDirection' in this.device) {
@@ -34,28 +35,28 @@ class FanAccessory extends base_accessory_1.BaseAccessory {
34
35
  // Add Name characteristic
35
36
  this.setupCharacteristic(this.platform.Characteristic.Name, async () => this.device.deviceName);
36
37
  }
37
- updateDeviceSpecificStates(details) {
38
- const capabilities = this.getDeviceCapabilities();
39
- // Update speed if available
40
- if (capabilities.hasSpeed && details.speed !== undefined) {
41
- const normalizedSpeed = (details.speed / this.device.maxSpeed) * 100;
42
- this.updateCharacteristicValue(this.platform.Characteristic.RotationSpeed, normalizedSpeed);
43
- }
44
- // Update rotation direction if available
45
- if ('rotationDirection' in details) {
46
- this.updateCharacteristicValue(this.platform.Characteristic.RotationDirection, details.rotationDirection === 'clockwise' ? CLOCKWISE : COUNTER_CLOCKWISE);
38
+ /**
39
+ * Update device states based on the latest details
40
+ */
41
+ async updateDeviceSpecificStates(details) {
42
+ const fanDetails = details;
43
+ // Update active state
44
+ const isActive = fanDetails.deviceStatus === 'on';
45
+ this.updateCharacteristicValue(this.platform.Characteristic.Active, isActive ? 1 : 0);
46
+ // Update rotation speed if supported
47
+ if (this.capabilities.hasSpeed) {
48
+ this.updateCharacteristicValue(this.platform.Characteristic.RotationSpeed, fanDetails.speed);
47
49
  }
48
- // Update swing mode if available
49
- if (capabilities.hasSwingMode && details.swingMode !== undefined) {
50
- this.updateCharacteristicValue(this.platform.Characteristic.SwingMode, details.swingMode ? 1 : 0);
50
+ // Update child lock if supported
51
+ if (this.capabilities.hasChildLock) {
52
+ this.updateCharacteristicValue(this.platform.Characteristic.LockPhysicalControls, fanDetails.childLock ? 1 : 0);
51
53
  }
52
- // Update child lock if available
53
- if (capabilities.hasChildLock && details.childLock !== undefined) {
54
- this.updateCharacteristicValue(this.platform.Characteristic.LockPhysicalControls, details.childLock ? 1 : 0);
54
+ // Update swing mode if supported
55
+ if (this.capabilities.hasSwingMode) {
56
+ this.updateCharacteristicValue(this.platform.Characteristic.SwingMode, fanDetails.swingMode ? 1 : 0);
55
57
  }
56
- // Update active state
57
- const isActive = details.deviceStatus === 'on';
58
- this.updateCharacteristicValue(this.platform.Characteristic.Active, isActive ? 1 : 0);
58
+ // Update polling state based on active status
59
+ this.updatePollingState(isActive);
59
60
  }
60
61
  getDeviceCapabilities() {
61
62
  return {
@@ -86,22 +87,15 @@ class FanAccessory extends base_accessory_1.BaseAccessory {
86
87
  this.handleDeviceError('set active state', error);
87
88
  }
88
89
  }
90
+ async handleSetRotationSpeed(value) {
91
+ const speed = Math.round((value / 100) * this.device.maxSpeed);
92
+ await this.withRetry(async () => {
93
+ await this.device.changeFanSpeed(speed);
94
+ }, 'set rotation speed');
95
+ }
89
96
  async getRotationSpeed() {
90
97
  return (this.device.speed / this.device.maxSpeed) * 100;
91
98
  }
92
- async setRotationSpeed(value) {
93
- try {
94
- const speed = Math.round((value / 100) * this.device.maxSpeed);
95
- const success = await this.device.setSpeed(speed);
96
- if (!success) {
97
- throw new Error(`Failed to set speed to ${speed}`);
98
- }
99
- await this.persistDeviceState('speed', speed);
100
- }
101
- catch (error) {
102
- this.handleDeviceError('set rotation speed', error);
103
- }
104
- }
105
99
  async getRotationDirection() {
106
100
  return 'rotationDirection' in this.device && this.device.rotationDirection === 'clockwise'
107
101
  ? CLOCKWISE