homebridge 2.0.0-beta.44 → 2.0.0-beta.46

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 (321) hide show
  1. package/dist/api.d.ts +3 -365
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +13 -85
  4. package/dist/api.js.map +1 -1
  5. package/dist/bridgeService.d.ts +0 -25
  6. package/dist/bridgeService.d.ts.map +1 -1
  7. package/dist/bridgeService.js +32 -85
  8. package/dist/bridgeService.js.map +1 -1
  9. package/dist/childBridgeFork.d.ts +12 -15
  10. package/dist/childBridgeFork.d.ts.map +1 -1
  11. package/dist/childBridgeFork.js +152 -83
  12. package/dist/childBridgeFork.js.map +1 -1
  13. package/dist/childBridgeService.d.ts +21 -105
  14. package/dist/childBridgeService.d.ts.map +1 -1
  15. package/dist/childBridgeService.js +57 -134
  16. package/dist/childBridgeService.js.map +1 -1
  17. package/dist/cli.js +0 -2
  18. package/dist/cli.js.map +1 -1
  19. package/dist/externalPortService.d.ts +0 -21
  20. package/dist/externalPortService.d.ts.map +1 -1
  21. package/dist/externalPortService.js +0 -28
  22. package/dist/externalPortService.js.map +1 -1
  23. package/dist/index.d.ts +0 -112
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +0 -44
  26. package/dist/index.js.map +1 -1
  27. package/dist/ipcService.d.ts +23 -15
  28. package/dist/ipcService.d.ts.map +1 -1
  29. package/dist/ipcService.js +6 -12
  30. package/dist/ipcService.js.map +1 -1
  31. package/dist/logger.d.ts +0 -46
  32. package/dist/logger.d.ts.map +1 -1
  33. package/dist/logger.js +13 -57
  34. package/dist/logger.js.map +1 -1
  35. package/dist/matter/BaseMatterManager.d.ts +19 -0
  36. package/dist/matter/BaseMatterManager.d.ts.map +1 -0
  37. package/dist/matter/BaseMatterManager.js +170 -0
  38. package/dist/matter/BaseMatterManager.js.map +1 -0
  39. package/dist/matter/ChildBridgeMatterManager.d.ts +7 -69
  40. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
  41. package/dist/matter/ChildBridgeMatterManager.js +51 -234
  42. package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
  43. package/dist/matter/ClusterCommandMapper.d.ts +5 -0
  44. package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
  45. package/dist/matter/ClusterCommandMapper.js +203 -0
  46. package/dist/matter/ClusterCommandMapper.js.map +1 -0
  47. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +0 -27
  48. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -1
  49. package/dist/matter/ExternalMatterAccessoryPublisher.js +3 -28
  50. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
  51. package/dist/matter/MatterAPIImpl.d.ts +0 -68
  52. package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
  53. package/dist/matter/MatterAPIImpl.js +7 -107
  54. package/dist/matter/MatterAPIImpl.js.map +1 -1
  55. package/dist/matter/MatterBridgeManager.d.ts +9 -60
  56. package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
  57. package/dist/matter/MatterBridgeManager.js +140 -216
  58. package/dist/matter/MatterBridgeManager.js.map +1 -1
  59. package/dist/matter/MatterConfigCollector.d.ts +1 -20
  60. package/dist/matter/MatterConfigCollector.d.ts.map +1 -1
  61. package/dist/matter/MatterConfigCollector.js +15 -28
  62. package/dist/matter/MatterConfigCollector.js.map +1 -1
  63. package/dist/matter/accessoryCache.d.ts +0 -48
  64. package/dist/matter/accessoryCache.d.ts.map +1 -1
  65. package/dist/matter/accessoryCache.js +1 -60
  66. package/dist/matter/accessoryCache.js.map +1 -1
  67. package/dist/matter/behaviors/AirQualityBehavior.d.ts +0 -42
  68. package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -1
  69. package/dist/matter/behaviors/AirQualityBehavior.js +0 -44
  70. package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -1
  71. package/dist/matter/behaviors/BehaviorRegistry.d.ts +4 -42
  72. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -1
  73. package/dist/matter/behaviors/BehaviorRegistry.js +12 -42
  74. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -1
  75. package/dist/matter/behaviors/ColorControlBehavior.d.ts +0 -49
  76. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -1
  77. package/dist/matter/behaviors/ColorControlBehavior.js +0 -90
  78. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -1
  79. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +0 -91
  80. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -1
  81. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +0 -96
  82. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -1
  83. package/dist/matter/behaviors/DoorLockBehavior.d.ts +0 -11
  84. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
  85. package/dist/matter/behaviors/DoorLockBehavior.js +0 -25
  86. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
  87. package/dist/matter/behaviors/FanControlBehavior.d.ts +0 -11
  88. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -1
  89. package/dist/matter/behaviors/FanControlBehavior.js +0 -25
  90. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -1
  91. package/dist/matter/behaviors/IdentifyBehavior.d.ts +0 -11
  92. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -1
  93. package/dist/matter/behaviors/IdentifyBehavior.js +0 -17
  94. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -1
  95. package/dist/matter/behaviors/LevelControlBehavior.d.ts +0 -20
  96. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -1
  97. package/dist/matter/behaviors/LevelControlBehavior.js +0 -52
  98. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -1
  99. package/dist/matter/behaviors/OnOffBehavior.d.ts +0 -17
  100. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -1
  101. package/dist/matter/behaviors/OnOffBehavior.js +0 -38
  102. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -1
  103. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +0 -11
  104. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -1
  105. package/dist/matter/behaviors/RvcCleanModeBehavior.js +0 -17
  106. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -1
  107. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +0 -11
  108. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -1
  109. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +0 -29
  110. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -1
  111. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +0 -11
  112. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -1
  113. package/dist/matter/behaviors/RvcRunModeBehavior.js +0 -17
  114. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -1
  115. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +0 -11
  116. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -1
  117. package/dist/matter/behaviors/ServiceAreaBehavior.js +0 -23
  118. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -1
  119. package/dist/matter/behaviors/ThermostatBehavior.d.ts +0 -11
  120. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -1
  121. package/dist/matter/behaviors/ThermostatBehavior.js +0 -39
  122. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -1
  123. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +0 -17
  124. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -1
  125. package/dist/matter/behaviors/WindowCoveringBehavior.js +0 -56
  126. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -1
  127. package/dist/matter/behaviors/index.d.ts +0 -5
  128. package/dist/matter/behaviors/index.d.ts.map +1 -1
  129. package/dist/matter/behaviors/index.js +0 -5
  130. package/dist/matter/behaviors/index.js.map +1 -1
  131. package/dist/matter/configValidator.d.ts +0 -55
  132. package/dist/matter/configValidator.d.ts.map +1 -1
  133. package/dist/matter/configValidator.js +1 -68
  134. package/dist/matter/configValidator.js.map +1 -1
  135. package/dist/matter/errorHandler.d.ts +0 -22
  136. package/dist/matter/errorHandler.d.ts.map +1 -1
  137. package/dist/matter/errorHandler.js +0 -32
  138. package/dist/matter/errorHandler.js.map +1 -1
  139. package/dist/matter/errors.d.ts +0 -132
  140. package/dist/matter/errors.d.ts.map +1 -1
  141. package/dist/matter/errors.js +0 -132
  142. package/dist/matter/errors.js.map +1 -1
  143. package/dist/matter/index.d.ts +0 -30
  144. package/dist/matter/index.d.ts.map +1 -1
  145. package/dist/matter/index.js +0 -13
  146. package/dist/matter/index.js.map +1 -1
  147. package/dist/matter/logFormatter.d.ts +0 -17
  148. package/dist/matter/logFormatter.d.ts.map +1 -1
  149. package/dist/matter/logFormatter.js +5 -63
  150. package/dist/matter/logFormatter.js.map +1 -1
  151. package/dist/matter/server.d.ts +12 -236
  152. package/dist/matter/server.d.ts.map +1 -1
  153. package/dist/matter/server.js +177 -488
  154. package/dist/matter/server.js.map +1 -1
  155. package/dist/matter/serverHelpers.d.ts +0 -56
  156. package/dist/matter/serverHelpers.d.ts.map +1 -1
  157. package/dist/matter/serverHelpers.js +1 -66
  158. package/dist/matter/serverHelpers.js.map +1 -1
  159. package/dist/matter/sharedTypes.d.ts +0 -83
  160. package/dist/matter/sharedTypes.d.ts.map +1 -1
  161. package/dist/matter/sharedTypes.js +0 -26
  162. package/dist/matter/sharedTypes.js.map +1 -1
  163. package/dist/matter/storage.d.ts +0 -90
  164. package/dist/matter/storage.d.ts.map +1 -1
  165. package/dist/matter/storage.js +2 -130
  166. package/dist/matter/storage.js.map +1 -1
  167. package/dist/matter/typeHelpers.d.ts +0 -30
  168. package/dist/matter/typeHelpers.d.ts.map +1 -1
  169. package/dist/matter/typeHelpers.js +0 -24
  170. package/dist/matter/typeHelpers.js.map +1 -1
  171. package/dist/matter/types.d.ts +0 -273
  172. package/dist/matter/types.d.ts.map +1 -1
  173. package/dist/matter/types.js +0 -83
  174. package/dist/matter/types.js.map +1 -1
  175. package/dist/platformAccessory.d.ts +0 -15
  176. package/dist/platformAccessory.d.ts.map +1 -1
  177. package/dist/platformAccessory.js +6 -32
  178. package/dist/platformAccessory.js.map +1 -1
  179. package/dist/plugin.d.ts +0 -3
  180. package/dist/plugin.d.ts.map +1 -1
  181. package/dist/plugin.js +6 -29
  182. package/dist/plugin.js.map +1 -1
  183. package/dist/pluginManager.d.ts +0 -22
  184. package/dist/pluginManager.d.ts.map +1 -1
  185. package/dist/pluginManager.js +18 -41
  186. package/dist/pluginManager.js.map +1 -1
  187. package/dist/server.d.ts +9 -29
  188. package/dist/server.d.ts.map +1 -1
  189. package/dist/server.js +308 -157
  190. package/dist/server.js.map +1 -1
  191. package/dist/user.d.ts +0 -3
  192. package/dist/user.d.ts.map +1 -1
  193. package/dist/user.js +2 -5
  194. package/dist/user.js.map +1 -1
  195. package/dist/util/mac.js +0 -1
  196. package/dist/util/mac.js.map +1 -1
  197. package/package.json +4 -4
  198. package/dist/api.spec.d.ts +0 -2
  199. package/dist/api.spec.d.ts.map +0 -1
  200. package/dist/api.spec.js +0 -413
  201. package/dist/api.spec.js.map +0 -1
  202. package/dist/logger.spec.d.ts +0 -2
  203. package/dist/logger.spec.d.ts.map +0 -1
  204. package/dist/logger.spec.js +0 -95
  205. package/dist/logger.spec.js.map +0 -1
  206. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +0 -2
  207. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +0 -1
  208. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +0 -293
  209. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +0 -1
  210. package/dist/matter/accessoryCache.spec.d.ts +0 -2
  211. package/dist/matter/accessoryCache.spec.d.ts.map +0 -1
  212. package/dist/matter/accessoryCache.spec.js +0 -452
  213. package/dist/matter/accessoryCache.spec.js.map +0 -1
  214. package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts +0 -5
  215. package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts.map +0 -1
  216. package/dist/matter/behaviors/AirQualityBehavior.spec.js +0 -46
  217. package/dist/matter/behaviors/AirQualityBehavior.spec.js.map +0 -1
  218. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +0 -2
  219. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +0 -1
  220. package/dist/matter/behaviors/BehaviorRegistry.spec.js +0 -307
  221. package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +0 -1
  222. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +0 -2
  223. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +0 -1
  224. package/dist/matter/behaviors/ColorControlBehavior.spec.js +0 -29
  225. package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +0 -1
  226. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts +0 -5
  227. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts.map +0 -1
  228. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js +0 -95
  229. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js.map +0 -1
  230. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +0 -2
  231. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +0 -1
  232. package/dist/matter/behaviors/DoorLockBehavior.spec.js +0 -120
  233. package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +0 -1
  234. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +0 -2
  235. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +0 -1
  236. package/dist/matter/behaviors/FanControlBehavior.spec.js +0 -23
  237. package/dist/matter/behaviors/FanControlBehavior.spec.js.map +0 -1
  238. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +0 -2
  239. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +0 -1
  240. package/dist/matter/behaviors/IdentifyBehavior.spec.js +0 -64
  241. package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +0 -1
  242. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +0 -2
  243. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +0 -1
  244. package/dist/matter/behaviors/LevelControlBehavior.spec.js +0 -145
  245. package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +0 -1
  246. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +0 -2
  247. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +0 -1
  248. package/dist/matter/behaviors/OnOffBehavior.spec.js +0 -128
  249. package/dist/matter/behaviors/OnOffBehavior.spec.js.map +0 -1
  250. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +0 -2
  251. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +0 -1
  252. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +0 -57
  253. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +0 -1
  254. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +0 -2
  255. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +0 -1
  256. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +0 -55
  257. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +0 -1
  258. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +0 -2
  259. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +0 -1
  260. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +0 -57
  261. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +0 -1
  262. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +0 -2
  263. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +0 -1
  264. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +0 -53
  265. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +0 -1
  266. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +0 -2
  267. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +0 -1
  268. package/dist/matter/behaviors/ThermostatBehavior.spec.js +0 -23
  269. package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +0 -1
  270. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +0 -2
  271. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +0 -1
  272. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +0 -27
  273. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +0 -1
  274. package/dist/matter/configValidator.spec.d.ts +0 -2
  275. package/dist/matter/configValidator.spec.d.ts.map +0 -1
  276. package/dist/matter/configValidator.spec.js +0 -390
  277. package/dist/matter/configValidator.spec.js.map +0 -1
  278. package/dist/matter/errorHandler.spec.d.ts +0 -2
  279. package/dist/matter/errorHandler.spec.d.ts.map +0 -1
  280. package/dist/matter/errorHandler.spec.js +0 -159
  281. package/dist/matter/errorHandler.spec.js.map +0 -1
  282. package/dist/matter/logFormatter.spec.d.ts +0 -2
  283. package/dist/matter/logFormatter.spec.d.ts.map +0 -1
  284. package/dist/matter/logFormatter.spec.js +0 -252
  285. package/dist/matter/logFormatter.spec.js.map +0 -1
  286. package/dist/matter/serverHelpers.spec.d.ts +0 -2
  287. package/dist/matter/serverHelpers.spec.d.ts.map +0 -1
  288. package/dist/matter/serverHelpers.spec.js +0 -527
  289. package/dist/matter/serverHelpers.spec.js.map +0 -1
  290. package/dist/matter/storage.spec.d.ts +0 -2
  291. package/dist/matter/storage.spec.d.ts.map +0 -1
  292. package/dist/matter/storage.spec.js +0 -570
  293. package/dist/matter/storage.spec.js.map +0 -1
  294. package/dist/matter/typeHelpers.spec.d.ts +0 -2
  295. package/dist/matter/typeHelpers.spec.d.ts.map +0 -1
  296. package/dist/matter/typeHelpers.spec.js +0 -127
  297. package/dist/matter/typeHelpers.spec.js.map +0 -1
  298. package/dist/platformAccessory.spec.d.ts +0 -2
  299. package/dist/platformAccessory.spec.d.ts.map +0 -1
  300. package/dist/platformAccessory.spec.js +0 -126
  301. package/dist/platformAccessory.spec.js.map +0 -1
  302. package/dist/pluginManager.spec.d.ts +0 -2
  303. package/dist/pluginManager.spec.d.ts.map +0 -1
  304. package/dist/pluginManager.spec.js +0 -43
  305. package/dist/pluginManager.spec.js.map +0 -1
  306. package/dist/server.spec.d.ts +0 -2
  307. package/dist/server.spec.d.ts.map +0 -1
  308. package/dist/server.spec.js +0 -57
  309. package/dist/server.spec.js.map +0 -1
  310. package/dist/user.spec.d.ts +0 -2
  311. package/dist/user.spec.d.ts.map +0 -1
  312. package/dist/user.spec.js +0 -31
  313. package/dist/user.spec.js.map +0 -1
  314. package/dist/util/mac.spec.d.ts +0 -2
  315. package/dist/util/mac.spec.d.ts.map +0 -1
  316. package/dist/util/mac.spec.js +0 -36
  317. package/dist/util/mac.spec.js.map +0 -1
  318. package/dist/version.spec.d.ts +0 -2
  319. package/dist/version.spec.d.ts.map +0 -1
  320. package/dist/version.spec.js +0 -20
  321. package/dist/version.spec.js.map +0 -1
