@switchbot/homebridge-switchbot 5.0.0-beta.4 → 5.0.0-beta.41

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 (172) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +23 -3
  3. package/config.schema.json +722 -13684
  4. package/dist/devices-hap/device.d.ts +18 -8
  5. package/dist/devices-hap/device.d.ts.map +1 -1
  6. package/dist/devices-hap/device.js +121 -68
  7. package/dist/devices-hap/device.js.map +1 -1
  8. package/dist/devices-matter/BaseMatterAccessory.d.ts +27 -0
  9. package/dist/devices-matter/BaseMatterAccessory.d.ts.map +1 -1
  10. package/dist/devices-matter/BaseMatterAccessory.js +169 -5
  11. package/dist/devices-matter/BaseMatterAccessory.js.map +1 -1
  12. package/dist/devices-matter/ColorLightAccessory.d.ts.map +1 -1
  13. package/dist/devices-matter/ColorLightAccessory.js +12 -12
  14. package/dist/devices-matter/ColorLightAccessory.js.map +1 -1
  15. package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts.map +1 -1
  16. package/dist/devices-matter/ColorTemperatureLightAccessory.js +5 -7
  17. package/dist/devices-matter/ColorTemperatureLightAccessory.js.map +1 -1
  18. package/dist/devices-matter/DimmableLightAccessory.js +9 -9
  19. package/dist/devices-matter/DimmableLightAccessory.js.map +1 -1
  20. package/dist/devices-matter/ExtendedColorLightAccessory.d.ts.map +1 -1
  21. package/dist/devices-matter/ExtendedColorLightAccessory.js +14 -15
  22. package/dist/devices-matter/ExtendedColorLightAccessory.js.map +1 -1
  23. package/dist/devices-matter/OnOffLightAccessory.d.ts.map +1 -1
  24. package/dist/devices-matter/OnOffLightAccessory.js +8 -16
  25. package/dist/devices-matter/OnOffLightAccessory.js.map +1 -1
  26. package/dist/devices-matter/OnOffOutletAccessory.d.ts +2 -0
  27. package/dist/devices-matter/OnOffOutletAccessory.d.ts.map +1 -1
  28. package/dist/devices-matter/OnOffOutletAccessory.js +10 -7
  29. package/dist/devices-matter/OnOffOutletAccessory.js.map +1 -1
  30. package/dist/devices-matter/OnOffSwitchAccessory.js +2 -2
  31. package/dist/devices-matter/OnOffSwitchAccessory.js.map +1 -1
  32. package/dist/homebridge-ui/public/index.html +48 -1
  33. package/dist/homebridge-ui/server.js +66 -9
  34. package/dist/homebridge-ui/server.js.map +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +4 -7
  37. package/dist/index.js.map +1 -1
  38. package/dist/irdevice/irdevice.d.ts +11 -10
  39. package/dist/irdevice/irdevice.d.ts.map +1 -1
  40. package/dist/irdevice/irdevice.js +76 -35
  41. package/dist/irdevice/irdevice.js.map +1 -1
  42. package/dist/platform-hap.d.ts +21 -15
  43. package/dist/platform-hap.d.ts.map +1 -1
  44. package/dist/platform-hap.js +246 -147
  45. package/dist/platform-hap.js.map +1 -1
  46. package/dist/platform-matter.d.ts +88 -6
  47. package/dist/platform-matter.d.ts.map +1 -1
  48. package/dist/platform-matter.js +1726 -243
  49. package/dist/platform-matter.js.map +1 -1
  50. package/dist/settings.d.ts +41 -6
  51. package/dist/settings.d.ts.map +1 -1
  52. package/dist/settings.js.map +1 -1
  53. package/dist/test/apiRequestTracker.test.d.ts +2 -0
  54. package/dist/test/apiRequestTracker.test.d.ts.map +1 -0
  55. package/dist/test/apiRequestTracker.test.js +392 -0
  56. package/dist/test/apiRequestTracker.test.js.map +1 -0
  57. package/dist/test/hap/platform-hap.logging.test.d.ts +2 -0
  58. package/dist/test/hap/platform-hap.logging.test.d.ts.map +1 -0
  59. package/dist/test/hap/platform-hap.logging.test.js +33 -0
  60. package/dist/test/hap/platform-hap.logging.test.js.map +1 -0
  61. package/dist/test/hap/platform-hap.test.d.ts +2 -0
  62. package/dist/test/hap/platform-hap.test.d.ts.map +1 -0
  63. package/dist/test/hap/platform-hap.test.js +62 -0
  64. package/dist/test/hap/platform-hap.test.js.map +1 -0
  65. package/dist/test/helpers/platform-fixtures.d.ts +9 -0
  66. package/dist/test/helpers/platform-fixtures.d.ts.map +1 -0
  67. package/dist/test/helpers/platform-fixtures.js +30 -0
  68. package/dist/test/helpers/platform-fixtures.js.map +1 -0
  69. package/dist/test/homebridge-ui/server.test.d.ts +2 -0
  70. package/dist/test/homebridge-ui/server.test.d.ts.map +1 -0
  71. package/dist/test/homebridge-ui/server.test.js +445 -0
  72. package/dist/test/homebridge-ui/server.test.js.map +1 -0
  73. package/dist/{index.test.d.ts.map → test/index.test.d.ts.map} +1 -1
  74. package/dist/test/index.test.js +19 -0
  75. package/dist/test/index.test.js.map +1 -0
  76. package/dist/test/matter/devices-matter/baseMatterAccessory.test.d.ts +2 -0
  77. package/dist/test/matter/devices-matter/baseMatterAccessory.test.d.ts.map +1 -0
  78. package/dist/test/matter/devices-matter/baseMatterAccessory.test.js +71 -0
  79. package/dist/test/matter/devices-matter/baseMatterAccessory.test.js.map +1 -0
  80. package/dist/test/matter/platform-matter.additional.test.d.ts +2 -0
  81. package/dist/test/matter/platform-matter.additional.test.d.ts.map +1 -0
  82. package/dist/test/matter/platform-matter.additional.test.js +35 -0
  83. package/dist/test/matter/platform-matter.additional.test.js.map +1 -0
  84. package/dist/test/matter/platform-matter.bleparse.test.d.ts +2 -0
  85. package/dist/test/matter/platform-matter.bleparse.test.d.ts.map +1 -0
  86. package/dist/test/matter/platform-matter.bleparse.test.js +43 -0
  87. package/dist/test/matter/platform-matter.bleparse.test.js.map +1 -0
  88. package/dist/test/matter/platform-matter.cleanup.test.d.ts +2 -0
  89. package/dist/test/matter/platform-matter.cleanup.test.d.ts.map +1 -0
  90. package/dist/test/matter/platform-matter.cleanup.test.js +70 -0
  91. package/dist/test/matter/platform-matter.cleanup.test.js.map +1 -0
  92. package/dist/test/matter/platform-matter.keepstale.test.d.ts +2 -0
  93. package/dist/test/matter/platform-matter.keepstale.test.d.ts.map +1 -0
  94. package/dist/test/matter/platform-matter.keepstale.test.js +27 -0
  95. package/dist/test/matter/platform-matter.keepstale.test.js.map +1 -0
  96. package/dist/test/matter/platform-matter.logging.test.d.ts +2 -0
  97. package/dist/test/matter/platform-matter.logging.test.d.ts.map +1 -0
  98. package/dist/test/matter/platform-matter.logging.test.js +29 -0
  99. package/dist/test/matter/platform-matter.logging.test.js.map +1 -0
  100. package/dist/test/matter/platform-matter.mapping.test.d.ts +2 -0
  101. package/dist/test/matter/platform-matter.mapping.test.d.ts.map +1 -0
  102. package/dist/test/matter/platform-matter.mapping.test.js +43 -0
  103. package/dist/test/matter/platform-matter.mapping.test.js.map +1 -0
  104. package/dist/test/matter/platform-matter.openapi-mapping.test.d.ts +2 -0
  105. package/dist/test/matter/platform-matter.openapi-mapping.test.d.ts.map +1 -0
  106. package/dist/test/matter/platform-matter.openapi-mapping.test.js +84 -0
  107. package/dist/test/matter/platform-matter.openapi-mapping.test.js.map +1 -0
  108. package/dist/test/matter/platform-matter.test.d.ts +2 -0
  109. package/dist/test/matter/platform-matter.test.d.ts.map +1 -0
  110. package/dist/test/matter/platform-matter.test.js +117 -0
  111. package/dist/test/matter/platform-matter.test.js.map +1 -0
  112. package/dist/test/matter/platform-matter.unregister.test.d.ts +2 -0
  113. package/dist/test/matter/platform-matter.unregister.test.d.ts.map +1 -0
  114. package/dist/test/matter/platform-matter.unregister.test.js +30 -0
  115. package/dist/test/matter/platform-matter.unregister.test.js.map +1 -0
  116. package/dist/test/utils.test.d.ts +2 -0
  117. package/dist/test/utils.test.d.ts.map +1 -0
  118. package/dist/test/utils.test.js +95 -0
  119. package/dist/test/utils.test.js.map +1 -0
  120. package/dist/test/verifyconfig.test.d.ts.map +1 -0
  121. package/dist/{verifyconfig.test.js → test/verifyconfig.test.js} +2 -2
  122. package/dist/test/verifyconfig.test.js.map +1 -0
  123. package/dist/utils.d.ts +196 -3
  124. package/dist/utils.d.ts.map +1 -1
  125. package/dist/utils.js +656 -30
  126. package/dist/utils.js.map +1 -1
  127. package/docs/assets/main.js +2 -2
  128. package/docs/index.html +20 -2
  129. package/docs/variables/default.html +1 -1
  130. package/package.json +14 -14
  131. package/src/devices-hap/device.ts +129 -69
  132. package/src/devices-matter/BaseMatterAccessory.ts +176 -5
  133. package/src/devices-matter/ColorLightAccessory.ts +12 -12
  134. package/src/devices-matter/ColorTemperatureLightAccessory.ts +5 -7
  135. package/src/devices-matter/DimmableLightAccessory.ts +9 -9
  136. package/src/devices-matter/ExtendedColorLightAccessory.ts +14 -15
  137. package/src/devices-matter/OnOffLightAccessory.ts +8 -16
  138. package/src/devices-matter/OnOffOutletAccessory.ts +12 -7
  139. package/src/devices-matter/OnOffSwitchAccessory.ts +2 -2
  140. package/src/homebridge-ui/public/index.html +48 -1
  141. package/src/homebridge-ui/server.ts +69 -9
  142. package/src/index.ts +4 -7
  143. package/src/irdevice/irdevice.ts +74 -35
  144. package/src/platform-hap.ts +270 -160
  145. package/src/platform-matter.ts +1768 -240
  146. package/src/settings.ts +45 -2
  147. package/src/test/apiRequestTracker.test.ts +417 -0
  148. package/src/test/hap/platform-hap.logging.test.ts +36 -0
  149. package/src/test/hap/platform-hap.test.ts +70 -0
  150. package/src/test/helpers/platform-fixtures.ts +33 -0
  151. package/src/test/homebridge-ui/server.test.ts +486 -0
  152. package/src/test/index.test.ts +24 -0
  153. package/src/test/matter/devices-matter/baseMatterAccessory.test.ts +88 -0
  154. package/src/test/matter/platform-matter.additional.test.ts +44 -0
  155. package/src/test/matter/platform-matter.bleparse.test.ts +47 -0
  156. package/src/test/matter/platform-matter.cleanup.test.ts +86 -0
  157. package/src/test/matter/platform-matter.keepstale.test.ts +37 -0
  158. package/src/test/matter/platform-matter.logging.test.ts +33 -0
  159. package/src/test/matter/platform-matter.mapping.test.ts +57 -0
  160. package/src/test/matter/platform-matter.openapi-mapping.test.ts +109 -0
  161. package/src/test/matter/platform-matter.test.ts +144 -0
  162. package/src/test/matter/platform-matter.unregister.test.ts +39 -0
  163. package/src/test/utils.test.ts +96 -0
  164. package/src/{verifyconfig.test.ts → test/verifyconfig.test.ts} +12 -11
  165. package/src/utils.ts +714 -32
  166. package/dist/index.test.js +0 -14
  167. package/dist/index.test.js.map +0 -1
  168. package/dist/verifyconfig.test.d.ts.map +0 -1
  169. package/dist/verifyconfig.test.js.map +0 -1
  170. package/src/index.test.ts +0 -19
  171. /package/dist/{index.test.d.ts → test/index.test.d.ts} +0 -0
  172. /package/dist/{verifyconfig.test.d.ts → test/verifyconfig.test.d.ts} +0 -0
