homebridge 2.0.0-alpha.41 → 2.0.0-alpha.43

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 (91) hide show
  1. package/dist/api.d.ts +81 -20
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +71 -11
  4. package/dist/api.js.map +1 -1
  5. package/dist/bridgeService.d.ts +14 -12
  6. package/dist/bridgeService.d.ts.map +1 -1
  7. package/dist/bridgeService.js +17 -3
  8. package/dist/bridgeService.js.map +1 -1
  9. package/dist/bridgeTypes.d.ts +54 -0
  10. package/dist/bridgeTypes.d.ts.map +1 -0
  11. package/dist/bridgeTypes.js +8 -0
  12. package/dist/bridgeTypes.js.map +1 -0
  13. package/dist/childBridgeFork.d.ts +23 -0
  14. package/dist/childBridgeFork.d.ts.map +1 -1
  15. package/dist/childBridgeFork.js +240 -4
  16. package/dist/childBridgeFork.js.map +1 -1
  17. package/dist/childBridgeService.d.ts +47 -7
  18. package/dist/childBridgeService.d.ts.map +1 -1
  19. package/dist/childBridgeService.js +67 -2
  20. package/dist/childBridgeService.js.map +1 -1
  21. package/dist/cli.d.ts.map +1 -1
  22. package/dist/cli.js +3 -1
  23. package/dist/cli.js.map +1 -1
  24. package/dist/index.d.ts +5 -6
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +4 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/ipcService.d.ts +3 -1
  29. package/dist/ipcService.d.ts.map +1 -1
  30. package/dist/ipcService.js +2 -0
  31. package/dist/ipcService.js.map +1 -1
  32. package/dist/matter/index.d.ts +4 -6
  33. package/dist/matter/index.d.ts.map +1 -1
  34. package/dist/matter/index.js +4 -5
  35. package/dist/matter/index.js.map +1 -1
  36. package/dist/matter/matterConfigValidator.d.ts +2 -3
  37. package/dist/matter/matterConfigValidator.d.ts.map +1 -1
  38. package/dist/matter/matterConfigValidator.js +47 -38
  39. package/dist/matter/matterConfigValidator.js.map +1 -1
  40. package/dist/matter/matterErrorHandler.d.ts +6 -25
  41. package/dist/matter/matterErrorHandler.d.ts.map +1 -1
  42. package/dist/matter/matterErrorHandler.js +89 -99
  43. package/dist/matter/matterErrorHandler.js.map +1 -1
  44. package/dist/matter/matterServer.d.ts +126 -39
  45. package/dist/matter/matterServer.d.ts.map +1 -1
  46. package/dist/matter/matterServer.js +528 -226
  47. package/dist/matter/matterServer.js.map +1 -1
  48. package/dist/matter/matterSharedTypes.d.ts +16 -38
  49. package/dist/matter/matterSharedTypes.d.ts.map +1 -1
  50. package/dist/matter/matterSharedTypes.js +3 -4
  51. package/dist/matter/matterSharedTypes.js.map +1 -1
  52. package/dist/matter/matterStorage.d.ts +116 -0
  53. package/dist/matter/matterStorage.d.ts.map +1 -0
  54. package/dist/matter/matterStorage.js +442 -0
  55. package/dist/matter/matterStorage.js.map +1 -0
  56. package/dist/matter/matterTypes.d.ts +148 -20
  57. package/dist/matter/matterTypes.d.ts.map +1 -1
  58. package/dist/matter/matterTypes.js +91 -263
  59. package/dist/matter/matterTypes.js.map +1 -1
  60. package/dist/plugin.d.ts.map +1 -1
  61. package/dist/plugin.js +4 -2
  62. package/dist/plugin.js.map +1 -1
  63. package/dist/server.d.ts +18 -4
  64. package/dist/server.d.ts.map +1 -1
  65. package/dist/server.js +376 -349
  66. package/dist/server.js.map +1 -1
  67. package/dist/user.d.ts +1 -0
  68. package/dist/user.d.ts.map +1 -1
  69. package/dist/user.js +3 -0
  70. package/dist/user.js.map +1 -1
  71. package/package.json +6 -7
  72. package/dist/childMatterBridgeFork.d.ts +0 -108
  73. package/dist/childMatterBridgeFork.d.ts.map +0 -1
  74. package/dist/childMatterBridgeFork.js +0 -330
  75. package/dist/childMatterBridgeFork.js.map +0 -1
  76. package/dist/childMatterBridgeService.d.ts +0 -166
  77. package/dist/childMatterBridgeService.d.ts.map +0 -1
  78. package/dist/childMatterBridgeService.js +0 -623
  79. package/dist/childMatterBridgeService.js.map +0 -1
  80. package/dist/matter/matterBridge.d.ts +0 -64
  81. package/dist/matter/matterBridge.d.ts.map +0 -1
  82. package/dist/matter/matterBridge.js +0 -154
  83. package/dist/matter/matterBridge.js.map +0 -1
  84. package/dist/matter/matterDevice.d.ts +0 -107
  85. package/dist/matter/matterDevice.d.ts.map +0 -1
  86. package/dist/matter/matterDevice.js +0 -913
  87. package/dist/matter/matterDevice.js.map +0 -1
  88. package/dist/matter/portAllocator.d.ts +0 -85
  89. package/dist/matter/portAllocator.d.ts.map +0 -1
  90. package/dist/matter/portAllocator.js +0 -296
  91. package/dist/matter/portAllocator.js.map +0 -1
