homebridge 2.0.0-alpha.7 → 2.0.0-alpha.71

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 (112) hide show
  1. package/README.md +1 -1
  2. package/bin/homebridge.js +22 -0
  3. package/dist/api.d.ts +250 -3
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +92 -0
  6. package/dist/api.js.map +1 -1
  7. package/dist/bridgeService.d.ts +11 -3
  8. package/dist/bridgeService.d.ts.map +1 -1
  9. package/dist/bridgeService.js +9 -5
  10. package/dist/bridgeService.js.map +1 -1
  11. package/dist/childBridgeFork.d.ts +30 -3
  12. package/dist/childBridgeFork.d.ts.map +1 -1
  13. package/dist/childBridgeFork.js +278 -5
  14. package/dist/childBridgeFork.js.map +1 -1
  15. package/dist/childBridgeService.d.ts +22 -0
  16. package/dist/childBridgeService.d.ts.map +1 -1
  17. package/dist/childBridgeService.js +85 -26
  18. package/dist/childBridgeService.js.map +1 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +3 -2
  21. package/dist/cli.js.map +1 -1
  22. package/dist/externalPortService.d.ts +27 -6
  23. package/dist/externalPortService.d.ts.map +1 -1
  24. package/dist/externalPortService.js +73 -7
  25. package/dist/externalPortService.js.map +1 -1
  26. package/dist/index.d.ts +48 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +15 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/ipcService.d.ts +20 -0
  31. package/dist/ipcService.d.ts.map +1 -1
  32. package/dist/ipcService.js.map +1 -1
  33. package/dist/logger.d.ts +6 -0
  34. package/dist/logger.d.ts.map +1 -1
  35. package/dist/logger.js +8 -0
  36. package/dist/logger.js.map +1 -1
  37. package/dist/matter/index.d.ts +123 -0
  38. package/dist/matter/index.d.ts.map +1 -0
  39. package/dist/matter/index.js +19 -0
  40. package/dist/matter/index.js.map +1 -0
  41. package/dist/matter/matterAccessoryCache.d.ts +77 -0
  42. package/dist/matter/matterAccessoryCache.d.ts.map +1 -0
  43. package/dist/matter/matterAccessoryCache.js +176 -0
  44. package/dist/matter/matterAccessoryCache.js.map +1 -0
  45. package/dist/matter/matterBehaviors.d.ts +177 -0
  46. package/dist/matter/matterBehaviors.d.ts.map +1 -0
  47. package/dist/matter/matterBehaviors.js +639 -0
  48. package/dist/matter/matterBehaviors.js.map +1 -0
  49. package/dist/matter/matterConfigValidator.d.ts +81 -0
  50. package/dist/matter/matterConfigValidator.d.ts.map +1 -0
  51. package/dist/matter/matterConfigValidator.js +240 -0
  52. package/dist/matter/matterConfigValidator.js.map +1 -0
  53. package/dist/matter/matterErrorHandler.d.ts +94 -0
  54. package/dist/matter/matterErrorHandler.d.ts.map +1 -0
  55. package/dist/matter/matterErrorHandler.js +485 -0
  56. package/dist/matter/matterErrorHandler.js.map +1 -0
  57. package/dist/matter/matterLogFormatter.d.ts +19 -0
  58. package/dist/matter/matterLogFormatter.d.ts.map +1 -0
  59. package/dist/matter/matterLogFormatter.js +126 -0
  60. package/dist/matter/matterLogFormatter.js.map +1 -0
  61. package/dist/matter/matterNetworkMonitor.d.ts +68 -0
  62. package/dist/matter/matterNetworkMonitor.d.ts.map +1 -0
  63. package/dist/matter/matterNetworkMonitor.js +249 -0
  64. package/dist/matter/matterNetworkMonitor.js.map +1 -0
  65. package/dist/matter/matterServer.d.ts +644 -0
  66. package/dist/matter/matterServer.d.ts.map +1 -0
  67. package/dist/matter/matterServer.js +1460 -0
  68. package/dist/matter/matterServer.js.map +1 -0
  69. package/dist/matter/matterServerHelpers.d.ts +76 -0
  70. package/dist/matter/matterServerHelpers.d.ts.map +1 -0
  71. package/dist/matter/matterServerHelpers.js +298 -0
  72. package/dist/matter/matterServerHelpers.js.map +1 -0
  73. package/dist/matter/matterSharedTypes.d.ts +165 -0
  74. package/dist/matter/matterSharedTypes.d.ts.map +1 -0
  75. package/dist/matter/matterSharedTypes.js +51 -0
  76. package/dist/matter/matterSharedTypes.js.map +1 -0
  77. package/dist/matter/matterStorage.d.ts +126 -0
  78. package/dist/matter/matterStorage.d.ts.map +1 -0
  79. package/dist/matter/matterStorage.js +419 -0
  80. package/dist/matter/matterStorage.js.map +1 -0
  81. package/dist/matter/matterTypes.d.ts +668 -0
  82. package/dist/matter/matterTypes.d.ts.map +1 -0
  83. package/dist/matter/matterTypes.js +174 -0
  84. package/dist/matter/matterTypes.js.map +1 -0
  85. package/dist/platformAccessory.d.ts +1 -0
  86. package/dist/platformAccessory.d.ts.map +1 -1
  87. package/dist/platformAccessory.js +8 -1
  88. package/dist/platformAccessory.js.map +1 -1
  89. package/dist/plugin.d.ts +0 -1
  90. package/dist/plugin.d.ts.map +1 -1
  91. package/dist/plugin.js +8 -11
  92. package/dist/plugin.js.map +1 -1
  93. package/dist/pluginManager.d.ts.map +1 -1
  94. package/dist/pluginManager.js +22 -21
  95. package/dist/pluginManager.js.map +1 -1
  96. package/dist/server.d.ts +23 -1
  97. package/dist/server.d.ts.map +1 -1
  98. package/dist/server.js +374 -10
  99. package/dist/server.js.map +1 -1
  100. package/dist/storageService.js +8 -8
  101. package/dist/storageService.js.map +1 -1
  102. package/dist/user.d.ts +1 -0
  103. package/dist/user.d.ts.map +1 -1
  104. package/dist/user.js +10 -7
  105. package/dist/user.js.map +1 -1
  106. package/dist/util/mac.d.ts.map +1 -1
  107. package/dist/util/mac.js +2 -2
  108. package/dist/util/mac.js.map +1 -1
  109. package/dist/version.js +2 -2
  110. package/dist/version.js.map +1 -1
  111. package/package.json +23 -22
  112. package/bin/homebridge +0 -19
