homebridge 2.0.0-beta.5 → 2.0.0-beta.51
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/README.md +16 -17
- package/bin/homebridge.js +22 -0
- package/config-sample.json +3 -3
- package/dist/api.d.ts +137 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +151 -0
- package/dist/api.js.map +1 -0
- package/{lib → dist}/bridgeService.d.ts +16 -32
- package/dist/bridgeService.d.ts.map +1 -0
- package/dist/bridgeService.js +341 -0
- package/dist/bridgeService.js.map +1 -0
- package/dist/childBridgeFork.d.ts +40 -0
- package/dist/childBridgeFork.d.ts.map +1 -0
- package/dist/childBridgeFork.js +362 -0
- package/dist/childBridgeFork.js.map +1 -0
- package/dist/childBridgeService.d.ts +146 -0
- package/dist/childBridgeService.d.ts.map +1 -0
- package/dist/childBridgeService.js +416 -0
- package/dist/childBridgeService.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +88 -0
- package/dist/cli.js.map +1 -0
- package/dist/externalPortService.d.ts +26 -0
- package/dist/externalPortService.d.ts.map +1 -0
- package/dist/externalPortService.js +77 -0
- package/dist/externalPortService.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/ipcService.d.ts +58 -0
- package/dist/ipcService.d.ts.map +1 -0
- package/dist/ipcService.js +43 -0
- package/dist/ipcService.js.map +1 -0
- package/dist/logger.d.ts +38 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +102 -0
- package/dist/logger.js.map +1 -0
- package/dist/matter/BaseMatterManager.d.ts +20 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -0
- package/dist/matter/BaseMatterManager.js +183 -0
- package/dist/matter/BaseMatterManager.js.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts +35 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.js +222 -0
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
- package/dist/matter/ClusterCommandMapper.d.ts +5 -0
- package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
- package/dist/matter/ClusterCommandMapper.js +222 -0
- package/dist/matter/ClusterCommandMapper.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +22 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js +49 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
- package/dist/matter/MatterAPIImpl.d.ts +443 -0
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
- package/dist/matter/MatterAPIImpl.js +210 -0
- package/dist/matter/MatterAPIImpl.js.map +1 -0
- package/dist/matter/MatterBridgeManager.d.ts +40 -0
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
- package/dist/matter/MatterBridgeManager.js +340 -0
- package/dist/matter/MatterBridgeManager.js.map +1 -0
- package/dist/matter/MatterConfigCollector.d.ts +7 -0
- package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
- package/dist/matter/MatterConfigCollector.js +65 -0
- package/dist/matter/MatterConfigCollector.js.map +1 -0
- package/dist/matter/accessoryCache.d.ts +57 -0
- package/dist/matter/accessoryCache.d.ts.map +1 -0
- package/dist/matter/accessoryCache.js +155 -0
- package/dist/matter/accessoryCache.js.map +1 -0
- package/dist/matter/behaviors/AirQualityBehavior.d.ts +8 -0
- package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/AirQualityBehavior.js +11 -0
- package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +27 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.js +110 -0
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +12 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.js +139 -0
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +32 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +51 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +7 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.js +48 -0
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts +7 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.js +57 -0
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +7 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.js +25 -0
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +11 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.js +100 -0
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts +8 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.js +60 -0
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
- package/dist/matter/behaviors/RegistryManager.d.ts +15 -0
- package/dist/matter/behaviors/RegistryManager.d.ts.map +1 -0
- package/dist/matter/behaviors/RegistryManager.js +31 -0
- package/dist/matter/behaviors/RegistryManager.js.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +14 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +29 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +10 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +81 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +14 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js +29 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +9 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js +62 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +9 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.js +92 -0
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +12 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js +108 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
- package/dist/matter/behaviors/index.d.ts +18 -0
- package/dist/matter/behaviors/index.d.ts.map +1 -0
- package/dist/matter/behaviors/index.js +17 -0
- package/dist/matter/behaviors/index.js.map +1 -0
- package/dist/matter/clusterTypes.d.ts +178 -0
- package/dist/matter/clusterTypes.d.ts.map +1 -0
- package/dist/matter/clusterTypes.js +2 -0
- package/dist/matter/clusterTypes.js.map +1 -0
- package/dist/matter/configValidator.d.ts +26 -0
- package/dist/matter/configValidator.d.ts.map +1 -0
- package/dist/matter/configValidator.js +173 -0
- package/dist/matter/configValidator.js.map +1 -0
- package/dist/matter/errorHandler.d.ts +11 -0
- package/dist/matter/errorHandler.d.ts.map +1 -0
- package/dist/matter/errorHandler.js +81 -0
- package/dist/matter/errorHandler.js.map +1 -0
- package/dist/matter/errors.d.ts +46 -0
- package/dist/matter/errors.d.ts.map +1 -0
- package/dist/matter/errors.js +68 -0
- package/dist/matter/errors.js.map +1 -0
- package/dist/matter/index.d.ts +97 -0
- package/dist/matter/index.d.ts.map +1 -0
- package/dist/matter/index.js +10 -0
- package/dist/matter/index.js.map +1 -0
- package/dist/matter/logFormatter.d.ts +2 -0
- package/dist/matter/logFormatter.d.ts.map +1 -0
- package/dist/matter/logFormatter.js +100 -0
- package/dist/matter/logFormatter.js.map +1 -0
- package/dist/matter/managerTypes.d.ts +57 -0
- package/dist/matter/managerTypes.d.ts.map +1 -0
- package/dist/matter/managerTypes.js +2 -0
- package/dist/matter/managerTypes.js.map +1 -0
- package/dist/matter/server.d.ts +112 -0
- package/dist/matter/server.d.ts.map +1 -0
- package/dist/matter/server.js +1508 -0
- package/dist/matter/server.js.map +1 -0
- package/dist/matter/serverHelpers.d.ts +31 -0
- package/dist/matter/serverHelpers.d.ts.map +1 -0
- package/dist/matter/serverHelpers.js +273 -0
- package/dist/matter/serverHelpers.js.map +1 -0
- package/dist/matter/sharedTypes.d.ts +93 -0
- package/dist/matter/sharedTypes.d.ts.map +1 -0
- package/dist/matter/sharedTypes.js +20 -0
- package/dist/matter/sharedTypes.js.map +1 -0
- package/dist/matter/storage.d.ts +45 -0
- package/dist/matter/storage.d.ts.map +1 -0
- package/dist/matter/storage.js +325 -0
- package/dist/matter/storage.js.map +1 -0
- package/dist/matter/typeHelpers.d.ts +15 -0
- package/dist/matter/typeHelpers.d.ts.map +1 -0
- package/dist/matter/typeHelpers.js +33 -0
- package/dist/matter/typeHelpers.js.map +1 -0
- package/dist/matter/types.d.ts +565 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +132 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matter/utils.d.ts +13 -0
- package/dist/matter/utils.d.ts.map +1 -0
- package/dist/matter/utils.js +21 -0
- package/dist/matter/utils.js.map +1 -0
- package/{lib → dist}/platformAccessory.d.ts +8 -21
- package/dist/platformAccessory.d.ts.map +1 -0
- package/dist/platformAccessory.js +79 -0
- package/dist/platformAccessory.js.map +1 -0
- package/{lib → dist}/plugin.d.ts +2 -6
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +159 -0
- package/dist/plugin.js.map +1 -0
- package/{lib → dist}/pluginManager.d.ts +3 -25
- package/dist/pluginManager.d.ts.map +1 -0
- package/{lib → dist}/pluginManager.js +87 -115
- package/dist/pluginManager.js.map +1 -0
- package/{lib → dist}/server.d.ts +15 -20
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +732 -0
- package/dist/server.js.map +1 -0
- package/{lib → dist}/storageService.d.ts.map +1 -1
- package/dist/storageService.js +41 -0
- package/dist/storageService.js.map +1 -0
- package/{lib → dist}/user.d.ts +1 -3
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +29 -0
- package/dist/user.js.map +1 -0
- package/{lib → dist}/util/mac.d.ts +1 -0
- package/dist/util/mac.d.ts.map +1 -0
- package/dist/util/mac.js +13 -0
- package/dist/util/mac.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -50
- package/bin/homebridge +0 -17
- package/lib/api.d.ts +0 -210
- package/lib/api.d.ts.map +0 -1
- package/lib/api.js +0 -155
- package/lib/api.js.map +0 -1
- package/lib/bridgeService.d.ts.map +0 -1
- package/lib/bridgeService.js +0 -426
- package/lib/bridgeService.js.map +0 -1
- package/lib/childBridgeFork.d.ts +0 -37
- package/lib/childBridgeFork.d.ts.map +0 -1
- package/lib/childBridgeFork.js +0 -244
- package/lib/childBridgeFork.js.map +0 -1
- package/lib/childBridgeService.d.ts +0 -199
- package/lib/childBridgeService.d.ts.map +0 -1
- package/lib/childBridgeService.js +0 -428
- package/lib/childBridgeService.js.map +0 -1
- package/lib/cli.d.ts +0 -4
- package/lib/cli.d.ts.map +0 -1
- package/lib/cli.js +0 -111
- package/lib/cli.js.map +0 -1
- package/lib/externalPortService.d.ts +0 -33
- package/lib/externalPortService.d.ts.map +0 -1
- package/lib/externalPortService.js +0 -64
- package/lib/externalPortService.js.map +0 -1
- package/lib/index.d.ts +0 -76
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -72
- package/lib/index.js.map +0 -1
- package/lib/ipcService.d.ts +0 -33
- package/lib/ipcService.d.ts.map +0 -1
- package/lib/ipcService.js +0 -49
- package/lib/ipcService.js.map +0 -1
- package/lib/logger.d.ts +0 -78
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js +0 -147
- package/lib/logger.js.map +0 -1
- package/lib/platformAccessory.d.ts.map +0 -1
- package/lib/platformAccessory.js +0 -102
- package/lib/platformAccessory.js.map +0 -1
- package/lib/plugin.d.ts.map +0 -1
- package/lib/plugin.js +0 -194
- package/lib/plugin.js.map +0 -1
- package/lib/pluginManager.d.ts.map +0 -1
- package/lib/pluginManager.js.map +0 -1
- package/lib/server.d.ts.map +0 -1
- package/lib/server.js +0 -457
- package/lib/server.js.map +0 -1
- package/lib/storageService.js +0 -70
- package/lib/storageService.js.map +0 -1
- package/lib/user.d.ts.map +0 -1
- package/lib/user.js +0 -36
- package/lib/user.js.map +0 -1
- package/lib/util/mac.d.ts.map +0 -1
- package/lib/util/mac.js +0 -20
- package/lib/util/mac.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js +0 -21
- package/lib/version.js.map +0 -1
- /package/{lib → dist}/storageService.d.ts +0 -0
- /package/{lib → dist}/version.d.ts +0 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { Logger } from '../logger.js';
|
|
2
|
+
import { clusterNames, clusters, deviceTypes, MatterTypes } from './index.js';
|
|
3
|
+
const log = Logger.withPrefix('Matter/API');
|
|
4
|
+
const EXTERNAL_DEVICE_TYPES = [
|
|
5
|
+
deviceTypes.RoboticVacuumCleaner,
|
|
6
|
+
];
|
|
7
|
+
function requiresExternalBridge(deviceType) {
|
|
8
|
+
return EXTERNAL_DEVICE_TYPES.some(externalType => externalType.deviceType === deviceType.deviceType);
|
|
9
|
+
}
|
|
10
|
+
class MatterAccessoryValidationError extends Error {
|
|
11
|
+
accessory;
|
|
12
|
+
constructor(message, accessory) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.accessory = accessory;
|
|
15
|
+
this.name = 'MatterAccessoryValidationError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class MatterAPIImpl {
|
|
19
|
+
api;
|
|
20
|
+
constructor(api) {
|
|
21
|
+
this.api = api;
|
|
22
|
+
}
|
|
23
|
+
validateAccessory(accessory, context) {
|
|
24
|
+
if (!accessory.uuid) {
|
|
25
|
+
throw new MatterAccessoryValidationError(`${context}: Matter accessory missing required 'uuid' field`, accessory);
|
|
26
|
+
}
|
|
27
|
+
if (!accessory.displayName) {
|
|
28
|
+
throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.uuid}' missing required 'displayName' field`, accessory);
|
|
29
|
+
}
|
|
30
|
+
if (!accessory.deviceType) {
|
|
31
|
+
throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'deviceType' field`, accessory);
|
|
32
|
+
}
|
|
33
|
+
if (!accessory.manufacturer) {
|
|
34
|
+
throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'manufacturer' field`, accessory);
|
|
35
|
+
}
|
|
36
|
+
if (!accessory.model) {
|
|
37
|
+
throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'model' field`, accessory);
|
|
38
|
+
}
|
|
39
|
+
if (!accessory.serialNumber) {
|
|
40
|
+
throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'serialNumber' field`, accessory);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
validateAccessories(accessories, context) {
|
|
44
|
+
const validAccessories = [];
|
|
45
|
+
for (const accessory of accessories) {
|
|
46
|
+
try {
|
|
47
|
+
this.validateAccessory(accessory, context);
|
|
48
|
+
validAccessories.push(accessory);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (error instanceof MatterAccessoryValidationError) {
|
|
52
|
+
log.error(error.message);
|
|
53
|
+
log.error('This accessory will not be registered. Please fix the issue in your plugin.');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
log.error(`${context}: Unexpected error validating accessory:`, error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return validAccessories;
|
|
61
|
+
}
|
|
62
|
+
validateClusterName(clusterName, context) {
|
|
63
|
+
const validClusterNames = Object.values(clusterNames);
|
|
64
|
+
if (!validClusterNames.includes(clusterName)) {
|
|
65
|
+
log.warn(`${context}: Unknown cluster name '${clusterName}'. This might cause issues. `
|
|
66
|
+
+ `Valid clusters: ${validClusterNames.join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
get uuid() {
|
|
70
|
+
return this.api.hap.uuid;
|
|
71
|
+
}
|
|
72
|
+
get deviceTypes() {
|
|
73
|
+
return deviceTypes;
|
|
74
|
+
}
|
|
75
|
+
get clusters() {
|
|
76
|
+
return clusters;
|
|
77
|
+
}
|
|
78
|
+
get clusterNames() {
|
|
79
|
+
return clusterNames;
|
|
80
|
+
}
|
|
81
|
+
get types() {
|
|
82
|
+
return MatterTypes;
|
|
83
|
+
}
|
|
84
|
+
async registerPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
85
|
+
if (accessories.length === 0) {
|
|
86
|
+
log.warn(`${pluginIdentifier}: Attempted to register 0 Matter accessories`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const validAccessories = this.validateAccessories(accessories, `registerPlatformAccessories (${pluginIdentifier}/${platformName})`);
|
|
90
|
+
if (validAccessories.length === 0) {
|
|
91
|
+
log.error(`${pluginIdentifier}: All ${accessories.length} Matter accessories failed validation`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (validAccessories.length < accessories.length) {
|
|
95
|
+
log.warn(`${pluginIdentifier}: ${accessories.length - validAccessories.length} of ${accessories.length} Matter accessories failed validation`);
|
|
96
|
+
}
|
|
97
|
+
const normalAccessories = [];
|
|
98
|
+
const externalAccessories = [];
|
|
99
|
+
for (const accessory of validAccessories) {
|
|
100
|
+
if (requiresExternalBridge(accessory.deviceType)) {
|
|
101
|
+
externalAccessories.push(accessory);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
normalAccessories.push(accessory);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (normalAccessories.length > 0) {
|
|
108
|
+
normalAccessories.forEach((accessory) => {
|
|
109
|
+
const internal = accessory;
|
|
110
|
+
internal._associatedPlugin = pluginIdentifier;
|
|
111
|
+
internal._associatedPlatform = platformName;
|
|
112
|
+
});
|
|
113
|
+
log.debug(`${pluginIdentifier}: Registering ${normalAccessories.length} Matter accessor${normalAccessories.length === 1 ? 'y' : 'ies'} for platform '${platformName}'`);
|
|
114
|
+
this.api.emit("registerMatterPlatformAccessories", pluginIdentifier, platformName, normalAccessories);
|
|
115
|
+
}
|
|
116
|
+
if (externalAccessories.length > 0) {
|
|
117
|
+
externalAccessories.forEach((accessory) => {
|
|
118
|
+
const internal = accessory;
|
|
119
|
+
internal._associatedPlugin = pluginIdentifier;
|
|
120
|
+
});
|
|
121
|
+
log.debug(`${pluginIdentifier}: Publishing ${externalAccessories.length} external Matter accessor${externalAccessories.length === 1 ? 'y' : 'ies'} (${externalAccessories.map(a => a.displayName).join(', ')})`);
|
|
122
|
+
const registrationId = `${pluginIdentifier}-${Date.now()}-${Math.random()}`;
|
|
123
|
+
const registrationPromise = new Promise((resolve) => {
|
|
124
|
+
const internalApi = this.api;
|
|
125
|
+
if (!internalApi._pendingExternalRegistrations) {
|
|
126
|
+
internalApi._pendingExternalRegistrations = new Map();
|
|
127
|
+
}
|
|
128
|
+
internalApi._pendingExternalRegistrations.set(registrationId, resolve);
|
|
129
|
+
});
|
|
130
|
+
this.api.emit("publishExternalMatterAccessories", externalAccessories, registrationId);
|
|
131
|
+
await registrationPromise;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async updatePlatformAccessories(accessories) {
|
|
135
|
+
if (accessories.length === 0) {
|
|
136
|
+
log.warn('Attempted to update 0 Matter platform accessories');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
log.debug(`Updating ${accessories.length} Matter platform accessor${accessories.length === 1 ? 'y' : 'ies'} in cache`);
|
|
140
|
+
this.api.emit("updateMatterPlatformAccessories", accessories);
|
|
141
|
+
}
|
|
142
|
+
async unregisterPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
143
|
+
if (accessories.length === 0) {
|
|
144
|
+
log.warn(`${pluginIdentifier}: Attempted to unregister 0 Matter accessories`);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const normalAccessories = [];
|
|
148
|
+
const externalAccessories = [];
|
|
149
|
+
for (const accessory of accessories) {
|
|
150
|
+
if (requiresExternalBridge(accessory.deviceType)) {
|
|
151
|
+
externalAccessories.push(accessory);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
normalAccessories.push(accessory);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (normalAccessories.length > 0) {
|
|
158
|
+
log.debug(`${pluginIdentifier}: Unregistering ${normalAccessories.length} Matter accessor${normalAccessories.length === 1 ? 'y' : 'ies'} from platform '${platformName}'`);
|
|
159
|
+
this.api.emit("unregisterMatterPlatformAccessories", pluginIdentifier, platformName, normalAccessories);
|
|
160
|
+
}
|
|
161
|
+
if (externalAccessories.length > 0) {
|
|
162
|
+
log.debug(`${pluginIdentifier}: Unregistering ${externalAccessories.length} external Matter accessor${externalAccessories.length === 1 ? 'y' : 'ies'} (${externalAccessories.map(a => a.displayName).join(', ')})`);
|
|
163
|
+
this.api.emit("unregisterExternalMatterAccessories", externalAccessories);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
async updateAccessoryState(uuid, cluster, attributes, partId) {
|
|
167
|
+
if (!uuid) {
|
|
168
|
+
log.error('updateAccessoryState: uuid parameter is required');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (!cluster) {
|
|
172
|
+
log.error(`updateAccessoryState: cluster parameter is required for accessory ${uuid}`);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (!attributes || Object.keys(attributes).length === 0) {
|
|
176
|
+
log.warn(`updateAccessoryState: No attributes provided for accessory ${uuid}, cluster ${cluster}`);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
this.validateClusterName(cluster, `updateAccessoryState (${uuid})`);
|
|
180
|
+
log.debug(`Updating Matter accessory state: uuid=${uuid}, cluster=${cluster}, attributes=${Object.keys(attributes).join(', ')}${partId ? `, partId=${partId}` : ''}`);
|
|
181
|
+
this.api.emit("updateMatterAccessoryState", uuid, cluster, attributes, partId);
|
|
182
|
+
}
|
|
183
|
+
async getAccessoryState(uuid, cluster, partId) {
|
|
184
|
+
if (!uuid) {
|
|
185
|
+
log.error('getAccessoryState: uuid parameter is required');
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
if (!cluster) {
|
|
189
|
+
log.error(`getAccessoryState: cluster parameter is required for accessory ${uuid}`);
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
this.validateClusterName(cluster, `getAccessoryState (${uuid})`);
|
|
193
|
+
log.debug(`Getting Matter accessory state: uuid=${uuid}, cluster=${cluster}${partId ? `, partId=${partId}` : ''}`);
|
|
194
|
+
const internalApi = this.api;
|
|
195
|
+
const matterManager = internalApi._matterManager;
|
|
196
|
+
if (matterManager) {
|
|
197
|
+
const externalServer = matterManager.getExternalServer(uuid);
|
|
198
|
+
if (externalServer) {
|
|
199
|
+
return externalServer.getAccessoryState(uuid, cluster, partId);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const matterServer = internalApi._matterServer;
|
|
203
|
+
if (!matterServer) {
|
|
204
|
+
log.debug(`getAccessoryState: Matter server not available for accessory ${uuid}`);
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
return matterServer.getAccessoryState(uuid, cluster, partId);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=MatterAPIImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatterAPIImpl.js","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { HomebridgeAPI } from '../api.js';
|
|
2
|
+
import type { HomebridgeConfig } from '../bridgeService.js';
|
|
3
|
+
import type { ExternalPortService } from '../externalPortService.js';
|
|
4
|
+
import type { HomebridgeOptions } from '../server.js';
|
|
5
|
+
import type { AccessoryInfo } from './managerTypes.js';
|
|
6
|
+
import type { InternalMatterAccessory } from './types.js';
|
|
7
|
+
import { PluginManager } from '../pluginManager.js';
|
|
8
|
+
import { BaseMatterManager } from './BaseMatterManager.js';
|
|
9
|
+
export interface MatterStatusInfo {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
port?: number;
|
|
12
|
+
setupUri?: string;
|
|
13
|
+
pin?: string;
|
|
14
|
+
serialNumber?: string;
|
|
15
|
+
commissioned?: boolean;
|
|
16
|
+
deviceCount?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class MatterBridgeManager extends BaseMatterManager {
|
|
19
|
+
private readonly config;
|
|
20
|
+
private readonly api;
|
|
21
|
+
private readonly externalPortService;
|
|
22
|
+
private readonly options;
|
|
23
|
+
private readonly server;
|
|
24
|
+
constructor(config: HomebridgeConfig, api: HomebridgeAPI, externalPortService: ExternalPortService, pluginManager: PluginManager, options: HomebridgeOptions, server: {
|
|
25
|
+
registerExternalMatterBridge: (username: string, owner: string) => void;
|
|
26
|
+
});
|
|
27
|
+
private setupEventListeners;
|
|
28
|
+
static collectConfiguredMatterPorts(config: HomebridgeConfig): number[];
|
|
29
|
+
initialize(): Promise<void>;
|
|
30
|
+
handlePublishExternalAccessories(accessories: InternalMatterAccessory[], registrationId: string): Promise<void>;
|
|
31
|
+
getMatterStatus(): MatterStatusInfo;
|
|
32
|
+
collectAllAccessories(bridgeUsername?: string): AccessoryInfo[];
|
|
33
|
+
getAccessoryInfo(uuid: string): AccessoryInfo | undefined;
|
|
34
|
+
private collectAccessoriesFromServer;
|
|
35
|
+
private transformAccessoryData;
|
|
36
|
+
private getAccessoryDetailFromServer;
|
|
37
|
+
private getCurrentStateFromServer;
|
|
38
|
+
teardown(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=MatterBridgeManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatterBridgeManager.d.ts","sourceRoot":"","sources":["../../src/matter/MatterBridgeManager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAU1D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAKD,qBAAa,mBAAoB,SAAQ,iBAAiB;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBALN,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,aAAa,EAClB,mBAAmB,EAAE,mBAAmB,EACzD,aAAa,EAAE,aAAa,EACX,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;QAAE,4BAA4B,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE;IAUtG,OAAO,CAAC,mBAAmB;IA4C3B,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE;IAyBjE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqG3B,gCAAgC,CAAC,WAAW,EAAE,uBAAuB,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DrH,eAAe,IAAI,gBAAgB;IAgCnC,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAoC/D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAyCzD,OAAO,CAAC,4BAA4B;IAiCpC,OAAO,CAAC,sBAAsB;IA0E9B,OAAO,CAAC,4BAA4B;IA4BpC,OAAO,CAAC,yBAAyB;IAmC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { Logger } from '../logger.js';
|
|
2
|
+
import { User } from '../user.js';
|
|
3
|
+
import { BaseMatterManager } from './BaseMatterManager.js';
|
|
4
|
+
import { publishExternalMatterAccessory } from './ExternalMatterAccessoryPublisher.js';
|
|
5
|
+
import { MatterServer } from './server.js';
|
|
6
|
+
import { getErrorCode, normalizeBindConfig } from './utils.js';
|
|
7
|
+
const log = Logger.withPrefix('Matter/MainManager');
|
|
8
|
+
export class MatterBridgeManager extends BaseMatterManager {
|
|
9
|
+
config;
|
|
10
|
+
api;
|
|
11
|
+
externalPortService;
|
|
12
|
+
options;
|
|
13
|
+
server;
|
|
14
|
+
constructor(config, api, externalPortService, pluginManager, options, server) {
|
|
15
|
+
super(pluginManager);
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.api = api;
|
|
18
|
+
this.externalPortService = externalPortService;
|
|
19
|
+
this.options = options;
|
|
20
|
+
this.server = server;
|
|
21
|
+
this.setupEventListeners();
|
|
22
|
+
}
|
|
23
|
+
setupEventListeners() {
|
|
24
|
+
this.api.on("publishExternalMatterAccessories", (accessories, registrationId) => {
|
|
25
|
+
this.handlePublishExternalAccessories(accessories, registrationId).catch((error) => {
|
|
26
|
+
log.error('Failed to publish external Matter accessories:', error);
|
|
27
|
+
this.api._resolveExternalRegistration(registrationId);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
this.api.on("registerMatterPlatformAccessories", (pluginIdentifier, platformName, accessories) => {
|
|
31
|
+
this.handleRegisterPlatformAccessories(pluginIdentifier, platformName, accessories).catch((error) => {
|
|
32
|
+
log.error(`Failed to register Matter accessories for ${pluginIdentifier}:`, error);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
this.api.on("updateMatterPlatformAccessories", (accessories) => {
|
|
36
|
+
this.handleUpdatePlatformAccessories(accessories).catch((error) => {
|
|
37
|
+
log.error('Failed to update Matter platform accessories:', error);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
this.api.on("unregisterMatterPlatformAccessories", (pluginIdentifier, platformName, accessories) => {
|
|
41
|
+
this.handleUnregisterPlatformAccessories(pluginIdentifier, platformName, accessories).catch((error) => {
|
|
42
|
+
log.error(`Failed to unregister Matter accessories for ${pluginIdentifier}:`, error);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
this.api.on("unregisterExternalMatterAccessories", (accessories) => {
|
|
46
|
+
this.handleUnregisterExternalAccessories(accessories).catch((error) => {
|
|
47
|
+
log.error('Failed to unregister external Matter accessories:', error);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
this.api.on("updateMatterAccessoryState", (uuid, cluster, attributes, partId) => {
|
|
51
|
+
this.handleUpdateAccessoryState(uuid, cluster, attributes, partId).catch((error) => {
|
|
52
|
+
log.error('Failed to update Matter accessory state:', error);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
static collectConfiguredMatterPorts(config) {
|
|
57
|
+
const configuredMatterPorts = [];
|
|
58
|
+
if (config.bridge.matter?.port) {
|
|
59
|
+
configuredMatterPorts.push(config.bridge.matter.port);
|
|
60
|
+
}
|
|
61
|
+
for (const platform of config.platforms) {
|
|
62
|
+
if (platform._bridge?.matter?.port) {
|
|
63
|
+
configuredMatterPorts.push(platform._bridge.matter.port);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const accessory of config.accessories) {
|
|
67
|
+
if (accessory._bridge?.matter?.port) {
|
|
68
|
+
configuredMatterPorts.push(accessory._bridge.matter.port);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return configuredMatterPorts;
|
|
72
|
+
}
|
|
73
|
+
async initialize() {
|
|
74
|
+
if (!this.config.bridge.matter) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
let matterPort;
|
|
78
|
+
try {
|
|
79
|
+
log.info('Initializing Matter server for main bridge...');
|
|
80
|
+
matterPort = this.config.bridge.matter.port;
|
|
81
|
+
if (!matterPort) {
|
|
82
|
+
matterPort = await this.externalPortService.requestPort(`${this.config.bridge.username}:MATTER`);
|
|
83
|
+
if (!matterPort) {
|
|
84
|
+
matterPort = 5540;
|
|
85
|
+
log.warn('No port available from pool for main Matter bridge, using default port 5540');
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
log.info(`Allocated port ${matterPort} from pool for main Matter bridge`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const serialNumber = this.config.bridge.username.replace(/:/g, '');
|
|
92
|
+
const networkInterfaces = normalizeBindConfig(this.config.bridge.bind);
|
|
93
|
+
this.matterServer = new MatterServer({
|
|
94
|
+
storagePath: User.matterPath(),
|
|
95
|
+
port: matterPort,
|
|
96
|
+
uniqueId: serialNumber,
|
|
97
|
+
manufacturer: this.config.bridge.manufacturer,
|
|
98
|
+
model: this.config.bridge.model,
|
|
99
|
+
firmwareRevision: this.config.bridge.firmwareRevision,
|
|
100
|
+
serialNumber,
|
|
101
|
+
debugModeEnabled: this.options.debugModeEnabled,
|
|
102
|
+
networkInterfaces,
|
|
103
|
+
});
|
|
104
|
+
await this.matterServer.start();
|
|
105
|
+
log.info('Matter server initialized for main bridge');
|
|
106
|
+
this.api._setMatterEnabled(true);
|
|
107
|
+
this.api._setMatterServer(this.matterServer);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
log.error('Failed to initialize Matter server for main bridge:', error);
|
|
111
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
112
|
+
const errorCode = getErrorCode(error);
|
|
113
|
+
if (errorMessage.includes('corrupted')) {
|
|
114
|
+
log.error('');
|
|
115
|
+
log.error('╔════════════════════════════════════════════════════════════════════════════╗');
|
|
116
|
+
log.error('║ MATTER STORAGE CORRUPTED ║');
|
|
117
|
+
log.error('╠════════════════════════════════════════════════════════════════════════════╣');
|
|
118
|
+
log.error('║ Your Matter storage has become corrupted. This can happen when: ║');
|
|
119
|
+
log.error('║ • Matter.js library version changes ║');
|
|
120
|
+
log.error('║ • Storage format upgrades occur ║');
|
|
121
|
+
log.error('║ • Incomplete writes during shutdown ║');
|
|
122
|
+
log.error('║ ║');
|
|
123
|
+
log.error('║ To fix this, delete the corrupted storage directory: ║');
|
|
124
|
+
log.error(`║ rm -rf ~/.homebridge/matter/${this.config.bridge.username} ║`);
|
|
125
|
+
log.error('║ ║');
|
|
126
|
+
log.error('║ Note: You will need to re-pair your Matter devices after deletion. ║');
|
|
127
|
+
log.error('╚════════════════════════════════════════════════════════════════════════════╝');
|
|
128
|
+
log.error('');
|
|
129
|
+
}
|
|
130
|
+
else if (errorCode === 'EADDRINUSE' || errorMessage.includes('address already in use')) {
|
|
131
|
+
log.error('');
|
|
132
|
+
log.error('╔════════════════════════════════════════════════════════════════════════════╗');
|
|
133
|
+
log.error('║ MATTER PORT ALREADY IN USE ║');
|
|
134
|
+
log.error('╠════════════════════════════════════════════════════════════════════════════╣');
|
|
135
|
+
log.error(`║ Port ${matterPort} is already in use by another application. ║`);
|
|
136
|
+
log.error('║ ║');
|
|
137
|
+
log.error('║ To fix this: ║');
|
|
138
|
+
log.error('║ 1. Stop the application using this port, or ║');
|
|
139
|
+
log.error('║ 2. Configure a different port in your config.json: ║');
|
|
140
|
+
log.error('║ "bridge": { ║');
|
|
141
|
+
log.error('║ "matter": { ║');
|
|
142
|
+
log.error('║ "port": <different-port> ║');
|
|
143
|
+
log.error('║ } ║');
|
|
144
|
+
log.error('║ } ║');
|
|
145
|
+
log.error('╚════════════════════════════════════════════════════════════════════════════╝');
|
|
146
|
+
log.error('');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async handlePublishExternalAccessories(accessories, registrationId) {
|
|
151
|
+
log.info(`Publishing ${accessories.length} external Matter accessor${accessories.length === 1 ? 'y' : 'ies'}`);
|
|
152
|
+
const networkInterfaces = normalizeBindConfig(this.config.bridge.bind);
|
|
153
|
+
try {
|
|
154
|
+
for (const accessory of accessories) {
|
|
155
|
+
try {
|
|
156
|
+
if (this.externalMatterServers.has(accessory.uuid)) {
|
|
157
|
+
log.warn(`External Matter accessory ${accessory.displayName} (${accessory.uuid}) is already published`);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const result = await publishExternalMatterAccessory(accessory, {
|
|
161
|
+
portService: this.externalPortService,
|
|
162
|
+
networkInterfaces,
|
|
163
|
+
debugModeEnabled: this.options.debugModeEnabled,
|
|
164
|
+
});
|
|
165
|
+
if (!result) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
this.externalMatterServers.set(accessory.uuid, result.server);
|
|
169
|
+
this.server.registerExternalMatterBridge(result.username, this.config.bridge.username);
|
|
170
|
+
if (accessory._eventEmitter) {
|
|
171
|
+
accessory._eventEmitter.emit('ready', result.port);
|
|
172
|
+
}
|
|
173
|
+
if (result.commissioningInfo.qrCode && result.commissioningInfo.manualPairingCode) {
|
|
174
|
+
log.info(`📱 Commissioning codes for ${accessory.displayName}:`);
|
|
175
|
+
log.info(` QR Code: ${result.commissioningInfo.qrCode}`);
|
|
176
|
+
log.info(` Manual Code: ${result.commissioningInfo.manualPairingCode}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
log.error(`Failed to publish external Matter accessory ${accessory.displayName}:`, error);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
this.api._resolveExternalRegistration(registrationId);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
getMatterStatus() {
|
|
189
|
+
if (this.matterServer) {
|
|
190
|
+
const commissioningInfo = this.matterServer.getCommissioningInfo();
|
|
191
|
+
return {
|
|
192
|
+
enabled: true,
|
|
193
|
+
port: this.config.bridge.matter?.port,
|
|
194
|
+
setupUri: commissioningInfo.qrCode,
|
|
195
|
+
pin: commissioningInfo.manualPairingCode,
|
|
196
|
+
serialNumber: commissioningInfo.serialNumber,
|
|
197
|
+
commissioned: commissioningInfo.commissioned || false,
|
|
198
|
+
deviceCount: this.matterServer.getAccessories().length,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
else if (this.config.bridge.matter) {
|
|
202
|
+
return {
|
|
203
|
+
enabled: false,
|
|
204
|
+
port: this.config.bridge.matter?.port,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
enabled: false,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
collectAllAccessories(bridgeUsername) {
|
|
212
|
+
const accessories = [];
|
|
213
|
+
if (!bridgeUsername || bridgeUsername === this.config.bridge.username) {
|
|
214
|
+
if (this.matterServer) {
|
|
215
|
+
const mainAccessories = this.collectAccessoriesFromServer(this.matterServer, this.config.bridge.username, 'main', this.config.bridge.name || 'Homebridge');
|
|
216
|
+
accessories.push(...mainAccessories);
|
|
217
|
+
for (const server of this.externalMatterServers.values()) {
|
|
218
|
+
const externalAccessories = this.collectAccessoriesFromServer(server, server.username, 'external', server.bridgeName);
|
|
219
|
+
accessories.push(...externalAccessories);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return accessories;
|
|
224
|
+
}
|
|
225
|
+
getAccessoryInfo(uuid) {
|
|
226
|
+
if (this.matterServer) {
|
|
227
|
+
const accessory = this.getAccessoryDetailFromServer(this.matterServer, uuid, this.config.bridge.username, 'main');
|
|
228
|
+
if (accessory) {
|
|
229
|
+
return accessory;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
for (const server of this.externalMatterServers.values()) {
|
|
233
|
+
const accessory = this.getAccessoryDetailFromServer(server, uuid, server.username, 'external');
|
|
234
|
+
if (accessory) {
|
|
235
|
+
return accessory;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
collectAccessoriesFromServer(server, bridgeUsername, bridgeType, bridgeName) {
|
|
241
|
+
const cached = server.getAllCachedAccessories();
|
|
242
|
+
const accessories = [];
|
|
243
|
+
for (const acc of cached) {
|
|
244
|
+
const accessory = this.transformAccessoryData(acc, server, bridgeUsername, bridgeType, bridgeName);
|
|
245
|
+
accessories.push(accessory);
|
|
246
|
+
}
|
|
247
|
+
return accessories;
|
|
248
|
+
}
|
|
249
|
+
transformAccessoryData(acc, server, bridgeUsername, bridgeType, bridgeName) {
|
|
250
|
+
const currentState = this.getCurrentStateFromServer(server, acc.uuid);
|
|
251
|
+
const deviceTypeStr = acc.deviceType.name || `Device Code ${acc.deviceType.code || 'unknown'}`;
|
|
252
|
+
return {
|
|
253
|
+
uuid: acc.uuid,
|
|
254
|
+
displayName: acc.displayName,
|
|
255
|
+
serialNumber: acc.serialNumber,
|
|
256
|
+
manufacturer: acc.manufacturer,
|
|
257
|
+
model: acc.model,
|
|
258
|
+
firmwareRevision: acc.firmwareRevision,
|
|
259
|
+
deviceType: deviceTypeStr,
|
|
260
|
+
clusters: currentState,
|
|
261
|
+
parts: acc.parts?.map(part => ({
|
|
262
|
+
id: part.id,
|
|
263
|
+
displayName: part.displayName,
|
|
264
|
+
deviceType: part.deviceType.name || `Device Code ${part.deviceType.code || 'unknown'}`,
|
|
265
|
+
clusters: this.getCurrentStateFromServer(server, acc.uuid, part.id),
|
|
266
|
+
})),
|
|
267
|
+
bridge: {
|
|
268
|
+
username: bridgeUsername,
|
|
269
|
+
type: bridgeType,
|
|
270
|
+
name: bridgeName,
|
|
271
|
+
},
|
|
272
|
+
plugin: acc.plugin,
|
|
273
|
+
platform: acc.platform,
|
|
274
|
+
context: acc.context,
|
|
275
|
+
commissioned: server.isCommissioned(),
|
|
276
|
+
fabricCount: server.getCommissionedFabricCount(),
|
|
277
|
+
fabrics: server.getFabricInfo().map(fabric => ({
|
|
278
|
+
fabricIndex: fabric.fabricIndex,
|
|
279
|
+
fabricId: typeof fabric.fabricId === 'string' ? BigInt(fabric.fabricId) : fabric.fabricId,
|
|
280
|
+
nodeId: typeof fabric.nodeId === 'string' ? BigInt(fabric.nodeId) : fabric.nodeId,
|
|
281
|
+
vendorId: fabric.rootVendorId,
|
|
282
|
+
label: fabric.label,
|
|
283
|
+
})),
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
getAccessoryDetailFromServer(server, uuid, bridgeUsername, bridgeType) {
|
|
287
|
+
const accessory = server.getAccessory(uuid);
|
|
288
|
+
if (!accessory) {
|
|
289
|
+
return undefined;
|
|
290
|
+
}
|
|
291
|
+
const cached = server.getAllCachedAccessories().find((a) => a.uuid === uuid);
|
|
292
|
+
if (!cached) {
|
|
293
|
+
return undefined;
|
|
294
|
+
}
|
|
295
|
+
return this.transformAccessoryData(cached, server, bridgeUsername, bridgeType, server.bridgeName || 'Matter Bridge');
|
|
296
|
+
}
|
|
297
|
+
getCurrentStateFromServer(server, uuid, partId) {
|
|
298
|
+
const accessory = server.getAccessory(uuid);
|
|
299
|
+
if (!accessory) {
|
|
300
|
+
return {};
|
|
301
|
+
}
|
|
302
|
+
const endpoint = partId
|
|
303
|
+
? accessory._parts?.find((p) => p.id === partId)?.endpoint
|
|
304
|
+
: accessory.endpoint;
|
|
305
|
+
if (!endpoint) {
|
|
306
|
+
return {};
|
|
307
|
+
}
|
|
308
|
+
const state = {};
|
|
309
|
+
for (const [clusterName, clusterState] of Object.entries(endpoint.state)) {
|
|
310
|
+
state[clusterName] = {};
|
|
311
|
+
for (const [key, value] of Object.entries(clusterState)) {
|
|
312
|
+
if (!key.startsWith('_') && !key.startsWith('$')) {
|
|
313
|
+
state[clusterName][key] = value;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return state;
|
|
318
|
+
}
|
|
319
|
+
async teardown() {
|
|
320
|
+
if (this.matterServer) {
|
|
321
|
+
try {
|
|
322
|
+
await this.matterServer.stop();
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
log.error('Failed to stop Matter server:', error);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
for (const [uuid, matterServer] of this.externalMatterServers) {
|
|
329
|
+
try {
|
|
330
|
+
await matterServer.stop();
|
|
331
|
+
log.debug(`Stopped external Matter server for ${uuid}`);
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
log.error(`Failed to stop external Matter server for ${uuid}:`, error);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
this.externalMatterServers.clear();
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=MatterBridgeManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatterBridgeManager.js","sourceRoot":"","sources":["../../src/matter/MatterBridgeManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HomebridgeConfig } from '../bridgeService.js';
|
|
2
|
+
export declare class MatterConfigCollector {
|
|
3
|
+
static validateMatterPortsPool(config: HomebridgeConfig): void;
|
|
4
|
+
static validateMatterConfig(config: HomebridgeConfig): void;
|
|
5
|
+
private static checkPortConflicts;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=MatterConfigCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatterConfigCollector.d.ts","sourceRoot":"","sources":["../../src/matter/MatterConfigCollector.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAU3D,qBAAa,qBAAqB;IAOhC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAoB9D,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAwC3D,OAAO,CAAC,MAAM,CAAC,kBAAkB;CA+BlC"}
|