homebridge 2.0.0-alpha.40 → 2.0.0-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/config-sample.json +1 -12
  2. package/dist/api.d.ts +4 -20
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +1 -27
  5. package/dist/api.js.map +1 -1
  6. package/dist/bridgeService.d.ts +12 -15
  7. package/dist/bridgeService.d.ts.map +1 -1
  8. package/dist/bridgeService.js +7 -7
  9. package/dist/bridgeService.js.map +1 -1
  10. package/dist/childBridgeService.d.ts +1 -0
  11. package/dist/childBridgeService.d.ts.map +1 -1
  12. package/dist/childBridgeService.js +1 -0
  13. package/dist/childBridgeService.js.map +1 -1
  14. package/dist/childMatterBridgeFork.d.ts +108 -0
  15. package/dist/childMatterBridgeFork.d.ts.map +1 -0
  16. package/dist/childMatterBridgeFork.js +330 -0
  17. package/dist/childMatterBridgeFork.js.map +1 -0
  18. package/dist/childMatterBridgeService.d.ts +166 -0
  19. package/dist/childMatterBridgeService.d.ts.map +1 -0
  20. package/dist/childMatterBridgeService.js +623 -0
  21. package/dist/childMatterBridgeService.js.map +1 -0
  22. package/dist/index.d.ts +8 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/ipcService.d.ts +19 -3
  27. package/dist/ipcService.d.ts.map +1 -1
  28. package/dist/ipcService.js +13 -0
  29. package/dist/ipcService.js.map +1 -1
  30. package/dist/matter/index.d.ts +13 -0
  31. package/dist/matter/index.d.ts.map +1 -0
  32. package/dist/matter/index.js +12 -0
  33. package/dist/matter/index.js.map +1 -0
  34. package/dist/matter/matterBridge.d.ts +64 -0
  35. package/dist/matter/matterBridge.d.ts.map +1 -0
  36. package/dist/matter/matterBridge.js +154 -0
  37. package/dist/matter/matterBridge.js.map +1 -0
  38. package/dist/matter/matterConfigValidator.d.ts +27 -0
  39. package/dist/matter/matterConfigValidator.d.ts.map +1 -0
  40. package/dist/matter/matterConfigValidator.js +162 -0
  41. package/dist/matter/matterConfigValidator.js.map +1 -0
  42. package/dist/matter/matterDevice.d.ts +107 -0
  43. package/dist/matter/matterDevice.d.ts.map +1 -0
  44. package/dist/matter/matterDevice.js +913 -0
  45. package/dist/matter/matterDevice.js.map +1 -0
  46. package/dist/matter/matterDiagnostics.d.ts +121 -0
  47. package/dist/matter/matterDiagnostics.d.ts.map +1 -0
  48. package/dist/matter/matterDiagnostics.js +323 -0
  49. package/dist/matter/matterDiagnostics.js.map +1 -0
  50. package/dist/matter/matterErrorHandler.d.ts +113 -0
  51. package/dist/matter/matterErrorHandler.d.ts.map +1 -0
  52. package/dist/matter/matterErrorHandler.js +482 -0
  53. package/dist/matter/matterErrorHandler.js.map +1 -0
  54. package/dist/matter/matterNetworkMonitor.d.ts +65 -0
  55. package/dist/matter/matterNetworkMonitor.d.ts.map +1 -0
  56. package/dist/matter/matterNetworkMonitor.js +227 -0
  57. package/dist/matter/matterNetworkMonitor.js.map +1 -0
  58. package/dist/matter/matterServer.d.ts +110 -0
  59. package/dist/matter/matterServer.d.ts.map +1 -0
  60. package/dist/matter/matterServer.js +584 -0
  61. package/dist/matter/matterServer.js.map +1 -0
  62. package/dist/matter/matterSharedTypes.d.ts +167 -0
  63. package/dist/matter/matterSharedTypes.d.ts.map +1 -0
  64. package/dist/matter/matterSharedTypes.js +55 -0
  65. package/dist/matter/matterSharedTypes.js.map +1 -0
  66. package/dist/{matterTypes.d.ts → matter/matterTypes.d.ts} +15 -0
  67. package/dist/matter/matterTypes.d.ts.map +1 -0
  68. package/dist/{matterTypes.js → matter/matterTypes.js} +4 -4
  69. package/dist/matter/matterTypes.js.map +1 -0
  70. package/dist/matter/portAllocator.d.ts +85 -0
  71. package/dist/matter/portAllocator.d.ts.map +1 -0
  72. package/dist/matter/portAllocator.js +296 -0
  73. package/dist/matter/portAllocator.js.map +1 -0
  74. package/dist/server.d.ts +9 -3
  75. package/dist/server.d.ts.map +1 -1
  76. package/dist/server.js +363 -31
  77. package/dist/server.js.map +1 -1
  78. package/package.json +10 -10
  79. package/dist/matterConfigValidator.d.ts +0 -34
  80. package/dist/matterConfigValidator.d.ts.map +0 -1
  81. package/dist/matterConfigValidator.js +0 -249
  82. package/dist/matterConfigValidator.js.map +0 -1
  83. package/dist/matterService.d.ts +0 -168
  84. package/dist/matterService.d.ts.map +0 -1
  85. package/dist/matterService.js +0 -677
  86. package/dist/matterService.js.map +0 -1
  87. package/dist/matterTypes.d.ts.map +0 -1
  88. package/dist/matterTypes.js.map +0 -1
  89. package/dist/util/matter-cli.d.ts +0 -3
  90. package/dist/util/matter-cli.d.ts.map +0 -1
  91. package/dist/util/matter-cli.js +0 -211
  92. package/dist/util/matter-cli.js.map +0 -1