@@ -1,12 +1,6 @@
1
1
  import type { API, DynamicPlatformPlugin, Logging, SerializedMatterAccessory } from 'homebridge';
2
2
  import type { bodyChange, device } from 'node-switchbot';
3
3
  import type { SwitchBotPlatformConfig } from './settings.js';
4
- /**
5
- * MatterPlatform
6
- * Demonstrates all available Matter device types in Homebridge
7
- *
8
- * Organized by official Matter Specification v1.4.1 categories
9
- */
10
4
  export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
11
5
  readonly log: Logging;
12
6
  readonly config: SwitchBotPlatformConfig;
@@ -15,8 +9,57 @@ export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
15
9
  private switchBotAPI?;
16
10
  private switchBotBLE?;
17
11
  private discoveredDevices;
12
+ private discoveredIRDevices;
13
+ private accessoryInstances;
14
+ private refreshTimers;
15
+ private platformRefreshTimer?;
16
+ private deviceStatusCache;
17
+ private backoffCooldowns;
18
+ private backoffFilePath?;
19
+ private perDeviceRefreshSet;
18
20
  private bleEventHandler;
21
+ private mqttClient;
22
+ private webhookEventListener;
23
+ private webhookEventHandler;
24
+ private platformLogging?;
25
+ private apiTracker?;
26
+ infoLog: (...args: any[]) => void;
27
+ successLog: (...args: any[]) => void;
28
+ debugSuccessLog: (...args: any[]) => void;
29
+ warnLog: (...args: any[]) => void;
30
+ debugWarnLog: (...args: any[]) => void;
31
+ errorLog: (...args: any[]) => void;
32
+ debugErrorLog: (...args: any[]) => void;
33
+ debugLog: (...args: any[]) => void;
34
+ loggingIsDebug: () => Promise<boolean>;
35
+ enablingPlatformLogging: () => Promise<boolean>;
19
36
  constructor(log: Logging, config: SwitchBotPlatformConfig, api: API);