@@ -1,5 +1,5 @@
1
- import child_process from 'node:child_process';
2
- import path, { dirname } from 'node:path';
1
+ import { fork } from 'node:child_process';
2
+ import { dirname, resolve } from 'node:path';
3
3
  import process from 'node:process';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import fs from 'fs-extra';
@@ -81,9 +81,12 @@ export class ChildBridgeService {
81
81
  pairedStatus = null;
82
82
  manuallyStopped = false;
83
83
  setupUri = null;
84
+ matterCommissioningInfo;
84
85
  pluginConfig = [];
85
86
  log;
86
87
  displayName;
88
+ restartCount = 0;
89
+ maxRestarts = 4;
87
90
  constructor(type, identifier, plugin, bridgeConfig, homebridgeConfig, homebridgeOptions, api, ipcService, externalPortService) {
88
91
  this.type = type;
89
92
  this.identifier = identifier;
@@ -139,22 +142,18 @@ export class ChildBridgeService {
139
142
  */
140
143
  startChildProcess() {
141
144
  this.bridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
142
- this.child = child_process.fork(path.resolve(__dirname, 'childBridgeFork.js'), this.args, this.processEnv);
145
+ this.child = fork(resolve(__dirname, 'childBridgeFork.js'), this.args, this.processEnv);
143
146
  this.child.stdout?.on('data', (data) => {
144
147
  process.stdout.write(data);
145
148
  });
146
149
  this.child.stderr?.on('data', (data) => {
147
150
  process.stderr.write(data);
148
151
  });
149
- this.child.on('exit', () => {
150
- this.log.warn('Child bridge process ended');
151
- });
152
152
  this.child.on('error', (e) => {
153
153
  this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
154
- this.log.error('Child process error', e);
154
+ this.log.error('Child bridge process error', e);
155
155
  });
156
156
  this.child.once('close', (code, signal) => {
157
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
158
157
  this.handleProcessClose(code, signal);
159
158
  });
160
159
  // handle incoming ipc messages from the child process
@@ -164,17 +163,17 @@ export class ChildBridgeService {
164
163
  }
165
164
  switch (message.id) {
166
165
  case "ready" /* ChildProcessMessageEventType.READY */: {
167
- this.log(`Launched child bridge with PID ${this.child?.pid}`);
166
+ this.log(`Child bridge starting${this.child?.pid ? ` (pid ${this.child.pid})` : ''}...`);
168
167
  this.loadPlugin();
169
168
  break;
170
169
  }
171
170
  case "loaded" /* ChildProcessMessageEventType.LOADED */: {
172
171
  const version = message.data.version;
173
172
  if (this.pluginConfig.length > 1) {
174
- this.log(`Loaded ${this.plugin.getPluginIdentifier()} v${version} child bridge successfully with ${this.pluginConfig.length} accessories`);
173
+ this.log.success(`Child bridge started successfully with ${this.pluginConfig.length} accessories (plugin v${version}).`);
175
174
  }
176
175
  else {
177
- this.log(`Loaded ${this.plugin.getPluginIdentifier()} v${version} child bridge successfully`);
176
+ this.log.success(`Child bridge started successfully (plugin v${version}).`);
178
177
  }
179
178
  this.startBridge();
180
179
  break;
@@ -188,8 +187,22 @@ export class ChildBridgeService {
188
187
  break;
189
188
  }
190
189
  case "status" /* ChildProcessMessageEventType.STATUS_UPDATE */: {
191
- this.pairedStatus = message.data.paired;
192
- this.setupUri = message.data.setupUri;
190
+ // Handle unified status update with HAP and Matter info
191
+ const statusData = message.data;
192
+ // Update HAP status
193
+ this.pairedStatus = statusData.paired;
194
+ this.setupUri = statusData.setupUri;
195
+ // Update Matter commissioning info if included
196
+ if (statusData.matter) {
197
+ this.matterCommissioningInfo = {
198
+ qrCode: statusData.matter.qrCode,
199
+ manualPairingCode: statusData.matter.manualPairingCode,
200
+ serialNumber: statusData.matter.serialNumber,
201
+ commissioned: statusData.matter.commissioned || false,
202
+ deviceCount: statusData.matter.deviceCount,
203
+ };
204
+ }
205
+ // Send unified status update
193
206
  this.sendStatusUpdate();
194
207
  break;
195
208
  }
@@ -202,13 +215,35 @@ export class ChildBridgeService {
202
215
  * @param signal
203
216
  */
204
217
  handleProcessClose(code, signal) {
205
- this.log(`Process Ended. Code: ${code}, Signal: ${signal}`);
206
- setTimeout(() => {
207
- if (!this.shuttingDown) {
208
- this.log('Restarting Process...');
209
- this.startChildProcess();
218
+ const isLikelyPluginCrash = code === 1 && signal === null;
219
+ this.log.warn(`Child bridge ended (code ${code}, signal ${signal}).${isLikelyPluginCrash
220
+ ? ' The child bridge ended unexpectedly, which is normally due to the plugin not catching its errors properly. Please report this to the plugin developer by clicking on the'
221
+ + ' \'Report An Issue\' option in the plugin menu dropdown from the Homebridge UI. If there are related logs shown above, please include them in your report.'
222
+ : ''}`);
223
+ if (isLikelyPluginCrash) {
224
+ if (this.restartCount < this.maxRestarts) {
225
+ this.bridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
226
+ this.restartCount += 1;
227
+ const delay = this.restartCount * 10; // first attempt after 10 seconds, second after 20 seconds, etc.
228
+ this.log(`Child bridge will automatically restart in ${delay} seconds (restart attempt ${this.restartCount} of ${this.maxRestarts}).`);
229
+ setTimeout(() => {
230
+ if (!this.shuttingDown) {
231
+ this.startChildProcess();
232
+ }
233
+ }, delay * 1000);
210
234
  }
211
- }, 7000);
235
+ else {
236
+ this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
237
+ this.manuallyStopped = true;
238
+ this.log.error(`Child bridge will no longer restart after failing ${this.maxRestarts + 1} times, you will need to manually start this child bridge from the Homebridge UI.`);
239
+ }
240
+ return;
241
+ }
242
+ if (!this.shuttingDown) {
243
+ this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
244
+ this.restartCount = 0;
245
+ this.startChildProcess();
246
+ }
212
247
  }
213
248
  /**
214
249
  * Helper function to send a message to the child process
@@ -228,7 +263,7 @@ export class ChildBridgeService {
228
263
  * These will be passed through to the forked process
229
264
  */
230
265
  setProcessFlags() {
231
- if (this.homebridgeOptions.debugModeEnabled) {
266
+ if (this.bridgeConfig.debugModeEnabled) {
232
267
  this.args.push('-D');
233
268
  }
234
269
  if (this.homebridgeOptions.forceColourLogging) {
@@ -278,6 +313,8 @@ export class ChildBridgeService {
278
313
  manufacturer: this.bridgeConfig.manufacturer || this.homebridgeConfig.bridge.manufacturer,
279
314
  model: this.bridgeConfig.model || this.homebridgeConfig.bridge.model,
280
315
  firmwareRevision: this.bridgeConfig.firmwareRevision || this.homebridgeConfig.bridge.firmwareRevision,
316
+ serialNumber: this.bridgeConfig.serialNumber || this.bridgeConfig.username,
317
+ matter: this.bridgeConfig.matter,
281
318
  };
282
319
  const bridgeOptions = {
283
320
  cachedAccessoriesDir: User.cachedAccessoryPath(),
@@ -285,6 +322,10 @@ export class ChildBridgeService {
285
322
  };
286
323
  // shallow copy the homebridge options to the bridge options object
287
324
  Object.assign(bridgeOptions, this.homebridgeOptions);
325
+ // Override with child bridge specific settings
326
+ if (this.bridgeConfig.debugModeEnabled !== undefined) {
327
+ bridgeOptions.debugModeEnabled = this.bridgeConfig.debugModeEnabled;
328
+ }
288
329
  this.sendMessage("load" /* ChildProcessMessageEventType.LOAD */, {
289
330
  type: this.type,
290
331
  identifier: this.identifier,
@@ -311,7 +352,15 @@ export class ChildBridgeService {
311
352
  * Handle external port requests from child
312
353
  */
313
354
  async handlePortRequest(request) {
314
- const port = await this.externalPortService.requestPort(request.username);
355
+ let port;
356
+ if (request.portType === 'matter') {
357
+ // Request from Matter port pool
358
+ port = await this.externalPortService.requestMatterPort(request.username);
359
+ }
360
+ else {
361
+ // Request from HAP port pool (default)
362
+ port = await this.externalPortService.requestPort(request.username);
363
+ }
315
364
  this.sendMessage("portAllocated" /* ChildProcessMessageEventType.PORT_ALLOCATED */, {
316
365
  username: request.username,
317
366
  port,
@@ -337,10 +386,11 @@ export class ChildBridgeService {
337
386
  */
338
387
  restartChildBridge() {
339
388
  if (this.manuallyStopped) {
389
+ this.restartCount = 0;
340
390
  this.startChildBridge();
341
391
  }
342
392
  else {
343
- this.log.warn('Restarting child bridge...');
393
+ this.log.warn('Child bridge restarting...');
344
394
  this.refreshConfig();
345
395
  this.teardown();
346
396
  }
@@ -350,14 +400,16 @@ export class ChildBridgeService {
350
400
  */
351
401
  stopChildBridge() {
352
402
  if (!this.shuttingDown) {
353
- this.log.warn('Stopping child bridge (will not restart)...');
403
+ this.log.warn('Child bridge stopping, will not restart.');
354
404
  this.shuttingDown = true;
355
405
  this.manuallyStopped = true;
406
+ this.restartCount = 0;
407
+ this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
356
408
  this.child?.removeAllListeners('close');
357
409
  this.teardown();
358
410
  }
359
411
  else {
360
- this.log.warn('Bridge already shutting down or stopped.');
412
+ this.log.warn('Child bridge already shutting down or stopped.');
361
413
  }
362
414
  }
363
415
  /**
@@ -365,14 +417,13 @@ export class ChildBridgeService {
365
417
  */
366
418
  startChildBridge() {
367
419
  if (this.manuallyStopped && this.bridgeStatus === "down" /* ChildBridgeStatus.DOWN */ && (!this.child || !this.child.connected)) {
368
- this.log.warn('Starting child bridge...');
369
420
  this.refreshConfig();
370
421
  this.startChildProcess();
371
422
  this.shuttingDown = false;
372
423
  this.manuallyStopped = false;
373
424
  }
374
425
  else {
375
- this.log.warn('Cannot start child bridge, it is still running or was not manually stopped');
426
+ this.log.warn('Child bridge cannot be started, it is still running or was not manually stopped.');
376
427
  }
377
428
  }
378
429
  /**
@@ -415,12 +466,20 @@ export class ChildBridgeService {
415
466
  paired: this.pairedStatus,
416
467
  setupUri: this.setupUri,
417
468
  username: this.bridgeConfig.username,
469
+ port: this.bridgeConfig.port,
418
470
  pin: this.bridgeConfig.pin || this.homebridgeConfig.bridge.pin,
419
471
  name: this.bridgeConfig.name || this.displayName || this.plugin.getPluginIdentifier(),
420
472
  plugin: this.plugin.getPluginIdentifier(),
421
473
  identifier: this.identifier,
422
474
  pid: this.child?.pid,
423
475
  manuallyStopped: this.manuallyStopped,
476
+ matterConfig: this.bridgeConfig.matter,
477
+ matterIdentifier: this.bridgeConfig.matter ? this.bridgeConfig.username : undefined,
478
+ matterSetupUri: this.matterCommissioningInfo?.qrCode,
479
+ matterPin: this.matterCommissioningInfo?.manualPairingCode,
480
+ matterSerialNumber: this.matterCommissioningInfo?.serialNumber,
481
+ matterCommissioned: this.matterCommissioningInfo?.commissioned,
482
+ matterDeviceCount: this.matterCommissioningInfo?.deviceCount,
424
483
  };
425
484
  }
426
485
  }
@@ -1 +1 @@
1
- {"version":3,"file":"childBridgeService.js","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"childBridgeService.js","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AASA,OAAO,gCAAgC,CAAA;AAiBvC,MAAM,CAAC,OAAO,UAAU,GAAG,IAAI,IAAI,CAqFlC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAeA,OAAO,gCAAgC,CAAA;AAYvC,MAAM,CAAC,OAAO,UAAU,GAAG,IAAI,IAAI,CAsFlC"}
package/dist/cli.js CHANGED
@@ -3,15 +3,15 @@ import process from 'node:process';
3
3
  import { Command } from 'commander';
4
4
  import { HAPStorage } from 'hap-nodejs';
5
5
  import { satisfies } from 'semver';
6
- import 'source-map-support/register.js';
7
6
  import { Logger } from './logger.js';
8
7
  import { Server } from './server.js';
9
8
  import { User } from './user.js';
10
9
  import getVersion, { getRequiredNodeVersion } from './version.js';
10
+ import 'source-map-support/register.js';
11
11
  const log = Logger.internal;
12
12
  const requiredNodeVersion = getRequiredNodeVersion();
13
13
  if (requiredNodeVersion && !satisfies(process.version, requiredNodeVersion)) {
14
- log.warn(`Homebridge requires Node.js version of ${requiredNodeVersion} which does \
14
+ log.warn(`Homebridge requires a Node.js version of ${requiredNodeVersion} which does \
15
15
  not satisfy the current Node.js version of ${process.version}. You may need to upgrade your installation of Node.js - see https://homebridge.io/w/JTKEF`);
16
16
  }
17
17
  export default function cli() {
@@ -28,6 +28,7 @@ export default function cli() {
28
28
  const program = new Command();
29
29
  program
30
30
  .version(getVersion())
31
+ .allowExcessArguments()
31
32
  .option('-C, --color', 'force color in logging', () => forceColourLogging = true)
32
33
  .option('-D, --debug', 'turn on debug level logging', () => debugModeEnabled = true)
33
34
  .option('-I, --insecure', 'allow unauthenticated requests (for easier hacking)', () => insecureAccess = true)
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,mBAAmB;AAInB,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,gCAAgC,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,UAAU,EAAE,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAIjE,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAA;AAE3B,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;AACpD,IAAI,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC;IAC5E,GAAG,CAAC,IAAI,CAAC,0CAA0C,mBAAmB;6CAC3B,OAAO,CAAC,OAAO,4FAA4F,CAAC,CAAA;AACzJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,GAAG;IACzB,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,IAAI,gBAAoC,CAAA;IACxC,IAAI,sBAAsB,GAAG,KAAK,CAAA;IAClC,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAC5B,IAAI,kBAAkB,GAAG,KAAK,CAAA;IAC9B,IAAI,iBAAqC,CAAA;IAEzC,IAAI,YAAY,GAAG,KAAK,CAAA;IAExB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,OAAO;SACJ,OAAO,CAAC,UAAU,EAAE,CAAC;SACrB,MAAM,CAAC,aAAa,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChF,MAAM,CAAC,aAAa,EAAE,6BAA6B,EAAE,GAAG,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACnF,MAAM,CAAC,gBAAgB,EAAE,qDAAqD,EAAE,GAAG,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5G,MAAM,CAAC,0BAA0B,EAAE,kHAAkH,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACvL,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;SACpF,MAAM,CAAC,oBAAoB,EAAE,uEAAuE,EAAE,GAAG,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;SAC/H,MAAM,CAAC,oBAAoB,EAAE,oCAAoC,EAAE,GAAG,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;SAChG,MAAM,CAAC,gCAAgC,EAAE,0FAA0F,EAAE,IAAI,CAAC,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC;SACtK,MAAM,CAAC,4BAA4B,EAAE,iGAAiG,EAAE,GAAG,EAAE,CAAC,sBAAsB,GAAG,IAAI,CAAC;SAC5K,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtB,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;IACxC,CAAC;IAED,wDAAwD;IACxD,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAsB;QACjC,6BAA6B,EAAE,WAAW;QAC1C,cAAc;QACd,UAAU;QACV,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB;KACvB,CAAA;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;IAElC,MAAM,aAAa,GAAG,CAAC,MAAe,EAAE,SAAiB,EAAQ,EAAE;QACjE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QACD,YAAY,GAAG,IAAI,CAAA;QAEnB,GAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAA;QACvD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;QAErD,MAAM,CAAC,QAAQ,EAAE,CAAA;IACnB,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IAChE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IAEnE,MAAM,YAAY,GAAG,CAAC,KAAY,EAAQ,EAAE;QAC1C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -5,29 +5,50 @@ export interface ExternalPortsConfiguration {
5
5
  end: number;
6
6
  }
7
7
  /**
8
- * Allocates ports from the user defined `config.ports` option
8
+ * Allocates ports from the user defined `config.ports` and `config.matterPorts` options
9
9
  * This service is used to allocate ports for external accessories on the main bridge, and child bridges.
10
+ * HAP ports and Matter ports are managed separately with their own ranges.
10
11
  */
11
12
  export declare class ExternalPortService {
12
13
  private externalPorts?;
14
+ private matterPorts?;
13
15
  private nextExternalPort?;
16
+ private nextMatterPort?;
14
17
  private allocatedPorts;
15
- constructor(externalPorts?: ExternalPortsConfiguration | undefined);
18
+ private allocatedMatterPorts;
19
+ constructor(externalPorts?: ExternalPortsConfiguration | undefined, matterPorts?: ExternalPortsConfiguration | undefined);
16
20
  /**
17
- * Returns the next available port in the external port config.
18
- * If the external port is not configured by the user it will return null.
19
- * If the port range has been exhausted it will return null.
21
+ * Returns the next available HAP port in the external port config.
22
+ * If the external port is not configured by the user it will return undefined.
23
+ * If the port range has been exhausted it will return undefined.
20
24
  */
21
25
  requestPort(username: MacAddress): Promise<number | undefined>;
26
+ /**
27
+ * Returns the next available Matter port in the Matter port config.
28
+ * If Matter ports are not configured, falls back to range 5530-5541.
29
+ * If the port range has been exhausted it will return undefined.
30
+ *
31
+ * @param uuid - Unique identifier for the Matter accessory (can be accessory UUID or other unique string)
32
+ */
33
+ requestMatterPort(uuid: string): Promise<number | undefined>;
34
+ /**
35
+ * Get an unused Matter port without allocating it.
36
+ * Useful for UI/API to get a suggested port.
37
+ * Falls back to random port in range 5530-5541 if no port range configured.
38
+ */
39
+ getUnusedMatterPort(): number;
22
40
  private getNextFreePort;
41
+ private getNextFreeMatterPort;
23
42
  }
24
43
  /**
25
44
  * This is the child bridge version of the port allocation service.
26
- * It requests a free port from the main bridge's port service.
45
+ * It requests free ports from the main bridge's port service via IPC.
27
46
  */
28
47
  export declare class ChildBridgeExternalPortService extends ExternalPortService {
29
48
  private childBridge;
30
49
  constructor(childBridge: ChildBridgeFork);
31
50
  requestPort(username: MacAddress): Promise<number | undefined>;
51
+ requestMatterPort(uniqueId: string): Promise<number | undefined>;
52
+ getUnusedMatterPort(): number;
32
53
  }
33
54
  //# sourceMappingURL=externalPortService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"externalPortService.d.ts","sourceRoot":"","sources":["../src/externalPortService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAI3D,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,aAAa,CAAC;IAJxB,OAAO,CAAC,gBAAgB,CAAC,CAAQ;IACjC,OAAO,CAAC,cAAc,CAAiD;gBAG7D,aAAa,CAAC,EAAE,0BAA0B,YAAA;IAGpD;;;;OAIG;IACU,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAa3E,OAAO,CAAC,eAAe;CAoBxB;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,mBAAmB;IAEnE,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,eAAe;IAKzB,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG5E"}
1
+ {"version":3,"file":"externalPortService.d.ts","sourceRoot":"","sources":["../src/externalPortService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAI3D,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAO5B,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAC;IAPtB,OAAO,CAAC,gBAAgB,CAAC,CAAQ;IACjC,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,oBAAoB,CAA6C;gBAG/D,aAAa,CAAC,EAAE,0BAA0B,YAAA,EAC1C,WAAW,CAAC,EAAE,0BAA0B,YAAA;IAGlD;;;;OAIG;IACU,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAa3E;;;;;;OAMG;IACU,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAazE;;;;OAIG;IACI,mBAAmB,IAAI,MAAM;IAgBpC,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,qBAAqB;CAsB9B;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,mBAAmB;IAEnE,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,eAAe;IAKzB,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9D,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKtE,mBAAmB,IAAI,MAAM;CAIrC"}
@@ -1,19 +1,24 @@
1
1
  import { Logger } from './logger.js';
2
2
  /**
3
- * Allocates ports from the user defined `config.ports` option
3
+ * Allocates ports from the user defined `config.ports` and `config.matterPorts` options
4
4
  * This service is used to allocate ports for external accessories on the main bridge, and child bridges.
5
+ * HAP ports and Matter ports are managed separately with their own ranges.
5
6
  */
6
7
  export class ExternalPortService {
7
8
  externalPorts;
9
+ matterPorts;
8
10
  nextExternalPort;
11
+ nextMatterPort;
9
12
  allocatedPorts = new Map();
10
- constructor(externalPorts) {
13
+ allocatedMatterPorts = new Map();
14
+ constructor(externalPorts, matterPorts) {
11
15
  this.externalPorts = externalPorts;
16
+ this.matterPorts = matterPorts;
12
17
  }
13
18
  /**
14
- * Returns the next available port in the external port config.
15
- * If the external port is not configured by the user it will return null.
16
- * If the port range has been exhausted it will return null.
19
+ * Returns the next available HAP port in the external port config.
20
+ * If the external port is not configured by the user it will return undefined.
21
+ * If the port range has been exhausted it will return undefined.
17
22
  */
18
23
  async requestPort(username) {
19
24
  // check to see if this device has already requested an external port
@@ -26,6 +31,42 @@ export class ExternalPortService {
26
31
  this.allocatedPorts.set(username, port);
27
32
  return port;
28
33
  }
34
+ /**
35
+ * Returns the next available Matter port in the Matter port config.
36
+ * If Matter ports are not configured, falls back to range 5530-5541.
37
+ * If the port range has been exhausted it will return undefined.
38
+ *
39
+ * @param uuid - Unique identifier for the Matter accessory (can be accessory UUID or other unique string)
40
+ */
41
+ async requestMatterPort(uuid) {
42
+ // check to see if this accessory has already requested a Matter port
43
+ const existingPortAllocation = this.allocatedMatterPorts.get(uuid);
44
+ if (existingPortAllocation) {
45
+ return existingPortAllocation;
46
+ }
47
+ // get the next unused Matter port
48
+ const port = this.getNextFreeMatterPort();
49
+ this.allocatedMatterPorts.set(uuid, port);
50
+ return port;
51
+ }
52
+ /**
53
+ * Get an unused Matter port without allocating it.
54
+ * Useful for UI/API to get a suggested port.
55
+ * Falls back to random port in range 5530-5541 if no port range configured.
56
+ */
57
+ getUnusedMatterPort() {
58
+ if (!this.matterPorts) {
59
+ // Fallback to Matter default range if not configured
60
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
61
+ }
62
+ // Try to find an unused port in the configured range
63
+ const port = this.getNextFreeMatterPort();
64
+ if (port) {
65
+ return port;
66
+ }
67
+ // If all ports exhausted, return random from configured range
68
+ return Math.floor(Math.random() * (this.matterPorts.end - this.matterPorts.start + 1) + this.matterPorts.start);
69
+ }
29
70
  getNextFreePort() {
30
71
  if (!this.externalPorts) {
31
72
  return undefined;
@@ -38,13 +79,30 @@ export class ExternalPortService {
38
79
  if (this.nextExternalPort <= this.externalPorts.end) {
39
80
  return this.nextExternalPort;
40
81
  }
41
- Logger.internal.warn('External port pool ran out of ports. Falling back to random port assignment.');
82
+ Logger.internal.warn('External HAP port pool ran out of ports. Falling back to random port assignment.');
42
83
  return undefined;
43
84
  }
85
+ getNextFreeMatterPort() {
86
+ if (!this.matterPorts) {
87
+ // Fallback to Matter default range
88
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
89
+ }
90
+ if (this.nextMatterPort === undefined) {
91
+ this.nextMatterPort = this.matterPorts.start;
92
+ return this.nextMatterPort;
93
+ }
94
+ this.nextMatterPort++;
95
+ if (this.nextMatterPort <= this.matterPorts.end) {
96
+ return this.nextMatterPort;
97
+ }
98
+ Logger.internal.warn('Matter port pool ran out of ports. Falling back to random port assignment in range 5530-5541.');
99
+ // Fallback to random in default Matter range
100
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
101
+ }
44
102
  }
45
103
  /**
46
104
  * This is the child bridge version of the port allocation service.
47
- * It requests a free port from the main bridge's port service.
105
+ * It requests free ports from the main bridge's port service via IPC.
48
106
  */
49
107
  export class ChildBridgeExternalPortService extends ExternalPortService {
50
108
  childBridge;
@@ -55,5 +113,13 @@ export class ChildBridgeExternalPortService extends ExternalPortService {
55
113
  async requestPort(username) {
56
114
  return await this.childBridge.requestExternalPort(username);
57
115
  }
116
+ async requestMatterPort(uniqueId) {
117
+ // For child bridges, request Matter port from parent via IPC
118
+ return await this.childBridge.requestMatterPort(uniqueId);
119
+ }
120
+ getUnusedMatterPort() {
121
+ // For child bridges without IPC call, return random port in default range
122
+ return Math.floor(Math.random() * (5541 - 5530 + 1) + 5530);
123
+ }
58
124
  }
59
125
  //# sourceMappingURL=externalPortService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"externalPortService.js","sourceRoot":"","sources":["../src/externalPortService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAOpC;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAKpB;IAJF,gBAAgB,CAAS;IACzB,cAAc,GAAwC,IAAI,GAAG,EAAE,CAAA;IAEvE,YACU,aAA0C;QAA1C,kBAAa,GAAb,aAAa,CAA6B;IAChD,CAAC;IAEL;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,QAAoB;QAC3C,qEAAqE;QACrE,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChE,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO,sBAAsB,CAAA;QAC/B,CAAC;QAED,2BAA2B;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAA;YAChD,OAAO,IAAI,CAAC,gBAAgB,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,gBAAgB,CAAA;QAC9B,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAA;QAEpG,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,mBAAmB;IAE3D;IADV,YACU,WAA4B;QAEpC,KAAK,EAAE,CAAA;QAFC,gBAAW,GAAX,WAAW,CAAiB;IAGtC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,QAAoB;QAC3C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"externalPortService.js","sourceRoot":"","sources":["../src/externalPortService.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -18,7 +18,7 @@ export type { AccessoryConfig, BridgeConfiguration, HomebridgeConfig, PlatformCo
18
18
  /**
19
19
  * Export port types
20
20
  */
21
- export type { ExternalPortsConfiguration, } from './externalPortService.js';
21
+ export type { ExternalPortsConfiguration } from './externalPortService.js';
22
22
  /**
23
23
  * Export Logger const enums
24
24
  */
@@ -27,6 +27,52 @@ export { LogLevel } from './logger.js';
27
27
  * Export Logger types
28
28
  */
29
29
  export type { Logger, Logging } from './logger.js';
30
+ /**
31
+ * ═══════════════════════════════════════════════════════════════════════
32
+ * Matter Protocol - Plugin API Exports
33
+ * ═══════════════════════════════════════════════════════════════════════
34
+ */
35
+ /**
36
+ * Matter cluster command request types namespace for type-safe handlers
37
+ * @example
38
+ * ```typescript
39
+ * import type { MatterRequests } from 'homebridge'
40
+ *
41
+ * handlers: {
42
+ * levelControl: {
43
+ * moveToLevel: async (args: MatterRequests.MoveToLevel) => {
44
+ * console.log(`Level: ${args.level}`)
45
+ * }
46
+ * }
47
+ * }
48
+ * ```
49
+ */
50
+ export { MatterRequests } from './matter/index.js';
51
+ /**
52
+ * Matter cache types
53
+ */
54
+ export type { SerializedMatterAccessory } from './matter/matterAccessoryCache.js';
55
+ export type { MatterAccessoriesResponse, MatterAccessoryInfo, MatterBridgeMetadata, MatterCommissioningInfo, MatterServerConfig, } from './matter/matterSharedTypes.js';
56
+ export { ChildMatterMessageType, MatterBridgeStatus } from './matter/matterSharedTypes.js';
57
+ /**
58
+ * Matter accessory and configuration types
59
+ */
60
+ export type { MatterAccessory, MatterClusterHandlers, MatterClusterName, MatterCommandHandler, MatterConfig, } from './matter/matterTypes.js';
61
+ /**
62
+ * Matter device types, clusters, and cluster names
63
+ * Access via api.matter.deviceTypes, api.matter.clusters, api.matter.clusterNames
64
+ */
65
+ export { clusterNames, clusters, devices, deviceTypes } from './matter/matterTypes.js';
66
+ /**
67
+ * ═══════════════════════════════════════════════════════════════════════
68
+ * Matter Protocol - UI Integration Types
69
+ * ═══════════════════════════════════════════════════════════════════════
70
+ */
71
+ /**
72
+ * Matter error types for error handling
73
+ */
74
+ export { MatterCommissioningError, MatterDeviceError, MatterError, MatterErrorType, MatterNetworkError, MatterStorageError, } from './matter/matterTypes.js';
75
+ export type { EndpointType, MatterErrorDetails } from './matter/matterTypes.js';
30
76
  /**
31
77
  * Export Platform Accessory const enums
32
78
  */
@@ -68,7 +114,7 @@ export type { AccessoriesCallback, AccessoryCharacteristicChange, AdditionalAuth
68
114
  /**
69
115
  * Export HAP-NodeJS variables as type only
70
116
  */
71
- export type { LegacyTypes, uuid, } from 'hap-nodejs';
117
+ export type { LegacyTypes, uuid } from 'hap-nodejs';
72
118
  /**
73
119
  * Export HAP-NodeJS functions as type only
74
120
  */