@homebridge-plugins/homebridge-ecovacs 7.3.1-beta.0 → 8.0.0-beta.0

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 (43) hide show
  1. package/CHANGELOG.md +45 -3
  2. package/config.schema.json +197 -36
  3. package/dist/devices/BaseMatterAccessory.d.ts +64 -0
  4. package/dist/devices/BaseMatterAccessory.js +98 -0
  5. package/dist/devices/BaseMatterAccessory.js.map +1 -0
  6. package/dist/devices/EcovacsRoboticVacuumAccessory.d.ts +78 -0
  7. package/dist/devices/EcovacsRoboticVacuumAccessory.js +329 -0
  8. package/dist/devices/EcovacsRoboticVacuumAccessory.js.map +1 -0
  9. package/dist/devices/index.d.ts +4 -0
  10. package/dist/devices/index.js +3 -0
  11. package/dist/devices/index.js.map +1 -0
  12. package/dist/homebridge-ui/public/index.html +513 -0
  13. package/dist/homebridge-ui/server.js +132 -0
  14. package/dist/index.d.ts +6 -0
  15. package/dist/index.js +9 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/platform.d.ts +40 -0
  18. package/dist/platform.js +1473 -0
  19. package/dist/platform.js.map +1 -0
  20. package/dist/settings.d.ts +8 -0
  21. package/dist/settings.js +9 -0
  22. package/dist/settings.js.map +1 -0
  23. package/dist/utils/constants.d.ts +102 -0
  24. package/dist/utils/constants.js +102 -0
  25. package/dist/utils/constants.js.map +1 -0
  26. package/dist/utils/custom-chars.d.ts +11 -0
  27. package/dist/utils/custom-chars.js +60 -0
  28. package/dist/utils/custom-chars.js.map +1 -0
  29. package/dist/utils/functions.d.ts +3 -0
  30. package/dist/utils/functions.js +17 -0
  31. package/dist/utils/functions.js.map +1 -0
  32. package/dist/utils/lang-en.d.ts +79 -0
  33. package/dist/utils/lang-en.js +79 -0
  34. package/dist/utils/lang-en.js.map +1 -0
  35. package/package.json +15 -4
  36. package/lib/homebridge-ui/public/index.html +0 -333
  37. package/lib/homebridge-ui/server.js +0 -10
  38. package/lib/index.js +0 -8
  39. package/lib/platform.js +0 -1564
  40. package/lib/utils/constants.js +0 -102
  41. package/lib/utils/custom-chars.js +0 -51
  42. package/lib/utils/functions.js +0 -18
  43. package/lib/utils/lang-en.js +0 -78
package/CHANGELOG.md CHANGED
@@ -2,12 +2,53 @@
2
2
 
3
3
  All notable changes to `@homebridge-plugins/homebridge-ecovacs` will be documented in this file.
4
4
 
5
- ## v7.3.1 (Pending Release)
5
+ ## v8.0.0 (Pending Release)
6
+
7
+ ### ⚠️ Breaking Changes
8
+
9
+ - Refactor device representation to align with HomeKit vacuum behavior
10
+ - Existing configurations may require re-setup in HomeKit
11
+
12
+ ### Changes
13
+
14
+ - Add basic native HomeKit vacuum support for Ecovacs devices
15
+ - Expose vacuum functionality using HomeKit-compatible services
16
+ - Support core actions: start cleaning, stop, and return to dock
17
+ - Map Ecovacs device states to HomeKit characteristics
18
+ - Add basic battery status reporting
19
+
20
+ ### 🛠 Improvements
21
+
22
+ - Improve state synchronization between Ecovacs API and HomeKit
23
+ - Enhance overall stability when controlling devices from HomeKit
24
+
25
+ ### 🐛 Fixes
26
+
27
+ - Fix inconsistent state updates during cleaning cycles
28
+ - Fix issues with device responsiveness in certain scenarios
29
+
30
+ ### 📌 Notes
31
+
32
+ - This is an initial implementation of native HomeKit vacuum support
33
+ - Additional features and refinements will be added in future releases
34
+
35
+ ## v7.4.0 (2026-04-05)
6
36
 
7
37
  ### Changes
8
38
 
9
39
  - dependency updates