37
+ /**
38
+ * Normalize a deviceId for matching (uppercase alphanumerics only)
39
+ * @deprecated Use shared normalizeDeviceId from utils.js instead
40
+ */
41
+ private normalizeDeviceId;
42
+ /** Determine the platform-level batch interval in seconds */
43
+ private getPlatformBatchInterval;
44
+ /**
45
+ * Clear per-device resources: refresh timers, accessory instance registry, BLE handlers
46
+ */
47
+ private clearDeviceResources;
48
+ /**
49
+ * Merge discovered devices with per-device overrides from `config.options.devices`.
50
+ * Also applies device-type templates when applyToAllDevicesOfType is set.
51
+ */
52
+ private mergeDiscoveredDevices;
53
+ /**
54
+ * Merge discovered IR devices with per-device overrides from `config.options.irdevices`.
55
+ * Also applies device-type templates when applyToAllDevicesOfType is set.
56
+ */
57
+ private mergeDiscoveredIRDevices;
58
+ /**
59
+ * Select effective connection type for a device: prefer explicit device.connectionType,
60
+ * otherwise prefer BLE when platform BLE is enabled and device provides a BLE model/id.
61
+ */
62
+ private chooseConnectionType;
20
63
  /**
21
64
  * Map a SwitchBot device object to a MatterAccessory using the device-specific
22
65
  * Matter accessory classes in `src/devices-matter`.
@@ -26,6 +69,16 @@ export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
26
69
  * Discover devices via SwitchBot OpenAPI and cache them for later use
27
70
  */
