homebridge-tsvesync 1.0.49 → 1.0.51
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/README.md +66 -1
- package/config.schema.json +183 -1
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +8 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +52 -3
- package/dist/platform.js.map +1 -1
- package/dist/types/device.types.d.ts +22 -0
- package/dist/types/device.types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -1
- package/src/platform.ts +61 -5
- package/src/types/device.types.ts +24 -0
package/README.md
CHANGED
|
@@ -132,7 +132,14 @@ Add the following to your Homebridge `config.json`:
|
|
|
132
132
|
"username": "YOUR_VESYNC_EMAIL",
|
|
133
133
|
"password": "YOUR_VESYNC_PASSWORD",
|
|
134
134
|
"updateInterval": 30,
|
|
135
|
-
"debug": false
|
|
135
|
+
"debug": false,
|
|
136
|
+
"exclude": {
|
|
137
|
+
"type": ["fan", "outlet"],
|
|
138
|
+
"model": ["Core300S", "LV600S"],
|
|
139
|
+
"name": ["Living Room Light"],
|
|
140
|
+
"namePattern": ["Bedroom.*"],
|
|
141
|
+
"id": ["cid123456"]
|
|
142
|
+
}
|
|
136
143
|
}
|
|
137
144
|
]
|
|
138
145
|
}
|
|
@@ -144,6 +151,64 @@ Add the following to your Homebridge `config.json`:
|
|
|
144
151
|
* `name` (required): Can be anything, this is the name that will appear in your Homebridge log
|
|
145
152
|
* `username` (required): Your VeSync account email
|
|
146
153
|
* `password` (required): Your VeSync account password
|
|
154
|
+
* `updateInterval` (optional): How often to update device states in seconds (default: 300)
|
|
155
|
+
* `debug` (optional): Enable debug logging (default: false)
|
|
156
|
+
|
|
157
|
+
### Device Exclusions
|
|
158
|
+
|
|
159
|
+
You can exclude specific devices from being added to HomeKit using the `exclude` configuration. All exclusion options are optional and can be combined:
|
|
160
|
+
|
|
161
|
+
* `type`: Array of device types to exclude. Valid types are:
|
|
162
|
+
* `fan` - All fan devices
|
|
163
|
+
* `outlet` - All outlet devices
|
|
164
|
+
* `switch` - All switch devices
|
|
165
|
+
* `bulb` - All light bulb devices
|
|
166
|
+
* `purifier` - All air purifier devices
|
|
167
|
+
* `humidifier` - All humidifier devices
|
|
168
|
+
|
|
169
|
+
* `model`: Array of device models to exclude. Examples:
|
|
170
|
+
* `Core300S` - Levoit Core 300S Air Purifier
|
|
171
|
+
* `LV600S` - Levoit LV600S Humidifier
|
|
172
|
+
* `ESL100` - Etekcity ESL100 Light Bulb
|
|
173
|
+
|
|
174
|
+
* `name`: Array of exact device names to exclude (case-sensitive)
|
|
175
|
+
* Matches the name shown in the VeSync app
|
|
176
|
+
* Must match exactly (including spaces and case)
|
|
177
|
+
* Example: `["Living Room Light", "Bedroom Fan"]`
|
|
178
|
+
|
|
179
|
+
* `namePattern`: Array of regex patterns to match device names
|
|
180
|
+
* Uses JavaScript regular expressions
|
|
181
|
+
* Case-sensitive matching
|
|
182
|
+
* Examples:
|
|
183
|
+
* `"Bedroom.*"` - Excludes all devices with names starting with "Bedroom"
|
|
184
|
+
* `".*Light"` - Excludes all devices with names ending in "Light"
|
|
185
|
+
* `"(Kitchen|Living Room).*"` - Excludes all devices with names starting with "Kitchen" or "Living Room"
|
|
186
|
+
|
|
187
|
+
* `id`: Array of device IDs to exclude
|
|
188
|
+
* Can use either the device's `cid` or `uuid`
|
|
189
|
+
* Useful for excluding specific devices when you have multiple of the same model
|
|
190
|
+
* You can find the ID in the VeSync app or Homebridge logs
|
|
191
|
+
|
|
192
|
+
Example configuration with all exclusion options:
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"platforms": [
|
|
196
|
+
{
|
|
197
|
+
"platform": "TSVESyncPlatform",
|
|
198
|
+
"name": "TSVESync",
|
|
199
|
+
"username": "YOUR_VESYNC_EMAIL",
|
|
200
|
+
"password": "YOUR_VESYNC_PASSWORD",
|
|
201
|
+
"exclude": {
|
|
202
|
+
"type": ["fan", "outlet"],
|
|
203
|
+
"model": ["Core300S", "LV600S"],
|
|
204
|
+
"name": ["Living Room Light", "Kitchen Outlet"],
|
|
205
|
+
"namePattern": ["Bedroom.*", ".*Nightlight"],
|
|
206
|
+
"id": ["cid123456", "cid789012"]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
```
|
|
147
212
|
|
|
148
213
|
## Features
|
|
149
214
|
|
package/config.schema.json
CHANGED
|
@@ -43,6 +43,106 @@
|
|
|
43
43
|
"required": false,
|
|
44
44
|
"default": false,
|
|
45
45
|
"description": "Enable debug logging for troubleshooting"
|
|
46
|
+
},
|
|
47
|
+
"exclude": {
|
|
48
|
+
"title": "Device Exclusions",
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": false,
|
|
51
|
+
"description": "Configure which devices to exclude from HomeKit",
|
|
52
|
+
"properties": {
|
|
53
|
+
"type": {
|
|
54
|
+
"title": "Exclude Device Types",
|
|
55
|
+
"type": "array",
|
|
56
|
+
"items": {
|
|
57
|
+
"title": "Device Type",
|
|
58
|
+
"type": "string",
|
|
59
|
+
"enum": ["fan", "outlet", "switch", "bulb", "purifier", "humidifier"]
|
|
60
|
+
},
|
|
61
|
+
"uniqueItems": true,
|
|
62
|
+
"description": "Select device types to exclude from HomeKit",
|
|
63
|
+
"default": []
|
|
64
|
+
},
|
|
65
|
+
"model": {
|
|
66
|
+
"title": "Exclude Device Models",
|
|
67
|
+
"type": "array",
|
|
68
|
+
"items": {
|
|
69
|
+
"title": "Device Model",
|
|
70
|
+
"type": "string",
|
|
71
|
+
"placeholder": "Core300S"
|
|
72
|
+
},
|
|
73
|
+
"uniqueItems": true,
|
|
74
|
+
"description": "Enter device models to exclude (e.g., Core300S, LV600S, ESL100)",
|
|
75
|
+
"default": []
|
|
76
|
+
},
|
|
77
|
+
"name": {
|
|
78
|
+
"title": "Exclude by Name",
|
|
79
|
+
"type": "array",
|
|
80
|
+
"items": {
|
|
81
|
+
"title": "Device Name",
|
|
82
|
+
"type": "string",
|
|
83
|
+
"placeholder": "Living Room Light"
|
|
84
|
+
},
|
|
85
|
+
"uniqueItems": true,
|
|
86
|
+
"description": "Enter exact device names to exclude (case-sensitive)",
|
|
87
|
+
"default": []
|
|
88
|
+
},
|
|
89
|
+
"namePattern": {
|
|
90
|
+
"title": "Exclude by Name Pattern",
|
|
91
|
+
"type": "array",
|
|
92
|
+
"items": {
|
|
93
|
+
"title": "Pattern",
|
|
94
|
+
"type": "string",
|
|
95
|
+
"placeholder": "Bedroom.*"
|
|
96
|
+
},
|
|
97
|
+
"uniqueItems": true,
|
|
98
|
+
"description": "Enter regex patterns to match device names for exclusion (e.g., 'Bedroom.*' to exclude all bedroom devices)",
|
|
99
|
+
"default": []
|
|
100
|
+
},
|
|
101
|
+
"id": {
|
|
102
|
+
"title": "Exclude by Device ID",
|
|
103
|
+
"type": "array",
|
|
104
|
+
"items": {
|
|
105
|
+
"title": "Device ID",
|
|
106
|
+
"type": "string",
|
|
107
|
+
"placeholder": "cid123456"
|
|
108
|
+
},
|
|
109
|
+
"uniqueItems": true,
|
|
110
|
+
"description": "Enter device IDs (cid/uuid) to exclude",
|
|
111
|
+
"default": []
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"retry": {
|
|
116
|
+
"title": "API Retry Configuration",
|
|
117
|
+
"type": "object",
|
|
118
|
+
"required": false,
|
|
119
|
+
"description": "Configure retry behavior for API calls",
|
|
120
|
+
"properties": {
|
|
121
|
+
"maxRetries": {
|
|
122
|
+
"title": "Maximum Retries",
|
|
123
|
+
"type": "integer",
|
|
124
|
+
"minimum": 1,
|
|
125
|
+
"maximum": 10,
|
|
126
|
+
"default": 3,
|
|
127
|
+
"description": "Maximum number of retry attempts for failed API calls"
|
|
128
|
+
},
|
|
129
|
+
"initialDelay": {
|
|
130
|
+
"title": "Initial Retry Delay",
|
|
131
|
+
"type": "integer",
|
|
132
|
+
"minimum": 1000,
|
|
133
|
+
"maximum": 10000,
|
|
134
|
+
"default": 2000,
|
|
135
|
+
"description": "Initial delay between retries in milliseconds"
|
|
136
|
+
},
|
|
137
|
+
"maxDelay": {
|
|
138
|
+
"title": "Maximum Retry Delay",
|
|
139
|
+
"type": "integer",
|
|
140
|
+
"minimum": 5000,
|
|
141
|
+
"maximum": 30000,
|
|
142
|
+
"default": 10000,
|
|
143
|
+
"description": "Maximum delay between retries in milliseconds"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
46
146
|
}
|
|
47
147
|
}
|
|
48
148
|
},
|
|
@@ -51,6 +151,88 @@
|
|
|
51
151
|
"username",
|
|
52
152
|
"password",
|
|
53
153
|
"updateInterval",
|
|
54
|
-
"debug"
|
|
154
|
+
"debug",
|
|
155
|
+
{
|
|
156
|
+
"key": "exclude",
|
|
157
|
+
"type": "section",
|
|
158
|
+
"title": "Device Exclusions",
|
|
159
|
+
"expandable": true,
|
|
160
|
+
"expanded": false,
|
|
161
|
+
"orderable": false,
|
|
162
|
+
"items": [
|
|
163
|
+
{
|
|
164
|
+
"key": "exclude.type",
|
|
165
|
+
"type": "array",
|
|
166
|
+
"title": "Device Types to Exclude",
|
|
167
|
+
"buttonText": "Add Device Type",
|
|
168
|
+
"items": [
|
|
169
|
+
{
|
|
170
|
+
"key": "exclude.type[]",
|
|
171
|
+
"type": "select"
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"key": "exclude.model",
|
|
177
|
+
"type": "array",
|
|
178
|
+
"title": "Device Models to Exclude",
|
|
179
|
+
"buttonText": "Add Device Model",
|
|
180
|
+
"items": [
|
|
181
|
+
{
|
|
182
|
+
"key": "exclude.model[]",
|
|
183
|
+
"type": "string"
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"key": "exclude.name",
|
|
189
|
+
"type": "array",
|
|
190
|
+
"title": "Device Names to Exclude",
|
|
191
|
+
"buttonText": "Add Device Name",
|
|
192
|
+
"items": [
|
|
193
|
+
{
|
|
194
|
+
"key": "exclude.name[]",
|
|
195
|
+
"type": "string"
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"key": "exclude.namePattern",
|
|
201
|
+
"type": "array",
|
|
202
|
+
"title": "Name Patterns to Exclude",
|
|
203
|
+
"buttonText": "Add Name Pattern",
|
|
204
|
+
"items": [
|
|
205
|
+
{
|
|
206
|
+
"key": "exclude.namePattern[]",
|
|
207
|
+
"type": "string"
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"key": "exclude.id",
|
|
213
|
+
"type": "array",
|
|
214
|
+
"title": "Device IDs to Exclude",
|
|
215
|
+
"buttonText": "Add Device ID",
|
|
216
|
+
"items": [
|
|
217
|
+
{
|
|
218
|
+
"key": "exclude.id[]",
|
|
219
|
+
"type": "string"
|
|
220
|
+
}
|
|
221
|
+
]
|
|
222
|
+
}
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"key": "retry",
|
|
227
|
+
"type": "section",
|
|
228
|
+
"title": "API Retry Settings",
|
|
229
|
+
"expandable": true,
|
|
230
|
+
"expanded": false,
|
|
231
|
+
"items": [
|
|
232
|
+
"retry.maxRetries",
|
|
233
|
+
"retry.initialDelay",
|
|
234
|
+
"retry.maxDelay"
|
|
235
|
+
]
|
|
236
|
+
}
|
|
55
237
|
]
|
|
56
238
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,yCAAwD;AACxD,yCAA8C;AAK9C,iBAAS,CAAC,GAAQ,EAAE,EAAE;IACpB,GAAG,CAAC,gBAAgB,CAAC,sBAAW,EAAE,wBAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,yCAAwD;AACxD,yCAA8C;AAK9C,iBAAS,CAAC,GAAQ,EAAE,EAAE;IACpB,GAAG,CAAC,gBAAgB,CAAC,sBAAW,EAAE,wBAAa,EAAE,2BAAuB,CAAC,CAAC;AAC5E,CAAC,CAAC"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { API, DynamicPlatformPlugin, Logger, PlatformAccessory,
|
|
1
|
+
import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, Service, Characteristic } from 'homebridge';
|
|
2
|
+
import { PlatformConfig as TSVESyncPlatformConfig } from './types/device.types';
|
|
2
3
|
/**
|
|
3
4
|
* HomebridgePlatform
|
|
4
5
|
* This class is the main constructor for your plugin, this is where you should
|
|
@@ -6,7 +7,7 @@ import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig,
|
|
|
6
7
|
*/
|
|
7
8
|
export declare class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
8
9
|
readonly log: Logger;
|
|
9
|
-
readonly config:
|
|
10
|
+
readonly config: TSVESyncPlatformConfig;
|
|
10
11
|
readonly api: API;
|
|
11
12
|
readonly Service: typeof Service;
|
|
12
13
|
readonly Characteristic: typeof Characteristic;
|
|
@@ -24,7 +25,7 @@ export declare class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
24
25
|
private readonly logger;
|
|
25
26
|
private readonly TOKEN_EXPIRY;
|
|
26
27
|
private lastTokenRefresh;
|
|
27
|
-
constructor(log: Logger, config:
|
|
28
|
+
constructor(log: Logger, config: TSVESyncPlatformConfig, api: API);
|
|
28
29
|
/**
|
|
29
30
|
* Check if platform is ready
|
|
30
31
|
*/
|
|
@@ -53,6 +54,10 @@ export declare class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
53
54
|
* Update device states periodically
|
|
54
55
|
*/
|
|
55
56
|
private updateDeviceStates;
|
|
57
|
+
/**
|
|
58
|
+
* Check if a device should be excluded based on configuration
|
|
59
|
+
*/
|
|
60
|
+
private shouldExcludeDevice;
|
|
56
61
|
/**
|
|
57
62
|
* This function discovers and registers your devices as accessories
|
|
58
63
|
*/
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,
|
|
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,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5G,OAAO,EAAmB,cAAc,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,qBAAqB;aAsB1C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,sBAAsB;aAC9B,GAAG,EAAE,GAAG;IAvB1B,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,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,gBAAgB,CAAqB;gBAG3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,GAAG;IAqE1B;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC;;OAEG;YACW,kBAAkB;IAmChC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAK/C;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,WAAW;IAwDzB;;OAEG;YACW,kBAAkB;IAIhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACG,eAAe;IAkHrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAO3B"}
|
package/dist/platform.js
CHANGED
|
@@ -225,6 +225,52 @@ class TSVESyncPlatform {
|
|
|
225
225
|
async updateDeviceStates() {
|
|
226
226
|
await this.discoverDevices();
|
|
227
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Check if a device should be excluded based on configuration
|
|
230
|
+
*/
|
|
231
|
+
shouldExcludeDevice(device) {
|
|
232
|
+
var _a, _b, _c, _d, _e;
|
|
233
|
+
const exclude = this.config.exclude;
|
|
234
|
+
if (!exclude) {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
// Check device type
|
|
238
|
+
if ((_a = exclude.type) === null || _a === void 0 ? void 0 : _a.includes(device.deviceType.toLowerCase())) {
|
|
239
|
+
this.logger.debug(`Excluding device ${device.deviceName} by type: ${device.deviceType}`);
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
// Check device model
|
|
243
|
+
if ((_b = exclude.model) === null || _b === void 0 ? void 0 : _b.some(model => device.deviceType.toUpperCase().includes(model.toUpperCase()))) {
|
|
244
|
+
this.logger.debug(`Excluding device ${device.deviceName} by model: ${device.deviceType}`);
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
// Check exact name match
|
|
248
|
+
if ((_c = exclude.name) === null || _c === void 0 ? void 0 : _c.includes(device.deviceName.trim())) {
|
|
249
|
+
this.logger.debug(`Excluding device ${device.deviceName} by exact name match`);
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
// Check name patterns
|
|
253
|
+
if (exclude.namePattern) {
|
|
254
|
+
for (const pattern of exclude.namePattern) {
|
|
255
|
+
try {
|
|
256
|
+
const regex = new RegExp(pattern);
|
|
257
|
+
if (regex.test(device.deviceName.trim())) {
|
|
258
|
+
this.logger.debug(`Excluding device ${device.deviceName} by name pattern: ${pattern}`);
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
this.logger.warn(`Invalid regex pattern in exclude config: ${pattern}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Check device ID (cid or uuid)
|
|
268
|
+
if (((_d = exclude.id) === null || _d === void 0 ? void 0 : _d.includes(device.cid)) || ((_e = exclude.id) === null || _e === void 0 ? void 0 : _e.includes(device.uuid))) {
|
|
269
|
+
this.logger.debug(`Excluding device ${device.deviceName} by ID: ${device.cid}/${device.uuid}`);
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
228
274
|
/**
|
|
229
275
|
* This function discovers and registers your devices as accessories
|
|
230
276
|
*/
|
|
@@ -256,11 +302,14 @@ class TSVESyncPlatform {
|
|
|
256
302
|
}
|
|
257
303
|
}
|
|
258
304
|
// Get all devices
|
|
259
|
-
const devices = this.getAllDevices();
|
|
305
|
+
const devices = this.getAllDevices().filter(device => !this.shouldExcludeDevice(device));
|
|
306
|
+
// Track processed devices for cleanup
|
|
307
|
+
const processedDeviceUUIDs = new Set();
|
|
260
308
|
// Loop over the discovered devices and register each one
|
|
261
309
|
for (const device of devices) {
|
|
262
310
|
// Generate a unique id for the accessory
|
|
263
311
|
const uuid = this.generateDeviceUUID(device);
|
|
312
|
+
processedDeviceUUIDs.add(uuid);
|
|
264
313
|
// Check if an accessory already exists
|
|
265
314
|
let accessory = this.accessories.find(acc => acc.UUID === uuid);
|
|
266
315
|
if (accessory) {
|
|
@@ -307,9 +356,9 @@ class TSVESyncPlatform {
|
|
|
307
356
|
}
|
|
308
357
|
}
|
|
309
358
|
}
|
|
310
|
-
// Remove platform accessories that no longer exist
|
|
359
|
+
// Remove platform accessories that no longer exist or are now excluded
|
|
311
360
|
this.accessories
|
|
312
|
-
.filter(accessory => !
|
|
361
|
+
.filter(accessory => !processedDeviceUUIDs.has(accessory.UUID))
|
|
313
362
|
.forEach(accessory => {
|
|
314
363
|
this.logger.info('Removing existing accessory:', accessory.displayName);
|
|
315
364
|
this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,4 +76,26 @@ export interface VeSyncOutlet extends VeSyncDeviceWithPower {
|
|
|
76
76
|
export interface VeSyncSwitch extends VeSyncDeviceWithPower {
|
|
77
77
|
power?: boolean;
|
|
78
78
|
}
|
|
79
|
+
export interface DeviceExclusion {
|
|
80
|
+
type?: string[];
|
|
81
|
+
model?: string[];
|
|
82
|
+
name?: string[];
|
|
83
|
+
namePattern?: string[];
|
|
84
|
+
id?: string[];
|
|
85
|
+
}
|
|
86
|
+
export interface PlatformConfig {
|
|
87
|
+
platform: string;
|
|
88
|
+
name: string;
|
|
89
|
+
username: string;
|
|
90
|
+
password: string;
|
|
91
|
+
updateInterval?: number;
|
|
92
|
+
debug?: boolean;
|
|
93
|
+
apiUrl?: string;
|
|
94
|
+
exclude?: DeviceExclusion;
|
|
95
|
+
retry?: {
|
|
96
|
+
maxRetries: number;
|
|
97
|
+
initialDelay?: number;
|
|
98
|
+
maxDelay?: number;
|
|
99
|
+
};
|
|
100
|
+
}
|
|
79
101
|
//# sourceMappingURL=device.types.d.ts.map
|
|
@@ -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.
|
|
3
|
+
"version": "1.0.51",
|
|
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.
|
|
101
|
+
"tsvesync": "1.0.45"
|
|
102
102
|
},
|
|
103
103
|
"devDependencies": {
|
|
104
104
|
"@types/jest": "^29.5.11",
|
package/src/index.ts
CHANGED
|
@@ -6,5 +6,5 @@ import { TSVESyncPlatform } from './platform';
|
|
|
6
6
|
* This method registers the platform with Homebridge
|
|
7
7
|
*/
|
|
8
8
|
export = (api: API) => {
|
|
9
|
-
api.registerPlatform(PLUGIN_NAME, PLATFORM_NAME, TSVESyncPlatform);
|
|
9
|
+
api.registerPlatform(PLUGIN_NAME, PLATFORM_NAME, TSVESyncPlatform as any);
|
|
10
10
|
};
|
package/src/platform.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { API, DynamicPlatformPlugin, Logger, PlatformAccessory,
|
|
1
|
+
import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, Service, Characteristic } from 'homebridge';
|
|
2
2
|
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
6
|
import { PluginLogger } from './utils/logger';
|
|
7
7
|
import { createRateLimitedVeSync } from './utils/api-proxy';
|
|
8
|
+
import { DeviceExclusion, PlatformConfig as TSVESyncPlatformConfig } from './types/device.types';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* HomebridgePlatform
|
|
@@ -34,7 +35,7 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
34
35
|
|
|
35
36
|
constructor(
|
|
36
37
|
public readonly log: Logger,
|
|
37
|
-
public readonly config:
|
|
38
|
+
public readonly config: TSVESyncPlatformConfig,
|
|
38
39
|
public readonly api: API,
|
|
39
40
|
) {
|
|
40
41
|
// Create initialization promise
|
|
@@ -270,6 +271,57 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
270
271
|
await this.discoverDevices();
|
|
271
272
|
}
|
|
272
273
|
|
|
274
|
+
/**
|
|
275
|
+
* Check if a device should be excluded based on configuration
|
|
276
|
+
*/
|
|
277
|
+
private shouldExcludeDevice(device: any): boolean {
|
|
278
|
+
const exclude = this.config.exclude;
|
|
279
|
+
if (!exclude) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Check device type
|
|
284
|
+
if (exclude.type?.includes(device.deviceType.toLowerCase())) {
|
|
285
|
+
this.logger.debug(`Excluding device ${device.deviceName} by type: ${device.deviceType}`);
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// Check device model
|
|
290
|
+
if (exclude.model?.some(model => device.deviceType.toUpperCase().includes(model.toUpperCase()))) {
|
|
291
|
+
this.logger.debug(`Excluding device ${device.deviceName} by model: ${device.deviceType}`);
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Check exact name match
|
|
296
|
+
if (exclude.name?.includes(device.deviceName.trim())) {
|
|
297
|
+
this.logger.debug(`Excluding device ${device.deviceName} by exact name match`);
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Check name patterns
|
|
302
|
+
if (exclude.namePattern) {
|
|
303
|
+
for (const pattern of exclude.namePattern) {
|
|
304
|
+
try {
|
|
305
|
+
const regex = new RegExp(pattern);
|
|
306
|
+
if (regex.test(device.deviceName.trim())) {
|
|
307
|
+
this.logger.debug(`Excluding device ${device.deviceName} by name pattern: ${pattern}`);
|
|
308
|
+
return true;
|
|
309
|
+
}
|
|
310
|
+
} catch (error) {
|
|
311
|
+
this.logger.warn(`Invalid regex pattern in exclude config: ${pattern}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Check device ID (cid or uuid)
|
|
317
|
+
if (exclude.id?.includes(device.cid) || exclude.id?.includes(device.uuid)) {
|
|
318
|
+
this.logger.debug(`Excluding device ${device.deviceName} by ID: ${device.cid}/${device.uuid}`);
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
|
|
273
325
|
/**
|
|
274
326
|
* This function discovers and registers your devices as accessories
|
|
275
327
|
*/
|
|
@@ -304,12 +356,16 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
304
356
|
}
|
|
305
357
|
|
|
306
358
|
// Get all devices
|
|
307
|
-
const devices = this.getAllDevices();
|
|
359
|
+
const devices = this.getAllDevices().filter(device => !this.shouldExcludeDevice(device));
|
|
360
|
+
|
|
361
|
+
// Track processed devices for cleanup
|
|
362
|
+
const processedDeviceUUIDs = new Set<string>();
|
|
308
363
|
|
|
309
364
|
// Loop over the discovered devices and register each one
|
|
310
365
|
for (const device of devices) {
|
|
311
366
|
// Generate a unique id for the accessory
|
|
312
367
|
const uuid = this.generateDeviceUUID(device);
|
|
368
|
+
processedDeviceUUIDs.add(uuid);
|
|
313
369
|
|
|
314
370
|
// Check if an accessory already exists
|
|
315
371
|
let accessory = this.accessories.find(acc => acc.UUID === uuid);
|
|
@@ -369,9 +425,9 @@ export class TSVESyncPlatform implements DynamicPlatformPlugin {
|
|
|
369
425
|
}
|
|
370
426
|
}
|
|
371
427
|
|
|
372
|
-
// Remove platform accessories that no longer exist
|
|
428
|
+
// Remove platform accessories that no longer exist or are now excluded
|
|
373
429
|
this.accessories
|
|
374
|
-
.filter(accessory => !
|
|
430
|
+
.filter(accessory => !processedDeviceUUIDs.has(accessory.UUID))
|
|
375
431
|
.forEach(accessory => {
|
|
376
432
|
this.logger.info('Removing existing accessory:', accessory.displayName);
|
|
377
433
|
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
@@ -88,4 +88,28 @@ export interface VeSyncOutlet extends VeSyncDeviceWithPower {
|
|
|
88
88
|
|
|
89
89
|
export interface VeSyncSwitch extends VeSyncDeviceWithPower {
|
|
90
90
|
power?: boolean;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface DeviceExclusion {
|
|
94
|
+
type?: string[]; // Device types to exclude (e.g., "fan", "outlet")
|
|
95
|
+
model?: string[]; // Device models to exclude (e.g., "Core300S", "LV600S")
|
|
96
|
+
name?: string[]; // Device names to exclude (exact match)
|
|
97
|
+
namePattern?: string[]; // Device names to exclude (regex patterns)
|
|
98
|
+
id?: string[]; // Device IDs to exclude (cid/uuid)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface PlatformConfig {
|
|
102
|
+
platform: string;
|
|
103
|
+
name: string;
|
|
104
|
+
username: string;
|
|
105
|
+
password: string;
|
|
106
|
+
updateInterval?: number;
|
|
107
|
+
debug?: boolean;
|
|
108
|
+
apiUrl?: string;
|
|
109
|
+
exclude?: DeviceExclusion;
|
|
110
|
+
retry?: {
|
|
111
|
+
maxRetries: number;
|
|
112
|
+
initialDelay?: number;
|
|
113
|
+
maxDelay?: number;
|
|
114
|
+
};
|
|
91
115
|
}
|