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.
- package/dist/api.d.ts +81 -20
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +71 -11
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +14 -12
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +17 -3
- package/dist/bridgeService.js.map +1 -1
- package/dist/bridgeTypes.d.ts +54 -0
- package/dist/bridgeTypes.d.ts.map +1 -0
- package/dist/bridgeTypes.js +8 -0
- package/dist/bridgeTypes.js.map +1 -0
- package/dist/childBridgeFork.d.ts +23 -0
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +240 -4
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +47 -7
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +67 -2
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +3 -1
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js +2 -0
- package/dist/ipcService.js.map +1 -1
- package/dist/matter/index.d.ts +4 -6
- package/dist/matter/index.d.ts.map +1 -1
- package/dist/matter/index.js +4 -5
- package/dist/matter/index.js.map +1 -1
- package/dist/matter/matterConfigValidator.d.ts +2 -3
- package/dist/matter/matterConfigValidator.d.ts.map +1 -1
- package/dist/matter/matterConfigValidator.js +47 -38
- package/dist/matter/matterConfigValidator.js.map +1 -1
- package/dist/matter/matterErrorHandler.d.ts +6 -25
- package/dist/matter/matterErrorHandler.d.ts.map +1 -1
- package/dist/matter/matterErrorHandler.js +89 -99
- package/dist/matter/matterErrorHandler.js.map +1 -1
- package/dist/matter/matterServer.d.ts +126 -39
- package/dist/matter/matterServer.d.ts.map +1 -1
- package/dist/matter/matterServer.js +528 -226
- package/dist/matter/matterServer.js.map +1 -1
- package/dist/matter/matterSharedTypes.d.ts +16 -38
- package/dist/matter/matterSharedTypes.d.ts.map +1 -1
- package/dist/matter/matterSharedTypes.js +3 -4
- package/dist/matter/matterSharedTypes.js.map +1 -1
- package/dist/matter/matterStorage.d.ts +116 -0
- package/dist/matter/matterStorage.d.ts.map +1 -0
- package/dist/matter/matterStorage.js +442 -0
- package/dist/matter/matterStorage.js.map +1 -0
- package/dist/matter/matterTypes.d.ts +148 -20
- package/dist/matter/matterTypes.d.ts.map +1 -1
- package/dist/matter/matterTypes.js +91 -263
- package/dist/matter/matterTypes.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +4 -2
- package/dist/plugin.js.map +1 -1
- package/dist/server.d.ts +18 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +376 -349
- package/dist/server.js.map +1 -1
- package/dist/user.d.ts +1 -0
- package/dist/user.d.ts.map +1 -1
- package/dist/user.js +3 -0
- package/dist/user.js.map +1 -1
- package/package.json +6 -7
- package/dist/childMatterBridgeFork.d.ts +0 -108
- package/dist/childMatterBridgeFork.d.ts.map +0 -1
- package/dist/childMatterBridgeFork.js +0 -330
- package/dist/childMatterBridgeFork.js.map +0 -1
- package/dist/childMatterBridgeService.d.ts +0 -166
- package/dist/childMatterBridgeService.d.ts.map +0 -1
- package/dist/childMatterBridgeService.js +0 -623
- package/dist/childMatterBridgeService.js.map +0 -1
- package/dist/matter/matterBridge.d.ts +0 -64
- package/dist/matter/matterBridge.d.ts.map +0 -1
- package/dist/matter/matterBridge.js +0 -154
- package/dist/matter/matterBridge.js.map +0 -1
- package/dist/matter/matterDevice.d.ts +0 -107
- package/dist/matter/matterDevice.d.ts.map +0 -1
- package/dist/matter/matterDevice.js +0 -913
- package/dist/matter/matterDevice.js.map +0 -1
- package/dist/matter/portAllocator.d.ts +0 -85
- package/dist/matter/portAllocator.d.ts.map +0 -1
- package/dist/matter/portAllocator.js +0 -296
- package/dist/matter/portAllocator.js.map +0 -1
|
@@ -1,40 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Matter.js Server Implementation for Homebridge Plugin API
|
|
3
|
+
*
|
|
4
|
+
* This provides a Matter bridge that plugins can use to register
|
|
5
|
+
* Matter accessories via the Homebridge API.
|
|
6
|
+
*/
|
|
3
7
|
import { MatterServerConfig } from './matterSharedTypes.js';
|
|
8
|
+
import { clusters, MatterAccessory } from './matterTypes.js';
|
|
4
9
|
export { MatterServerConfig } from './matterSharedTypes.js';
|
|
5
10
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
11
|
+
* Matter Server for Homebridge Plugin API
|
|
12
|
+
* Allows plugins to register Matter accessories explicitly
|
|
8
13
|
*/
|
|
9
14
|
export declare class MatterServer {
|
|
10
15
|
private readonly config;
|
|
11
16
|
private serverNode;
|
|
12
17
|
private aggregator;
|
|
13
|
-
private
|
|
14
|
-
private removedDevices;
|
|
18
|
+
private accessories;
|
|
15
19
|
private isRunning;
|
|
16
|
-
private restartTimer;
|
|
17
|
-
private isRestarting;
|
|
18
20
|
private readonly MAX_DEVICES;
|
|
19
|
-
private readonly MAX_REMOVED_DEVICES;
|
|
20
|
-
private readonly RESTART_DELAY_MS;
|
|
21
21
|
private shutdownHandler;
|
|
22
22
|
private passcode;
|
|
23
23
|
private discriminator;
|
|
24
|
-
private vendorId;
|
|
25
|
-
private productId;
|
|
24
|
+
private readonly vendorId;
|
|
25
|
+
private readonly productId;
|
|
26
26
|
private commissioningInfo;
|
|
27
27
|
private serialNumber?;
|
|
28
28
|
private cleanupHandlers;
|
|
29
|
+
private storageManager;
|
|
30
|
+
private matterStoragePath?;
|
|
29
31
|
constructor(config?: MatterServerConfig);
|
|
30
32
|
/**
|
|
31
33
|
* Generate a secure random passcode
|
|
34
|
+
* According to Matter spec, passcode must be:
|
|
35
|
+
* - 8 digits (00000001 to 99999998)
|
|
36
|
+
* - Not in the invalid list
|
|
37
|
+
* - Not sequential or repeating patterns
|
|
32
38
|
*/
|
|
33
39
|
private generateSecurePasscode;
|
|
40
|
+
/**
|
|
41
|
+
* Validate a passcode according to Matter specifications
|
|
42
|
+
*/
|
|
43
|
+
private isValidPasscode;
|
|
34
44
|
/**
|
|
35
45
|
* Generate a random discriminator
|
|
46
|
+
* According to Matter spec, discriminator must be:
|
|
47
|
+
* - 12 bits (0-4095)
|
|
48
|
+
* - Should be random for security
|
|
36
49
|
*/
|
|
37
50
|
private generateRandomDiscriminator;
|
|
51
|
+
/**
|
|
52
|
+
* Create ServerNode with automatic recovery from corrupted storage
|
|
53
|
+
* If ServerNode creation fails due to corrupted fabric data, automatically
|
|
54
|
+
* clean up the ServerNodeStore and retry once
|
|
55
|
+
*/
|
|
56
|
+
private createServerNodeWithRecovery;
|
|
38
57
|
/**
|
|
39
58
|
* Start the Matter server
|
|
40
59
|
*/
|
|
@@ -43,6 +62,11 @@ export declare class MatterServer {
|
|
|
43
62
|
* Set up and validate storage
|
|
44
63
|
*/
|
|
45
64
|
private setupStorage;
|
|
65
|
+
/**
|
|
66
|
+
* Load or generate commissioning credentials (passcode and discriminator)
|
|
67
|
+
* These must be persistent across restarts to maintain the same QR code
|
|
68
|
+
*/
|
|
69
|
+
private loadOrGenerateCredentials;
|
|
46
70
|
/**
|
|
47
71
|
* Generate serial number for the bridge
|
|
48
72
|
*/
|
|
@@ -56,27 +80,65 @@ export declare class MatterServer {
|
|
|
56
80
|
*/
|
|
57
81
|
private waitForServerReady;
|
|
58
82
|
/**
|
|
59
|
-
*
|
|
83
|
+
* Register a Matter accessory (Plugin API)
|
|
84
|
+
*/
|
|
85
|
+
registerAccessory(accessory: MatterAccessory): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Unregister a Matter accessory (Plugin API)
|
|
88
|
+
*/
|
|
89
|
+
unregisterAccessory(uuid: string): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Update a Matter accessory's state (Plugin API)
|
|
92
|
+
*/
|
|
93
|
+
updateAccessoryState(uuid: string, cluster: string, attributes: Record<string, unknown>): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Get all registered accessories (Plugin API)
|
|
96
|
+
*/
|
|
97
|
+
getAccessories(): MatterAccessory[];
|
|
98
|
+
/**
|
|
99
|
+
* Get a specific accessory by UUID (Plugin API)
|
|
100
|
+
*/
|
|
101
|
+
getAccessory(uuid: string): MatterAccessory | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Configure a Matter endpoint after it's been added to the aggregator
|
|
104
|
+
*/
|
|
105
|
+
private configureEndpoint;
|
|
106
|
+
/**
|
|
107
|
+
* Stop the Matter server
|
|
108
|
+
*/
|
|
109
|
+
stop(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Cleanup resources
|
|
112
|
+
*/
|
|
113
|
+
private cleanup;
|
|
114
|
+
/**
|
|
115
|
+
* Get fabric information for commissioned controllers
|
|
60
116
|
*/
|
|
61
|
-
|
|
117
|
+
getFabricInfo(): Array<{
|
|
118
|
+
fabricIndex: number;
|
|
119
|
+
fabricId: string;
|
|
120
|
+
nodeId: string;
|
|
121
|
+
rootVendorId: number;
|
|
122
|
+
label?: string;
|
|
123
|
+
}>;
|
|
62
124
|
/**
|
|
63
|
-
*
|
|
125
|
+
* Check if the server is commissioned
|
|
64
126
|
*/
|
|
65
|
-
|
|
127
|
+
isCommissioned(): boolean;
|
|
66
128
|
/**
|
|
67
|
-
*
|
|
129
|
+
* Get the number of commissioned fabrics
|
|
68
130
|
*/
|
|
69
|
-
|
|
131
|
+
getCommissionedFabricCount(): number;
|
|
70
132
|
/**
|
|
71
|
-
* Get server information
|
|
133
|
+
* Get server status information
|
|
72
134
|
*/
|
|
73
|
-
|
|
135
|
+
getServerInfo(): {
|
|
74
136
|
running: boolean;
|
|
75
137
|
port: number;
|
|
76
138
|
deviceCount: number;
|
|
77
|
-
|
|
139
|
+
commissioned: boolean;
|
|
140
|
+
fabricCount: number;
|
|
78
141
|
serialNumber?: string;
|
|
79
|
-
commissioned?: boolean;
|
|
80
142
|
};
|
|
81
143
|
/**
|
|
82
144
|
* Get commissioning information
|
|
@@ -84,27 +146,52 @@ export declare class MatterServer {
|
|
|
84
146
|
getCommissioningInfo(): {
|
|
85
147
|
qrCode?: string;
|
|
86
148
|
manualPairingCode?: string;
|
|
149
|
+
serialNumber?: string;
|
|
150
|
+
passcode?: number;
|
|
151
|
+
discriminator?: number;
|
|
87
152
|
commissioned: boolean;
|
|
88
153
|
};
|
|
89
154
|
/**
|
|
90
|
-
*
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
*
|
|
99
|
-
*/
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
*
|
|
103
|
-
*/
|
|
104
|
-
|
|
155
|
+
* Get storage statistics
|
|
156
|
+
*/
|
|
157
|
+
getStorageStats(): Array<{
|
|
158
|
+
entries: number;
|
|
159
|
+
namespace: string;
|
|
160
|
+
path: string;
|
|
161
|
+
}> | null;
|
|
162
|
+
/**
|
|
163
|
+
* Check if server is running
|
|
164
|
+
*/
|
|
165
|
+
isServerRunning(): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Get Matter device types available for plugin use
|
|
168
|
+
*/
|
|
169
|
+
getDeviceTypes(): {
|
|
170
|
+
readonly OnOffLight: import("@matter/node/devices").OnOffLightDevice;
|
|
171
|
+
readonly DimmableLight: import("@matter/node/devices").DimmableLightDevice;
|
|
172
|
+
readonly ColorTemperatureLight: import("@matter/node/devices").ColorTemperatureLightDevice;
|
|
173
|
+
readonly ExtendedColorLight: import("@matter/node/devices").ExtendedColorLightDevice;
|
|
174
|
+
readonly OnOffSwitch: import("@matter/node/devices").OnOffLightSwitchDevice;
|
|
175
|
+
readonly OnOffOutlet: import("@matter/node/devices").OnOffPlugInUnitDevice;
|
|
176
|
+
readonly DimmableOutlet: import("@matter/node/devices").DimmablePlugInUnitDevice;
|
|
177
|
+
readonly TemperatureSensor: import("@matter/node/devices").TemperatureSensorDevice;
|
|
178
|
+
readonly HumiditySensor: import("@matter/node/devices").HumiditySensorDevice;
|
|
179
|
+
readonly LightSensor: import("@matter/node/devices").LightSensorDevice;
|
|
180
|
+
readonly MotionSensor: import("@matter/node/devices").OccupancySensorDevice;
|
|
181
|
+
readonly ContactSensor: import("@matter/node/devices").ContactSensorDevice;
|
|
182
|
+
readonly LeakSensor: import("@matter/node/devices").WaterLeakDetectorDevice;
|
|
183
|
+
readonly SmokeSensor: import("@matter/node/devices").SmokeCoAlarmDevice;
|
|
184
|
+
readonly Thermostat: import("@matter/node/devices").ThermostatDevice;
|
|
185
|
+
readonly Fan: import("@matter/node/devices").FanDevice;
|
|
186
|
+
readonly DoorLock: import("@matter/node/devices").DoorLockDevice;
|
|
187
|
+
readonly WindowCovering: import("@matter/node/devices").WindowCoveringDevice;
|
|
188
|
+
readonly GenericSwitch: import("@matter/node/devices").GenericSwitchDevice;
|
|
189
|
+
readonly Pump: import("@matter/node/devices").PumpDevice;
|
|
190
|
+
readonly RoomAirConditioner: import("@matter/node/devices").RoomAirConditionerDevice;
|
|
191
|
+
};
|
|
105
192
|
/**
|
|
106
|
-
*
|
|
193
|
+
* Get Matter clusters available for plugin use
|
|
107
194
|
*/
|
|
108
|
-
|
|
195
|
+
getClusters(): typeof clusters;
|
|
109
196
|
}
|
|
110
197
|
//# sourceMappingURL=matterServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matterServer.d.ts","sourceRoot":"","sources":["../../src/matter/matterServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"matterServer.d.ts","sourceRoot":"","sources":["../../src/matter/matterServer.ts"],"names":[],"mappings":"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"}
|