homebridge-tsvesync 1.3.3 → 1.3.4

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,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.4 (2025-09-18)
4
+
5
+ ### Added
6
+ - **🕹️ ESWD16 Dimming in HomeKit**: ESWD16 dimmer switches now register as HomeKit `Lightbulb` accessories with native On/Off and Brightness control.
7
+ - **🌈 Indicator Ring Control**: Introduced a dedicated "Indicator" light service for the ESWD16 locator ring, including Hue/Saturation control powered by automatic HSV→RGB conversion.
8
+
9
+ ### Improved
10
+ - **🔄 State Synchronization**: On/Off and brightness updates now refresh ESWD16 cloud state immediately, keeping HomeKit characteristics accurate even when VeSync lags.
11
+ - **🛡️ Polling Guardrails**: Background discovery is now serialized and paired with UUID-stable Air Quality accessories, preventing duplicate registrations and overlapping sync loops.
12
+
13
+ ### Dependencies
14
+ - **📦 tsvesync**: Upgraded to 1.3.4 to stay aligned with the latest ESWD16 API surfaces.
15
+
3
16
  ## 1.3.3 (2025-01-05)
4
17
 
5
18
  ### Fixed
@@ -1,11 +1,17 @@
1
1
  import { PlatformAccessory } from 'homebridge';
2
2
  import { BaseAccessory } from './base.accessory';
3
3
  import { TSVESyncPlatform } from '../platform';
4
- import { DeviceCapabilities, VeSyncBulb } from '../types/device.types';
4
+ import { DeviceCapabilities, VeSyncLightDevice } from '../types/device.types';
5
5
  export declare class LightAccessory extends BaseAccessory {
6
- protected readonly device: VeSyncBulb;
6
+ protected readonly device: VeSyncLightDevice;
7
7
  private readonly capabilities;
8
- constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncBulb);
8
+ private readonly isDimmerDevice;
9
+ private indicatorService?;
10
+ private indicatorColorState;
11
+ private indicatorColorUpdateTimeout?;
12
+ private lastDimmerRefresh;
13
+ private static readonly DIMMER_REFRESH_DEBOUNCE_MS;
14
+ constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncLightDevice);
9
15
  protected setupService(): void;
10
16
  private setupColorTemperature;
11
17
  private setupColor;
@@ -24,5 +30,21 @@ export declare class LightAccessory extends BaseAccessory {
24
30
  private getSaturation;
25
31
  private setHue;
26
32
  private setSaturation;
33
+ private detectDimmer;
34
+ private setupIndicatorService;
35
+ private setupCharacteristicForService;
36
+ private updateIndicatorCharacteristic;
37
+ private withService;
38
+ private getIndicatorOn;
39
+ private setIndicatorOn;
40
+ private getIndicatorHue;
41
+ private setIndicatorHue;
42
+ private getIndicatorSaturation;
43
+ private setIndicatorSaturation;
44
+ private scheduleIndicatorColorUpdate;
45
+ private pushIndicatorColor;
46
+ private hsvToRgb;
47
+ private rgbToHsv;
48
+ private refreshDimmerDetails;
27
49
  }
28
50
  //# sourceMappingURL=light.accessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"light.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/light.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,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOvE,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAGhD,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU;IAOpB,SAAS,CAAC,YAAY,IAAI,IAAI;IAsC9B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,UAAU;IAclB;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAgBvC,KAAK;YAIL,KAAK;YAeL,aAAa;YAIb,aAAa;YAcb,mBAAmB;YAInB,mBAAmB;YAkBnB,MAAM;YAIN,aAAa;YAIb,MAAM;YAqBN,aAAa;CAoB5B"}