@@ -7,6 +7,9 @@ export declare class ChildBridgeFork {
7
7
  private api;
8
8
  private pluginManager;
9
9
  private externalPortService;
10
+ private matterServer?;
11
+ private matterConfig?;
12
+ private matterSerialNumber?;
10
13
  private type;
11
14
  private plugin;
12
15
  private identifier;
@@ -19,6 +22,10 @@ export declare class ChildBridgeFork {
19
22
  sendMessage<T = unknown>(type: ChildProcessMessageEventType, data?: T): void;
20
23
  loadPlugin(data: ChildProcessLoadEventData): Promise<void>;
21
24
  startBridge(): Promise<void>;
25
+ /**
26
+ * Load platform/accessory for Matter-only bridges (without HAP)
27
+ */
28
+ private loadPlatformForMatterOnly;
22
29
  /**
23
30
  * Request the next available external port from the parent process
24
31
  * @param username
@@ -33,6 +40,22 @@ export declare class ChildBridgeFork {
33
40
  * Sends the current pairing status of the child bridge to the parent process
34
41
  */
35
42
  sendPairedStatusEvent(): void;
43
+ /**
44
+ * Sends Matter bridge status when Matter is configured
45
+ */
46
+ sendMatterStatusEvent(): void;
47
+ /**
48
+ * Start Matter server for child bridge
49
+ */
50
+ private startMatterServer;
51
+ /**
52
+ * Handle Matter metadata request from parent process
53
+ */
54
+ handleMatterMetadataRequest(): void;
55
+ /**
56
+ * Hook to handle HAP accessory registration and sync with Matter
57
+ */
58
+ private handleAccessoryRegistration;
36
59
  shutdown(): void;
37
60
  }
38
61
  //# sourceMappingURL=childBridgeFork.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"childBridgeFork.d.ts","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAU5C,OAAO,KAAK,EAEV,yBAAyB,EAGzB,kCAAkC,EAEnC,MAAM,yBAAyB,CAAA;AAShC,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAMtE,OAAO,gCAAgC,CAAA;AAQvC,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,mBAAmB,CAAiE;;IAO5F,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAStE,UAAU,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA8ElC;;;OAGG;IACU,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAoBnF;;;OAGG;IACI,sBAAsB,CAAC,IAAI,EAAE,kCAAkC,GAAG,IAAI;IAO7E;;OAEG;IACI,qBAAqB;IAO5B,QAAQ,IAAI,IAAI;CAGjB"}
1
+ {"version":3,"file":"childBridgeFork.d.ts","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAU5C,OAAO,KAAK,EAEV,yBAAyB,EAGzB,kCAAkC,EAEnC,MAAM,yBAAyB,CAAA;AAUhC,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAOtE,OAAO,gCAAgC,CAAA;AAQvC,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,YAAY,CAAC,CAWpB;IAED,OAAO,CAAC,YAAY,CAAC,CAAgD;IACrE,OAAO,CAAC,kBAAkB,CAAC,CAAQ;IAEnC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,mBAAmB,CAAiE;;IAO5F,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAStE,UAAU,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsKlC;;OAEG;YACW,yBAAyB;IAmCvC;;;OAGG;IACU,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAoBnF;;;OAGG;IACI,sBAAsB,CAAC,IAAI,EAAE,kCAAkC,GAAG,IAAI;IAO7E;;OAEG;IACI,qBAAqB;IAO5B;;OAEG;IACI,qBAAqB;IAkC5B;;OAEG;YACW,iBAAiB;IAwD/B;;OAEG;IACI,2BAA2B,IAAI,IAAI;IAS1C;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAuBnC,QAAQ,IAAI,IAAI;CAUjB"}
@@ -5,6 +5,7 @@ import { HomebridgeAPI } from './api.js';
5
5
  import { BridgeService } from './bridgeService.js';
6
6
  import { ChildBridgeExternalPortService } from './externalPortService.js';
7
7
  import { Logger } from './logger.js';
8
+ import { PlatformAccessory } from './platformAccessory.js';
8
9
  import { PluginManager } from './pluginManager.js';
9
10
  import { User } from './user.js';
10
11
  import 'source-map-support/register.js';
@@ -17,6 +18,9 @@ export class ChildBridgeFork {
17
18
  api;
18
19
  pluginManager;
19
20
  externalPortService;
21
+ matterServer;
22
+ matterConfig;
23
+ matterSerialNumber;
20
24
  type;
21
25
  plugin;
22
26
  identifier;
@@ -59,10 +63,8 @@ export class ChildBridgeFork {
59
63
  if (this.bridgeOptions.forceColourLogging) {
60
64
  Logger.forceColor();
61
65
  }
62
- if (this.bridgeOptions.customStoragePath) {
63
- User.setStoragePath(this.bridgeOptions.customStoragePath);
64
- }
65
66
  // Initialize HAP-NodeJS with a custom persist directory
67
+ // The storage path is already set from the parent process environment
66
68
  HAPStorage.setCustomStoragePath(User.persistPath());
67
69
  // load api
68
70
  this.api = new HomebridgeAPI();
@@ -79,7 +81,46 @@ export class ChildBridgeFork {
79
81
  });
80
82
  }
81
83
  async startBridge() {
84
+ // Check if this is a Matter-only bridge
85
+ const isMatterOnlyBridge = this.bridgeConfig.matterOnly === true;
86
+ // Check if Matter is configured
87
+ this.matterConfig = this.bridgeConfig.matter;
88
+ // Initialize Matter if it's configured (either Matter-only or combined bridge)
89
+ if (this.matterConfig) {
90
+ Logger.internal.debug(`Child bridge has Matter config (${isMatterOnlyBridge ? 'Matter-only' : 'Combined HAP+Matter'}), starting Matter server`);
91
+ // If Matter doesn't have a port configured, allocate one
92
+ if (!this.matterConfig.port) {
93
+ // Generate a unique username for Matter port allocation
94
+ const matterUsername = isMatterOnlyBridge
95
+ ? `matter-${this.plugin.getPluginIdentifier()}-${this.identifier}` // Use unique identifier for Matter-only
96
+ : `${this.bridgeConfig.username}:MATTER`;
97
+ const matterPort = await this.externalPortService.requestPort(matterUsername);
98
+ this.matterConfig.port = matterPort || 5540; // Default to 5540 if no port available
99
+ Logger.internal.debug(`Allocated Matter port: ${this.matterConfig.port}${!isMatterOnlyBridge ? ` (HAP port: ${this.bridgeConfig.port})` : ''}`);
100
+ }
101
+ // Start Matter server
102
+ await this.startMatterServer(this.matterConfig);
103
+ // Send Matter bridge status to parent process
104
+ this.sendMatterStatusEvent();
105
+ }
106
+ // Skip HAP bridge initialization for Matter-only bridges
107
+ if (isMatterOnlyBridge) {
108
+ Logger.internal.info('Matter-only bridge - skipping HAP initialization');
109
+ // For Matter-only, we still need to instantiate the platform, just not publish HAP
110
+ await this.loadPlatformForMatterOnly();
111
+ this.api.signalFinished();
112
+ this.sendMessage("online" /* ChildProcessMessageEventType.ONLINE */);
113
+ return;
114
+ }
82
115
  this.bridgeService = new BridgeService(this.api, this.pluginManager, this.externalPortService, this.bridgeOptions, this.bridgeConfig, this.homebridgeConfig);
116
+ // Only hook into accessory registration if Matter is configured
117
+ if (this.matterConfig && this.bridgeService.handleRegisterPlatformAccessories) {
118
+ const originalHandler = this.bridgeService.handleRegisterPlatformAccessories.bind(this.bridgeService);
119
+ this.bridgeService.handleRegisterPlatformAccessories = (accessories) => {
120
+ originalHandler(accessories);
121
+ this.handleAccessoryRegistration(accessories);
122
+ };
123
+ }
83
124
  // watch bridge events to check when server is online
84
125
  this.bridgeService.bridge.on("advertised" /* AccessoryEventTypes.ADVERTISED */, () => {
85
126
  this.sendPairedStatusEvent();
@@ -94,8 +135,15 @@ export class ChildBridgeFork {
94
135
  });
95
136
  // load the cached accessories
96
137
  await this.bridgeService.loadCachedPlatformAccessoriesFromDisk();
138
+ // For combined HAP+Matter bridges, we should only process the platform once
139
+ // When _bridge.matter is configured alongside HAP, we only need to instantiate the platform once
140
+ let platformInstantiated = false;
97
141
  for (const config of this.pluginConfig) {
98
142
  if (this.type === "platform" /* PluginType.PLATFORM */) {
143
+ // Skip if we've already instantiated this platform (for combined HAP+Matter)
144
+ if (platformInstantiated) {
145
+ continue;
146
+ }
99
147
  const plugin = this.pluginManager.getPluginForPlatform(this.identifier);
100
148
  const displayName = config.name || plugin.getPluginIdentifier();
101
149
  const logger = Logger.withPrefix(displayName);
@@ -103,13 +151,16 @@ export class ChildBridgeFork {
103
151
  const platform = new constructor(logger, config, this.api);
104
152
  if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
105
153
  plugin.assignDynamicPlatform(this.identifier, platform);
154
+ platformInstantiated = true;
106
155
  }
107
156
  else if (HomebridgeAPI.isStaticPlatformPlugin(platform)) { // Plugin 1.0, load accessories
108
157
  await this.bridgeService.loadPlatformAccessories(plugin, platform, this.identifier, logger);
158
+ platformInstantiated = true;
109
159
  }
110
160
  else {
111
161
  // otherwise it's a IndependentPlatformPlugin which doesn't expose any methods at all.
112
162
  // We just call the constructor and let it be enabled.
163
+ platformInstantiated = true;
113
164
  }
114
165
  }
115
166
  else if (this.type === "accessory" /* PluginType.ACCESSORY */) {
@@ -126,6 +177,23 @@ export class ChildBridgeFork {
126
177
  const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, this.identifier, config.uuid_base);
127
178
  if (accessory) {
128
179
  this.bridgeService.bridge.addBridgedAccessory(accessory);
180
+ // If Matter is configured, also add the accessory to Matter
181
+ if (this.matterConfig && this.matterServer) {
182
+ Logger.internal.debug(`[MATTER-ACCESSORY] Syncing accessory plugin ${displayName} to Matter`);
183
+ // Convert HAP accessory to PlatformAccessory for Matter
184
+ // Generate a valid UUID for the accessory
185
+ const uuid = this.api.hap.uuid.generate(`${plugin.getPluginIdentifier()}.${this.identifier}`);
186
+ const platformAccessory = new PlatformAccessory(displayName, uuid);
187
+ // Copy services from HAP accessory to platform accessory
188
+ accessory.services.forEach((service) => {
189
+ // Skip the AccessoryInformation service as PlatformAccessory already has one
190
+ if (service.UUID !== this.api.hap.Service.AccessoryInformation.UUID) {
191
+ platformAccessory.addService(service);
192
+ }
193
+ });
194
+ // Add to Matter
195
+ this.handleAccessoryRegistration([platformAccessory]);
196
+ }
129
197
  }
130
198
  else {
131
199
  logger('Accessory %s returned empty set of services. Won\'t adding it to the bridge!', this.identifier);
@@ -134,11 +202,51 @@ export class ChildBridgeFork {
134
202
  }
135
203
  // restore the cached accessories
136
204
  this.bridgeService.restoreCachedPlatformAccessories();
205
+ // If Matter is configured, sync all restored accessories to Matter
206
+ if (this.matterConfig && this.matterServer) {
207
+ const restoredAccessories = this.bridgeService.getCachedPlatformAccessories();
208
+ if (restoredAccessories && restoredAccessories.length > 0) {
209
+ Logger.internal.debug(`Syncing ${restoredAccessories.length} restored accessories to Matter`);
210
+ this.handleAccessoryRegistration(restoredAccessories);
211
+ }
212
+ }
137
213
  this.bridgeService.publishBridge();
138
214
  this.api.signalFinished();
139
215
  // tell the parent we are online
140
216
  this.sendMessage("online" /* ChildProcessMessageEventType.ONLINE */);
141
217
  }
218
+ /**
219
+ * Load platform/accessory for Matter-only bridges (without HAP)
220
+ */
221
+ async loadPlatformForMatterOnly() {
222
+ for (const config of this.pluginConfig) {
223
+ if (this.type === "platform" /* PluginType.PLATFORM */) {
224
+ const plugin = this.pluginManager.getPluginForPlatform(this.identifier);
225
+ const displayName = config.name || plugin.getPluginIdentifier();
226
+ const logger = Logger.withPrefix(displayName);
227
+ const constructor = plugin.getPlatformConstructor(this.identifier);
228
+ const platform = new constructor(logger, config, this.api);
229
+ if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
230
+ plugin.assignDynamicPlatform(this.identifier, platform);
231
+ }
232
+ // For Matter-only, static platforms and independent platforms just get constructed
233
+ }
234
+ else if (this.type === "accessory" /* PluginType.ACCESSORY */) {
235
+ const plugin = this.pluginManager.getPluginForAccessory(this.identifier);
236
+ const displayName = config.name;
237
+ if (!displayName) {
238
+ Logger.internal.warn('Could not load accessory %s as it is missing the required \'name\' property!', this.identifier);
239
+ continue;
240
+ }
241
+ const logger = Logger.withPrefix(displayName);
242
+ const constructor = plugin.getAccessoryConstructor(this.identifier);
243
+ // eslint-disable-next-line unused-imports/no-unused-vars
244
+ const accessoryInstance = new constructor(logger, config, this.api);
245
+ // Accessories for Matter-only bridges are registered via api.matter.registerAccessory()
246
+ // We just instantiate them here to allow plugin initialization
247
+ }
248
+ }
249
+ }
142
250
  /**
143
251
  * Request the next available external port from the parent process
144
252
  * @param username
@@ -179,8 +287,128 @@ export class ChildBridgeFork {
179
287
  setupUri: this.bridgeService?.bridge?.setupURI() ?? null,
180
288
  });
181
289
  }
290
+ /**
291
+ * Sends Matter bridge status when Matter is configured
292
+ */
293
+ sendMatterStatusEvent() {
294
+ if (!this.matterConfig) {
295
+ return;
296
+ }
297
+ // Generate identifier based on bridge type
298
+ const isMatterOnly = this.bridgeConfig.matterOnly === true;
299
+ const matterBridgeId = isMatterOnly
300
+ ? `matter-${this.plugin.getPluginIdentifier()}-${this.identifier}`
301
+ : `${this.bridgeConfig.username}-matter`;
302
+ const commissioningInfo = this.matterServer?.getCommissioningInfo() ?? { commissioned: false };
303
+ const { qrCode, manualPairingCode, commissioned } = commissioningInfo;
304
+ this.sendMessage("matterStatus" /* ChildProcessMessageEventType.MATTER_STATUS_UPDATE */, {
305
+ type: 'matter',
306
+ status: commissioned ? 'ok' : 'pending',
307
+ port: this.matterConfig.port || 5540,
308
+ qrCode,
309
+ manualPairingCode,
310
+ serialNumber: this.matterSerialNumber,
311
+ name: this.matterConfig.name,
312
+ plugin: this.plugin.getPluginIdentifier(),
313
+ identifier: matterBridgeId,
314
+ username: this.bridgeConfig.username, // undefined for Matter-only bridges
315
+ deviceCount: this.matterServer?.getDeviceCount ? this.matterServer.getDeviceCount() : 0,
316
+ manuallyStopped: false,
317
+ pid: process.pid,
318
+ commissioned,
319
+ });
320
+ Logger.internal.debug(`Sent Matter status update for bridge: ${matterBridgeId}`);
321
+ }
322
+ /**
323
+ * Start Matter server for child bridge
324
+ */
325
+ async startMatterServer(matterConfig) {
326
+ Logger.internal.info('Starting Matter server in child bridge process');
327
+ // Dynamically import the MatterServer to avoid loading it when not needed
328
+ const { MatterServer } = await import('./matter/matterServer.js');
329
+ // Generate unique ID based on bridge type
330
+ const isMatterOnly = this.bridgeConfig.matterOnly === true;
331
+ const uniqueId = isMatterOnly
332
+ ? `matter-${this.plugin.getPluginIdentifier()}-${this.identifier}`
333
+ : `${this.bridgeConfig.username}-matter`;
334
+ // Create Matter server with the provided configuration
335
+ this.matterServer = new MatterServer({
336
+ port: matterConfig.port || 5540,
337
+ name: matterConfig.name || this.bridgeConfig.name || 'Homebridge Matter Bridge',
338
+ uniqueId,
339
+ storagePath: User.matterPath(),
340
+ });
341
+ await this.matterServer.start();
342
+ // Inform the API that Matter is enabled
343
+ this.api._setMatterEnabled(true);
344
+ const commissioningInfo = this.matterServer.getCommissioningInfo();
345
+ Logger.internal.info('Matter server started with commissioning info:', commissioningInfo);
346
+ // Store the serial number for status updates
347
+ this.matterSerialNumber = commissioningInfo.serialNumber;
348
+ // Send initial Matter status update
349
+ this.sendMatterStatusEvent();
350
+ // Set up event listeners for Matter API calls
351
+ const { InternalAPIEvent } = await import('./api.js');
352
+ this.api.on("registerMatterAccessory" /* InternalAPIEvent.REGISTER_MATTER_ACCESSORY */, (accessory) => {
353
+ if (this.matterServer) {
354
+ this.matterServer.registerAccessory(accessory);
355
+ }
356
+ });
357
+ this.api.on("unregisterMatterAccessory" /* InternalAPIEvent.UNREGISTER_MATTER_ACCESSORY */, (uuid) => {
358
+ if (this.matterServer) {
359
+ this.matterServer.unregisterAccessory(uuid);
360
+ }
361
+ });
362
+ this.api.on("updateMatterAccessoryState" /* InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE */, (uuid, cluster, attributes) => {
363
+ if (this.matterServer) {
364
+ this.matterServer.updateAccessoryState(uuid, cluster, attributes);
365
+ }
366
+ });
367
+ // Send updated Matter status with fresh commissioning info to parent
368
+ this.sendMatterStatusEvent();
369
+ }
370
+ /**
371
+ * Handle Matter metadata request from parent process
372
+ */
373
+ handleMatterMetadataRequest() {
374
+ if (!this.matterConfig || !this.matterServer) {
375
+ return;
376
+ }
377
+ // Send Matter bridge metadata back to parent
378
+ this.sendMatterStatusEvent();
379
+ }
380
+ /**
381
+ * Hook to handle HAP accessory registration and sync with Matter
382
+ */
383
+ handleAccessoryRegistration(accessories) {
384
+ if (!this.matterServer) {
385
+ return;
386
+ }
387
+ Logger.internal.debug(`Syncing ${accessories.length} accessories to Matter`);
388
+ for (const accessory of accessories) {
389
+ // Add to Matter server if it has the addAccessory method
390
+ if (typeof this.matterServer.addAccessory === 'function') {
391
+ this.matterServer.addAccessory(accessory).then((matterDevice) => {
392
+ if (matterDevice) {
393
+ Logger.internal.debug(`Successfully added ${accessory.displayName} to Matter server`);
394
+ // Update Matter status to reflect new device count
395
+ this.sendMatterStatusEvent();
396
+ }
397
+ }).catch((error) => {
398
+ Logger.internal.error(`Failed to add accessory ${accessory.displayName} to Matter:`, error);
399
+ });
400
+ }
401
+ }
402
+ }
182
403
  shutdown() {
183
404
  this.bridgeService.teardown();
405
+ // Only stop Matter server if it was initialized
406
+ if (this.matterServer && typeof this.matterServer.stop === 'function') {
407
+ Logger.internal.debug('Stopping Matter server');
408
+ this.matterServer.stop().catch((error) => {
409
+ Logger.internal.error('Error stopping Matter server:', error);
410
+ });
411
+ }
184
412
  }
185
413
  }
186
414
  /**
@@ -200,13 +428,21 @@ process.on('message', (message) => {
200
428
  break;
201
429
  }
202
430
  case "start" /* ChildProcessMessageEventType.START */: {
203
- childPluginFork.startBridge();
431
+ childPluginFork.startBridge().catch((error) => {
432
+ Logger.internal.error('Failed to start bridge:', error);
433
+ process.exit(1);
434
+ });
204
435
  break;
205
436
  }
206
437
  case "portAllocated" /* ChildProcessMessageEventType.PORT_ALLOCATED */: {
207
438
  childPluginFork.handleExternalResponse(message.data);
208
439
  break;
209
440
  }
441
+ case 'MATTER_BRIDGE_METADATA_REQUEST': {
442
+ // Handle request for Matter bridge metadata
443
+ childPluginFork.handleMatterMetadataRequest();
444
+ break;
445
+ }
210
446
  }
211
447
  });
