homebridge-tsvesync 1.0.53 → 1.0.55

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.
@@ -5,6 +5,7 @@ import { DeviceCapabilities, VeSyncFan } from '../types/device.types';
5
5
  export declare class FanAccessory extends BaseAccessory {
6
6
  protected readonly device: VeSyncFan;
7
7
  private readonly capabilities;
8
+ private readonly speedLevels;
8
9
  constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncFan);
9
10
  protected setupService(): void;
10
11
  /**
@@ -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;AAYtE,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;IAwD9B;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YAIT,SAAS;YAiBT,sBAAsB;YA0BtB,gBAAgB;YAiBhB,oBAAoB;YAMpB,oBAAoB;YAmBpB,YAAY;YAIZ,YAAY;YAmBZ,uBAAuB;YAIvB,uBAAuB;IAmBrC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;YASP,OAAO;YAIP,OAAO;CActB"}
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;AAqCtE,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;gBAGrC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,SAAS;IAQnB,SAAS,CAAC,YAAY,IAAI,IAAI;IAwD9B;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YAIT,SAAS;YAiBT,sBAAsB;YAkBtB,gBAAgB;YAiBhB,oBAAoB;YAMpB,oBAAoB;YAmBpB,YAAY;YAIZ,YAAY;YAmBZ,uBAAuB;YAIvB,uBAAuB;IAmBrC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;YASP,OAAO;YAIP,OAAO;CActB"}
@@ -10,11 +10,36 @@ const MODE_NORMAL = 0;
10
10
  const MODE_AUTO = 1;
11
11
  const MODE_SLEEP = 2;
12
12
  const MODE_TURBO = 3;
13
+ // Fan speed levels for different device types
14
+ const FAN_SPEED_LEVELS = {
15
+ 'LTF-F422S-KEU': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
16
+ 'LTF-F422S-WUSR': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
17
+ 'LTF-F422_WJP': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
18
+ 'LTF-F422S-WUS': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
19
+ 'Core200S': [1, 2, 3],
20
+ 'Core300S': [1, 2, 3, 4],
21
+ 'Core400S': [1, 2, 3, 4],
22
+ 'Core600S': [1, 2, 3, 4],
23
+ 'LAP-C201S-AUSR': [1, 2, 3],
24
+ 'LAP-C202S-WUSR': [1, 2, 3],
25
+ 'LAP-C301S-WJP': [1, 2, 3, 4],
26
+ 'LAP-C302S-WUSB': [1, 2, 3, 4],
27
+ 'LAP-C301S-WAAA': [1, 2, 3, 4],
28
+ 'LAP-C401S-WJP': [1, 2, 3, 4],
29
+ 'LAP-C401S-WUSR': [1, 2, 3, 4],
30
+ 'LAP-C401S-WAAA': [1, 2, 3, 4],
31
+ 'LAP-C601S-WUS': [1, 2, 3, 4],
32
+ 'LAP-C601S-WUSR': [1, 2, 3, 4],
33
+ 'LAP-C601S-WEU': [1, 2, 3, 4],
34
+ 'LV-PUR131S': [1, 2, 3],
35
+ 'LV-RH131S': [1, 2, 3]
36
+ };
13
37
  class FanAccessory extends base_accessory_1.BaseAccessory {
14
38
  constructor(platform, accessory, device) {
15
39
  super(platform, accessory, device);
16
40
  this.device = device;
17
41
  this.capabilities = this.getDeviceCapabilities();
42
+ this.speedLevels = FAN_SPEED_LEVELS[this.device.deviceType] || [1, 2, 3, 4];
18
43
  }
19
44
  setupService() {
20
45
  // Get or create the fan service
@@ -50,25 +75,14 @@ class FanAccessory extends base_accessory_1.BaseAccessory {
50
75
  this.updateCharacteristicValue(this.platform.Characteristic.Active, isActive ? 1 : 0);
51
76
  // Update current state (INACTIVE = 0, IDLE = 1, BLOWING_AIR = 2)
52
77
  this.updateCharacteristicValue(this.platform.Characteristic.CurrentFanState, isActive ? 2 : 0);
53
- // Update rotation speed - convert device speed (1-5) to HomeKit percentage (0-100)
78
+ // Update rotation speed
54
79
  let rotationSpeed = 0;
55
80
  if (isActive && fanDetails.speed !== undefined) {
56
- switch (fanDetails.speed) {
57
- case 1:
58
- rotationSpeed = 20;
59
- break; // Sleep
60
- case 2:
61
- rotationSpeed = 40;
62
- break; // Low
63
- case 3:
64
- rotationSpeed = 60;
65
- break; // Medium
66
- case 4:
67
- rotationSpeed = 80;
68
- break; // High
69
- case 5:
70
- rotationSpeed = 100;
71
- break; // Turbo
81
+ const speedIndex = this.speedLevels.indexOf(fanDetails.speed);
82
+ if (speedIndex !== -1) {
83
+ const maxLevel = this.speedLevels.length;
84
+ const levelSize = 100 / maxLevel;
85
+ rotationSpeed = Math.round((speedIndex + 1) * levelSize);
72
86
  }
73
87
  }
74
88
  this.updateCharacteristicValue(this.platform.Characteristic.RotationSpeed, rotationSpeed);
@@ -120,39 +134,26 @@ class FanAccessory extends base_accessory_1.BaseAccessory {
120
134
  await this.device.turnOff();
121
135
  return;
122
136
  }
123
- // Convert HomeKit percentage (0-100) to device speed (1-5)
124
- let speed;
125
- if (percentage <= 20) {
126
- speed = 1; // Sleep
127
- }
128
- else if (percentage <= 40) {
129
- speed = 2; // Low
130
- }
131
- else if (percentage <= 60) {
132
- speed = 3; // Medium
133
- }
134
- else if (percentage <= 80) {
135
- speed = 4; // High
136
- }
137
- else {
138
- speed = 5; // Turbo
139
- }
137
+ // Convert HomeKit percentage to device speed level
138
+ const maxLevel = this.speedLevels.length;
139
+ const levelSize = 100 / maxLevel;
140
+ const levelIndex = Math.min(Math.floor(percentage / levelSize), maxLevel - 1);
141
+ const speed = this.speedLevels[levelIndex];
140
142
  await this.device.changeFanSpeed(speed);
141
143
  }
142
144
  async getRotationSpeed() {
143
145
  if (this.device.speed === undefined || this.device.speed === null) {
144
146
  return 0;
145
147
  }
146
- // Convert device speed (1-5) to HomeKit percentage (0-100)
147
- switch (this.device.speed) {
148
- case 0: return 0; // Off
149
- case 1: return 20; // Sleep
150
- case 2: return 40; // Low
151
- case 3: return 60; // Medium
152
- case 4: return 80; // High
153
- case 5: return 100; // Turbo
154
- default: return 0;
148
+ // Convert device speed to HomeKit percentage
149
+ const currentSpeed = this.device.speed;
150
+ const speedIndex = this.speedLevels.indexOf(currentSpeed);
151
+ if (speedIndex === -1) {
152
+ return 0;
155
153
  }
154
+ const maxLevel = this.speedLevels.length;
155
+ const levelSize = 100 / maxLevel;
156
+ return Math.round((speedIndex + 1) * levelSize);
156
157
  }
157
158
  async getRotationDirection() {
158
159
  return 'oscillation' in this.device && this.device.oscillation
@@ -1 +1 @@
1
- {"version":3,"file":"fan.accessory.js","sourceRoot":"","sources":["../../src/accessories/fan.accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fan.accessory.js","sourceRoot":"","sources":["../../src/accessories/fan.accessory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import { VeSyncBaseDevice } from 'tsvesync';
2
+ export interface FanConfig {
3
+ module: 'VeSyncAirBypass' | 'VeSyncHumidifier' | 'VeSyncWarmHumidifier' | 'VeSyncTowerFan' | 'VeSyncAirBaseV2';
4
+ features: string[];
5
+ levels?: number[];
6
+ }
2
7
  export interface DeviceCapabilities {
3
8
  hasBrightness: boolean;
4
9
  hasColorTemp: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"device.types.d.ts","sourceRoot":"","sources":["../../src/types/device.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.types.d.ts","sourceRoot":"","sources":["../../src/types/device.types.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.53",
3
+ "version": "1.0.55",
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.49"
101
+ "tsvesync": "1.0.50"
102
102
  },
103
103
  "devDependencies": {
104
104
  "@types/jest": "^29.5.11",
@@ -13,9 +13,35 @@ const MODE_AUTO = 1;
13
13
  const MODE_SLEEP = 2;
14
14
  const MODE_TURBO = 3;
15
15
 
16
+ // Fan speed levels for different device types
17
+ const FAN_SPEED_LEVELS: { [key: string]: number[] } = {
18
+ 'LTF-F422S-KEU': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
19
+ 'LTF-F422S-WUSR': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
20
+ 'LTF-F422_WJP': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
21
+ 'LTF-F422S-WUS': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
22
+ 'Core200S': [1, 2, 3],
23
+ 'Core300S': [1, 2, 3, 4],
24
+ 'Core400S': [1, 2, 3, 4],
25
+ 'Core600S': [1, 2, 3, 4],
26
+ 'LAP-C201S-AUSR': [1, 2, 3],
27
+ 'LAP-C202S-WUSR': [1, 2, 3],
28
+ 'LAP-C301S-WJP': [1, 2, 3, 4],
29
+ 'LAP-C302S-WUSB': [1, 2, 3, 4],
30
+ 'LAP-C301S-WAAA': [1, 2, 3, 4],
31
+ 'LAP-C401S-WJP': [1, 2, 3, 4],
32
+ 'LAP-C401S-WUSR': [1, 2, 3, 4],
33
+ 'LAP-C401S-WAAA': [1, 2, 3, 4],
34
+ 'LAP-C601S-WUS': [1, 2, 3, 4],
35
+ 'LAP-C601S-WUSR': [1, 2, 3, 4],
36
+ 'LAP-C601S-WEU': [1, 2, 3, 4],
37
+ 'LV-PUR131S': [1, 2, 3],
38
+ 'LV-RH131S': [1, 2, 3]
39
+ };
40
+
16
41
  export class FanAccessory extends BaseAccessory {
17
42
  protected readonly device: VeSyncFan;
18
43
  private readonly capabilities: DeviceCapabilities;
44
+ private readonly speedLevels: number[];
19
45
 
20
46
  constructor(
21
47
  platform: TSVESyncPlatform,
@@ -25,6 +51,7 @@ export class FanAccessory extends BaseAccessory {
25
51
  super(platform, accessory, device);
26
52
  this.device = device;
27
53
  this.capabilities = this.getDeviceCapabilities();
54
+ this.speedLevels = FAN_SPEED_LEVELS[this.device.deviceType] || [1, 2, 3, 4];
28
55
  }
29
56
 
30
57
  protected setupService(): void {
@@ -107,15 +134,14 @@ export class FanAccessory extends BaseAccessory {
107
134
  isActive ? 2 : 0
108
135
  );
109
136
 
110
- // Update rotation speed - convert device speed (1-5) to HomeKit percentage (0-100)
137
+ // Update rotation speed
111
138
  let rotationSpeed = 0;
112
139
  if (isActive && fanDetails.speed !== undefined) {
113
- switch (fanDetails.speed) {
114
- case 1: rotationSpeed = 20; break; // Sleep
115
- case 2: rotationSpeed = 40; break; // Low
116
- case 3: rotationSpeed = 60; break; // Medium
117
- case 4: rotationSpeed = 80; break; // High
118
- case 5: rotationSpeed = 100; break; // Turbo
140
+ const speedIndex = this.speedLevels.indexOf(fanDetails.speed);
141
+ if (speedIndex !== -1) {
142
+ const maxLevel = this.speedLevels.length;
143
+ const levelSize = 100 / maxLevel;
144
+ rotationSpeed = Math.round((speedIndex + 1) * levelSize);
119
145
  }
120
146
  }
121
147
  this.updateCharacteristicValue(
@@ -185,19 +211,11 @@ export class FanAccessory extends BaseAccessory {
185
211
  return;
186
212
  }
187
213
 
188
- // Convert HomeKit percentage (0-100) to device speed (1-5)
189
- let speed: number;
190
- if (percentage <= 20) {
191
- speed = 1; // Sleep
192
- } else if (percentage <= 40) {
193
- speed = 2; // Low
194
- } else if (percentage <= 60) {
195
- speed = 3; // Medium
196
- } else if (percentage <= 80) {
197
- speed = 4; // High
198
- } else {
199
- speed = 5; // Turbo
200
- }
214
+ // Convert HomeKit percentage to device speed level
215
+ const maxLevel = this.speedLevels.length;
216
+ const levelSize = 100 / maxLevel;
217
+ const levelIndex = Math.min(Math.floor(percentage / levelSize), maxLevel - 1);
218
+ const speed = this.speedLevels[levelIndex];
201
219
 
202
220
  await this.device.changeFanSpeed(speed);
203
221
  }
@@ -207,16 +225,16 @@ export class FanAccessory extends BaseAccessory {
207
225
  return 0;
208
226
  }
209
227
 
210
- // Convert device speed (1-5) to HomeKit percentage (0-100)
211
- switch (this.device.speed) {
212
- case 0: return 0; // Off
213
- case 1: return 20; // Sleep
214
- case 2: return 40; // Low
215
- case 3: return 60; // Medium
216
- case 4: return 80; // High
217
- case 5: return 100; // Turbo
218
- default: return 0;
228
+ // Convert device speed to HomeKit percentage
229
+ const currentSpeed = this.device.speed;
230
+ const speedIndex = this.speedLevels.indexOf(currentSpeed);
231
+ if (speedIndex === -1) {
232
+ return 0;
219
233
  }
234
+
235
+ const maxLevel = this.speedLevels.length;
236
+ const levelSize = 100 / maxLevel;
237
+ return Math.round((speedIndex + 1) * levelSize);
220
238
  }
221
239
 
222
240
  private async getRotationDirection(): Promise<CharacteristicValue> {
@@ -1,5 +1,11 @@
1
1
  import { VeSyncBaseDevice } from 'tsvesync';
2
2
 
3
+ export interface FanConfig {
4
+ module: 'VeSyncAirBypass' | 'VeSyncHumidifier' | 'VeSyncWarmHumidifier' | 'VeSyncTowerFan' | 'VeSyncAirBaseV2';
5
+ features: string[];
6
+ levels?: number[];
7
+ }
8
+
3
9
  export interface DeviceCapabilities {
4
10
  hasBrightness: boolean;
5
11
  hasColorTemp: boolean;