1
+ {"version":3,"file":"light.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/light.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAkC,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO9G,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,gBAAgB,CAAC,CAAU;IACnC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,2BAA2B,CAAC,CAAiB;IACrD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;gBAGxD,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB;IAQ3B,SAAS,CAAC,YAAY,IAAI,IAAI;IA0C9B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,UAAU;IAclB;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YA6BvC,KAAK;YAIL,KAAK;YAmBL,aAAa;YAIb,aAAa;YAoCb,mBAAmB;YASnB,mBAAmB;YAwBnB,MAAM;YASN,aAAa;YASb,MAAM;YA2BN,aAAa;IA2B3B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,6BAA6B;IAarC,OAAO,CAAC,WAAW;YAUL,cAAc;YAQd,cAAc;YAgBd,eAAe;YAcf,eAAe;YASf,sBAAsB;YActB,sBAAsB;IASpC,OAAO,CAAC,4BAA4B;YAYtB,kBAAkB;IA0BhC,OAAO,CAAC,QAAQ;IA2ChB,OAAO,CAAC,QAAQ;YAkCF,oBAAoB;CAsBnC"}
@@ -9,7 +9,10 @@ const DEFAULT_COLOR_TEMP = MIN_COLOR_TEMP;
9
9
  class LightAccessory extends base_accessory_1.BaseAccessory {
10
10
  constructor(platform, accessory, device) {
11
11
  super(platform, accessory, device);
12
+ this.indicatorColorState = { hue: 0, saturation: 0 };
13
+ this.lastDimmerRefresh = 0;
12
14
  this.device = device;
15
+ this.isDimmerDevice = this.detectDimmer(device);
13
16
  this.capabilities = this.getDeviceCapabilities();
14
17
  }
15
18
  setupService() {
@@ -19,7 +22,7 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
19
22
  // Set up required characteristics
20
23
  this.setupCharacteristic(this.platform.Characteristic.On, this.getOn.bind(this), this.setOn.bind(this));
21
24
  // Set up optional characteristics based on device capabilities
22
- const capabilities = this.getDeviceCapabilities();
25
+ const capabilities = this.capabilities;
23
26
  if (capabilities.hasBrightness) {
24
27
  this.setupCharacteristic(this.platform.Characteristic.Brightness, this.getBrightness.bind(this), this.setBrightness.bind(this));
25
28
  }
@@ -31,6 +34,9 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
31
34
  }
32
35
  // Add Name characteristic
33
36
  this.setupCharacteristic(this.platform.Characteristic.Name, async () => this.device.deviceName);
37
+ if (this.isDimmerDevice) {
38
+ this.setupIndicatorService();
39
+ }
34
40
  }
35
41
  setupColorTemperature() {
36
42
  this.service.getCharacteristic(this.platform.Characteristic.ColorTemperature)
@@ -69,9 +75,30 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
69
75
  this.updateCharacteristicValue(this.platform.Characteristic.Saturation, lightDetails.saturation);
70
76
  }
71
77
  }
78
+ if (this.isDimmerDevice && this.indicatorService) {
79
+ const dimmer = lightDetails;
80
+ const isRgbOn = dimmer.rgbLightStatus === 'on';
81
+ this.updateIndicatorCharacteristic(this.platform.Characteristic.On, isRgbOn);
82
+ const { hue, saturation } = this.rgbToHsv(dimmer.rgbLightValue.red, dimmer.rgbLightValue.green, dimmer.rgbLightValue.blue);
83
+ this.indicatorColorState = { hue, saturation };
84
+ this.updateIndicatorCharacteristic(this.platform.Characteristic.Hue, hue);
85
+ this.updateIndicatorCharacteristic(this.platform.Characteristic.Saturation, saturation);
86
+ }
72
87
  }
73
88
  getDeviceCapabilities() {
74
- // Determine capabilities based on model
89
+ if (this.isDimmerDevice) {
90
+ return {
91
+ hasBrightness: true,
92
+ hasColorTemp: false,
93
+ hasColor: false,
94
+ hasSpeed: false,
95
+ hasHumidity: false,
96
+ hasAirQuality: false,
97
+ hasWaterLevel: false,
98
+ hasChildLock: false,
99
+ hasSwingMode: false,
100
+ };
101
+ }
75
102
  const model = this.device.deviceType.toUpperCase();
76
103
  return {
77
104
  hasBrightness: true,
@@ -96,6 +123,9 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
96
123
  throw new Error(`Failed to turn ${isOn ? 'on' : 'off'} device`);
97
124
  }
98
125
  await this.persistDeviceState('deviceStatus', isOn ? 'on' : 'off');
126
+ if (this.isDimmerDevice) {
127
+ await this.refreshDimmerDetails();
128
+ }
99
129
  }