@@ -0,0 +1,227 @@
1
+ /* global NodeJS */
2
+ /**
3
+ * Matter Network Monitor
4
+ *
5
+ * Monitors network connectivity and handles recovery
6
+ */
7
+ import * as net from 'node:net';
8
+ import * as os from 'node:os';
9
+ import { Logger } from '../logger.js';
10
+ import { errorHandler, MatterErrorType } from './matterErrorHandler.js';
11
+ const log = Logger.withPrefix('Matter');
12
+ export class MatterNetworkMonitor {
13
+ static instance;
14
+ status;
15
+ checkInterval = null;
16
+ callbacks = new Set();
17
+ checkIntervalMs = 30000; // Check every 30 seconds
18
+ isMonitoring = false;
19
+ stabilityCounter = 0;
20
+ STABILITY_THRESHOLD = 3;
21
+ constructor() {
22
+ this.status = {
23
+ isOnline: true,
24
+ interfaces: [],
25
+ lastCheck: new Date(),
26
+ consecutiveFailures: 0,
27
+ };
28
+ }
29
+ static getInstance() {
30
+ if (!MatterNetworkMonitor.instance) {
31
+ MatterNetworkMonitor.instance = new MatterNetworkMonitor();
32
+ }
33
+ return MatterNetworkMonitor.instance;
34
+ }
35
+ /**
36
+ * Start monitoring network connectivity
37
+ */
38
+ startMonitoring() {
39
+ if (this.isMonitoring) {
40
+ return;
41
+ }
42
+ this.isMonitoring = true;
43
+ log.debug('Starting Matter network monitoring');
44
+ // Initial check (fire-and-forget with error handling)
45
+ this.checkNetworkStatus().catch((error) => {
46
+ log.debug('Error during initial network check:', error);
47
+ });
48
+ // Set up periodic checks
49
+ this.checkInterval = setInterval(() => {
50
+ // Fire-and-forget with error handling
51
+ this.checkNetworkStatus().catch((error) => {
52
+ log.debug('Error during periodic network check:', error);
53
+ });
54
+ }, this.checkIntervalMs);
55
+ // Register recovery callback with error handler
56
+ errorHandler.registerRecoveryCallback(MatterErrorType.NETWORK, async () => this.handleNetworkRecovery());
57
+ }
58
+ /**
59
+ * Stop monitoring
60
+ */
61
+ stopMonitoring() {
62
+ if (this.checkInterval) {
63
+ clearInterval(this.checkInterval);
64
+ this.checkInterval = null;
65
+ }
66
+ this.isMonitoring = false;
67
+ log.debug('Stopped Matter network monitoring');
68
+ }
69
+ /**
70
+ * Check network status
71
+ */
72
+ async checkNetworkStatus() {
73
+ try {
74
+ // Get network interfaces
75
+ const interfaces = this.getActiveInterfaces();
76
+ // Test connectivity with a simple port check
77
+ const isOnline = await this.testConnectivity();
78
+ const previousStatus = this.status.isOnline;
79
+ this.status = {
80
+ isOnline,
81
+ interfaces: interfaces.map(i => i.name),
82
+ primaryInterface: interfaces[0]?.name,
83
+ lastCheck: new Date(),
84
+ consecutiveFailures: isOnline ? 0 : this.status.consecutiveFailures + 1,
85
+ };
86
+ // Notify listeners if status changed
87
+ if (previousStatus !== isOnline) {
88
+ this.notifyStatusChange();
89
+ if (!isOnline) {
90
+ this.stabilityCounter = 0;
91
+ log.warn('Matter network connectivity lost');
92
+ await errorHandler.handleError(new Error('Network connectivity lost'), 'network-monitor');
93
+ }
94
+ else {
95
+ this.stabilityCounter = 0;
96
+ log.info('Matter network connectivity restored');
97
+ errorHandler.resetErrorCount(MatterErrorType.NETWORK);
98
+ }
99
+ }
100
+ else if (isOnline) {
101
+ // Increment stability counter when consistently online
102
+ this.stabilityCounter = Math.min(this.stabilityCounter + 1, this.STABILITY_THRESHOLD);
103
+ }
104
+ // Log warnings for repeated failures
105
+ if (this.status.consecutiveFailures > 3) {
106
+ log.error(`Network has been offline for ${this.status.consecutiveFailures} consecutive checks`);
107
+ }
108
+ }
109
+ catch (error) {
110
+ log.debug('Error checking network status:', error);
111
+ }
112
+ }
113
+ /**
114
+ * Get active network interfaces
115
+ */
116
+ getActiveInterfaces() {
117
+ const interfaces = [];
118
+ const networkInterfaces = os.networkInterfaces();
119
+ for (const [name, addrs] of Object.entries(networkInterfaces)) {
120
+ if (!addrs) {
121
+ continue;
122
+ }
123
+ for (const addr of addrs) {
124
+ // Skip internal (loopback) and non-IPv4 addresses
125
+ if (!addr.internal && addr.family === 'IPv4') {
126
+ interfaces.push({ name, address: addr.address });
127
+ }
128
+ }
129
+ }
130
+ return interfaces;
131
+ }
132
+ /**
133
+ * Test network connectivity with optimizations
134
+ */
135
+ async testConnectivity() {
136
+ // If we recently had a successful check, skip the test
137
+ const timeSinceLastCheck = Date.now() - (this.status.lastCheck?.getTime() || 0);
138
+ if (this.status.isOnline && timeSinceLastCheck < 5000 && this.stabilityCounter >= this.STABILITY_THRESHOLD) {
139
+ log.debug('Skipping connectivity test - recent successful check');
140
+ return true;
141
+ }
142
+ return new Promise((resolve) => {
143
+ const socket = new net.Socket();
144
+ const timeout = 2000; // Reduced timeout for faster failure detection
145
+ const cleanup = () => {
146
+ socket.destroy();
147
+ };
148
+ socket.setTimeout(timeout);
149
+ socket.once('connect', () => {
150
+ cleanup();
151
+ resolve(true);
152
+ });
153
+ socket.once('error', () => {
154
+ cleanup();
155
+ resolve(false);
156
+ });
157
+ socket.once('timeout', () => {
158
+ cleanup();
159
+ resolve(false);
160
+ });
161
+ // Try multiple fallback servers for redundancy
162
+ const servers = [
163
+ { host: '1.1.1.1', port: 53 }, // Cloudflare DNS
164
+ { host: '8.8.8.8', port: 53 }, // Google DNS
165
+ { host: '9.9.9.9', port: 53 }, // Quad9 DNS
166
+ ];
167
+ // Try first server, with fallback logic if needed
168
+ const server = servers[this.status.consecutiveFailures % servers.length];
169
+ socket.connect(server.port, server.host);
170
+ });
171
+ }
172
+ /**
173
+ * Handle network recovery
174
+ */
175
+ async handleNetworkRecovery() {
176
+ log.info('Attempting network recovery...');
177
+ // Force a network check
178
+ await this.checkNetworkStatus();
179
+ if (this.status.isOnline) {
180
+ log.info('Network is online, recovery successful');
181
+ }
182
+ else {
183
+ log.warn('Network still offline, will retry');
184
+ throw new Error('Network recovery failed');
185
+ }
186
+ }
187
+ /**
188
+ * Register a callback for network status changes
189
+ */
190
+ onStatusChange(callback) {
191
+ this.callbacks.add(callback);
192
+ }
193
+ /**
194
+ * Remove a status change callback
195
+ */
196
+ removeStatusChangeCallback(callback) {
197
+ this.callbacks.delete(callback);
198
+ }
199
+ /**
200
+ * Notify all listeners of status change
201
+ */
202
+ notifyStatusChange() {
203
+ for (const callback of this.callbacks) {
204
+ try {
205
+ callback(this.status);
206
+ }
207
+ catch (error) {
208
+ log.debug('Error in network status callback:', error);
209
+ }
210
+ }
211
+ }
212
+ /**
213
+ * Get current network status
214
+ */
215
+ getStatus() {
216
+ return { ...this.status };
217
+ }
218
+ /**
219
+ * Check if network is healthy
220
+ */
221
+ isHealthy() {
222
+ return this.status.isOnline && this.status.consecutiveFailures === 0;
223
+ }
224
+ }
225
+ // Export singleton instance
226
+ export const networkMonitor = MatterNetworkMonitor.getInstance();
227
+ //# sourceMappingURL=matterNetworkMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matterNetworkMonitor.js","sourceRoot":"","sources":["../../src/matter/matterNetworkMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { PlatformAccessory } from '../platformAccessory.js';
2
+ import { MatterDevice } from './matterDevice.js';
3
+ import { MatterServerConfig } from './matterSharedTypes.js';
4
+ export { MatterServerConfig } from './matterSharedTypes.js';
5
+ /**
6
+ * Real Matter.js Server for Homebridge
7
+ * Creates a Matter bridge that exposes HAP accessories to Matter controllers
8
+ */
9
+ export declare class MatterServer {
10
+ private readonly config;
11
+ private serverNode;
12
+ private aggregator;
13
+ private devices;
14
+ private removedDevices;
15
+ private isRunning;
16
+ private restartTimer;
17
+ private isRestarting;
18
+ private readonly MAX_DEVICES;
19
+ private readonly MAX_REMOVED_DEVICES;
20
+ private readonly RESTART_DELAY_MS;
21
+ private shutdownHandler;
22
+ private passcode;
23
+ private discriminator;
24
+ private vendorId;
25
+ private productId;
26
+ private commissioningInfo;
27
+ private serialNumber?;
28
+ private cleanupHandlers;
29
+ constructor(config?: MatterServerConfig);
30
+ /**
31
+ * Generate a secure random passcode
32
+ */
33
+ private generateSecurePasscode;
34
+ /**
35
+ * Generate a random discriminator
36
+ */
37
+ private generateRandomDiscriminator;
38
+ /**
39
+ * Start the Matter server
40
+ */
41
+ start(): Promise<void>;
42
+ /**
43
+ * Set up and validate storage
44
+ */
45
+ private setupStorage;
46
+ /**
47
+ * Generate serial number for the bridge
48
+ */
49
+ private generateSerialNumber;
50
+ /**
51
+ * Generate and display commissioning information
52
+ */
53
+ private generateCommissioningInfo;
54
+ /**
55
+ * Wait for the server to be ready
56
+ */
57
+ private waitForServerReady;
58
+ /**
59
+ * Add a Homebridge accessory as a bridged Matter device
60
+ */
61
+ addAccessory(accessory: PlatformAccessory): Promise<MatterDevice | null>;
62
+ /**
63
+ * Remove a Matter device
64
+ */
65
+ removeAccessory(accessory: PlatformAccessory): Promise<void>;
66
+ /**
67
+ * Schedule a server restart to clean up removed endpoints
68
+ */
69
+ private scheduleRestart;
70
+ /**
71
+ * Get server information
72
+ */
73
+ getInfo(): {
74
+ running: boolean;
75
+ port: number;
76
+ deviceCount: number;
77
+ config: MatterServerConfig;
78
+ serialNumber?: string;
79
+ commissioned?: boolean;
80
+ };
81
+ /**
82
+ * Get commissioning information
83
+ */
84
+ getCommissioningInfo(): {
85
+ qrCode?: string;
86
+ manualPairingCode?: string;
87
+ commissioned: boolean;
88
+ };
89
+ /**
90
+ * Check if the server is commissioned
91
+ */
92
+ isCommissioned(): boolean;
93
+ /**
94
+ * Get all Matter devices
95
+ */
96
+ getDevices(): Map<string, MatterDevice>;
97
+ /**
98
+ * Stop the Matter server
99
+ */
100
+ stop(): Promise<void>;
101
+ /**
102
+ * Cleanup resources
103
+ */
104
+ private cleanup;
105
+ /**
106
+ * Clean up all devices
107
+ */
108
+ private cleanupAllDevices;
109
+ }
110
+ //# sourceMappingURL=matterServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matterServer.d.ts","sourceRoot":"","sources":["../../src/matter/matterServer.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAK3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;;GAGG;AACH,qBAAa,YAAY;IA4BX,OAAO,CAAC,QAAQ,CAAC,MAAM;IA3BnC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,UAAU,CAAmD;IACrE,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,eAAe,CAAqC;IAE5D,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,iBAAiB,CAInB;IAEN,OAAO,CAAC,YAAY,CAAC,CAAQ;IAE7B,OAAO,CAAC,eAAe,CAAwC;gBAElC,MAAM,GAAE,kBAAuB;IAoB5D;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+G5B;;OAEG;YACW,YAAY;IA6C1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;YACW,yBAAyB;IAmDvC;;OAEG;YACW,kBAAkB;IAchC;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAgD9E;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyClE;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACH,OAAO,IAAI;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,kBAAkB,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB;IAqBD;;OAEG;IACH,oBAAoB,IAAI;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,EAAE,OAAO,CAAA;KACtB;IAOD;;OAEG;IACH,cAAc,IAAI,OAAO;IAUzB;;OAEG;IACH,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAIvC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC3B;;OAEG;YACW,OAAO;IA+BrB;;OAEG;YACW,iBAAiB;CAoBhC"}