@@ -0,0 +1,203 @@
1
+ const CLUSTER_COMMAND_MAPPINGS = {
2
+ onOff: {
3
+ map: (attributes) => {
4
+ if ('onOff' in attributes) {
5
+ return {
6
+ command: attributes.onOff ? 'on' : 'off',
7
+ };
8
+ }
9
+ return null;
10
+ },
11
+ },
12
+ levelControl: {
13
+ map: (attributes) => {
14
+ if ('currentLevel' in attributes) {
15
+ return {
16
+ command: 'moveToLevel',
17
+ args: { level: attributes.currentLevel },
18
+ };
19
+ }
20
+ return null;
21
+ },
22
+ },
23
+ colorControl: {
24
+ map: (attributes) => {
25
+ if ('colorTemperatureMireds' in attributes) {
26
+ return {
27
+ command: 'moveToColorTemperature',
28
+ args: {
29
+ colorTemperatureMireds: attributes.colorTemperatureMireds,
30
+ transitionTime: attributes.transitionTime ?? null,
31
+ },
32
+ };
33
+ }
34
+ if ('colorX' in attributes && 'colorY' in attributes) {
35
+ return {
36
+ command: 'moveToColor',
37
+ args: {
38
+ colorX: attributes.colorX,
39
+ colorY: attributes.colorY,
40
+ transitionTime: attributes.transitionTime ?? null,
41
+ },
42
+ };
43
+ }
44
+ if ('currentHue' in attributes || 'currentSaturation' in attributes) {
45
+ return {
46
+ command: 'moveToHueAndSaturation',
47
+ args: {
48
+ hue: attributes.currentHue ?? 0,
49
+ saturation: attributes.currentSaturation ?? 0,
50
+ transitionTime: attributes.transitionTime ?? null,
51
+ },
52
+ };
53
+ }
54
+ return null;
55
+ },
56
+ },
57
+ fanControl: {
58
+ map: (attributes) => {
59
+ if ('_command' in attributes && attributes._command === 'step') {
60
+ return {
61
+ command: 'step',
62
+ args: {
63
+ direction: attributes.direction ?? 0,
64
+ wrap: attributes.wrap ?? false,
65
+ lowestOff: attributes.lowestOff ?? true,
66
+ },
67
+ };
68
+ }
69
+ if ('fanMode' in attributes) {
70
+ return null;
71
+ }
72
+ if ('percentSetting' in attributes) {
73
+ return null;
74
+ }
75
+ return null;
76
+ },
77
+ },
78
+ windowCovering: {
79
+ map: (attributes) => {
80
+ if ('_command' in attributes) {
81
+ const cmd = attributes._command;
82
+ if (cmd === 'upOrOpen' || cmd === 'downOrClose' || cmd === 'stopMotion') {
83
+ return { command: cmd };
84
+ }
85
+ }
86
+ if ('targetPositionLiftPercent100ths' in attributes) {
87
+ return {
88
+ command: 'goToLiftPercentage',
89
+ args: {
90
+ liftPercent100thsValue: attributes.targetPositionLiftPercent100ths,
91
+ },
92
+ };
93
+ }
94
+ if ('targetPositionTiltPercent100ths' in attributes) {
95
+ return {
96
+ command: 'goToTiltPercentage',
97
+ args: {
98
+ tiltPercent100thsValue: attributes.targetPositionTiltPercent100ths,
99
+ },
100
+ };
101
+ }
102
+ return null;
103
+ },
104
+ },
105
+ doorLock: {
106
+ map: (attributes) => {
107
+ if ('_command' in attributes) {
108
+ const cmd = attributes._command;
109
+ if (cmd === 'lockDoor' || cmd === 'unlockDoor') {
110
+ return { command: cmd };
111
+ }
112
+ }
113
+ if ('lockState' in attributes) {
114
+ return {
115
+ command: attributes.lockState === 1 ? 'lockDoor' : 'unlockDoor',
116
+ };
117
+ }
118
+ return null;
119
+ },
120
+ },
121
+ thermostat: {
122
+ map: (attributes) => {
123
+ if ('_command' in attributes && attributes._command === 'setpointRaiseLower') {
124
+ return {
125
+ command: 'setpointRaiseLower',
126
+ args: {
127
+ mode: attributes.mode ?? 0,
128
+ amount: attributes.amount ?? 10,
129
+ },
130
+ };
131
+ }
132
+ if ('systemMode' in attributes) {
133
+ return null;
134
+ }
135
+ if ('occupiedHeatingSetpoint' in attributes) {
136
+ return null;
137
+ }
138
+ if ('occupiedCoolingSetpoint' in attributes) {
139
+ return null;
140
+ }
141
+ return null;
142
+ },
143
+ },
144
+ rvcOperationalState: {
145
+ map: (attributes) => {
146
+ if ('_command' in attributes) {
147
+ return { command: attributes._command };
148
+ }
149
+ return null;
150
+ },
151
+ },
152
+ rvcRunMode: {
153
+ map: (attributes) => {
154
+ if ('currentMode' in attributes) {
155
+ return {
156
+ command: 'changeToMode',
157
+ args: { newMode: attributes.currentMode },
158
+ };
159
+ }
160
+ return null;
161
+ },
162
+ },
163
+ rvcCleanMode: {
164
+ map: (attributes) => {
165
+ if ('currentMode' in attributes) {
166
+ return {
167
+ command: 'changeToMode',
168
+ args: { newMode: attributes.currentMode },
169
+ };
170
+ }
171
+ return null;
172
+ },
173
+ },
174
+ serviceArea: {
175
+ map: (attributes) => {
176
+ if ('selectedAreas' in attributes && Array.isArray(attributes.selectedAreas)) {
177
+ return {
178
+ command: 'selectAreas',
179
+ args: { newAreas: attributes.selectedAreas },
180
+ };
181
+ }
182
+ if ('skipArea' in attributes) {
183
+ return {
184
+ command: 'skipArea',
185
+ args: { skippedArea: attributes.skipArea },
186
+ };
187
+ }
188
+ return null;
189
+ },
190
+ },
191
+ };
192
+ export function mapAttributesToCommand(cluster, attributes) {
193
+ const mapping = CLUSTER_COMMAND_MAPPINGS[cluster];
194
+ if (!mapping) {
195
+ throw new Error(`Command mapping not implemented for cluster: ${cluster}`);
196
+ }
197
+ const result = mapping.map(attributes);
198
+ if (result === null) {
199
+ return null;
200
+ }
201
+ return result;
202
+ }
203
+ //# sourceMappingURL=ClusterCommandMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterCommandMapper.js","sourceRoot":"","sources":["../../src/matter/ClusterCommandMapper.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,15 @@
1
- /**
2
- * External Matter Accessory Publisher
3
- *
4
- * Shared logic for publishing external Matter accessories on dedicated bridges.
5
- * Used by both MatterBridgeManager and ChildBridgeMatterManager to avoid code duplication.
6
- */
7
1
  import type { InternalMatterAccessory } from './types.js';