100
130
  catch (error) {
101
131
  this.handleDeviceError('set on state', error);
@@ -106,25 +136,51 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
106
136
  }
107
137
  async setBrightness(value) {
108
138
  try {
109
- const success = await this.device.setBrightness(value);
139
+ const target = Math.round(Number(value));
140
+ if (this.isDimmerDevice && target <= 0) {
141
+ const success = await this.device.turnOff();
142
+ if (!success) {
143
+ throw new Error('Failed to turn off device when setting brightness to 0');
144
+ }
145
+ await this.persistDeviceState('deviceStatus', 'off');
146
+ await this.persistDeviceState('brightness', 0);
147
+ await this.refreshDimmerDetails();
148
+ return;
149
+ }
150
+ const brightness = Math.min(100, Math.max(this.isDimmerDevice ? 1 : 0, target));
151
+ const success = await this.device.setBrightness(brightness);
110
152
  if (!success) {
111
- throw new Error(`Failed to set brightness to ${value}`);
153
+ throw new Error(`Failed to set brightness to ${brightness}`);
154
+ }
155
+ await this.persistDeviceState('brightness', brightness);
156
+ if (this.isDimmerDevice && brightness > 0) {
157
+ await this.persistDeviceState('deviceStatus', 'on');
158
+ }
159
+ if (this.isDimmerDevice) {
160
+ await this.refreshDimmerDetails();
112
161
  }
113
- await this.persistDeviceState('brightness', value);
114
162
  }
115
163
  catch (error) {
116
164
  this.handleDeviceError('set brightness', error);
117
165
  }
118
166
  }
119
167
  async getColorTemperature() {
120
- return this.device.colorTemp || DEFAULT_COLOR_TEMP;
168
+ if (this.isDimmerDevice) {
169
+ return DEFAULT_COLOR_TEMP;
170
+ }
171
+ const bulb = this.device;
172
+ return bulb.colorTemp || DEFAULT_COLOR_TEMP;
121
173
  }
