homebridge 2.0.3-beta.9 → 2.1.0
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/bridgeService.d.ts +78 -6
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +124 -30
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeFork.d.ts +12 -0
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +56 -25
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +13 -7
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +75 -53
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -4
- package/dist/cli.js.map +1 -1
- package/dist/ipcService.d.ts +6 -1
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/matter/BaseMatterManager.d.ts +13 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -1
- package/dist/matter/BaseMatterManager.js +43 -11
- package/dist/matter/BaseMatterManager.js.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.d.ts +41 -2
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.js +103 -6
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
- package/dist/matter/ChildBridgeMatterMessageHandler.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterMessageHandler.js +13 -6
- package/dist/matter/ChildBridgeMatterMessageHandler.js.map +1 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.js +25 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
- package/dist/matter/MatterAPIImpl.d.ts +17 -0
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
- package/dist/matter/MatterAPIImpl.js +29 -0
- package/dist/matter/MatterAPIImpl.js.map +1 -1
- package/dist/matter/MatterBridgeManager.d.ts +38 -3
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
- package/dist/matter/MatterBridgeManager.js +115 -12
- package/dist/matter/MatterBridgeManager.js.map +1 -1
- package/dist/matter/MatterError.d.ts +76 -0
- package/dist/matter/MatterError.d.ts.map +1 -0
- package/dist/matter/MatterError.js +90 -0
- package/dist/matter/MatterError.js.map +1 -0
- package/dist/matter/MatterPortAllocator.d.ts.map +1 -1
- package/dist/matter/MatterPortAllocator.js +7 -1
- package/dist/matter/MatterPortAllocator.js.map +1 -1
- package/dist/matter/accessoryCache.d.ts +12 -0
- package/dist/matter/accessoryCache.d.ts.map +1 -1
- package/dist/matter/accessoryCache.js +19 -0
- package/dist/matter/accessoryCache.js.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +3 -2
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.js +10 -1
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.js +10 -4
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
- package/dist/matter/config.d.ts +73 -1
- package/dist/matter/config.d.ts.map +1 -1
- package/dist/matter/config.js +138 -10
- package/dist/matter/config.js.map +1 -1
- package/dist/matter/configValidator.d.ts.map +1 -1
- package/dist/matter/configValidator.js +15 -0
- package/dist/matter/configValidator.js.map +1 -1
- package/dist/matter/ipc-types.d.ts +7 -0
- package/dist/matter/ipc-types.d.ts.map +1 -1
- package/dist/matter/logFormatter.d.ts.map +1 -1
- package/dist/matter/logFormatter.js +7 -60
- package/dist/matter/logFormatter.js.map +1 -1
- package/dist/matter/managerTypes.d.ts +4 -4
- package/dist/matter/managerTypes.d.ts.map +1 -1
- package/dist/matter/server/AccessoryManager.d.ts.map +1 -1
- package/dist/matter/server/AccessoryManager.js +9 -2
- package/dist/matter/server/AccessoryManager.js.map +1 -1
- package/dist/matter/server/ServerLifecycle.d.ts +23 -4
- package/dist/matter/server/ServerLifecycle.d.ts.map +1 -1
- package/dist/matter/server/ServerLifecycle.js +127 -22
- package/dist/matter/server/ServerLifecycle.js.map +1 -1
- package/dist/matter/server.js +1 -1
- package/dist/matter/server.js.map +1 -1
- package/dist/matter/types.d.ts +21 -57
- package/dist/matter/types.d.ts.map +1 -1
- package/dist/matter/types.js +6 -71
- package/dist/matter/types.js.map +1 -1
- package/dist/matter/utils.d.ts +2 -0
- package/dist/matter/utils.d.ts.map +1 -1
- package/dist/matter/utils.js +3 -1
- package/dist/matter/utils.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +2 -14
- package/dist/plugin.js.map +1 -1
- package/dist/pluginManager.d.ts +11 -0
- package/dist/pluginManager.d.ts.map +1 -1
- package/dist/pluginManager.js +26 -14
- package/dist/pluginManager.js.map +1 -1
- package/dist/server.d.ts +29 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +141 -51
- package/dist/server.js.map +1 -1
- package/package.json +8 -7
package/dist/bridgeService.d.ts
CHANGED
|
@@ -13,6 +13,29 @@ export declare const DEFAULT_BRIDGE_DEFAULTS: {
|
|
|
13
13
|
readonly manufacturer: "homebridge.io";
|
|
14
14
|
readonly model: "homebridge";
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* HAP-specific configuration for a bridge. Mirrors the shape of `MatterConfig`
|
|
18
|
+
* so the two protocol blocks are symmetric and can be reasoned about uniformly.
|
|
19
|
+
*/
|
|
20
|
+
export interface BridgeHapConfig {
|
|
21
|
+
/**
|
|
22
|
+
* Whether HAP is published for this bridge. Default `true` (so omitting the
|
|
23
|
+
* block, or omitting `enabled`, means HAP is on). Set to `false` to suppress
|
|
24
|
+
* the bridge's HAP advertisement while preserving any existing pairing.
|
|
25
|
+
*
|
|
26
|
+
* Both `hap` and `matter` may be disabled on the same bridge; the bridge
|
|
27
|
+
* then advertises nothing (it still loads, it just exposes no accessories).
|
|
28
|
+
*/
|
|
29
|
+
enabled?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* When `true`, the bridge accessory itself is NOT published, but external
|
|
32
|
+
* accessories registered by plugins against this bridge ARE still published
|
|
33
|
+
* (each as its own standalone HAP accessory). Intended to be paired with
|
|
34
|
+
* `enabled: false`; if `externalsOnly: true` is set on its own, validation
|
|
35
|
+
* warns and normalises `enabled` to `false` rather than rejecting the config.
|
|
36
|
+
*/
|
|
37
|
+
externalsOnly?: boolean;
|
|
38
|
+
}
|
|
16
39
|
export interface BridgeConfiguration {
|
|
17
40
|
name: string;
|
|
18
41
|
username: MacAddress;
|
|
@@ -29,20 +52,54 @@ export interface BridgeConfiguration {
|
|
|
29
52
|
serialNumber?: string;
|
|
30
53
|
debugModeEnabled?: boolean;
|
|
31
54
|
/**
|
|
32
|
-
*
|
|
33
|
-
* bridges where the user does not want to expose a HomeKit bridge accessory.
|
|
34
|
-
* Default: `true` (HAP is published).
|
|
55
|
+
* HAP publishing config. Defaults to enabled when omitted.
|
|
35
56
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
57
|
+
* The object form (`BridgeHapConfig`) is preferred. The bare boolean form
|
|
58
|
+
* (`hap: false` / `hap: true`) is the deprecated v2-beta shorthand, still
|
|
59
|
+
* accepted for back-compat and normalized to `{ enabled: <boolean> }` by
|
|
60
|
+
* `validateHapConfig`. The type allows it so existing configs keep compiling.
|
|
61
|
+
*
|
|
62
|
+
* @deprecated Pass `hap` as a boolean is deprecated; use `{ enabled }` instead.
|
|
38
63
|
*/
|
|
39
|
-
hap?: boolean;
|
|
64
|
+
hap?: BridgeHapConfig | boolean;
|
|
40
65
|
matter?: MatterConfig;
|
|
41
66
|
env?: {
|
|
42
67
|
DEBUG?: string;
|
|
43
68
|
NODE_OPTIONS?: string;
|
|
44
69
|
};
|
|
45
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Whether HAP is enabled for the given bridge configuration. HAP is on by
|
|
73
|
+
* default; users opt out via `hap: { enabled: false }`. Missing block or
|
|
74
|
+
* missing `enabled` both mean enabled.
|
|
75
|
+
*
|
|
76
|
+
* The legacy boolean form (`hap: false`/`hap: true`) is handled here too.
|
|
77
|
+
* `validateHapConfig` normalizes it to the object shape, but a raw `false`
|
|
78
|
+
* must still read as disabled even if this is reached before normalization —
|
|
79
|
+
* otherwise `!hap` (true for `false`) would wrongly report a disabled bridge
|
|
80
|
+
* as enabled and publish it anyway.
|
|
81
|
+
*/
|
|
82
|
+
export declare function isHapConfigEnabled(hap: BridgeHapConfig | boolean | undefined): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Whether the bridge is in HAP externalsOnly mode (the bridge accessory itself
|
|
85
|
+
* is suppressed but external accessories still publish). Only the object form
|
|
86
|
+
* carries `externalsOnly`; the legacy boolean form never does, so it is always
|
|
87
|
+
* false there. Accepts the boolean form so callers can pass `bridge.hap`
|
|
88
|
+
* directly without narrowing.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isHapExternalsOnly(hap: BridgeHapConfig | boolean | undefined): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Validate a `hap` config block. Throws on hard errors (wrong type, conflict
|
|
93
|
+
* between `externalsOnly` and `enabled`). For accessory child bridges, strips
|
|
94
|
+
* `externalsOnly` with a warn-level log because externals are not supported
|
|
95
|
+
* via the accessory plugin API.
|
|
96
|
+
*
|
|
97
|
+
* Mutates the passed block in place when stripping fields.
|
|
98
|
+
*/
|
|
99
|
+
export declare function validateHapConfig(bridgeConfig: BridgeConfiguration, opts: {
|
|
100
|
+
bridgeLabel: string;
|
|
101
|
+
isAccessoryPlugin?: boolean;
|
|
102
|
+
}): void;
|
|
46
103
|
export interface AccessoryConfig extends Record<string, any> {
|
|
47
104
|
accessory: AccessoryName | AccessoryIdentifier;
|
|
48
105
|
name: string;
|
|
@@ -75,6 +132,14 @@ export interface HomebridgeConfig {
|
|
|
75
132
|
export interface BridgeOptions extends HomebridgeOptions {
|
|
76
133
|
cachedAccessoriesDir: string;
|
|
77
134
|
cachedAccessoriesItemName: string;
|
|
135
|
+
externalAccessoriesItemName: string;
|
|
136
|
+
}
|
|
137
|
+
export interface ExternalAccessoryMetadata {
|
|
138
|
+
username: MacAddress;
|
|
139
|
+
plugin: PluginIdentifier;
|
|
140
|
+
displayName: string;
|
|
141
|
+
category: number;
|
|
142
|
+
port?: number;
|
|
78
143
|
}
|
|
79
144
|
export interface CharacteristicWarningOpts {
|
|
80
145
|
ignoreSlow?: boolean;
|
|
@@ -91,6 +156,7 @@ export declare class BridgeService {
|
|
|
91
156
|
private cachedPlatformAccessories;
|
|
92
157
|
private cachedAccessoriesFileLoaded;
|
|
93
158
|
private readonly publishedExternalAccessories;
|
|
159
|
+
private readonly publishedExternalAccessoriesMetadata;
|
|
94
160
|
constructor(api: HomebridgeAPI, pluginManager: PluginManager, externalPortService: ExternalPortService, bridgeOptions: BridgeOptions, bridgeConfig: BridgeConfiguration);
|
|
95
161
|
static printCharacteristicWriteWarning(plugin: Plugin, accessory: Accessory, opts: CharacteristicWarningOpts, warning: CharacteristicWarning): void;
|
|
96
162
|
publishBridge(): void;
|
|
@@ -117,6 +183,12 @@ export declare class BridgeService {
|
|
|
117
183
|
* Save the cached accessories back to disk.
|
|
118
184
|
*/
|
|
119
185
|
saveCachedPlatformAccessoriesOnDisk(): void;
|
|
186
|
+
/**
|
|
187
|
+
* Save metadata for currently published external accessories so external tools (e.g. the
|
|
188
|
+
* Homebridge UI) can attribute each accessory to the plugin that published it. The
|
|
189
|
+
* underlying HAP `AccessoryInfo` files do not store plugin attribution.
|
|
190
|
+
*/
|
|
191
|
+
saveExternalAccessoriesMetadataOnDisk(): void;
|
|
120
192
|
handleRegisterPlatformAccessories(accessories: PlatformAccessory[]): void;
|
|
121
193
|
handleUpdatePlatformAccessories(accessories: PlatformAccessory[]): void;
|
|
122
194
|
handleUnregisterPlatformAccessories(accessories: PlatformAccessory[]): void;
|
|
@@ -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,wBAAwB,CAAA;AAE/B,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;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EACL,SAAS,EAET,MAAM,EASP,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKlD,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAA;AAIV,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,UAAU,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,CAAA;IAClE,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B
|
|
1
|
+
{"version":3,"file":"bridgeService.d.ts","sourceRoot":"","sources":["../src/bridgeService.ts"],"names":[],"mappings":"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"}
|
package/dist/bridgeService.js
CHANGED
|
@@ -11,6 +11,75 @@ export const DEFAULT_BRIDGE_DEFAULTS = {
|
|
|
11
11
|
model: 'homebridge',
|
|
12
12
|
};
|
|
13
13
|
const log = Logger.internal;
|
|
14
|
+
/**
|
|
15
|
+
* Whether HAP is enabled for the given bridge configuration. HAP is on by
|
|
16
|
+
* default; users opt out via `hap: { enabled: false }`. Missing block or
|
|
17
|
+
* missing `enabled` both mean enabled.
|
|
18
|
+
*
|
|
19
|
+
* The legacy boolean form (`hap: false`/`hap: true`) is handled here too.
|
|
20
|
+
* `validateHapConfig` normalizes it to the object shape, but a raw `false`
|
|
21
|
+
* must still read as disabled even if this is reached before normalization —
|
|
22
|
+
* otherwise `!hap` (true for `false`) would wrongly report a disabled bridge
|
|
23
|
+
* as enabled and publish it anyway.
|
|
24
|
+
*/
|
|
25
|
+
export function isHapConfigEnabled(hap) {
|
|
26
|
+
if (typeof hap === 'boolean') {
|
|
27
|
+
return hap;
|
|
28
|
+
}
|
|
29
|
+
return !hap || hap.enabled !== false;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether the bridge is in HAP externalsOnly mode (the bridge accessory itself
|
|
33
|
+
* is suppressed but external accessories still publish). Only the object form
|
|
34
|
+
* carries `externalsOnly`; the legacy boolean form never does, so it is always
|
|
35
|
+
* false there. Accepts the boolean form so callers can pass `bridge.hap`
|
|
36
|
+
* directly without narrowing.
|
|
37
|
+
*/
|
|
38
|
+
export function isHapExternalsOnly(hap) {
|
|
39
|
+
return typeof hap === 'object' && hap.externalsOnly === true;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Validate a `hap` config block. Throws on hard errors (wrong type, conflict
|
|
43
|
+
* between `externalsOnly` and `enabled`). For accessory child bridges, strips
|
|
44
|
+
* `externalsOnly` with a warn-level log because externals are not supported
|
|
45
|
+
* via the accessory plugin API.
|
|
46
|
+
*
|
|
47
|
+
* Mutates the passed block in place when stripping fields.
|
|
48
|
+
*/
|
|
49
|
+
export function validateHapConfig(bridgeConfig, opts) {
|
|
50
|
+
const hap = bridgeConfig.hap;
|
|
51
|
+
if (hap === undefined) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// Back-compat: the v2 beta used a boolean `hap` (`hap: false` to disable HAP,
|
|
55
|
+
// `hap: true` to force it on). Normalize it to the object shape rather than
|
|
56
|
+
// rejecting it — this is not a major-version change, so existing configs that
|
|
57
|
+
// still use the boolean form must keep working without a manual edit.
|
|
58
|
+
if (typeof hap === 'boolean') {
|
|
59
|
+
bridgeConfig.hap = { enabled: hap };
|
|
60
|
+
log.warn(`${opts.bridgeLabel}: 'hap: ${hap}' is deprecated; treating it as 'hap: { enabled: ${hap} }'. Please update your config to the object form.`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (typeof hap !== 'object' || hap === null || Array.isArray(hap)) {
|
|
64
|
+
throw new Error(`${opts.bridgeLabel}: 'hap' must be a boolean or an object with optional 'enabled' and 'externalsOnly' fields, not a ${Array.isArray(hap) ? 'array' : typeof hap}.`);
|
|
65
|
+
}
|
|
66
|
+
const hapBlock = hap;
|
|
67
|
+
if (hapBlock.externalsOnly === true) {
|
|
68
|
+
if (opts.isAccessoryPlugin) {
|
|
69
|
+
log.warn(`${opts.bridgeLabel}: 'hap.externalsOnly' is not supported on accessory child bridges. Ignoring.`);
|
|
70
|
+
delete hapBlock.externalsOnly;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (hapBlock.enabled !== false) {
|
|
74
|
+
// Honour the unambiguous intent rather than failing the whole process:
|
|
75
|
+
// warn and normalise `enabled` to false so the block matches the canonical
|
|
76
|
+
// externalsOnly form every downstream check expects. Mirrors
|
|
77
|
+
// validateMatterExternalsOnly — the two protocol blocks stay symmetric.
|
|
78
|
+
log.warn(`${opts.bridgeLabel}: 'hap.externalsOnly: true' was set without 'hap.enabled: false'. Proceeding in externalsOnly mode (the bridge accessory will not publish). Set 'hap.enabled: false' to confirm intent and silence this warning.`);
|
|
79
|
+
hapBlock.enabled = false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
14
83
|
export class BridgeService {
|
|
15
84
|
api;
|
|
16
85
|
pluginManager;
|
|
@@ -23,6 +92,7 @@ export class BridgeService {
|
|
|
23
92
|
cachedPlatformAccessories = [];
|
|
24
93
|
cachedAccessoriesFileLoaded = false;
|
|
25
94
|
publishedExternalAccessories = new Map();
|
|
95
|
+
publishedExternalAccessoriesMetadata = new Map();
|
|
26
96
|
constructor(api, pluginManager, externalPortService, bridgeOptions, bridgeConfig) {
|
|
27
97
|
this.api = api;
|
|
28
98
|
this.pluginManager = pluginManager;
|
|
@@ -31,6 +101,14 @@ export class BridgeService {
|
|
|
31
101
|
this.bridgeConfig = bridgeConfig;
|
|
32
102
|
this.storageService = new StorageService(this.bridgeOptions.cachedAccessoriesDir);
|
|
33
103
|
this.storageService.initSync();
|
|
104
|
+
// Externals are republished from scratch on every startup, so any persisted metadata
|
|
105
|
+
// from a previous run is stale until the owning plugin re-registers its accessories.
|
|
106
|
+
try {
|
|
107
|
+
this.storageService.removeItemSync(this.bridgeOptions.externalAccessoriesItemName);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
log.warn('Failed to clear stale external accessories metadata file:', error.message);
|
|
111
|
+
}
|
|
34
112
|
// Server is "secure by default", meaning it creates a top-level Bridge accessory that
|
|
35
113
|
// will not allow unauthenticated requests. This matches the behavior of actual HomeKit
|
|
36
114
|
// accessories. However, you can set this to true to allow all requests without authentication,
|
|
@@ -102,14 +180,7 @@ export class BridgeService {
|
|
|
102
180
|
publishInfo.setupID = bridgeConfig.setupID;
|
|
103
181
|
}
|
|
104
182
|
log.debug('Publishing bridge accessory (name: %s, publishInfo: %o).', this.bridge.displayName, BridgeService.strippingPinCode(publishInfo));
|
|
105
|
-
|
|
106
|
-
// bring-up failure). Surface those rejections — fire-and-forget swallowed
|
|
107
|
-
// them silently, so a failed publish only manifested as the bridge never
|
|
108
|
-
// appearing in HomeKit with no log explanation.
|
|
109
|
-
this.bridge.publish(publishInfo, this.allowInsecureAccess).catch((error) => {
|
|
110
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
111
|
-
log.error('Failed to publish bridge accessory \'%s\': %s', this.bridge.displayName, message);
|
|
112
|
-
});
|
|
183
|
+
void this.bridge.publish(publishInfo, this.allowInsecureAccess);
|
|
113
184
|
}
|
|
114
185
|
/**
|
|
115
186
|
* Attempt to load the cached accessories from disk.
|
|
@@ -239,23 +310,38 @@ export class BridgeService {
|
|
|
239
310
|
log.error('Your accessories will not persist between restarts until this issue is resolved.');
|
|
240
311
|
}
|
|
241
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Save metadata for currently published external accessories so external tools (e.g. the
|
|
315
|
+
* Homebridge UI) can attribute each accessory to the plugin that published it. The
|
|
316
|
+
* underlying HAP `AccessoryInfo` files do not store plugin attribution.
|
|
317
|
+
*/
|
|
318
|
+
saveExternalAccessoriesMetadataOnDisk() {
|
|
319
|
+
try {
|
|
320
|
+
const entries = Array.from(this.publishedExternalAccessoriesMetadata.values());
|
|
321
|
+
if (entries.length === 0) {
|
|
322
|
+
this.storageService.removeItemSync(this.bridgeOptions.externalAccessoriesItemName);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
this.storageService.setItemSync(this.bridgeOptions.externalAccessoriesItemName, entries);
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
log.error('Failed to save external accessories metadata to disk:', error.message);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
242
331
|
handleRegisterPlatformAccessories(accessories) {
|
|
332
|
+
// In HAP externalsOnly mode the bridge accessory itself is never published,
|
|
333
|
+
// so bridged accessories registered here are added to the (unpublished)
|
|
334
|
+
// bridge and will not advertise. Log a debug breadcrumb for parity with the
|
|
335
|
+
// Matter manager's externalsOnly drop-stubs — external accessories still
|
|
336
|
+
// publish via handlePublishExternalAccessories.
|
|
337
|
+
if (isHapExternalsOnly(this.bridgeConfig.hap)) {
|
|
338
|
+
log.debug(`HAP externalsOnly mode: ${accessories.length} bridged accessor${accessories.length === 1 ? 'y' : 'ies'} registered to this bridge will not be advertised (only external accessories publish).`);
|
|
339
|
+
}
|
|
243
340
|
const hapAccessories = accessories.map((accessory) => {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
log.warn('Accessory \'%s\' has the same UUID as existing accessory \'%s\' (UUID: %s). Skipping duplicate.', accessory.displayName, cachedCollision.displayName, newUUID);
|
|
249
|
-
return undefined;
|
|
250
|
-
}
|
|
251
|
-
// Also check against accessories that came in via the legacy
|
|
252
|
-
// (static / accessories[]) load path — they live directly on the
|
|
253
|
-
// bridge, not in cachedPlatformAccessories. Without this check the
|
|
254
|
-
// collision would only surface as a hard throw deep inside HAP-NodeJS
|
|
255
|
-
// at addBridgedAccessories time.
|
|
256
|
-
const bridgedCollision = this.bridge.bridgedAccessories.find(bridged => bridged.UUID === newUUID);
|
|
257
|
-
if (bridgedCollision) {
|
|
258
|
-
log.warn('Accessory \'%s\' has the same UUID as existing bridged accessory \'%s\' (UUID: %s). Skipping duplicate.', accessory.displayName, bridgedCollision.displayName, newUUID);
|
|
341
|
+
// Check for UUID collision with existing bridged accessories
|
|
342
|
+
const existingAccessory = this.cachedPlatformAccessories.find(cached => cached._associatedHAPAccessory.UUID === accessory._associatedHAPAccessory.UUID);
|
|
343
|
+
if (existingAccessory) {
|
|
344
|
+
log.warn('Accessory \'%s\' has the same UUID as existing accessory \'%s\' (UUID: %s). Skipping duplicate.', accessory.displayName, existingAccessory.displayName, accessory._associatedHAPAccessory.UUID);
|
|
259
345
|
return undefined;
|
|
260
346
|
}
|
|
261
347
|
this.cachedPlatformAccessories.push(accessory);
|
|
@@ -297,9 +383,12 @@ export class BridgeService {
|
|
|
297
383
|
this.saveCachedPlatformAccessoriesOnDisk();
|
|
298
384
|
}
|
|
299
385
|
async handlePublishExternalAccessories(accessories) {
|
|
300
|
-
// HAP must be enabled to publish
|
|
301
|
-
|
|
302
|
-
|
|
386
|
+
// HAP must be enabled to publish externals, unless the bridge is in
|
|
387
|
+
// externalsOnly mode (where the bridge itself is suppressed but its
|
|
388
|
+
// externals continue to advertise as standalone HAP accessories).
|
|
389
|
+
const hap = this.bridgeConfig.hap;
|
|
390
|
+
if (!isHapConfigEnabled(hap) && !isHapExternalsOnly(hap)) {
|
|
391
|
+
log.debug('Skipping external accessory HAP publish: HAP is disabled for this bridge (hap.enabled=false).');
|
|
303
392
|
return;
|
|
304
393
|
}
|
|
305
394
|
const accessoryPin = this.bridgeConfig.pin;
|
|
@@ -313,6 +402,13 @@ export class BridgeService {
|
|
|
313
402
|
}
|
|
314
403
|
else {
|
|
315
404
|
this.publishedExternalAccessories.set(advertiseAddress, accessory);
|
|
405
|
+
this.publishedExternalAccessoriesMetadata.set(advertiseAddress, {
|
|
406
|
+
username: advertiseAddress,
|
|
407
|
+
plugin: accessory._associatedPlugin,
|
|
408
|
+
displayName: hapAccessory.displayName,
|
|
409
|
+
category: accessory.category,
|
|
410
|
+
port: accessoryPort,
|
|
411
|
+
});
|
|
316
412
|
}
|
|
317
413
|
const plugin = this.pluginManager.getPlugin(accessory._associatedPlugin);
|
|
318
414
|
if (plugin) {
|
|
@@ -336,11 +432,9 @@ export class BridgeService {
|
|
|
336
432
|
advertiser: this.bridgeConfig.advertiser,
|
|
337
433
|
};
|
|
338
434
|
log.debug('Publishing external accessory (name: %s, publishInfo: %o).', hapAccessory.displayName, BridgeService.strippingPinCode(publishInfo));
|
|
339
|
-
hapAccessory.publish(publishInfo, this.allowInsecureAccess)
|
|
340
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
341
|
-
log.error('Failed to publish external accessory \'%s\': %s', hapAccessory.displayName, message);
|
|
342
|
-
});
|
|
435
|
+
void hapAccessory.publish(publishInfo, this.allowInsecureAccess);
|
|
343
436
|
}
|
|
437
|
+
this.saveExternalAccessoriesMetadataOnDisk();
|
|
344
438
|
}
|
|
345
439
|
createHAPAccessory(plugin, accessoryInstance, displayName, accessoryType, uuidBase) {
|
|
346
440
|
const services = (accessoryInstance.getServices() || [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeService.js","sourceRoot":"","sources":["../src/bridgeService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridgeService.js","sourceRoot":"","sources":["../src/bridgeService.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,18 @@ export declare class ChildBridgeFork {
|
|
|
20
20
|
sendMessage<T = unknown>(type: ChildProcessMessageEventType, data?: T): void;
|
|
21
21
|
loadPlugin(data: ChildProcessLoadEventData): Promise<void>;
|
|
22
22
|
startBridge(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Decide whether to publish the HAP bridge based on the bridge's `hap`
|
|
25
|
+
* config block. Three branches:
|
|
26
|
+
* - HAP enabled and not externalsOnly → publishBridge()
|
|
27
|
+
* - externalsOnly: true → log externalsOnly notice, externals will publish via their own path
|
|
28
|
+
* - hap.enabled: false → log disabled notice (warn if Matter is also inactive,
|
|
29
|
+
* since the child bridge then advertises nothing at all)
|
|
30
|
+
*
|
|
31
|
+
* Public for testability (the bridgeService dependency is set up in startBridge,
|
|
32
|
+
* so direct invocation from tests is straightforward with a mocked bridgeService).
|
|
33
|
+
*/
|
|
34
|
+
publishHapIfEnabled(): void;
|
|
23
35
|
/**
|
|
24
36
|
* Request the next available external HAP port from the parent process
|
|
25
37
|
* @param username
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"childBridgeFork.d.ts","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AASxD,OAAO,KAAK,EAEV,yBAAyB,EAGzB,kCAAkC,EAEnC,MAAM,yBAAyB,CAAA;AAWhC,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"childBridgeFork.d.ts","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AASxD,OAAO,KAAK,EAEV,yBAAyB,EAGzB,kCAAkC,EAEnC,MAAM,yBAAyB,CAAA;AAWhC,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAQtE,OAAO,gCAAgC,CAAA;AAUvC,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,mBAAmB,CAAiC;IAG5D,OAAO,CAAC,aAAa,CAAC,CAA0B;IAGhD,OAAO,CAAC,oBAAoB,CAAC,CAAiC;IAE9D,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,mBAAmB,CAAiE;;IAO5F,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAStE,UAAU,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAwIlC;;;;;;;;;;OAUG;IACI,mBAAmB,IAAI,IAAI;IAkBlC;;;OAGG;IACU,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAqBnF;;;OAGG;IACU,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2B7E;;;OAGG;IACI,sBAAsB,CAAC,IAAI,EAAE,kCAAkC,GAAG,IAAI;IAO7E;;;OAGG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACI,qBAAqB;IAa5B;;OAEG;IACH,2BAA2B,IAAI,IAAI;IAInC;;OAEG;IACH,0BAA0B,IAAI,IAAI;IAIlC;;OAEG;IACH,0BAA0B,IAAI,IAAI;IAsBlC;;OAEG;IACH,4BAA4B,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI1D;;OAEG;IACH,4BAA4B,CAAC,IAAI,EAAE;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnC,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,IAAI;IAIR,QAAQ,IAAI,IAAI;CAUjB"}
|
package/dist/childBridgeFork.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import process from 'node:process';
|
|
3
3
|
import { HAPStorage } from '@homebridge/hap-nodejs';
|
|
4
4
|
import { HomebridgeAPI } from './api.js';
|
|
5
|
-
import { BridgeService } from './bridgeService.js';
|
|
5
|
+
import { BridgeService, isHapConfigEnabled, isHapExternalsOnly } from './bridgeService.js';
|
|
6
6
|
import { ChildBridgeExternalPortService } from './externalPortService.js';
|
|
7
7
|
import { Logger } from './logger.js';
|
|
8
8
|
import { ChildBridgeMatterMessageHandler } from './matter/ChildBridgeMatterMessageHandler.js';
|
|
9
|
+
import { isMatterActive } from './matter/config.js';
|
|
9
10
|
import { PluginManager } from './pluginManager.js';
|
|
10
11
|
import { User } from './user.js';
|
|
11
12
|
import 'source-map-support/register.js';
|
|
@@ -73,11 +74,15 @@ export class ChildBridgeFork {
|
|
|
73
74
|
this.pluginManager = new PluginManager(this.api);
|
|
74
75
|
this.externalPortService = new ChildBridgeExternalPortService(this);
|
|
75
76
|
// Eagerly load the MatterAPI facade BEFORE plugin init when Matter is
|
|
76
|
-
//
|
|
77
|
+
// active for this child bridge, so api.matter is defined when the
|
|
77
78
|
// plugin's initializer runs. The heavy ChildBridgeMatterManager init
|
|
78
79
|
// still happens later in startBridge(). Matter is unsupported on
|
|
79
80
|
// accessory-style child bridges, so skip there.
|
|
80
|
-
|
|
81
|
+
//
|
|
82
|
+
// `isMatterActive` includes externalsOnly mode so plugins can still call
|
|
83
|
+
// api.matter.publishExternalAccessories even when the bridge node itself
|
|
84
|
+
// is suppressed.
|
|
85
|
+
if (isMatterActive(this.bridgeConfig.matter) && this.type !== "accessory" /* PluginType.ACCESSORY */) {
|
|
81
86
|
await this.api.loadMatterAPI();
|
|
82
87
|
}
|
|
83
88
|
// load plugin
|
|
@@ -91,12 +96,13 @@ export class ChildBridgeFork {
|
|
|
91
96
|
});
|
|
92
97
|
}
|
|
93
98
|
async startBridge() {
|
|
94
|
-
// Conditionally load Matter support only if this child bridge has Matter
|
|
95
|
-
//
|
|
96
|
-
|
|
99
|
+
// Conditionally load Matter support only if this child bridge has Matter active
|
|
100
|
+
// (configured + enabled OR externalsOnly). Prevents loading heavy Matter.js
|
|
101
|
+
// libraries for child bridges that don't use it.
|
|
102
|
+
if (isMatterActive(this.bridgeConfig.matter) && this.type === "accessory" /* PluginType.ACCESSORY */) {
|
|
97
103
|
matterLogger.warn('Matter is not supported on accessory child bridges. Ignoring matter configuration.');
|
|
98
104
|
}
|
|
99
|
-
if (this.bridgeConfig.matter && this.type !== "accessory" /* PluginType.ACCESSORY */) {
|
|
105
|
+
if (isMatterActive(this.bridgeConfig.matter) && this.type !== "accessory" /* PluginType.ACCESSORY */) {
|
|
100
106
|
matterLogger.info('Loading Matter support for child bridge...');
|
|
101
107
|
// Note: api.loadMatterAPI() was already called at the start of loadPlugin()
|
|
102
108
|
// so api.matter is already defined by the time the plugin's initializer ran.
|
|
@@ -178,15 +184,11 @@ export class ChildBridgeFork {
|
|
|
178
184
|
if (this.matterManager) {
|
|
179
185
|
this.matterManager.restoreCachedAccessories(this.bridgeOptions.keepOrphanedCachedAccessories ?? false);
|
|
180
186
|
}
|
|
181
|
-
// Publish HAP only when not opted out via
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
Logger.internal.info('HAP is disabled for this child bridge (bridgeConfig.hap=false); skipping HAP publish.');
|
|
189
|
-
}
|
|
187
|
+
// Publish HAP only when not opted out via hap.enabled=false and not in
|
|
188
|
+
// externalsOnly mode. Both protocols may be disabled or in externalsOnly
|
|
189
|
+
// mode, in which case this child bridge advertises nothing of its own
|
|
190
|
+
// (externals can still publish independently in externalsOnly mode).
|
|
191
|
+
this.publishHapIfEnabled();
|
|
190
192
|
this.api.signalFinished();
|
|
191
193
|
// Send initial status update with HAP and Matter info BEFORE telling parent we're online
|
|
192
194
|
// This ensures the parent's cache is populated before any UI status updates
|
|
@@ -194,6 +196,37 @@ export class ChildBridgeFork {
|
|
|
194
196
|
// tell the parent we are online
|
|
195
197
|
this.sendMessage("online" /* ChildProcessMessageEventType.ONLINE */);
|
|
196
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Decide whether to publish the HAP bridge based on the bridge's `hap`
|
|
201
|
+
* config block. Three branches:
|
|
202
|
+
* - HAP enabled and not externalsOnly → publishBridge()
|
|
203
|
+
* - externalsOnly: true → log externalsOnly notice, externals will publish via their own path
|
|
204
|
+
* - hap.enabled: false → log disabled notice (warn if Matter is also inactive,
|
|
205
|
+
* since the child bridge then advertises nothing at all)
|
|
206
|
+
*
|
|
207
|
+
* Public for testability (the bridgeService dependency is set up in startBridge,
|
|
208
|
+
* so direct invocation from tests is straightforward with a mocked bridgeService).
|
|
209
|
+
*/
|
|
210
|
+
publishHapIfEnabled() {
|
|
211
|
+
const hap = this.bridgeConfig.hap;
|
|
212
|
+
if (isHapConfigEnabled(hap) && !isHapExternalsOnly(hap)) {
|
|
213
|
+
this.bridgeService.publishBridge();
|
|
214
|
+
}
|
|
215
|
+
else if (isHapExternalsOnly(hap)) {
|
|
216
|
+
Logger.internal.info('HAP externalsOnly mode for this child bridge; bridge accessory will not publish but external accessories will.');
|
|
217
|
+
}
|
|
218
|
+
else if (!this.matterManager) {
|
|
219
|
+
// HAP is off (plain disabled, not externalsOnly) AND Matter is inactive
|
|
220
|
+
// for this child (matterManager is only constructed when Matter is active,
|
|
221
|
+
// including externalsOnly). A child bridge exists solely to advertise its
|
|
222
|
+
// accessories, so one with neither protocol is almost certainly a
|
|
223
|
+
// misconfiguration — surface it loudly rather than as a quiet info line.
|
|
224
|
+
Logger.internal.warn('Both HAP and Matter are disabled for this child bridge; it will not advertise any accessories. Check the \'hap\' and \'matter\' config blocks for this child bridge.');
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
Logger.internal.info('HAP is disabled for this child bridge (hap.enabled=false); skipping HAP publish.');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
197
230
|
/**
|
|
198
231
|
* Request the next available external HAP port from the parent process
|
|
199
232
|
* @param username
|
|
@@ -408,14 +441,12 @@ function signalHandler(signal, signalNum) {
|
|
|
408
441
|
process.on('SIGINT', signalHandler.bind(undefined, 'SIGINT', 2));
|
|
409
442
|
process.on('SIGTERM', signalHandler.bind(undefined, 'SIGTERM', 15));
|
|
410
443
|
/**
|
|
411
|
-
* Ensure orphaned processes are cleaned up
|
|
412
|
-
* `disconnect` immediately when it closes — listen for that instead of
|
|
413
|
-
* polling `process.connected` every 5 seconds, so a child whose parent
|
|
414
|
-
* crashed exits without a multi-second delay (and we burn no idle ticks
|
|
415
|
-
* in the steady state).
|
|
444
|
+
* Ensure orphaned processes are cleaned up
|
|
416
445
|
*/
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
446
|
+
setInterval(() => {
|
|
447
|
+
if (!process.connected) {
|
|
448
|
+
Logger.internal.info('Parent process not connected, terminating process...');
|
|
449
|
+
process.exit(1);
|
|
450
|
+
}
|
|
451
|
+
}, 5000);
|
|
421
452
|
//# sourceMappingURL=childBridgeFork.js.map
|