28
71
  private discoverDevices;
72
+ /**
73
+ * Setup MQTT connection (if configured) and route incoming webhook messages
74
+ * to registered webhook handlers. Mirrors behaviour in platform-hap.
75
+ */
76
+ setupMqtt(): Promise<void>;
77
+ /**
78
+ * Setup OpenAPI webhook (if webhookURL configured) and forward incoming
79
+ * webhook events to MQTT (if configured) and local handlers.
80
+ */
81
+ setupwebhook(): Promise<void>;
29
82
  /**
30
83
  * Retry wrapper for control commands using SwitchBot OpenAPI
31
84
  */
@@ -33,6 +86,17 @@ export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
33
86
  response: any;
34
87
  statusCode: number;
35
88
  }>;
89
+ /**
90
+ * Parse BLE advertisement/serviceData into normalized fields for a given device.
91
+ * Returns null when serviceData is falsy or parsing fails.
92
+ */
93
+ private parseAdvertisementForDevice;
94
+ /**
95
+ * Central helper to apply a SwitchBot status object to a Matter accessory.
96
+ * Tries to call accessory instance update helpers when available, otherwise
97
+ * falls back to calling api.matter.updateAccessoryState directly.
98
+ */
99
+ private applyStatusToAccessory;
36
100
  /**
37
101
  * Required for DynamicPlatformPlugin
38
102
  * Called when homebridge restores cached accessories from disk at startup
@@ -49,6 +113,11 @@ export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
49
113
  * Register all Matter accessories
50
114
  */