122
174
  async setColorTemperature(value) {
123
175
  try {
124
- if (!this.device.setColorTemperature) {
176
+ if (this.isDimmerDevice) {
177
+ throw new Error('Device does not support color temperature');
178
+ }
179
+ const bulb = this.device;
180
+ if (!bulb.setColorTemperature) {
125
181
  throw new Error('Device does not support color temperature');
126
182
  }
127
- const success = await this.device.setColorTemperature(value);
183
+ const success = await bulb.setColorTemperature(value);
128
184
  if (!success) {
129
185
  throw new Error(`Failed to set color temperature to ${value}`);
130
186
  }
@@ -135,17 +191,29 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
135
191
  }
136
192
  }
137
193
  async getHue() {
138
- return this.device.hue || 0;
194
+ if (this.isDimmerDevice) {
195
+ return 0;
196
+ }
197
+ const bulb = this.device;
198
+ return bulb.hue || 0;
139
199
  }
140
200
  async getSaturation() {
141
- return this.device.saturation || 0;
201
+ if (this.isDimmerDevice) {
202
+ return 0;
203
+ }
204
+ const bulb = this.device;
205
+ return bulb.saturation || 0;
142
206
  }
143
207
  async setHue(value) {
144
208
  try {
145
- if (!this.device.setColor) {
209
+ if (this.isDimmerDevice) {
210
+ throw new Error('Device does not support color');
211
+ }
212
+ const bulb = this.device;
213
+ if (!bulb.setColor) {
146
214
  throw new Error('Device does not support color');
147
215
  }
148
- const success = await this.device.setColor(value, this.device.saturation || 0);
216
+ const success = await bulb.setColor(value, bulb.saturation || 0);
149
217
  if (!success) {
150
218
  throw new Error(`Failed to set hue to ${value}`);
151
219
  }
@@ -157,10 +225,14 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
157
225
  }
158
226
  async setSaturation(value) {
159
227
  try {
160
- if (!this.device.setColor) {
228
+ if (this.isDimmerDevice) {
161
229
  throw new Error('Device does not support color');
162
230
  }
163
- const success = await this.device.setColor(this.device.hue || 0, value);
231
+ const bulb = this.device;
232
+ if (!bulb.setColor) {
233
+ throw new Error('Device does not support color');
234
+ }
235
+ const success = await bulb.setColor(bulb.hue || 0, value);
164
236
  if (!success) {
165
237
  throw new Error(`Failed to set saturation to ${value}`);
166
238
  }
@@ -170,6 +242,210 @@ class LightAccessory extends base_accessory_1.BaseAccessory {
170
242
  this.handleDeviceError('set saturation', error);
171
243
  }
172
244
  }
245
+ detectDimmer(device) {
246
+ return typeof device.rgbColorSet === 'function';
247
+ }
248
+ setupIndicatorService() {
249
+ const serviceName = `${this.device.deviceName} Indicator`;
250
+ const existing = this.accessory.getService(serviceName);
251
+ this.indicatorService = existing || this.accessory.addService(this.platform.Service.Lightbulb, serviceName, 'indicator');
252
+ const indicatorService = this.indicatorService;
253
+ if (!indicatorService) {
254
+ return;
255
+ }
256
+ this.setupCharacteristicForService(indicatorService, this.platform.Characteristic.On, this.getIndicatorOn.bind(this), this.setIndicatorOn.bind(this));
257
+ this.setupCharacteristicForService(indicatorService, this.platform.Characteristic.Hue, this.getIndicatorHue.bind(this), this.setIndicatorHue.bind(this));
258
+ this.setupCharacteristicForService(indicatorService, this.platform.Characteristic.Saturation, this.getIndicatorSaturation.bind(this), this.setIndicatorSaturation.bind(this));
259
+ }
260
+ setupCharacteristicForService(service, characteristic, onGet, onSet) {
261
+ this.withService(service, () => {
262
+ this.setupCharacteristic(characteristic, onGet, onSet);
263
+ });
264
+ }
265
+ updateIndicatorCharacteristic(characteristic, value) {
266
+ if (!this.indicatorService) {
267
+ return;
268
+ }
269
+ this.withService(this.indicatorService, () => {
270
+ this.updateCharacteristicValue(characteristic, value);
271
+ });
272
+ }
273
+ withService(service, fn) {
274
+ const currentService = this.service;
275
+ this.service = service;
276
+ try {
277
+ return fn();
278
+ }
279
+ finally {
280
+ this.service = currentService;
281
+ }
282
+ }
283
+ async getIndicatorOn() {
284
+ if (!this.isDimmerDevice) {
285
+ return false;
286
+ }
287
+ const dimmer = this.device;
288
+ return dimmer.rgbLightStatus === 'on';
289
+ }
290
+ async setIndicatorOn(value) {
291
+ if (!this.isDimmerDevice) {
292
+ return;
293
+ }
294
+ const isOn = Boolean(value);
295
+ const dimmer = this.device;
296
+ const success = isOn ? await dimmer.rgbColorOn() : await dimmer.rgbColorOff();
297
+ if (!success) {
298
+ throw new Error(`Failed to turn ${isOn ? 'on' : 'off'} indicator light`);
299
+ }
300
+ await this.refreshDimmerDetails();
301
+ }
302
+ async getIndicatorHue() {
303
+ if (!this.isDimmerDevice) {
304
+ return 0;
305
+ }
306
+ const { hue } = this.rgbToHsv(this.device.rgbLightValue.red, this.device.rgbLightValue.green, this.device.rgbLightValue.blue);
307
+ this.indicatorColorState.hue = hue;
308
+ return hue;
309
+ }
310
+ async setIndicatorHue(value) {
311
+ if (!this.isDimmerDevice) {
312
+ return;
313
+ }
314
+ this.indicatorColorState.hue = Number(value);
315
+ this.scheduleIndicatorColorUpdate();
316
+ }
317
+ async getIndicatorSaturation() {
318
+ if (!this.isDimmerDevice) {
319
+ return 0;
320
+ }
321
+ const { saturation } = this.rgbToHsv(this.device.rgbLightValue.red, this.device.rgbLightValue.green, this.device.rgbLightValue.blue);
322
+ this.indicatorColorState.saturation = saturation;
323
+ return saturation;
324
+ }
325
+ async setIndicatorSaturation(value) {
326
+ if (!this.isDimmerDevice) {
327
+ return;
328
+ }
329
+ this.indicatorColorState.saturation = Number(value);
330
+ this.scheduleIndicatorColorUpdate();
331
+ }
332
+ scheduleIndicatorColorUpdate() {
333
+ if (this.indicatorColorUpdateTimeout) {
334
+ clearTimeout(this.indicatorColorUpdateTimeout);
335
+ }
336
+ this.indicatorColorUpdateTimeout = setTimeout(() => {
337
+ void this.pushIndicatorColor().catch(error => {
338
+ void this.handleDeviceError('set indicator color', error);
339
+ });
340
+ }, 250);
341
+ }
342
+ async pushIndicatorColor() {
343
+ if (!this.isDimmerDevice) {
344
+ return;
345
+ }
346
+ const [red, green, blue] = this.hsvToRgb(this.indicatorColorState.hue, this.indicatorColorState.saturation, 100);
347
+ const dimmer = this.device;
348
+ const success = await dimmer.rgbColorSet(red, green, blue);
349
+ if (!success) {
350
+ throw new Error('Failed to update indicator color');
351
+ }
352
+ this.indicatorColorState = {
353
+ hue: this.indicatorColorState.hue,
354
+ saturation: this.indicatorColorState.saturation,
355
+ };
356
+ await this.refreshDimmerDetails();
357
+ }
358
+ hsvToRgb(h, s, v) {
359
+ let hue = h % 360;
360
+ if (hue < 0) {
361
+ hue += 360;
362
+ }
363
+ const saturation = Math.max(0, Math.min(100, s)) / 100;
364
+ const value = Math.max(0, Math.min(100, v)) / 100;
365
+ const c = value * saturation;
366
+ const x = c * (1 - Math.abs(((hue / 60) % 2) - 1));
367
+ const m = value - c;
368
+ let rPrime = 0;
369
+ let gPrime = 0;
370
+ let bPrime = 0;
371
+ if (hue < 60) {
372
+ rPrime = c;
373
+ gPrime = x;
374
+ }
375
+ else if (hue < 120) {
376
+ rPrime = x;
377
+ gPrime = c;
378
+ }
379
+ else if (hue < 180) {
380
+ gPrime = c;
381
+ bPrime = x;
382
+ }
383
+ else if (hue < 240) {
384
+ gPrime = x;
385
+ bPrime = c;
386
+ }
387
+ else if (hue < 300) {
388
+ rPrime = x;
389
+ bPrime = c;
390
+ }
391
+ else {
392
+ rPrime = c;
393
+ bPrime = x;
394
+ }
395
+ const red = Math.round((rPrime + m) * 255);
396
+ const green = Math.round((gPrime + m) * 255);
397
+ const blue = Math.round((bPrime + m) * 255);
398
+ return [red, green, blue];
399
+ }
400
+ rgbToHsv(r, g, b) {
401
+ const red = r / 255;
402
+ const green = g / 255;
403
+ const blue = b / 255;
404
+ const max = Math.max(red, green, blue);
405
+ const min = Math.min(red, green, blue);
406
+ const delta = max - min;
407
+ let hue = 0;
408
+ if (delta !== 0) {
409
+ if (max === red) {
410
+ hue = ((green - blue) / delta) % 6;
411
+ }
412
+ else if (max === green) {
413
+ hue = (blue - red) / delta + 2;
414
+ }
415
+ else {
416
+ hue = (red - green) / delta + 4;
417
+ }
418
+ hue *= 60;
419
+ if (hue < 0) {
420
+ hue += 360;
421
+ }
422
+ }
423
+ const saturation = max === 0 ? 0 : (delta / max) * 100;
424
+ const value = max * 100;
425
+ return {
426
+ hue: Math.round(hue),
427
+ saturation: Math.round(saturation),
428
+ value: Math.round(value),
429
+ };
430
+ }
431
+ async refreshDimmerDetails() {
432
+ if (!this.isDimmerDevice) {
433
+ return;
434
+ }
435
+ const dimmer = this.device;
436
+ try {
437
+ const now = Date.now();
438
+ if (now - this.lastDimmerRefresh >= LightAccessory.DIMMER_REFRESH_DEBOUNCE_MS &&
439
+ typeof dimmer.getDetails === 'function') {
440
+ await dimmer.getDetails();
441
+ this.lastDimmerRefresh = now;
442
+ }
443
+ }
444
+ catch (error) {
445
+ this.platform.log.debug(`${this.device.deviceName}: failed to refresh details after state change`, error instanceof Error ? error : new Error(String(error)));
446
+ }
447
+ }
173
448
  }
174
449
  exports.LightAccessory = LightAccessory;
450
+ LightAccessory.DIMMER_REFRESH_DEBOUNCE_MS = 2000;
175
451
  //# sourceMappingURL=light.accessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"light.accessory.js","sourceRoot":"","sources":["../../src/accessories/light.accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"light.accessory.js","sourceRoot":"","sources":["../../src/accessories/light.accessory.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AAIjD,kCAAkC;AAClC,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,eAAe;AAC3C,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,eAAe;AAC3C,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C,MAAa,cAAe,SAAQ,8BAAa;IAU/C,YACE,QAA0B,EAC1B,SAA4B,EAC5B,MAAyB;QAEzB,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAV7B,wBAAmB,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAEhD,sBAAiB,GAAG,CAAC,CAAC;QAS5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACnD,CAAC;IAES,YAAY;QACpB,kCAAkC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE7D,kCAAkC;QAClC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;QAEF,+DAA+D;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEvC,IAAI,YAAY,CAAC,aAAa,EAAE;YAC9B,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAC;SACH;QAED,IAAI,YAAY,CAAC,YAAY,EAAE;YAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,IAAI,YAAY,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,0BAA0B;QAC1B,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EACjC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CACnC,CAAC;QAEF,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;aAC1E,QAAQ,CAAC;YACR,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,cAAc;SACzB,CAAC,CAAC;QAEL,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EACnC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAC;IACJ,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CACvB,CAAC;QAEF,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,0BAA0B,CAAC,OAAY;QACrD,MAAM,YAAY,GAAG,OAIpB,CAAC;QAEF,sBAAsB;QACtB,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,KAAK,IAAI,CAAC;QACpD,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,QAAQ,CACT,CAAC;QAEF,iCAAiC;QACjC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE;YAC5E,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,YAAY,CAAC,UAAU,CACxB,CAAC;SACH;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,EAAE;YAC1E,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAC7C,YAAY,CAAC,SAAS,CACvB,CAAC;SACH;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC9B,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE;gBAClC,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAChC,YAAY,CAAC,GAAG,CACjB,CAAC;aACH;YACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE;gBACzC,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,YAAY,CAAC,UAAU,CACxB,CAAC;aACH;SACF;QAED,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAChD,MAAM,MAAM,GAAG,YAAkC,CAAC;YAClD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC;YAC/C,IAAI,CAAC,6BAA6B,CAChC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,OAAO,CACR,CAAC;YAEF,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CACvC,MAAM,CAAC,aAAa,CAAC,GAAG,EACxB,MAAM,CAAC,aAAa,CAAC,KAAK,EAC1B,MAAM,CAAC,aAAa,CAAC,IAAI,CAC1B,CAAC;YACF,IAAI,CAAC,mBAAmB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1E,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SACzF;IACH,CAAC;IAES,qBAAqB;QAC7B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;gBACL,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;gBACpB,aAAa,EAAE,KAAK;gBACpB,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,KAAK;aACpB,CAAC;SACH;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1D,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,SAAS;YACrD,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,KAAK;YAClB,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,KAA0B;QAC5C,IAAI;YACF,MAAM,IAAI,GAAG,KAAgB,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAEhF,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;aACjE;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAEnE,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACnC;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;SAC/C;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAA0B;QACpD,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAEzC,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,IAAI,CAAC,EAAE;gBACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;iBAC3E;gBACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAClC,OAAO;aACR;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAEhF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;aAC9D;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,cAAc,IAAI,UAAU,GAAG,CAAC,EAAE;gBACzC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;aACrD;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACnC;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;SACjD;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,kBAAkB,CAAC;SAC3B;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAoB,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAA0B;QAC1D,IAAI;YACF,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC9D;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAoB,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC9D;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAe,CAAC,CAAC;YAEhE,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;aAChE;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SACnD;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;SACxD;IACH,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,CAAC,CAAC;SACV;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAoB,CAAC;QACvC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,CAAC,CAAC;SACV;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAoB,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAA0B;QAC7C,IAAI;YACF,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;aAClD;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAoB,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;aAClD;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CACjC,KAAe,EACf,IAAI,CAAC,UAAU,IAAI,CAAC,CACrB,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;aAClD;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAC1C;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAA0B;QACpD,IAAI;YACF,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;aAClD;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAoB,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;aAClD;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CACjC,IAAI,CAAC,GAAG,IAAI,CAAC,EACb,KAAe,CAChB,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;aACzD;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;SACjD;IACH,CAAC;IAEO,YAAY,CAAC,MAAyB;QAC5C,OAAO,OAAQ,MAA6B,CAAC,WAAW,KAAK,UAAU,CAAC;IAC1E,CAAC;IAEO,qBAAqB;QAC3B,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,YAAY,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAC/B,WAAW,EACX,WAAW,CACZ,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,6BAA6B,CAChC,gBAAgB,EAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC;QAEF,IAAI,CAAC,6BAA6B,CAChC,gBAAgB,EAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC;QAEF,IAAI,CAAC,6BAA6B,CAChC,gBAAgB,EAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC;IACJ,CAAC;IAEO,6BAA6B,CACnC,OAAgB,EAChB,cAAmB,EACnB,KAA0C,EAC1C,KAAqD;QAErD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6BAA6B,CACnC,cAAmB,EACnB,KAA0B;QAE1B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC3C,IAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAI,OAAgB,EAAE,EAAW;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI;YACF,OAAO,EAAE,EAAE,CAAC;SACb;gBAAS;YACR,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;SAC/B;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;QACjD,OAAO,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAA0B;QACrD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAE9E,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC;SAC1E;QAED,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,CAAC,CAAC;SACV;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAC1B,IAAI,CAAC,MAA6B,CAAC,aAAa,CAAC,GAAG,EACpD,IAAI,CAAC,MAA6B,CAAC,aAAa,CAAC,KAAK,EACtD,IAAI,CAAC,MAA6B,CAAC,aAAa,CAAC,IAAI,CACvD,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,GAAG,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAA0B;QACtD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,CAAC,CAAC;SACV;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CACjC,IAAI,CAAC,MAA6B,CAAC,aAAa,CAAC,GAAG,EACpD,IAAI,CAAC,MAA6B,CAAC,aAAa,CAAC,KAAK,EACtD,IAAI,CAAC,MAA6B,CAAC,aAAa,CAAC,IAAI,CACvD,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,UAAU,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAA0B;QAC7D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QAED,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAEO,4BAA4B;QAClC,IAAI,IAAI,CAAC,2BAA2B,EAAE;YACpC,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,2BAA2B,GAAG,UAAU,CAAC,GAAG,EAAE;YACjD,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC3C,KAAK,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QAED,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CACtC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAC5B,IAAI,CAAC,mBAAmB,CAAC,UAAU,EACnC,GAAG,CACJ,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QAED,IAAI,CAAC,mBAAmB,GAAG;YACzB,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG;YACjC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU;SAChD,CAAC;QAEF,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAEO,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAClB,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,IAAI,GAAG,CAAC;SACZ;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAElD,MAAM,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAEpB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,GAAG,GAAG,EAAE,EAAE;YACZ,MAAM,GAAG,CAAC,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;SACZ;aAAM,IAAI,GAAG,GAAG,GAAG,EAAE;YACpB,MAAM,GAAG,CAAC,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;SACZ;aAAM,IAAI,GAAG,GAAG,GAAG,EAAE;YACpB,MAAM,GAAG,CAAC,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;SACZ;aAAM,IAAI,GAAG,GAAG,GAAG,EAAE;YACpB,MAAM,GAAG,CAAC,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;SACZ;aAAM,IAAI,GAAG,GAAG,GAAG,EAAE;YACpB,MAAM,GAAG,CAAC,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;SACZ;aAAM;YACL,MAAM,GAAG,CAAC,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;SACZ;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9C,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QAExB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IAAI,GAAG,KAAK,GAAG,EAAE;gBACf,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;aACpC;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACxB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;aAChC;iBAAM;gBACL,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;aACjC;YACD,GAAG,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,GAAG,IAAI,GAAG,CAAC;aACZ;SACF;QAED,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QAExB,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACpB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;QACjD,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IACE,GAAG,GAAG,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC,0BAA0B;gBACzE,OAAQ,MAAc,CAAC,UAAU,KAAK,UAAU,EAChD;gBACA,MAAO,MAAc,CAAC,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;aAC9B;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,gDAAgD,EACzE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;SACH;IACH,CAAC;;AA5nBH,wCA6nBC;AArnByB,yCAA0B,GAAG,IAAI,CAAC"}
@@ -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,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5G,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGhF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,qBAAqB;aA+B1C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,sBAAsB;aAC9B,GAAG,EAAE,GAAG;IAhC1B,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,QAAQ,CAAC,mBAAmB,CAA6C;IAEjF,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,kBAAkB,CAAuB;IACjD,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,CAAoB;IAGjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,gBAAgB,CAAqB;gBAG3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,GAAG;IAgH1B;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAK/C;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,WAAW;IA4EzB;;OAEG;YACW,kBAAkB;IAIhC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAgFzC,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACG,eAAe;IA6LrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
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,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGhF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,qBAAqB;aA+B1C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,sBAAsB;aAC9B,GAAG,EAAE,GAAG;IAhC1B,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,QAAQ,CAAC,mBAAmB,CAA6C;IAEjF,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,kBAAkB,CAAuB;IACjD,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,CAAoB;IAGjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,gBAAgB,CAAqB;gBAG3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,GAAG;IAgH1B;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAK/C;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,WAAW;IA4EzB;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAgFzC,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACG,eAAe;IA6LrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
package/dist/platform.js CHANGED
@@ -295,7 +295,25 @@ class TSVESyncPlatform {
295
295
  * Update device states periodically
296
296
  */
297
297
  async updateDeviceStates() {
298
- await this.discoverDevices();
298
+ if (this.refreshInProgress) {
299
+ return;
300
+ }
301
+ this.refreshInProgress = true;
302
+ try {
303
+ await this.discoverDevices();
304
+ const syncTasks = Array.from(this.deviceAccessories.values()).map(async (accessory) => {
305
+ try {
306
+ await accessory.syncDeviceState();
307
+ }
308
+ catch (error) {
309
+ this.logger.warn('Failed to sync device state during scheduled refresh', error);
310
+ }
311
+ });
312
+ await Promise.all(syncTasks);
313
+ }
314
+ finally {
315
+ this.refreshInProgress = false;
316
+ }
299
317
  }
300
318
  /**
301
319
  * Handle token updates from the library