10
40
  - remove support for node v20
41
+ - fix: shallow copy default config/device objects
42
+ - fix: correct poll interval config access
43
+ - fix: remove extra brace in clean update log
44
+ - fix: move accessory null check before first use
45
+ - fix: clear cache after updateValue calls, not before
46
+ - fix: correct error message for predefined area failures
47
+ - fix: guard `refreshIntervals` in `pluginShutdown`
48
+ - fix: use logDebug for `GetChargeState` in `externalReadyUpdate`
49
+ - fix: use object over sparse array for virtual boundaries
50
+ - fix: remove unused `refreshTime` config
51
+ - fix: use `trim()` in `parseError` stack trace cleanup
11
52
 
12
53
  ## v7.3.0 (2026-02-16)
13
54
 
@@ -87,6 +128,7 @@ All notable changes to `@homebridge-plugins/homebridge-ecovacs` will be document
87
128
  ## v6.1.1 (2023-08-28)
88
129
 
89
130
  ⚠️ Note this will be the last version of the plugin to support Node 16.
131
+
90
132
  - Node 16 moves to 'end of life' on 2023-09-11 ([more info](https://nodejs.org/en/blog/announcements/nodejs16-eol))
91
133
  - This is in-line with the Homebridge guidelines on supporting node versions ([more info](https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js/))
92
134
  - If you are currently using Node 16, now is a good time to upgrade to Node 18 or 20 (see the link above for more info)
@@ -107,7 +149,9 @@ All notable changes to `@homebridge-plugins/homebridge-ecovacs` will be document
107
149
  - Bump `node` recommended versions to v16.20.2 or v18.17.1 or v20.5.1
108
150
 
109
151
  ## v6.0.5 (2023-04-05)
152
+
110
153
  ## v6.0.4 (2023-04-05)
154
+
111
155
  ## v6.0.3 (2023-04-05)
112
156
 
113
157
  ### Changed
@@ -384,13 +428,11 @@ _Unpublished_
384
428
  ### Added
385
429
 
386
430
  - **Configuration**
387
-
388
431
  - Plugin will now check for duplicate device ID entries in the config and ignore them
389
432
 
390
433
  ### Changed
391
434
 
392
435
  - ⚠️ **Platform Versions**
393
-
394
436
  - Recommended node version bumped to v14.17.4
395
437
  - Recommended homebridge version bumped to v1.3.4
396
438
 
@@ -4,7 +4,7 @@
4
4
  "singular": true,
5
5
  "strictValidation": true,
6
6
  "customUi": true,
7
- "customUiPath": "./lib/homebridge-ui",
7
+ "customUiPath": "./dist/homebridge-ui",
8
8
  "headerDisplay": "<p align=\"center\"><img width=\"60%\" src=\"https://user-images.githubusercontent.com/43026681/101321841-f0eb5280-385d-11eb-8dd4-f57113f6e078.png\"></p><p align=\"center\">For help and support please visit our <a href=\"https://github.com/homebridge-plugins/homebridge-ecovacs/wiki\">GitHub Wiki</a>. We hope you find this plugin useful!</p>",
9
9
  "schema": {
10
10
  "type": "object",
@@ -123,15 +123,21 @@
123
123
  "oneOf": [
124
124
  {
125
125
  "title": "Presetting",
126
- "enum": ["presetting"]
126
+ "enum": [
127
+ "presetting"
128
+ ]
127
129
  },
128
130
  {
129
131
  "title": "Yes",
130
- "enum": ["yes"]
132
+ "enum": [
133
+ "yes"
134
+ ]
131
135
  },
132
136
  {
133
137
  "title": "No",
134
- "enum": ["no"]
138
+ "enum": [
139
+ "no"
140
+ ]
135
141
  }
136
142
  ],
137
143
  "condition": {
@@ -149,8 +155,18 @@
149
155
  "title": "Area Type",
150
156
  "type": "string",
151
157
  "oneOf": [
152
- { "title": "Spot Area", "enum": ["spotArea"] },
153
- { "title": "Custom Area", "enum": ["customArea"] }
158
+ {
159
+ "title": "Spot Area",
160
+ "enum": [
161
+ "spotArea"
162
+ ]
163
+ },
164
+ {
165
+ "title": "Custom Area",
166
+ "enum": [
167
+ "customArea"
168
+ ]
169
+ }
154
170
  ]
155
171
  },
156
172
  "spotAreaIDs1": {
@@ -185,8 +201,18 @@
185
201
  "title": "Area Type",
186
202
  "type": "string",
187
203
  "oneOf": [
188
- { "title": "Spot Area", "enum": ["spotArea"] },
189
- { "title": "Custom Area", "enum": ["customArea"] }
204
+ {
205
+ "title": "Spot Area",
206
+ "enum": [
207
+ "spotArea"
208
+ ]
209
+ },
210
+ {
211
+ "title": "Custom Area",
212
+ "enum": [
213
+ "customArea"
214
+ ]
215
+ }
190
216
  ]
191
217
  },
192
218
  "spotAreaIDs2": {
@@ -221,8 +247,18 @@
221
247
  "title": "Area Type",
222
248
  "type": "string",
223
249
  "oneOf": [
224
- { "title": "Spot Area", "enum": ["spotArea"] },
225
- { "title": "Custom Area", "enum": ["customArea"] }
250
+ {
251
+ "title": "Spot Area",
252
+ "enum": [
253
+ "spotArea"
254
+ ]
255
+ },
256
+ {
257
+ "title": "Custom Area",
258
+ "enum": [
259
+ "customArea"
260
+ ]
261
+ }
226
262
  ]
227
263
  },
228
264
  "spotAreaIDs3": {
@@ -257,8 +293,18 @@
257
293
  "title": "Area Type",
258
294
  "type": "string",
259
295
  "oneOf": [
260
- { "title": "Spot Area", "enum": ["spotArea"] },
261
- { "title": "Custom Area", "enum": ["customArea"] }
296
+ {
297
+ "title": "Spot Area",
298
+ "enum": [
299
+ "spotArea"
300
+ ]
301
+ },
302
+ {
303
+ "title": "Custom Area",
304
+ "enum": [
305
+ "customArea"
306
+ ]
307
+ }
262
308
  ]
263
309
  },
264
310
  "spotAreaIDs4": {
@@ -293,8 +339,18 @@
293
339
  "title": "Area Type",
294
340
  "type": "string",
295
341
  "oneOf": [
296
- { "title": "Spot Area", "enum": ["spotArea"] },
297
- { "title": "Custom Area", "enum": ["customArea"] }
342
+ {
343
+ "title": "Spot Area",
344
+ "enum": [
345
+ "spotArea"
346
+ ]
347
+ },
348
+ {
349
+ "title": "Custom Area",
350
+ "enum": [
351
+ "customArea"
352
+ ]
353
+ }
298
354
  ]
299
355
  },
300
356
  "spotAreaIDs5": {
@@ -329,8 +385,18 @@
329
385
  "title": "Area Type",
330
386
  "type": "string",
331
387
  "oneOf": [
332
- { "title": "Spot Area", "enum": ["spotArea"] },
333
- { "title": "Custom Area", "enum": ["customArea"] }
388
+ {
389
+ "title": "Spot Area",
390
+ "enum": [
391
+ "spotArea"
392
+ ]
393
+ },
394
+ {
395
+ "title": "Custom Area",
396
+ "enum": [
397
+ "customArea"
398
+ ]
399
+ }
334
400
  ]
335
401
  },
336
402
  "spotAreaIDs6": {
@@ -365,8 +431,18 @@
365
431
  "title": "Area Type",
366
432
  "type": "string",
367
433
  "oneOf": [
368
- { "title": "Spot Area", "enum": ["spotArea"] },
369
- { "title": "Custom Area", "enum": ["customArea"] }
434
+ {
435
+ "title": "Spot Area",
436
+ "enum": [
437
+ "spotArea"
438
+ ]
439
+ },
440
+ {
441
+ "title": "Custom Area",
442
+ "enum": [
443
+ "customArea"
444
+ ]
445
+ }
370
446
  ]
371
447
  },
372
448
  "spotAreaIDs7": {
@@ -401,8 +477,18 @@
401
477
  "title": "Area Type",
402
478
  "type": "string",
403
479
  "oneOf": [
404
- { "title": "Spot Area", "enum": ["spotArea"] },
405
- { "title": "Custom Area", "enum": ["customArea"] }
480
+ {
481
+ "title": "Spot Area",
482
+ "enum": [
483
+ "spotArea"
484
+ ]
485
+ },
486
+ {
487
+ "title": "Custom Area",
488
+ "enum": [
489
+ "customArea"
490
+ ]
491
+ }
406
492
  ]
407
493
  },
408
494
  "spotAreaIDs8": {
@@ -437,8 +523,18 @@
437
523
  "title": "Area Type",
438
524
  "type": "string",
439
525
  "oneOf": [
440
- { "title": "Spot Area", "enum": ["spotArea"] },
441
- { "title": "Custom Area", "enum": ["customArea"] }
526
+ {
527
+ "title": "Spot Area",
528
+ "enum": [
529
+ "spotArea"
530
+ ]
531
+ },
532
+ {
533
+ "title": "Custom Area",
534
+ "enum": [
535
+ "customArea"
536
+ ]
537
+ }
442
538
  ]
443
539
  },
444
540
  "spotAreaIDs9": {
@@ -473,8 +569,18 @@
473
569
  "title": "Area Type",
474
570
  "type": "string",
475
571
  "oneOf": [
476
- { "title": "Spot Area", "enum": ["spotArea"] },
477
- { "title": "Custom Area", "enum": ["customArea"] }
572
+ {
573
+ "title": "Spot Area",
574
+ "enum": [
575
+ "spotArea"
576
+ ]
577
+ },
578
+ {
579
+ "title": "Custom Area",
580
+ "enum": [
581
+ "customArea"
582
+ ]
583
+ }
478
584
  ]
479
585
  },
480
586
  "spotAreaIDs10": {
@@ -509,8 +615,18 @@
509
615
  "title": "Area Type",
510
616
  "type": "string",
511
617
  "oneOf": [
512
- { "title": "Spot Area", "enum": ["spotArea"] },
513
- { "title": "Custom Area", "enum": ["customArea"] }
618
+ {
619
+ "title": "Spot Area",
620
+ "enum": [
621
+ "spotArea"
622
+ ]
623
+ },
624
+ {
625
+ "title": "Custom Area",
626
+ "enum": [
627
+ "customArea"
628
+ ]
629
+ }
514
630
  ]
515
631
  },
516
632
  "spotAreaIDs11": {
@@ -545,8 +661,18 @@
545
661
  "title": "Area Type",
546
662
  "type": "string",
547
663
  "oneOf": [
548
- { "title": "Spot Area", "enum": ["spotArea"] },
549
- { "title": "Custom Area", "enum": ["customArea"] }
664
+ {
665
+ "title": "Spot Area",
666
+ "enum": [
667
+ "spotArea"
668
+ ]
669
+ },
670
+ {
671
+ "title": "Custom Area",
672
+ "enum": [
673
+ "customArea"
674
+ ]
675
+ }
550
676
  ]
551
677
  },
552
678
  "spotAreaIDs12": {
@@ -581,8 +707,18 @@
581
707
  "title": "Area Type",
582
708
  "type": "string",
583
709
  "oneOf": [
584
- { "title": "Spot Area", "enum": ["spotArea"] },
585
- { "title": "Custom Area", "enum": ["customArea"] }
710
+ {
711
+ "title": "Spot Area",
712
+ "enum": [
713
+ "spotArea"
714
+ ]
715
+ },
716
+ {
717
+ "title": "Custom Area",
718
+ "enum": [
719
+ "customArea"
720
+ ]
721
+ }
586
722
  ]
587
723
  },
588
724
  "spotAreaIDs13": {
@@ -617,8 +753,18 @@
617
753
  "title": "Area Type",
618
754
  "type": "string",
619
755
  "oneOf": [
620
- { "title": "Spot Area", "enum": ["spotArea"] },
621
- { "title": "Custom Area", "enum": ["customArea"] }
756
+ {
757
+ "title": "Spot Area",
758
+ "enum": [
759
+ "spotArea"
760
+ ]
761
+ },
762
+ {
763
+ "title": "Custom Area",
764
+ "enum": [
765
+ "customArea"
766
+ ]
767
+ }
622
768
  ]
623
769
  },
624
770
  "spotAreaIDs14": {
@@ -653,8 +799,18 @@
653
799
  "title": "Area Type",
654
800
  "type": "string",
655
801
  "oneOf": [
656
- { "title": "Spot Area", "enum": ["spotArea"] },
657
- { "title": "Custom Area", "enum": ["customArea"] }
802
+ {
803
+ "title": "Spot Area",
804
+ "enum": [
805
+ "spotArea"
806
+ ]
807
+ },
808
+ {
809
+ "title": "Custom Area",
810
+ "enum": [
811
+ "customArea"
812
+ ]
813
+ }
658
814
  ]
659
815
  },
660
816
  "spotAreaIDs15": {
@@ -694,13 +850,18 @@
694
850
  {
695
851
  "type": "fieldset",
696
852
  "title": "Required Settings",
697
- "items": ["useYeedi", "countryCode", "username", "password"]
853
+ "items": [
854
+ "useYeedi",
855
+ "countryCode",
856
+ "username",
857
+ "password"
858
+ ]
698
859
  },
699
860
  {
700
861
  "type": "fieldset",
701
862
  "title": "Optional Settings",
702
863
  "expandable": true,
703
- "items": ["disableDeviceLogging", "refreshTime"]
864
+ "items": ["disableDeviceLogging"]
704
865
  },
705
866
  {
706
867
  "key": "devices",
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Base Matter Accessory Class
3
+ *
4
+ * Provides common functionality that all Matter devices use.
5
+ * Adapted from homebridge-plugins/homebridge-matter.
6
+ */
7
+ import type { API, ClusterStateMap, EndpointType, Logger, MatterAccessory } from 'homebridge';
8
+ export interface BaseMatterAccessoryConfig {
9
+ UUID: string;
10
+ displayName: string;
11
+ deviceType: EndpointType;
12
+ serialNumber: string;
13
+ manufacturer: string;
14
+ model: string;
15
+ firmwareRevision: string;
16
+ hardwareRevision: string;
17
+ context?: Record<string, unknown>;
18
+ clusters?: MatterAccessory['clusters'];
19
+ handlers?: MatterAccessory['handlers'];
20
+ parts?: MatterAccessory['parts'];
21
+ }
22
+ /**
23
+ * Base class for all Matter accessories.
24
+ * Implements the MatterAccessory interface and provides common methods.
25
+ */
26
+ export declare abstract class BaseMatterAccessory implements MatterAccessory {
27
+ readonly UUID: string;
28
+ readonly displayName: string;
29
+ readonly deviceType: EndpointType;
30
+ readonly serialNumber: string;
31
+ readonly manufacturer: string;
32
+ readonly model: string;
33
+ readonly firmwareRevision: string;
34
+ readonly hardwareRevision: string;
35
+ readonly context: Record<string, unknown>;
36
+ readonly clusters?: MatterAccessory['clusters'];
37
+ readonly handlers?: MatterAccessory['handlers'];
38
+ readonly parts?: MatterAccessory['parts'];
39
+ protected readonly api: API;
40
+ protected readonly log: Logger;
41
+ /** Set to true once the accessory has been registered with the Matter server. */
42
+ private _registered;
43
+ /** Call after api.matter.registerPlatformAccessories() resolves for this accessory. */
44
+ markRegistered(): void;
45
+ protected constructor(api: API, log: Logger, config: BaseMatterAccessoryConfig);
46
+ /**
47
+ * Update cluster state attributes.
48
+ */
49
+ protected updateState<K extends keyof ClusterStateMap>(cluster: K, attributes: Partial<ClusterStateMap[K]>, partId?: string): Promise<void>;
50
+ protected updateState(cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
51
+ /**
52
+ * Read current cluster state.
53
+ */
54
+ protected readState<K extends keyof ClusterStateMap>(cluster: K, partId?: string): Promise<Partial<ClusterStateMap[K]> | undefined>;
55
+ protected readState(cluster: string, partId?: string): Promise<Record<string, unknown> | undefined>;
56
+ protected logInfo(message: string, ...args: unknown[]): void;
57
+ protected logError(message: string, ...args: unknown[]): void;
58
+ protected logDebug(message: string, ...args: unknown[]): void;
59
+ protected logWarn(message: string, ...args: unknown[]): void;
60
+ /**
61
+ * Convert this instance to a plain MatterAccessory object for registration.
62
+ */
63
+ toAccessory(): MatterAccessory;
64
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Base Matter Accessory Class
3
+ *
4
+ * Provides common functionality that all Matter devices use.
5
+ * Adapted from homebridge-plugins/homebridge-matter.
6
+ */
7
+ /**
8
+ * Base class for all Matter accessories.
9
+ * Implements the MatterAccessory interface and provides common methods.
10
+ */
11
+ export class BaseMatterAccessory {
12
+ UUID;
13
+ displayName;
14
+ deviceType;
15
+ serialNumber;
16
+ manufacturer;
17
+ model;
18
+ firmwareRevision;
19
+ hardwareRevision;
20
+ context;
21
+ clusters;
22
+ handlers;
23
+ parts;
24
+ api;
25
+ log;
26
+ /** Set to true once the accessory has been registered with the Matter server. */
27
+ _registered = false;
28
+ /** Call after api.matter.registerPlatformAccessories() resolves for this accessory. */
29
+ markRegistered() {
30
+ this._registered = true;
31
+ }
32
+ constructor(api, log, config) {
33
+ this.api = api;
34
+ this.log = log;
35
+ this.UUID = config.UUID;
36
+ this.displayName = config.displayName;
37
+ this.deviceType = config.deviceType;
38
+ this.serialNumber = config.serialNumber;
39
+ this.manufacturer = config.manufacturer;
40
+ this.model = config.model;
41
+ this.firmwareRevision = config.firmwareRevision;
42
+ this.hardwareRevision = config.hardwareRevision;
43
+ this.clusters = config.clusters;
44
+ this.handlers = config.handlers;
45
+ this.parts = config.parts;
46
+ this.context = {
47
+ serialNumber: this.serialNumber,
48
+ manufacturer: this.manufacturer,
49
+ model: this.model,
50
+ firmwareRevision: this.firmwareRevision,
51
+ hardwareRevision: this.hardwareRevision,
52
+ ...config.context,
53
+ };
54
+ }
55
+ async updateState(cluster, attributes, partId) {
56
+ if (!this._registered) {
57
+ this.log.debug(`[${this.displayName}] Skipping ${cluster} state update — not yet registered with Matter server.`);
58
+ return;
59
+ }
60
+ await this.api.matter.updateAccessoryState(this.UUID, cluster, attributes, partId);
61
+ this.log.debug(`[${this.displayName}] Updated ${cluster} state:`, attributes);
62
+ }
63
+ async readState(cluster, partId) {
64
+ return await this.api.matter.getAccessoryState(this.UUID, cluster, partId);
65
+ }
66
+ logInfo(message, ...args) {
67
+ this.log.info(`[${this.displayName}] ${message}`, ...args);
68
+ }
69
+ logError(message, ...args) {
70
+ this.log.error(`[${this.displayName}] ${message}`, ...args);
71
+ }
72
+ logDebug(message, ...args) {
73
+ this.log.debug(`[${this.displayName}] ${message}`, ...args);
74
+ }
75
+ logWarn(message, ...args) {
76
+ this.log.warn(`[${this.displayName}] ${message}`, ...args);
77
+ }
78
+ /**
79
+ * Convert this instance to a plain MatterAccessory object for registration.
80
+ */
81
+ toAccessory() {
82
+ return {
83
+ UUID: this.UUID,
84
+ displayName: this.displayName,
85
+ deviceType: this.deviceType,
86
+ serialNumber: this.serialNumber,
87
+ manufacturer: this.manufacturer,
88
+ model: this.model,
89
+ firmwareRevision: this.firmwareRevision,
90
+ hardwareRevision: this.hardwareRevision,
91
+ context: this.context,
92
+ clusters: this.clusters,
93
+ handlers: this.handlers,
94
+ parts: this.parts,
95
+ };
96
+ }
97
+ }
98
+ //# sourceMappingURL=BaseMatterAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseMatterAccessory.js","sourceRoot":"","sources":["../../src/devices/BaseMatterAccessory.ts"],"names":[],"mappings":"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"}