51
115
  private registerMatterAccessories;
116
+ /**
117
+ * Restore webhook handlers for cached Matter accessories
118
+ * This ensures webhook functionality continues to work even when device discovery fails
119
+ */
120
+ private restoreCachedMatterAccessoryWebhooks;
52
121
  /**
53
122
  * Remove accessories that are disabled in config
54
123
  */
@@ -92,5 +161,18 @@ export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
92
161
  * like managing multiple logical components within a single device.
93
162
  */
94
163
  private registerCustomDevices;
164
+ /**
165
+ * Start platform-level refresh timer to batch all device status updates
166
+ */
167
+ private startPlatformRefreshTimer;
168
+ /**
169
+ * Batch refresh all devices - still makes individual API calls but batches them together
170
+ * Note: SwitchBot API doesn't support true batch status calls, but we can parallelize them
171
+ */
172
+ private batchRefreshAllDevices;
173
+ /** Refresh a single device with retry and backoff; returns status object if successful */
174
+ private refreshSingleDeviceWithRetry;
175
+ /** Simple concurrency limiter for an array of items */
176
+ private runWithConcurrency;
95
177
  }
96
178
  //# sourceMappingURL=platform-matter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-matter.d.ts","sourceRoot":"","sources":["../src/platform-matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,OAAO,EAEP,yBAAyB,EAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAExD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AA8B5D;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,qBAAqB;aAgBjD,GAAG,EAAE,OAAO;aACZ,MAAM,EAAE,uBAAuB;aAC/B,GAAG,EAAE,GAAG;IAZ1B,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAY;IAErF,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC,OAAO,CAAC,iBAAiB,CAAe;IAExC,OAAO,CAAC,eAAe,CAA8C;gBAGnD,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,uBAAuB,EAC/B,GAAG,EAAE,GAAG;IA4F1B;;;OAGG;YACW,yBAAyB;IA4TvC;;OAEG;YACW,eAAe;IAwB7B;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,SAAI,EAAE,mBAAmB,SAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BzJ;;;OAGG;IACH,kBAAkB;IAMlB;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,yBAAyB;IAK7D;;OAEG;YACW,yBAAyB;IAgDvC;;OAEG;YACW,yBAAyB;IAqCvC;;OAEG;YACW,wBAAwB;IA8CtC;;OAEG;YACW,0BAA0B;IAsBxC;;OAEG;YACW,wBAAwB;IAsBtC;;OAEG;YACW,uBAAuB;IA0DrC;;OAEG;YACW,uBAAuB;IAkCrC;;OAEG;YACW,oBAAoB;IA4BlC;;;;;OAKG;YACW,wBAAwB;IAsBtC;;;;;;OAMG;YACW,qBAAqB;CAqBpC"}
1
+ {"version":3,"file":"platform-matter.d.ts","sourceRoot":"","sources":["../src/platform-matter.ts"],"names":[],"mappings":"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"}