8
2
  import { MatterServer } from './server.js';
9
- /**
10
- * Configuration context for publishing external Matter accessories
11
- */
12
3
  export interface ExternalAccessoryPublishContext {
13
- /** Port service for allocating Matter ports */
14
4
  portService: {
15
5
  requestMatterPort: (uniqueId: string) => Promise<number | null | undefined>;
16
6
  };
17
- /** Network interfaces to bind to (from bridge config) */
18
7
  networkInterfaces?: string[];
19
- /** Whether debug mode is enabled */
20
8
  debugModeEnabled?: boolean;
21
9
  }
22
- /**
23
- * Result of publishing an external Matter accessory
24
- */
25
10
  export interface PublishedExternalAccessory {
26
- /** The MatterServer instance for this accessory */
27
11
  server: MatterServer;
28
- /** Port the server is running on */
29
12
  port: number;
30
- /** Commissioning information */
31
13
  commissioningInfo: {
32
14
  qrCode?: string;
33
15
  manualPairingCode?: string;
@@ -35,14 +17,5 @@ export interface PublishedExternalAccessory {
35
17
  commissioned: boolean;
36
18
  };
37
19
  }
38
- /**
39
- * Publish an external Matter accessory on its own dedicated Matter server.
40
- * This is required for devices like Robotic Vacuum Cleaners that Apple Home
41
- * requires to be on their own bridge.
42
- *
43
- * @param accessory - The Matter accessory to publish
44
- * @param context - Configuration context for publishing
45
- * @returns Published accessory info, or null if publishing failed
46
- */
47
20
  export declare function publishExternalMatterAccessory(accessory: InternalMatterAccessory, context: ExternalAccessoryPublishContext): Promise<PublishedExternalAccessory | null>;
48
21
  //# sourceMappingURL=ExternalMatterAccessoryPublisher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalMatterAccessoryPublisher.d.ts","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,+CAA+C;IAC/C,WAAW,EAAE;QACX,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;KAC5E,CAAA;IACD,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,MAAM,EAAE,YAAY,CAAA;IACpB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,iBAAiB,EAAE;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,OAAO,CAAA;KACtB,CAAA;CACF;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,uBAAuB,EAClC,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAgE5C"}
1
+ {"version":3,"file":"ExternalMatterAccessoryPublisher.d.ts","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO1C,MAAM,WAAW,+BAA+B;IAE9C,WAAW,EAAE;QACX,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;KAC5E,CAAA;IAED,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE5B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAKD,MAAM,WAAW,0BAA0B;IAEzC,MAAM,EAAE,YAAY,CAAA;IAEpB,IAAI,EAAE,MAAM,CAAA;IAEZ,iBAAiB,EAAE;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,OAAO,CAAA;KACtB,CAAA;CACF;AAWD,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,uBAAuB,EAClC,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAgE5C"}
@@ -1,25 +1,9 @@
1
- /**
2
- * External Matter Accessory Publisher
3
- *
4
- * Shared logic for publishing external Matter accessories on dedicated bridges.
5
- * Used by both MatterBridgeManager and ChildBridgeMatterManager to avoid code duplication.
6
- */
7
1
  import { Logger } from '../logger.js';
8
2
  import { User } from '../user.js';
9
3
  import { generate } from '../util/mac.js';
10
4
  import { MatterServer } from './server.js';
11
- const log = Logger.internal;
12
- /**
13
- * Publish an external Matter accessory on its own dedicated Matter server.
14
- * This is required for devices like Robotic Vacuum Cleaners that Apple Home
15
- * requires to be on their own bridge.
16
- *
17
- * @param accessory - The Matter accessory to publish
18
- * @param context - Configuration context for publishing
19
- * @returns Published accessory info, or null if publishing failed
20
- */
5
+ const log = Logger.withPrefix('Matter/External');
21
6
  export async function publishExternalMatterAccessory(accessory, context) {
22
- // Validate accessory has required fields
23
7
  if (!accessory.uuid) {
24
8
  log.error('External Matter accessory missing UUID - skipping');
25
9
  return null;
@@ -28,11 +12,8 @@ export async function publishExternalMatterAccessory(accessory, context) {
28
12
  log.error(`External Matter accessory ${accessory.uuid} missing displayName - skipping`);
29
13
  return null;
30
14
  }
31
- // Generate deterministic MAC address from UUID (same pattern as HAP external accessories)
32
15
  const advertiseAddress = generate(accessory.uuid);
33
- // For Matter, use the MAC without colons as uniqueId
34
16
  const uniqueId = advertiseAddress.replace(/:/g, '');
35
- // Allocate Matter port for the external Matter server
36
17
  const port = await context.portService.requestMatterPort(uniqueId);
37
18
  if (!port) {
38
19
  log.error(`Failed to allocate Matter port for external Matter accessory ${accessory.displayName}`);
@@ -40,7 +21,6 @@ export async function publishExternalMatterAccessory(accessory, context) {
40
21
  return null;
41
22
  }
42
23
  log.info(`Allocated port ${port} for external Matter accessory: ${accessory.displayName}`);
43
- // Create dedicated Matter server for this accessory
44
24
  const matterServer = new MatterServer({
45
25
  port,
46
26
  uniqueId,
@@ -48,21 +28,16 @@ export async function publishExternalMatterAccessory(accessory, context) {
48
28
  manufacturer: accessory.manufacturer,
49
29
  model: accessory.model,
50
30
  firmwareRevision: accessory.firmwareRevision,
51
- serialNumber: accessory.serialNumber || uniqueId, // use uniqueId as fallback serial number
31
+ serialNumber: accessory.serialNumber || uniqueId,
52
32
  debugModeEnabled: context.debugModeEnabled,
53
- externalAccessory: true, // external accessory, added before server runs
33
+ externalAccessory: true,
54
34
  networkInterfaces: context.networkInterfaces,
55
35
  });
56
- // Start the Matter server (but don't run it yet due to externalAccessory mode)
57
36
  await matterServer.start();
58
- // Get plugin identifier from accessory
59
37
  const pluginIdentifier = accessory._associatedPlugin || 'unknown';
60
- // Register the accessory to this dedicated server
61
38
  await matterServer.registerPlatformAccessories(pluginIdentifier, 'ExternalMatter', [accessory]);
62
- // Now run the server with the device already attached (required for external accessories)
63
39
  await matterServer.runServer();
64
40
  log.info(`✓ External Matter accessory published: ${accessory.displayName} on port ${port}`);
65
- // Get commissioning info
66
41
  const commissioningInfo = matterServer.getCommissioningInfo();
67
42
  return {
68
43
  server: matterServer,
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalMatterAccessoryPublisher.js","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAA;AAiC3B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,SAAkC,EAClC,OAAwC;IAExC,yCAAyC;IACzC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,6BAA6B,SAAS,CAAC,IAAI,iCAAiC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAEjD,qDAAqD;IACrD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEnD,sDAAsD;IACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,gEAAgE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;QAClG,GAAG,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAC1G,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,mCAAmC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;IAE1F,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,QAAQ,EAAE,yCAAyC;QAC3F,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,iBAAiB,EAAE,IAAI,EAAE,+CAA+C;QACxE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAA;IAEF,+EAA+E;IAC/E,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;IAE1B,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAA;IAEjE,kDAAkD;IAClD,MAAM,YAAY,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAE/F,0FAA0F;IAC1F,MAAM,YAAY,CAAC,SAAS,EAAE,CAAA;IAE9B,GAAG,CAAC,IAAI,CAAC,0CAA0C,SAAS,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC,CAAA;IAE3F,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,YAAY,CAAC,oBAAoB,EAAE,CAAA;IAE7D,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI;QACJ,iBAAiB;KAClB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ExternalMatterAccessoryPublisher.js","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AA0ChD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,SAAkC,EAClC,OAAwC;IAGxC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,6BAA6B,SAAS,CAAC,IAAI,iCAAiC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACb,CAAC;IAGD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAGjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAGnD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,gEAAgE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;QAClG,GAAG,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAC1G,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,mCAAmC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;IAG1F,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,QAAQ;QAChD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,iBAAiB,EAAE,IAAI;QACvB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAA;IAGF,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;IAG1B,MAAM,gBAAgB,GAAG,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAA;IAGjE,MAAM,YAAY,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAG/F,MAAM,YAAY,CAAC,SAAS,EAAE,CAAA;IAE9B,GAAG,CAAC,IAAI,CAAC,0CAA0C,SAAS,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC,CAAA;IAG3F,MAAM,iBAAiB,GAAG,YAAY,CAAC,oBAAoB,EAAE,CAAA;IAE7D,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI;QACJ,iBAAiB;KAClB,CAAA;AACH,CAAC"}
@@ -1,49 +1,13 @@
1
- /**
2
- * Matter API Implementation
3
- *
4
- * This class implements the Matter API facade, keeping Matter-specific logic
5
- * separate from the core HomebridgeAPI class.
6
- *
7
- * Benefits:
8
- * - Reduces changes to core api.ts file
9
- * - Lazy-loads Matter code only when used
10
- * - Clear separation between HAP and Matter
11
- * - Easier to test in isolation
12
- * - Validates accessories before registration
13
- * - Provides detailed error messages for debugging
14
- */
15
1
  import type { EndpointType } from '@matter/main';
16
2
  import type { HomebridgeAPI, MatterAPI, PlatformName, PluginIdentifier } from '../api.js';
17
3
  import { clusters, MatterAccessory } from './index.js';
18
- /**
19
- * Implementation of the Matter API
20
- * Delegates to the HomebridgeAPI instance for event emission and server access
21
- * Provides validation and coordination for Matter accessory operations
22
- */
23
4
  export declare class MatterAPIImpl implements MatterAPI {
24
5
  private readonly api;
25
6
  constructor(api: HomebridgeAPI);
26
- /**
27
- * Validate a Matter accessory has required fields
28
- * @throws MatterAccessoryValidationError if validation fails
29
- */
30
7
  private validateAccessory;
31
- /**
32
- * Validate an array of accessories, logging errors for invalid ones
33
- * @returns Array of valid accessories only
34
- */
35
8
  private validateAccessories;
36
- /**
37
- * Validate cluster name is valid
38
- */
39
9
  private validateClusterName;
40
- /**
41
- * UUID generator (alias of api.hap.uuid for convenience)
42
- */
43
10
  get uuid(): typeof import("hap-nodejs/dist/lib/util/uuid.js");
44
- /**
45
- * Matter device types for creating accessories
46
- */
47
11
  get deviceTypes(): {
48
12
  readonly OnOffLight: import("@matter/node/devices").OnOffLightDevice;
49
13
  readonly DimmableLight: import("@matter/node/devices").DimmableLightDevice;
@@ -439,13 +403,7 @@ export declare class MatterAPIImpl implements MatterAPI {
439
403
  readonly Pump: import("@matter/node/devices").PumpDevice;
440
404
  readonly RoomAirConditioner: import("@matter/node/devices").RoomAirConditionerDevice;
441
405
  };
442
- /**
443
- * Matter clusters - Direct access to Matter.js cluster definitions
444
- */
445
406
  get clusters(): typeof clusters;
446
- /**
447
- * Matter cluster names for type safety and autocomplete
448
- */
449
407
  get clusterNames(): {
450
408
  readonly OnOff: "onOff";
451
409
  readonly LevelControl: "levelControl";
@@ -475,37 +433,11 @@ export declare class MatterAPIImpl implements MatterAPI {
475
433
  readonly BasicInformation: "basicInformation";
476
434
  readonly BridgedDeviceBasicInformation: "bridgedDeviceBasicInformation";
477
435
  };
478
- /**
479
- * Matter types - Access to Matter.js cluster type definitions and enums
480
- */
481
436
  get types(): typeof clusters;
482
- /**
483
- * Register Matter platform accessories
484
- * Automatically handles external accessories (e.g., RoboticVacuumCleaner) that need dedicated bridges
485
- * Validates accessories before registration
486
- * Returns a promise that resolves when all accessories are fully registered
487
- */
488
437
  registerPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]): Promise<void>;
489
- /**
490
- * Update Matter platform accessories in the cache
491
- * Similar to api.updatePlatformAccessories() for HAP accessories
492
- */
493
438
  updatePlatformAccessories(accessories: MatterAccessory[]): Promise<void>;
494
- /**
495
- * Unregister Matter platform accessories
496
- * Automatically handles external accessories (e.g., RoboticVacuumCleaner) that have dedicated bridges
497
- */
498
439
  unregisterPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]): Promise<void>;
499
- /**
500
- * Update a Matter accessory's cluster state
501
- * Validates inputs before updating
502
- */
503
440
  updateAccessoryState(uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
504
- /**
505
- * Get a Matter accessory's current cluster state
506
- * Checks both external servers and main bridge server
507
- * Validates inputs before retrieving state
508
- */
509
441
  getAccessoryState(uuid: string, cluster: string, partId?: string): Promise<Record<string, unknown> | undefined>;
510
442
  }
511
443
  //# sourceMappingURL=MatterAPIImpl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MatterAPIImpl.d.ts","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAKzF,OAAO,EAAgB,QAAQ,EAAe,eAAe,EAA6B,MAAM,YAAY,CAAA;AA8B5G;;;;GAIG;AACH,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,IAAI,IAAI,sDAEP;IAED;;OAEG;IACH,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFA+P++9B,uBAAuB;;4EAAmL,uBAAuB;;;;;;;;;;4EAAkpB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;yFAAwwC,uBAAuB;;8EAAuL,uBAAuB;;;oFAAwO,uBAAuB;;;;;;;;;;;;;wFAAk2B,uBAAuB;;;;;;;;;;8EAAymB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA7P5mmC;IAED;;OAEG;IACH,IAAI,QAAQ,oBAEX;IAED;;OAEG;IACH,IAAI,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEf;IAED;;OAEG;IACH,IAAI,KAAK,oBAER;IAED;;;;;OAKG;IACG,2BAA2B,CAC/B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IA8EhB;;;OAGG;IACG,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9E;;;OAGG;IACG,6BAA6B,CACjC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAmChB;;;OAGG;IACG,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA2BhB;;;;OAIG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAqChD"}
1
+ {"version":3,"file":"MatterAPIImpl.d.ts","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAKzF,OAAO,EAAgB,QAAQ,EAAe,eAAe,EAA6B,MAAM,YAAY,CAAA;AAmC5G,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAM/C,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,mBAAmB;IAc3B,IAAI,IAAI,sDAEP;IAKD,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAgQg59B,uBAAuB;;4EAAmL,uBAAuB;;;;;;;;;;4EAAkpB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;yFAAwwC,uBAAuB;;8EAAuL,uBAAuB;;;oFAAwO,uBAAuB;;;;;;;;;;;;;wFAAk2B,uBAAuB;;;;;;;;;;8EAAymB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA9P7gmC;IAKD,IAAI,QAAQ,oBAEX;IAKD,IAAI,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEf;IAKD,IAAI,KAAK,oBAER;IAQK,2BAA2B,CAC/B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAkFV,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxE,6BAA6B,CACjC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAuCV,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAiCV,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAqChD"}