212
448
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"childBridgeFork.js","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"childBridgeFork.js","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { MacAddress } from 'hap-nodejs';
2
2
  import type { HomebridgeAPI } from './api.js';
3
3
  import type { AccessoryConfig, BridgeConfiguration, BridgeOptions, HomebridgeConfig, PlatformConfig } from './bridgeService.js';
4
+ import type { BaseBridgeMetadata } from './bridgeTypes.js';
4
5
  import type { ExternalPortService } from './externalPortService.js';
5
6
  import type { IpcService } from './ipcService.js';
6
7
  import type { Plugin } from './plugin.js';
@@ -38,7 +39,11 @@ export declare const enum ChildProcessMessageEventType {
38
39
  /**
39
40
  * Sent from the child to update its current status
40
41
  */
41
- STATUS_UPDATE = "status"
42
+ STATUS_UPDATE = "status",
43
+ /**
44
+ * Sent from the child when it has Matter config alongside HAP
45
+ */
46
+ MATTER_STATUS_UPDATE = "matterStatus"
42
47
  }
43
48
  export declare const enum ChildBridgeStatus {
44
49
  /**
@@ -81,19 +86,35 @@ export interface ChildBridgePairedStatusEventData {
81
86
  paired: boolean | null;
82
87
  setupUri: string | null;
83
88
  }
84
- export interface ChildMetadata {
89
+ /**
90
+ * HAP child bridge metadata
91
+ *
92
+ * Extends the base bridge metadata with HAP-specific properties.
93
+ * This ensures consistency with Matter bridge metadata while maintaining
94
+ * HAP-specific fields like paired, setupUri, and pin.
95
+ */
96
+ export interface ChildMetadata extends Omit<BaseBridgeMetadata, 'type' | 'status' | 'manuallyStopped'> {
97
+ /** Bridge type (always 'hap' for child bridges) */
85
98
  type: 'hap';
99
+ /** Current operational status */
86
100
  status: ChildBridgeStatus;
101
+ /** Whether the bridge is paired with a controller */
87
102
  paired?: boolean | null;
103
+ /** Setup URI for pairing (HomeKit QR code) */
88
104
  setupUri?: string | null;
105
+ /** HAP bridge username (MAC address) */
89
106
  username: MacAddress;
90
- port?: number;
107
+ /** HAP pairing PIN */
91
108
  pin: string;
92
- name: string;
93
- plugin: string;
94
- identifier: string;
109
+ /** Whether the bridge was manually stopped */
95
110
  manuallyStopped: boolean;
96
- pid?: number;
111
+ /** Matter configuration if enabled alongside HAP */
112
+ matterConfig?: {
113
+ port?: number;
114
+ name?: string;
115
+ };
116
+ /** Matter bridge identifier if Matter is enabled */
117
+ matterIdentifier?: string;
97
118
  }
98
119
  /**
99
120
  * Manages the child processes of platforms/accessories being exposed as separate forked bridges.
@@ -117,6 +138,7 @@ export declare class ChildBridgeService {
117
138
  private pairedStatus;
118
139
  private manuallyStopped;
119
140
  private setupUri;
141
+ private matterCommissioningInfo?;
120
142
  private pluginConfig;
121
143
  private log;
122
144
  private displayName?;
@@ -178,6 +200,7 @@ export declare class ChildBridgeService {
178
200
  private teardown;
179
201
  /**
180
202
  * Trigger sending child bridge metadata to the process parent via IPC
203
+ * Note: Matter-only bridges don't send HAP status updates
181
204
  */
182
205
  private sendStatusUpdate;
183
206
  /**
@@ -198,7 +221,24 @@ export declare class ChildBridgeService {
198
221
  refreshConfig(): Promise<void>;
199
222
  /**
200
223
  * Returns metadata about this child bridge
224
+ * Note: This is for HAP child bridges only. Matter-only bridges expose metadata via Matter IPC events.
201
225
  */
202
226
  getMetadata(): ChildMetadata;
227
+ /**
228
+ * Get Matter commissioning info if available
229
+ */
230
+ getCommissioningInfo(): {
231
+ qrCode?: string;
232
+ manualPairingCode?: string;
233
+ serialNumber?: string;
234
+ commissioned: boolean;
235
+ } | undefined;
236
+ /**
237
+ * Get Matter config if available
238
+ */
239
+ getMatterConfig(): {
240
+ port?: number;
241
+ name?: string;
242
+ } | undefined;
203
243
  }
