homebridge 2.0.0-beta.30 → 2.0.0-beta.31
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 +267 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +92 -0
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +4 -2
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +1 -3
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeFork.d.ts +29 -2
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +294 -4
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +19 -0
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +38 -3
- package/dist/childBridgeService.js.map +1 -1
- package/dist/externalPortService.d.ts +27 -6
- package/dist/externalPortService.d.ts.map +1 -1
- package/dist/externalPortService.js +73 -7
- package/dist/externalPortService.js.map +1 -1
- package/dist/index.d.ts +47 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +20 -0
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js.map +1 -1
- package/dist/logger.d.ts +6 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +8 -0
- package/dist/logger.js.map +1 -1
- package/dist/matter/index.d.ts +123 -0
- package/dist/matter/index.d.ts.map +1 -0
- package/dist/matter/index.js +19 -0
- package/dist/matter/index.js.map +1 -0
- package/dist/matter/matterAccessoryCache.d.ts +96 -0
- package/dist/matter/matterAccessoryCache.d.ts.map +1 -0
- package/dist/matter/matterAccessoryCache.js +192 -0
- package/dist/matter/matterAccessoryCache.js.map +1 -0
- package/dist/matter/matterBehaviors.d.ts +194 -0
- package/dist/matter/matterBehaviors.d.ts.map +1 -0
- package/dist/matter/matterBehaviors.js +665 -0
- package/dist/matter/matterBehaviors.js.map +1 -0
- package/dist/matter/matterConfigValidator.d.ts +81 -0
- package/dist/matter/matterConfigValidator.d.ts.map +1 -0
- package/dist/matter/matterConfigValidator.js +240 -0
- package/dist/matter/matterConfigValidator.js.map +1 -0
- package/dist/matter/matterErrorHandler.d.ts +106 -0
- package/dist/matter/matterErrorHandler.d.ts.map +1 -0
- package/dist/matter/matterErrorHandler.js +495 -0
- package/dist/matter/matterErrorHandler.js.map +1 -0
- package/dist/matter/matterLogFormatter.d.ts +19 -0
- package/dist/matter/matterLogFormatter.d.ts.map +1 -0
- package/dist/matter/matterLogFormatter.js +144 -0
- package/dist/matter/matterLogFormatter.js.map +1 -0
- package/dist/matter/matterNetworkMonitor.d.ts +68 -0
- package/dist/matter/matterNetworkMonitor.d.ts.map +1 -0
- package/dist/matter/matterNetworkMonitor.js +249 -0
- package/dist/matter/matterNetworkMonitor.js.map +1 -0
- package/dist/matter/matterServer.d.ts +656 -0
- package/dist/matter/matterServer.d.ts.map +1 -0
- package/dist/matter/matterServer.js +1690 -0
- package/dist/matter/matterServer.js.map +1 -0
- package/dist/matter/matterServerHelpers.d.ts +81 -0
- package/dist/matter/matterServerHelpers.d.ts.map +1 -0
- package/dist/matter/matterServerHelpers.js +323 -0
- package/dist/matter/matterServerHelpers.js.map +1 -0
- package/dist/matter/matterSharedTypes.d.ts +170 -0
- package/dist/matter/matterSharedTypes.d.ts.map +1 -0
- package/dist/matter/matterSharedTypes.js +52 -0
- package/dist/matter/matterSharedTypes.js.map +1 -0
- package/dist/matter/matterStorage.d.ts +128 -0
- package/dist/matter/matterStorage.d.ts.map +1 -0
- package/dist/matter/matterStorage.js +415 -0
- package/dist/matter/matterStorage.js.map +1 -0
- package/dist/matter/matterTypes.d.ts +745 -0
- package/dist/matter/matterTypes.d.ts.map +1 -0
- package/dist/matter/matterTypes.js +174 -0
- package/dist/matter/matterTypes.js.map +1 -0
- package/dist/server.d.ts +23 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +385 -7
- 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 +16 -15
package/dist/api.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Controller, Service } from 'hap-nodejs';
|
|
2
2
|
import type { AccessoryConfig, PlatformConfig } from './bridgeService.js';
|
|
3
3
|
import type { Logging } from './logger.js';
|
|
4
|
+
import type { SerializedMatterAccessory } from './matter/matterAccessoryCache.js';
|
|
4
5
|
import { EventEmitter } from 'node:events';
|
|
5
6
|
import hapNodeJs from 'hap-nodejs';
|
|
7
|
+
import { clusterNames, clusters, deviceTypes, MatterAccessory, MatterServer, MatterTypes } from './matter/index.js';
|
|
6
8
|
import { PlatformAccessory } from './platformAccessory.js';
|
|
7
9
|
import { User } from './user.js';
|
|
8
10
|
export type HAP = typeof hapNodeJs;
|
|
@@ -81,6 +83,16 @@ export interface DynamicPlatformPlugin extends PlatformPlugin {
|
|
|
81
83
|
* @param {PlatformAccessory} accessory which needs to be configured
|
|
82
84
|
*/
|
|
83
85
|
configureAccessory: (accessory: PlatformAccessory) => void;
|
|
86
|
+
/**
|
|
87
|
+
* This method is called for every Matter accessory, which is recreated from cache on startup.
|
|
88
|
+
* It should be used to track cached accessories so the plugin can determine which accessories
|
|
89
|
+
* to re-register and which to remove (if they no longer exist in the external system).
|
|
90
|
+
*
|
|
91
|
+
* This is the Matter equivalent of configureAccessory for HAP accessories.
|
|
92
|
+
*
|
|
93
|
+
* @param {SerializedMatterAccessory} accessory - cached Matter accessory
|
|
94
|
+
*/
|
|
95
|
+
configureMatterAccessory?: (accessory: SerializedMatterAccessory) => void;
|
|
84
96
|
}
|
|
85
97
|
/**
|
|
86
98
|
* Platform that exposes all available characteristics at the start of the plugin.
|
|
@@ -124,7 +136,191 @@ export declare const enum InternalAPIEvent {
|
|
|
124
136
|
PUBLISH_EXTERNAL_ACCESSORIES = "publishExternalAccessories",
|
|
125
137
|
REGISTER_PLATFORM_ACCESSORIES = "registerPlatformAccessories",
|
|
126
138
|
UPDATE_PLATFORM_ACCESSORIES = "updatePlatformAccessories",
|
|
127
|
-
UNREGISTER_PLATFORM_ACCESSORIES = "unregisterPlatformAccessories"
|
|
139
|
+
UNREGISTER_PLATFORM_ACCESSORIES = "unregisterPlatformAccessories",
|
|
140
|
+
PUBLISH_EXTERNAL_MATTER_ACCESSORIES = "publishExternalMatterAccessories",
|
|
141
|
+
REGISTER_MATTER_PLATFORM_ACCESSORIES = "registerMatterPlatformAccessories",
|
|
142
|
+
UNREGISTER_MATTER_PLATFORM_ACCESSORIES = "unregisterMatterPlatformAccessories",
|
|
143
|
+
UPDATE_MATTER_ACCESSORY_STATE = "updateMatterAccessoryState"
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Matter API Interface
|
|
147
|
+
* Provides access to Matter protocol functionality for creating Matter-compatible accessories.
|
|
148
|
+
* Similar to api.hap for HomeKit Accessory Protocol.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* // Register a Matter accessory
|
|
153
|
+
* api.matter.registerAccessory({
|
|
154
|
+
* uuid: api.matter.uuid.generate('my-light-unique-id'),
|
|
155
|
+
* displayName: 'Living Room Light',
|
|
156
|
+
* deviceType: api.matter.deviceTypes.OnOffLight,
|
|
157
|
+
* // ...
|
|
158
|
+
* })
|
|
159
|
+
*
|
|
160
|
+
* // Update state when device changes externally
|
|
161
|
+
* api.matter.updateAccessoryState(uuid, api.matter.clusterNames.OnOff, { onOff: true })
|
|
162
|
+
*
|
|
163
|
+
* // Read current state
|
|
164
|
+
* const state = api.matter.getAccessoryState(uuid, api.matter.clusterNames.OnOff)
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export interface MatterAPI {
|
|
168
|
+
/**
|
|
169
|
+
* UUID generator (alias of api.hap.uuid for convenience)
|
|
170
|
+
* Use this to generate unique identifiers for Matter accessories
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const uuid = api.matter.uuid.generate('my-light-unique-id')
|
|
175
|
+
* api.matter.registerAccessory({
|
|
176
|
+
* uuid,
|
|
177
|
+
* displayName: 'Living Room Light',
|
|
178
|
+
* // ...
|
|
179
|
+
* })
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
readonly uuid: HAP['uuid'];
|
|
183
|
+
/**
|
|
184
|
+
* Matter device types for creating accessories
|
|
185
|
+
* Maps friendly names to Matter.js device types
|
|
186
|
+
*/
|
|
187
|
+
readonly deviceTypes: typeof deviceTypes;
|
|
188
|
+
/**
|
|
189
|
+
* Matter clusters - Direct access to Matter.js cluster definitions
|
|
190
|
+
* For advanced use cases requiring low-level cluster access
|
|
191
|
+
*/
|
|
192
|
+
readonly clusters: typeof clusters;
|
|
193
|
+
/**
|
|
194
|
+
* Matter cluster names for type safety and autocomplete
|
|
195
|
+
* Use these constants with updateAccessoryState() and getAccessoryState()
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* api.matter.updateAccessoryState(uuid, api.matter.clusterNames.OnOff, { onOff: true })
|
|
200
|
+
* api.matter.getAccessoryState(uuid, api.matter.clusterNames.LevelControl)
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
readonly clusterNames: typeof clusterNames;
|
|
204
|
+
/**
|
|
205
|
+
* Matter types - Access to Matter.js cluster type definitions and enums
|
|
206
|
+
* Use these for type-safe attribute values (modes, states, etc.)
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```typescript
|
|
210
|
+
* // Fan mode enum
|
|
211
|
+
* api.matter.updateAccessoryState(
|
|
212
|
+
* uuid,
|
|
213
|
+
* api.matter.clusterNames.FanControl,
|
|
214
|
+
* { fanMode: api.matter.types.FanControl.FanMode.High }
|
|
215
|
+
* )
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
readonly types: typeof MatterTypes;
|
|
219
|
+
/**
|
|
220
|
+
* Register Matter platform accessories (works exactly like HAP's registerPlatformAccessories)
|
|
221
|
+
*
|
|
222
|
+
* @param pluginIdentifier - The plugin identifier (e.g., 'homebridge-example')
|
|
223
|
+
* @param platformName - The platform name (e.g., 'ExamplePlatform')
|
|
224
|
+
* @param accessories - Array of Matter accessories to register
|
|
225
|
+
*/
|
|
226
|
+
registerPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => void;
|
|
227
|
+
/**
|
|
228
|
+
* Unregister Matter platform accessories by UUID
|
|
229
|
+
* @param pluginIdentifier - The plugin identifier
|
|
230
|
+
* @param platformName - The platform name
|
|
231
|
+
* @param accessories - Array of Matter accessories to unregister (only uuid is required)
|
|
232
|
+
*/
|
|
233
|
+
unregisterPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => void;
|
|
234
|
+
/**
|
|
235
|
+
* Publish external Matter accessories on their own dedicated Matter bridge
|
|
236
|
+
*
|
|
237
|
+
* Use this for devices that require isolation from other Matter accessories.
|
|
238
|
+
* Each external accessory gets its own Matter server instance on a separate port.
|
|
239
|
+
*
|
|
240
|
+
* Apple Home requires certain device types (like Robotic Vacuum Cleaners) to be
|
|
241
|
+
* on their own bridge. Use this method for those devices.
|
|
242
|
+
*
|
|
243
|
+
* Similar to api.publishExternalAccessories() for HAP accessories.
|
|
244
|
+
*
|
|
245
|
+
* @param pluginIdentifier - The plugin identifier (e.g., 'homebridge-example')
|
|
246
|
+
* @param accessories - Array of Matter accessories to publish externally
|
|
247
|
+
*/
|
|
248
|
+
publishExternalAccessories: (pluginIdentifier: PluginIdentifier, accessories: MatterAccessory[]) => void;
|
|
249
|
+
/**
|
|
250
|
+
* Update a Matter accessory's cluster state when device changes externally
|
|
251
|
+
*
|
|
252
|
+
* Use this for state updates from:
|
|
253
|
+
* - Native app controls
|
|
254
|
+
* - Physical button presses
|
|
255
|
+
* - Webhooks from cloud service
|
|
256
|
+
* - Polling results
|
|
257
|
+
*
|
|
258
|
+
* DO NOT use inside handlers - state auto-updates after handlers complete!
|
|
259
|
+
* Similar to HAP's characteristic.updateValue()
|
|
260
|
+
*
|
|
261
|
+
* @param uuid - The UUID of the accessory
|
|
262
|
+
* @param cluster - The cluster name (use api.matter.clusterNames for autocomplete)
|
|
263
|
+
* @param attributes - The attributes to update
|
|
264
|
+
* @param partId - Optional: ID of the part to update (for composed devices with multiple endpoints)
|
|
265
|
+
*
|
|
266
|
+
* @example
|
|
267
|
+
* ```typescript
|
|
268
|
+
* // Device turned on via native app:
|
|
269
|
+
* api.matter.updateAccessoryState(
|
|
270
|
+
* uuid,
|
|
271
|
+
* api.matter.clusterNames.OnOff,
|
|
272
|
+
* { onOff: true }
|
|
273
|
+
* )
|
|
274
|
+
*
|
|
275
|
+
* // Device brightness changed via physical button:
|
|
276
|
+
* api.matter.updateAccessoryState(
|
|
277
|
+
* uuid,
|
|
278
|
+
* api.matter.clusterNames.LevelControl,
|
|
279
|
+
* { currentLevel: 200 }
|
|
280
|
+
* )
|
|
281
|
+
*
|
|
282
|
+
* // Update a specific outlet in a power strip (composed device):
|
|
283
|
+
* api.matter.updateAccessoryState(
|
|
284
|
+
* uuid,
|
|
285
|
+
* api.matter.clusterNames.OnOff,
|
|
286
|
+
* { onOff: true },
|
|
287
|
+
* 'outlet-2' // Part ID
|
|
288
|
+
* )
|
|
289
|
+
* ```
|
|
290
|
+
*/
|
|
291
|
+
updateAccessoryState: (uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string) => void;
|
|
292
|
+
/**
|
|
293
|
+
* Get a Matter accessory's current cluster state
|
|
294
|
+
*
|
|
295
|
+
* Returns the current attribute values that are exposed to Matter controllers.
|
|
296
|
+
* Useful for:
|
|
297
|
+
* - Reading state after plugin restart
|
|
298
|
+
* - Verifying current state before making changes
|
|
299
|
+
* - Debugging and logging
|
|
300
|
+
*
|
|
301
|
+
* Similar to HAP's characteristic.value getter.
|
|
302
|
+
*
|
|
303
|
+
* @param uuid - The UUID of the accessory
|
|
304
|
+
* @param cluster - The cluster name (use api.matter.clusterNames for autocomplete)
|
|
305
|
+
* @param partId - Optional: ID of the part to get state from (for composed devices with multiple endpoints)
|
|
306
|
+
* @returns Current cluster attribute values, or undefined if not found
|
|
307
|
+
*
|
|
308
|
+
* @example
|
|
309
|
+
* ```typescript
|
|
310
|
+
* const state = api.matter.getAccessoryState(uuid, api.matter.clusterNames.OnOff)
|
|
311
|
+
* if (state?.onOff) {
|
|
312
|
+
* console.log('Light is currently on')
|
|
313
|
+
* }
|
|
314
|
+
*
|
|
315
|
+
* // Get state of a specific outlet in a power strip:
|
|
316
|
+
* const outletState = api.matter.getAccessoryState(
|
|
317
|
+
* uuid,
|
|
318
|
+
* api.matter.clusterNames.OnOff,
|
|
319
|
+
* 'outlet-3' // Part ID
|
|
320
|
+
* )
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
getAccessoryState: (uuid: string, cluster: string, partId?: string) => Record<string, unknown> | undefined;
|
|
128
324
|
}
|
|
129
325
|
export interface API {
|
|
130
326
|
/**
|
|
@@ -139,6 +335,25 @@ export interface API {
|
|
|
139
335
|
readonly hap: HAP;
|
|
140
336
|
readonly hapLegacyTypes: HAPLegacyTypes;
|
|
141
337
|
readonly platformAccessory: typeof PlatformAccessory;
|
|
338
|
+
/**
|
|
339
|
+
* Matter Protocol API
|
|
340
|
+
* Provides access to Matter functionality, similar to api.hap for HomeKit
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```typescript
|
|
344
|
+
* // Register a Matter accessory
|
|
345
|
+
* api.matter.registerAccessory({
|
|
346
|
+
* uuid: api.matter.uuid.generate('my-light'),
|
|
347
|
+
* displayName: 'Living Room Light',
|
|
348
|
+
* deviceType: api.matter.deviceTypes.OnOffLight,
|
|
349
|
+
* // ...
|
|
350
|
+
* })
|
|
351
|
+
*
|
|
352
|
+
* // Update state
|
|
353
|
+
* api.matter.updateAccessoryState(uuid, api.matter.clusterNames.OnOff, { onOff: true })
|
|
354
|
+
* ```
|
|
355
|
+
*/
|
|
356
|
+
readonly matter: MatterAPI;
|
|
142
357
|
/**
|
|
143
358
|
* Returns true if the current running homebridge version is greater or equal to the
|
|
144
359
|
* passed version string.
|
|
@@ -161,11 +376,23 @@ export interface API {
|
|
|
161
376
|
updatePlatformAccessories: (accessories: PlatformAccessory[]) => void;
|
|
162
377
|
unregisterPlatformAccessories: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]) => void;
|
|
163
378
|
publishExternalAccessories: (pluginIdentifier: PluginIdentifier, accessories: PlatformAccessory[]) => void;
|
|
379
|
+
/**
|
|
380
|
+
* Check if Matter is available in this version of Homebridge
|
|
381
|
+
* @returns true if Homebridge version is >= 2.0.0-alpha.0
|
|
382
|
+
*/
|
|
383
|
+
isMatterAvailable: () => boolean;
|
|
384
|
+
/**
|
|
385
|
+
* Check if Matter is enabled for this bridge
|
|
386
|
+
* For main bridge: returns true if Matter is enabled in `bridge.matter` config
|
|
387
|
+
* For child bridge: returns true if Matter is enabled in the _bridge.matter config
|
|
388
|
+
* @returns true if Matter is enabled
|
|
389
|
+
*/
|
|
390
|
+
isMatterEnabled: () => boolean;
|
|
164
391
|
on: ((event: 'didFinishLaunching', listener: () => void) => this) & ((event: 'shutdown', listener: () => void) => this);
|
|
165
392
|
}
|
|
166
393
|
export declare interface HomebridgeAPI {
|
|
167
|
-
on: ((event: 'didFinishLaunching', listener: () => void) => this) & ((event: 'shutdown', listener: () => void) => this) & ((event: InternalAPIEvent.REGISTER_ACCESSORY, listener: (accessoryName: AccessoryName, accessoryConstructor: AccessoryPluginConstructor, pluginIdentifier?: PluginIdentifier) => void) => this) & ((event: InternalAPIEvent.REGISTER_PLATFORM, listener: (platformName: PlatformName, platformConstructor: PlatformPluginConstructor, pluginIdentifier?: PluginIdentifier) => void) => this) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.UPDATE_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this);
|
|
168
|
-
emit: ((event: 'didFinishLaunching') => boolean) & ((event: 'shutdown') => boolean) & ((event: InternalAPIEvent.REGISTER_ACCESSORY, accessoryName: AccessoryName, accessoryConstructor: AccessoryPluginConstructor, pluginIdentifier?: PluginIdentifier) => boolean) & ((event: InternalAPIEvent.REGISTER_PLATFORM, platformName: PlatformName, platformConstructor: PlatformPluginConstructor, pluginIdentifier?: PluginIdentifier) => boolean) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.UPDATE_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean);
|
|
394
|
+
on: ((event: 'didFinishLaunching', listener: () => void) => this) & ((event: 'shutdown', listener: () => void) => this) & ((event: InternalAPIEvent.REGISTER_ACCESSORY, listener: (accessoryName: AccessoryName, accessoryConstructor: AccessoryPluginConstructor, pluginIdentifier?: PluginIdentifier) => void) => this) & ((event: InternalAPIEvent.REGISTER_PLATFORM, listener: (platformName: PlatformName, platformConstructor: PlatformPluginConstructor, pluginIdentifier?: PluginIdentifier) => void) => this) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.UPDATE_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES, listener: (accessories: PlatformAccessory[]) => void) => this) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES, listener: (accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES, listener: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES, listener: (pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => void) => this) & ((event: InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE, listener: (uuid: string, cluster: string, attributes: Record<string, any>, partId?: string) => void) => this);
|
|
395
|
+
emit: ((event: 'didFinishLaunching') => boolean) & ((event: 'shutdown') => boolean) & ((event: InternalAPIEvent.REGISTER_ACCESSORY, accessoryName: AccessoryName, accessoryConstructor: AccessoryPluginConstructor, pluginIdentifier?: PluginIdentifier) => boolean) & ((event: InternalAPIEvent.REGISTER_PLATFORM, platformName: PlatformName, platformConstructor: PlatformPluginConstructor, pluginIdentifier?: PluginIdentifier) => boolean) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.UPDATE_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES, accessories: PlatformAccessory[]) => boolean) & ((event: InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES, pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES, pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]) => boolean) & ((event: InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE, uuid: string, cluster: string, attributes: Record<string, any>, partId?: string) => boolean);
|
|
169
396
|
}
|
|
170
397
|
export declare class HomebridgeAPI extends EventEmitter implements API {
|
|
171
398
|
readonly version = 2.7;
|
|
@@ -174,7 +401,32 @@ export declare class HomebridgeAPI extends EventEmitter implements API {
|
|
|
174
401
|
readonly hap: typeof hapNodeJs;
|
|
175
402
|
readonly hapLegacyTypes: typeof hapNodeJs.LegacyTypes;
|
|
176
403
|
readonly platformAccessory: typeof PlatformAccessory;
|
|
404
|
+
/**
|
|
405
|
+
* Matter Protocol API
|
|
406
|
+
*/
|
|
407
|
+
readonly matter: MatterAPI;
|
|
408
|
+
/**
|
|
409
|
+
* Internal state tracking whether Matter is enabled for this bridge
|
|
410
|
+
*/
|
|
411
|
+
private matterEnabled;
|
|
412
|
+
/**
|
|
413
|
+
* Internal reference to MatterServer for API methods that need return values
|
|
414
|
+
* @internal
|
|
415
|
+
*/
|
|
416
|
+
private _matterServer;
|
|
177
417
|
constructor();
|
|
418
|
+
/**
|
|
419
|
+
* Internal method to set Matter enabled status
|
|
420
|
+
* Called by Server or ChildBridgeFork after Matter initialization
|
|
421
|
+
* @internal
|
|
422
|
+
*/
|
|
423
|
+
_setMatterEnabled(enabled: boolean): void;
|
|
424
|
+
/**
|
|
425
|
+
* Internal method to set MatterServer reference
|
|
426
|
+
* Called by Server or ChildBridgeFork after creating MatterServer
|
|
427
|
+
* @internal
|
|
428
|
+
*/
|
|
429
|
+
_setMatterServer(server: MatterServer | null): void;
|
|
178
430
|
versionGreaterOrEqual(version: string): boolean;
|
|
179
431
|
static isDynamicPlatformPlugin(platformPlugin: PlatformPlugin): platformPlugin is DynamicPlatformPlugin;
|
|
180
432
|
static isStaticPlatformPlugin(platformPlugin: PlatformPlugin): platformPlugin is StaticPlatformPlugin;
|
|
@@ -189,5 +441,17 @@ export declare class HomebridgeAPI extends EventEmitter implements API {
|
|
|
189
441
|
registerPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]): void;
|
|
190
442
|
updatePlatformAccessories(accessories: PlatformAccessory[]): void;
|
|
191
443
|
unregisterPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: PlatformAccessory[]): void;
|
|
444
|
+
/**
|
|
445
|
+
* Check if Matter is available in this version of Homebridge
|
|
446
|
+
* @returns true if Homebridge version satisfies >= 2.0.0-alpha.0
|
|
447
|
+
*/
|
|
448
|
+
isMatterAvailable(): boolean;
|
|
449
|
+
/**
|
|
450
|
+
* Check if Matter is enabled for this bridge
|
|
451
|
+
* For main bridge: returns true if Matter is enabled in `bridge.matter` config
|
|
452
|
+
* For child bridge: returns true if Matter is enabled in the `_bridge.matter` config
|
|
453
|
+
* @returns true if Matter is enabled
|
|
454
|
+
*/
|
|
455
|
+
isMatterEnabled(): boolean;
|
|
192
456
|
}
|
|
193
457
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,SAAS,MAAM,YAAY,CAAA;AAIlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAKhC,MAAM,MAAM,GAAG,GAAG,OAAO,SAAS,CAAA;AAClC,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,WAAW,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAC5D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAC/B,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AACrC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAClC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAA;AACxC,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAGvC,0BAAkB,UAAU;IAC1B,SAAS,cAAc;IACvB,QAAQ,aAAa;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAI,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,CAAA;CACzE;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAErB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,OAAO,EAAE,CAAA;IAE5B;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,UAAU,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,yBAAyB,CAAC,MAAM,SAAS,cAAc,GAAG,cAAc;IACvF,KAAI,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,yBAAyB,CAAA;CACzH;AAED,MAAM,WAAW,cAAc;CAAG;AAElC;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D;;;;;;OAMG;IACH,kBAAkB,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -2,6 +2,7 @@ import { EventEmitter } from 'node:events';
|
|
|
2
2
|
import hapNodeJs from 'hap-nodejs';
|
|
3
3
|
import semver from 'semver';
|
|
4
4
|
import { Logger } from './logger.js';
|
|
5
|
+
import { clusterNames, clusters, deviceTypes, MatterTypes } from './matter/index.js';
|
|
5
6
|
import { PlatformAccessory } from './platformAccessory.js';
|
|
6
7
|
import { PluginManager } from './pluginManager.js';
|
|
7
8
|
import { User } from './user.js';
|
|
@@ -37,6 +38,11 @@ export var InternalAPIEvent;
|
|
|
37
38
|
InternalAPIEvent["REGISTER_PLATFORM_ACCESSORIES"] = "registerPlatformAccessories";
|
|
38
39
|
InternalAPIEvent["UPDATE_PLATFORM_ACCESSORIES"] = "updatePlatformAccessories";
|
|
39
40
|
InternalAPIEvent["UNREGISTER_PLATFORM_ACCESSORIES"] = "unregisterPlatformAccessories";
|
|
41
|
+
// Matter events (matching HAP pattern)
|
|
42
|
+
InternalAPIEvent["PUBLISH_EXTERNAL_MATTER_ACCESSORIES"] = "publishExternalMatterAccessories";
|
|
43
|
+
InternalAPIEvent["REGISTER_MATTER_PLATFORM_ACCESSORIES"] = "registerMatterPlatformAccessories";
|
|
44
|
+
InternalAPIEvent["UNREGISTER_MATTER_PLATFORM_ACCESSORIES"] = "unregisterMatterPlatformAccessories";
|
|
45
|
+
InternalAPIEvent["UPDATE_MATTER_ACCESSORY_STATE"] = "updateMatterAccessoryState";
|
|
40
46
|
})(InternalAPIEvent || (InternalAPIEvent = {}));
|
|
41
47
|
// eslint-disable-next-line ts/no-unsafe-declaration-merging
|
|
42
48
|
export class HomebridgeAPI extends EventEmitter {
|
|
@@ -48,8 +54,78 @@ export class HomebridgeAPI extends EventEmitter {
|
|
|
48
54
|
hapLegacyTypes = hapNodeJs.LegacyTypes; // used for older accessories/platforms
|
|
49
55
|
platformAccessory = PlatformAccessory;
|
|
50
56
|
// ------------------------------------------------------------------------
|
|
57
|
+
/**
|
|
58
|
+
* Matter Protocol API
|
|
59
|
+
*/
|
|
60
|
+
matter;
|
|
61
|
+
/**
|
|
62
|
+
* Internal state tracking whether Matter is enabled for this bridge
|
|
63
|
+
*/
|
|
64
|
+
matterEnabled = false;
|
|
65
|
+
/**
|
|
66
|
+
* Internal reference to MatterServer for API methods that need return values
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
_matterServer = null;
|
|
51
70
|
constructor() {
|
|
52
71
|
super();
|
|
72
|
+
// Initialize Matter API (just like HAP)
|
|
73
|
+
this.matter = {
|
|
74
|
+
uuid: this.hap.uuid,
|
|
75
|
+
deviceTypes,
|
|
76
|
+
clusters,
|
|
77
|
+
clusterNames,
|
|
78
|
+
types: MatterTypes,
|
|
79
|
+
registerPlatformAccessories: (pluginIdentifier, platformName, accessories) => {
|
|
80
|
+
// Add plugin/platform association to accessories
|
|
81
|
+
accessories.forEach((accessory) => {
|
|
82
|
+
const internal = accessory;
|
|
83
|
+
internal._associatedPlugin = pluginIdentifier;
|
|
84
|
+
internal._associatedPlatform = platformName;
|
|
85
|
+
});
|
|
86
|
+
this.emit("registerMatterPlatformAccessories" /* InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES */, pluginIdentifier, platformName, accessories);
|
|
87
|
+
},
|
|
88
|
+
unregisterPlatformAccessories: (pluginIdentifier, platformName, accessories) => {
|
|
89
|
+
this.emit("unregisterMatterPlatformAccessories" /* InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES */, pluginIdentifier, platformName, accessories);
|
|
90
|
+
},
|
|
91
|
+
publishExternalAccessories: (pluginIdentifier, accessories) => {
|
|
92
|
+
if (!PluginManager.isQualifiedPluginIdentifier(pluginIdentifier)) {
|
|
93
|
+
log.info(`One of your plugins incorrectly registered an external Matter accessory using the platform name (${pluginIdentifier}) and not the plugin identifier. Please report this to the developer!`);
|
|
94
|
+
}
|
|
95
|
+
// Add plugin association to accessories
|
|
96
|
+
accessories.forEach((accessory) => {
|
|
97
|
+
const internal = accessory;
|
|
98
|
+
internal._associatedPlugin = pluginIdentifier;
|
|
99
|
+
});
|
|
100
|
+
this.emit("publishExternalMatterAccessories" /* InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES */, accessories);
|
|
101
|
+
},
|
|
102
|
+
updateAccessoryState: (uuid, cluster, attributes, partId) => {
|
|
103
|
+
this.emit("updateMatterAccessoryState" /* InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE */, uuid, cluster, attributes, partId);
|
|
104
|
+
},
|
|
105
|
+
getAccessoryState: (uuid, cluster, partId) => {
|
|
106
|
+
if (!this._matterServer) {
|
|
107
|
+
log.debug('Matter server not available for getAccessoryState');
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
return this._matterServer.getAccessoryState(uuid, cluster, partId);
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Internal method to set Matter enabled status
|
|
116
|
+
* Called by Server or ChildBridgeFork after Matter initialization
|
|
117
|
+
* @internal
|
|
118
|
+
*/
|
|
119
|
+
_setMatterEnabled(enabled) {
|
|
120
|
+
this.matterEnabled = enabled;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Internal method to set MatterServer reference
|
|
124
|
+
* Called by Server or ChildBridgeFork after creating MatterServer
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
_setMatterServer(server) {
|
|
128
|
+
this._matterServer = server;
|
|
53
129
|
}
|
|
54
130
|
versionGreaterOrEqual(version) {
|
|
55
131
|
return semver.gte(this.serverVersion, version);
|
|
@@ -125,5 +201,21 @@ export class HomebridgeAPI extends EventEmitter {
|
|
|
125
201
|
});
|
|
126
202
|
this.emit("unregisterPlatformAccessories" /* InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES */, accessories);
|
|
127
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Check if Matter is available in this version of Homebridge
|
|
206
|
+
* @returns true if Homebridge version satisfies >= 2.0.0-alpha.0
|
|
207
|
+
*/
|
|
208
|
+
isMatterAvailable() {
|
|
209
|
+
return semver.gte(this.serverVersion, '2.0.0-alpha.0');
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Check if Matter is enabled for this bridge
|
|
213
|
+
* For main bridge: returns true if Matter is enabled in `bridge.matter` config
|
|
214
|
+
* For child bridge: returns true if Matter is enabled in the `_bridge.matter` config
|
|
215
|
+
* @returns true if Matter is enabled
|
|
216
|
+
*/
|
|
217
|
+
isMatterEnabled() {
|
|
218
|
+
return this.matterEnabled;
|
|
219
|
+
}
|
|
128
220
|
}
|
|
129
221
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/bridgeService.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { CharacteristicWarning, InterfaceName, IPAddress, MacAddress, MDNSA
|
|
|
2
2
|
import type { AccessoryIdentifier, AccessoryName, AccessoryPlugin, HomebridgeAPI, PlatformIdentifier, PlatformName, PluginIdentifier, StaticPlatformPlugin } from './api.js';
|
|
3
3
|
import type { ExternalPortsConfiguration, ExternalPortService } from './externalPortService.js';
|
|
4
4
|
import type { Logging } from './logger.js';
|
|
5
|
+
import type { MatterConfig } from './matter/index.js';
|
|
5
6
|
import type { Plugin } from './plugin.js';
|
|
6
7
|
import type { HomebridgeOptions } from './server.js';
|
|
7
8
|
import { Accessory, Bridge } from 'hap-nodejs';
|
|
@@ -21,6 +22,7 @@ export interface BridgeConfiguration {
|
|
|
21
22
|
firmwareRevision?: string;
|
|
22
23
|
serialNumber?: string;
|
|
23
24
|
debugModeEnabled?: boolean;
|
|
25
|
+
matter?: MatterConfig;
|
|
24
26
|
env?: {
|
|
25
27
|
DEBUG?: string;
|
|
26
28
|
NODE_OPTIONS?: string;
|
|
@@ -53,6 +55,7 @@ export interface HomebridgeConfig {
|
|
|
53
55
|
*/
|
|
54
56
|
disabledPlugins?: PluginIdentifier[];
|
|
55
57
|
ports?: ExternalPortsConfiguration;
|
|
58
|
+
matterPorts?: ExternalPortsConfiguration;
|
|
56
59
|
}
|
|
57
60
|
export interface BridgeOptions extends HomebridgeOptions {
|
|
58
61
|
cachedAccessoriesDir: string;
|
|
@@ -67,14 +70,13 @@ export declare class BridgeService {
|
|
|
67
70
|
private externalPortService;
|
|
68
71
|
private bridgeOptions;
|
|
69
72
|
private bridgeConfig;
|
|
70
|
-
private config;
|
|
71
73
|
bridge: Bridge;
|
|
72
74
|
private storageService;
|
|
73
75
|
private readonly allowInsecureAccess;
|
|
74
76
|
private cachedPlatformAccessories;
|
|
75
77
|
private cachedAccessoriesFileLoaded;
|
|
76
78
|
private readonly publishedExternalAccessories;
|
|
77
|
-
constructor(api: HomebridgeAPI, pluginManager: PluginManager, externalPortService: ExternalPortService, bridgeOptions: BridgeOptions, bridgeConfig: BridgeConfiguration
|
|
79
|
+
constructor(api: HomebridgeAPI, pluginManager: PluginManager, externalPortService: ExternalPortService, bridgeOptions: BridgeOptions, bridgeConfig: BridgeConfiguration);
|
|
78
80
|
static printCharacteristicWriteWarning(plugin: Plugin, accessory: Accessory, opts: CharacteristicWarningOpts, warning: CharacteristicWarning): void;
|
|
79
81
|
publishBridge(): void;
|
|
80
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeService.d.ts","sourceRoot":"","sources":["../src/bridgeService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,UAAU,EACV,cAAc,EAGf,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"bridgeService.d.ts","sourceRoot":"","sources":["../src/bridgeService.ts"],"names":[],"mappings":"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"}
|
package/dist/bridgeService.js
CHANGED
|
@@ -12,20 +12,18 @@ export class BridgeService {
|
|
|
12
12
|
externalPortService;
|
|
13
13
|
bridgeOptions;
|
|
14
14
|
bridgeConfig;
|
|
15
|
-
config;
|
|
16
15
|
bridge;
|
|
17
16
|
storageService;
|
|
18
17
|
allowInsecureAccess;
|
|
19
18
|
cachedPlatformAccessories = [];
|
|
20
19
|
cachedAccessoriesFileLoaded = false;
|
|
21
20
|
publishedExternalAccessories = new Map();
|
|
22
|
-
constructor(api, pluginManager, externalPortService, bridgeOptions, bridgeConfig
|
|
21
|
+
constructor(api, pluginManager, externalPortService, bridgeOptions, bridgeConfig) {
|
|
23
22
|
this.api = api;
|
|
24
23
|
this.pluginManager = pluginManager;
|
|
25
24
|
this.externalPortService = externalPortService;
|
|
26
25
|
this.bridgeOptions = bridgeOptions;
|
|
27
26
|
this.bridgeConfig = bridgeConfig;
|
|
28
|
-
this.config = config;
|
|
29
27
|
this.storageService = new StorageService(this.bridgeOptions.cachedAccessoriesDir);
|
|
30
28
|
this.storageService.initSync();
|
|
31
29
|
// Server is "secure by default", meaning it creates a top-level Bridge accessory that
|