204
244
  //# sourceMappingURL=childBridgeService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"childBridgeService.d.ts","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"childBridgeService.d.ts","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AASpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AASrC,0BAAkB,4BAA4B;IAC5C;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,IAAI,SAAS;IAEb;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,YAAY,gBAAgB;IAE5B;;OAEG;IACH,cAAc,kBAAkB;IAEhC;;OAEG;IACH,aAAa,WAAW;IAExB;;OAEG;IACH,oBAAoB,iBAAiB;CACtC;AAGD,0BAAkB,iBAAiB;IACjC;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,EAAE,OAAO;IAET;;OAEG;IACH,IAAI,SAAS;CACd;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,EAAE,EAAE,4BAA4B,CAAA;IAChC,IAAI,CAAC,EAAE,CAAC,CAAA;CACT;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC,CAAA;IACrD,YAAY,EAAE,mBAAmB,CAAA;IACjC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,UAAU,CAAA;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IACpG,mDAAmD;IACnD,IAAI,EAAE,KAAK,CAAA;IACX,iCAAiC;IACjC,MAAM,EAAE,iBAAiB,CAAA;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,wCAAwC;IACxC,QAAQ,EAAE,UAAU,CAAA;IACpB,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,8CAA8C;IAC9C,eAAe,EAAE,OAAO,CAAA;IACxB,oDAAoD;IACpD,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAuBpB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,MAAM;IACzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,mBAAmB;IA9B7B,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,uBAAuB,CAAC,CAK/B;IAED,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAI;gBAGvB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB;IAYlD;;OAEG;IACI,KAAK,IAAI,IAAI;IAgBpB;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAIhE,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAGvB;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqFzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IASnB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAsDlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAWjC;;OAEG;IACI,eAAe,IAAI,IAAI;IAc9B;;OAEG;IACI,gBAAgB,IAAI,IAAI;IAW/B;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3C;;;OAGG;IACI,WAAW,IAAI,aAAa;IAwBnC;;OAEG;IACH,oBAAoB,IAAI;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,OAAO,CAAA;KACtB,GAAG,SAAS;IAIb;;OAEG;IACH,eAAe,IAAI;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GAAG,SAAS;CAGd"}