homebridge 2.0.0-beta.44 → 2.0.0-beta.46
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 +3 -365
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +13 -85
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +0 -25
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +32 -85
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeFork.d.ts +12 -15
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +152 -83
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +21 -105
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +57 -134
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.js +0 -2
- package/dist/cli.js.map +1 -1
- package/dist/externalPortService.d.ts +0 -21
- package/dist/externalPortService.d.ts.map +1 -1
- package/dist/externalPortService.js +0 -28
- package/dist/externalPortService.js.map +1 -1
- package/dist/index.d.ts +0 -112
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -44
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +23 -15
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js +6 -12
- package/dist/ipcService.js.map +1 -1
- package/dist/logger.d.ts +0 -46
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +13 -57
- package/dist/logger.js.map +1 -1
- package/dist/matter/BaseMatterManager.d.ts +19 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -0
- package/dist/matter/BaseMatterManager.js +170 -0
- package/dist/matter/BaseMatterManager.js.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts +7 -69
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.js +51 -234
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
- package/dist/matter/ClusterCommandMapper.d.ts +5 -0
- package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
- package/dist/matter/ClusterCommandMapper.js +203 -0
- package/dist/matter/ClusterCommandMapper.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +0 -27
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.js +3 -28
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
- package/dist/matter/MatterAPIImpl.d.ts +0 -68
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
- package/dist/matter/MatterAPIImpl.js +7 -107
- package/dist/matter/MatterAPIImpl.js.map +1 -1
- package/dist/matter/MatterBridgeManager.d.ts +9 -60
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
- package/dist/matter/MatterBridgeManager.js +140 -216
- package/dist/matter/MatterBridgeManager.js.map +1 -1
- package/dist/matter/MatterConfigCollector.d.ts +1 -20
- package/dist/matter/MatterConfigCollector.d.ts.map +1 -1
- package/dist/matter/MatterConfigCollector.js +15 -28
- package/dist/matter/MatterConfigCollector.js.map +1 -1
- package/dist/matter/accessoryCache.d.ts +0 -48
- package/dist/matter/accessoryCache.d.ts.map +1 -1
- package/dist/matter/accessoryCache.js +1 -60
- package/dist/matter/accessoryCache.js.map +1 -1
- package/dist/matter/behaviors/AirQualityBehavior.d.ts +0 -42
- package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/AirQualityBehavior.js +0 -44
- package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +4 -42
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -1
- package/dist/matter/behaviors/BehaviorRegistry.js +12 -42
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -1
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +0 -49
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ColorControlBehavior.js +0 -90
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +0 -91
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +0 -96
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +0 -11
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/DoorLockBehavior.js +0 -25
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
- package/dist/matter/behaviors/FanControlBehavior.d.ts +0 -11
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/FanControlBehavior.js +0 -25
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +0 -11
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/IdentifyBehavior.js +0 -17
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +0 -20
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/LevelControlBehavior.js +0 -52
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.d.ts +0 -17
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/OnOffBehavior.js +0 -38
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +0 -11
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +0 -17
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +0 -11
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +0 -29
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +0 -11
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.js +0 -17
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +0 -11
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.js +0 -23
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -1
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +0 -11
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/ThermostatBehavior.js +0 -39
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +0 -17
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.js +0 -56
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -1
- package/dist/matter/behaviors/index.d.ts +0 -5
- package/dist/matter/behaviors/index.d.ts.map +1 -1
- package/dist/matter/behaviors/index.js +0 -5
- package/dist/matter/behaviors/index.js.map +1 -1
- package/dist/matter/configValidator.d.ts +0 -55
- package/dist/matter/configValidator.d.ts.map +1 -1
- package/dist/matter/configValidator.js +1 -68
- package/dist/matter/configValidator.js.map +1 -1
- package/dist/matter/errorHandler.d.ts +0 -22
- package/dist/matter/errorHandler.d.ts.map +1 -1
- package/dist/matter/errorHandler.js +0 -32
- package/dist/matter/errorHandler.js.map +1 -1
- package/dist/matter/errors.d.ts +0 -132
- package/dist/matter/errors.d.ts.map +1 -1
- package/dist/matter/errors.js +0 -132
- package/dist/matter/errors.js.map +1 -1
- package/dist/matter/index.d.ts +0 -30
- package/dist/matter/index.d.ts.map +1 -1
- package/dist/matter/index.js +0 -13
- package/dist/matter/index.js.map +1 -1
- package/dist/matter/logFormatter.d.ts +0 -17
- package/dist/matter/logFormatter.d.ts.map +1 -1
- package/dist/matter/logFormatter.js +5 -63
- package/dist/matter/logFormatter.js.map +1 -1
- package/dist/matter/server.d.ts +12 -236
- package/dist/matter/server.d.ts.map +1 -1
- package/dist/matter/server.js +177 -488
- package/dist/matter/server.js.map +1 -1
- package/dist/matter/serverHelpers.d.ts +0 -56
- package/dist/matter/serverHelpers.d.ts.map +1 -1
- package/dist/matter/serverHelpers.js +1 -66
- package/dist/matter/serverHelpers.js.map +1 -1
- package/dist/matter/sharedTypes.d.ts +0 -83
- package/dist/matter/sharedTypes.d.ts.map +1 -1
- package/dist/matter/sharedTypes.js +0 -26
- package/dist/matter/sharedTypes.js.map +1 -1
- package/dist/matter/storage.d.ts +0 -90
- package/dist/matter/storage.d.ts.map +1 -1
- package/dist/matter/storage.js +2 -130
- package/dist/matter/storage.js.map +1 -1
- package/dist/matter/typeHelpers.d.ts +0 -30
- package/dist/matter/typeHelpers.d.ts.map +1 -1
- package/dist/matter/typeHelpers.js +0 -24
- package/dist/matter/typeHelpers.js.map +1 -1
- package/dist/matter/types.d.ts +0 -273
- package/dist/matter/types.d.ts.map +1 -1
- package/dist/matter/types.js +0 -83
- package/dist/matter/types.js.map +1 -1
- package/dist/platformAccessory.d.ts +0 -15
- package/dist/platformAccessory.d.ts.map +1 -1
- package/dist/platformAccessory.js +6 -32
- package/dist/platformAccessory.js.map +1 -1
- package/dist/plugin.d.ts +0 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +6 -29
- package/dist/plugin.js.map +1 -1
- package/dist/pluginManager.d.ts +0 -22
- package/dist/pluginManager.d.ts.map +1 -1
- package/dist/pluginManager.js +18 -41
- package/dist/pluginManager.js.map +1 -1
- package/dist/server.d.ts +9 -29
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +308 -157
- package/dist/server.js.map +1 -1
- package/dist/user.d.ts +0 -3
- package/dist/user.d.ts.map +1 -1
- package/dist/user.js +2 -5
- package/dist/user.js.map +1 -1
- package/dist/util/mac.js +0 -1
- package/dist/util/mac.js.map +1 -1
- package/package.json +4 -4
- package/dist/api.spec.d.ts +0 -2
- package/dist/api.spec.d.ts.map +0 -1
- package/dist/api.spec.js +0 -413
- package/dist/api.spec.js.map +0 -1
- package/dist/logger.spec.d.ts +0 -2
- package/dist/logger.spec.d.ts.map +0 -1
- package/dist/logger.spec.js +0 -95
- package/dist/logger.spec.js.map +0 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +0 -2
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +0 -1
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +0 -293
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +0 -1
- package/dist/matter/accessoryCache.spec.d.ts +0 -2
- package/dist/matter/accessoryCache.spec.d.ts.map +0 -1
- package/dist/matter/accessoryCache.spec.js +0 -452
- package/dist/matter/accessoryCache.spec.js.map +0 -1
- package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts +0 -5
- package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/AirQualityBehavior.spec.js +0 -46
- package/dist/matter/behaviors/AirQualityBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +0 -2
- package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/BehaviorRegistry.spec.js +0 -307
- package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +0 -1
- package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ColorControlBehavior.spec.js +0 -29
- package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts +0 -5
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js +0 -95
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/DoorLockBehavior.spec.js +0 -120
- package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/FanControlBehavior.spec.js +0 -23
- package/dist/matter/behaviors/FanControlBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/IdentifyBehavior.spec.js +0 -64
- package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/LevelControlBehavior.spec.js +0 -145
- package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/OnOffBehavior.spec.js +0 -128
- package/dist/matter/behaviors/OnOffBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +0 -57
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +0 -55
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +0 -57
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +0 -53
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/ThermostatBehavior.spec.js +0 -23
- package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +0 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +0 -2
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +0 -1
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +0 -27
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +0 -1
- package/dist/matter/configValidator.spec.d.ts +0 -2
- package/dist/matter/configValidator.spec.d.ts.map +0 -1
- package/dist/matter/configValidator.spec.js +0 -390
- package/dist/matter/configValidator.spec.js.map +0 -1
- package/dist/matter/errorHandler.spec.d.ts +0 -2
- package/dist/matter/errorHandler.spec.d.ts.map +0 -1
- package/dist/matter/errorHandler.spec.js +0 -159
- package/dist/matter/errorHandler.spec.js.map +0 -1
- package/dist/matter/logFormatter.spec.d.ts +0 -2
- package/dist/matter/logFormatter.spec.d.ts.map +0 -1
- package/dist/matter/logFormatter.spec.js +0 -252
- package/dist/matter/logFormatter.spec.js.map +0 -1
- package/dist/matter/serverHelpers.spec.d.ts +0 -2
- package/dist/matter/serverHelpers.spec.d.ts.map +0 -1
- package/dist/matter/serverHelpers.spec.js +0 -527
- package/dist/matter/serverHelpers.spec.js.map +0 -1
- package/dist/matter/storage.spec.d.ts +0 -2
- package/dist/matter/storage.spec.d.ts.map +0 -1
- package/dist/matter/storage.spec.js +0 -570
- package/dist/matter/storage.spec.js.map +0 -1
- package/dist/matter/typeHelpers.spec.d.ts +0 -2
- package/dist/matter/typeHelpers.spec.d.ts.map +0 -1
- package/dist/matter/typeHelpers.spec.js +0 -127
- package/dist/matter/typeHelpers.spec.js.map +0 -1
- package/dist/platformAccessory.spec.d.ts +0 -2
- package/dist/platformAccessory.spec.d.ts.map +0 -1
- package/dist/platformAccessory.spec.js +0 -126
- package/dist/platformAccessory.spec.js.map +0 -1
- package/dist/pluginManager.spec.d.ts +0 -2
- package/dist/pluginManager.spec.d.ts.map +0 -1
- package/dist/pluginManager.spec.js +0 -43
- package/dist/pluginManager.spec.js.map +0 -1
- package/dist/server.spec.d.ts +0 -2
- package/dist/server.spec.d.ts.map +0 -1
- package/dist/server.spec.js +0 -57
- package/dist/server.spec.js.map +0 -1
- package/dist/user.spec.d.ts +0 -2
- package/dist/user.spec.d.ts.map +0 -1
- package/dist/user.spec.js +0 -31
- package/dist/user.spec.js.map +0 -1
- package/dist/util/mac.spec.d.ts +0 -2
- package/dist/util/mac.spec.d.ts.map +0 -1
- package/dist/util/mac.spec.js +0 -36
- package/dist/util/mac.spec.js.map +0 -1
- package/dist/version.spec.d.ts +0 -2
- package/dist/version.spec.d.ts.map +0 -1
- package/dist/version.spec.js +0 -20
- package/dist/version.spec.js.map +0 -1
|
@@ -1,37 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matter API Implementation
|
|
3
|
-
*
|
|
4
|
-
* This class implements the Matter API facade, keeping Matter-specific logic
|
|
5
|
-
* separate from the core HomebridgeAPI class.
|
|
6
|
-
*
|
|
7
|
-
* Benefits:
|
|
8
|
-
* - Reduces changes to core api.ts file
|
|
9
|
-
* - Lazy-loads Matter code only when used
|
|
10
|
-
* - Clear separation between HAP and Matter
|
|
11
|
-
* - Easier to test in isolation
|
|
12
|
-
* - Validates accessories before registration
|
|
13
|
-
* - Provides detailed error messages for debugging
|
|
14
|
-
*/
|
|
15
1
|
import { Logger } from '../logger.js';
|
|
16
2
|
import { clusterNames, clusters, deviceTypes, MatterTypes } from './index.js';
|
|
17
|
-
const log = Logger.
|
|
18
|
-
/**
|
|
19
|
-
* Device types that require dedicated external bridges
|
|
20
|
-
* These devices must be published on their own bridge (not added to main/child bridge)
|
|
21
|
-
*/
|
|
3
|
+
const log = Logger.withPrefix('Matter/API');
|
|
22
4
|
const EXTERNAL_DEVICE_TYPES = [
|
|
23
5
|
deviceTypes.RoboticVacuumCleaner,
|
|
24
6
|
];
|
|
25
|
-
/**
|
|
26
|
-
* Check if a device type requires external bridge publishing
|
|
27
|
-
*/
|
|
28
7
|
function requiresExternalBridge(deviceType) {
|
|
29
|
-
// Compare device type IDs for exact match
|
|
30
8
|
return EXTERNAL_DEVICE_TYPES.some(externalType => externalType.deviceType === deviceType.deviceType);
|
|
31
9
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Validation error for Matter accessories
|
|
34
|
-
*/
|
|
35
10
|
class MatterAccessoryValidationError extends Error {
|
|
36
11
|
accessory;
|
|
37
12
|
constructor(message, accessory) {
|
|
@@ -40,20 +15,11 @@ class MatterAccessoryValidationError extends Error {
|
|
|
40
15
|
this.name = 'MatterAccessoryValidationError';
|
|
41
16
|
}
|
|
42
17
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Implementation of the Matter API
|
|
45
|
-
* Delegates to the HomebridgeAPI instance for event emission and server access
|
|
46
|
-
* Provides validation and coordination for Matter accessory operations
|
|
47
|
-
*/
|
|
48
18
|
export class MatterAPIImpl {
|
|
49
19
|
api;
|
|
50
20
|
constructor(api) {
|
|
51
21
|
this.api = api;
|
|
52
22
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Validate a Matter accessory has required fields
|
|
55
|
-
* @throws MatterAccessoryValidationError if validation fails
|
|
56
|
-
*/
|
|
57
23
|
validateAccessory(accessory, context) {
|
|
58
24
|
if (!accessory.uuid) {
|
|
59
25
|
throw new MatterAccessoryValidationError(`${context}: Matter accessory missing required 'uuid' field`, accessory);
|
|
@@ -74,10 +40,6 @@ export class MatterAPIImpl {
|
|
|
74
40
|
throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'serialNumber' field`, accessory);
|
|
75
41
|
}
|
|
76
42
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Validate an array of accessories, logging errors for invalid ones
|
|
79
|
-
* @returns Array of valid accessories only
|
|
80
|
-
*/
|
|
81
43
|
validateAccessories(accessories, context) {
|
|
82
44
|
const validAccessories = [];
|
|
83
45
|
for (const accessory of accessories) {
|
|
@@ -97,59 +59,33 @@ export class MatterAPIImpl {
|
|
|
97
59
|
}
|
|
98
60
|
return validAccessories;
|
|
99
61
|
}
|
|
100
|
-
/**
|
|
101
|
-
* Validate cluster name is valid
|
|
102
|
-
*/
|
|
103
62
|
validateClusterName(clusterName, context) {
|
|
104
|
-
// Check if cluster name is in the known cluster names
|
|
105
63
|
const validClusterNames = Object.values(clusterNames);
|
|
106
64
|
if (!validClusterNames.includes(clusterName)) {
|
|
107
65
|
log.warn(`${context}: Unknown cluster name '${clusterName}'. This might cause issues. `
|
|
108
66
|
+ `Valid clusters: ${validClusterNames.join(', ')}`);
|
|
109
67
|
}
|
|
110
68
|
}
|
|
111
|
-
/**
|
|
112
|
-
* UUID generator (alias of api.hap.uuid for convenience)
|
|
113
|
-
*/
|
|
114
69
|
get uuid() {
|
|
115
70
|
return this.api.hap.uuid;
|
|
116
71
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Matter device types for creating accessories
|
|
119
|
-
*/
|
|
120
72
|
get deviceTypes() {
|
|
121
73
|
return deviceTypes;
|
|
122
74
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Matter clusters - Direct access to Matter.js cluster definitions
|
|
125
|
-
*/
|
|
126
75
|
get clusters() {
|
|
127
76
|
return clusters;
|
|
128
77
|
}
|
|
129
|
-
/**
|
|
130
|
-
* Matter cluster names for type safety and autocomplete
|
|
131
|
-
*/
|
|
132
78
|
get clusterNames() {
|
|
133
79
|
return clusterNames;
|
|
134
80
|
}
|
|
135
|
-
/**
|
|
136
|
-
* Matter types - Access to Matter.js cluster type definitions and enums
|
|
137
|
-
*/
|
|
138
81
|
get types() {
|
|
139
82
|
return MatterTypes;
|
|
140
83
|
}
|
|
141
|
-
/**
|
|
142
|
-
* Register Matter platform accessories
|
|
143
|
-
* Automatically handles external accessories (e.g., RoboticVacuumCleaner) that need dedicated bridges
|
|
144
|
-
* Validates accessories before registration
|
|
145
|
-
* Returns a promise that resolves when all accessories are fully registered
|
|
146
|
-
*/
|
|
147
84
|
async registerPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
148
85
|
if (accessories.length === 0) {
|
|
149
86
|
log.warn(`${pluginIdentifier}: Attempted to register 0 Matter accessories`);
|
|
150
87
|
return;
|
|
151
88
|
}
|
|
152
|
-
// Validate all accessories before registration
|
|
153
89
|
const validAccessories = this.validateAccessories(accessories, `registerPlatformAccessories (${pluginIdentifier}/${platformName})`);
|
|
154
90
|
if (validAccessories.length === 0) {
|
|
155
91
|
log.error(`${pluginIdentifier}: All ${accessories.length} Matter accessories failed validation`);
|
|
@@ -158,7 +94,6 @@ export class MatterAPIImpl {
|
|
|
158
94
|
if (validAccessories.length < accessories.length) {
|
|
159
95
|
log.warn(`${pluginIdentifier}: ${accessories.length - validAccessories.length} of ${accessories.length} Matter accessories failed validation`);
|
|
160
96
|
}
|
|
161
|
-
// Split accessories into normal (bridge) and external (standalone) based on device type
|
|
162
97
|
const normalAccessories = [];
|
|
163
98
|
const externalAccessories = [];
|
|
164
99
|
for (const accessory of validAccessories) {
|
|
@@ -169,60 +104,42 @@ export class MatterAPIImpl {
|
|
|
169
104
|
normalAccessories.push(accessory);
|
|
170
105
|
}
|
|
171
106
|
}
|
|
172
|
-
// Handle normal accessories (added to bridge)
|
|
173
107
|
if (normalAccessories.length > 0) {
|
|
174
|
-
// Add plugin/platform association
|
|
175
108
|
normalAccessories.forEach((accessory) => {
|
|
176
109
|
const internal = accessory;
|
|
177
110
|
internal._associatedPlugin = pluginIdentifier;
|
|
178
111
|
internal._associatedPlatform = platformName;
|
|
179
112
|
});
|
|
180
113
|
log.debug(`${pluginIdentifier}: Registering ${normalAccessories.length} Matter accessor${normalAccessories.length === 1 ? 'y' : 'ies'} for platform '${platformName}'`);
|
|
181
|
-
this.api.emit("registerMatterPlatformAccessories"
|
|
114
|
+
this.api.emit("registerMatterPlatformAccessories", pluginIdentifier, platformName, normalAccessories);
|
|
182
115
|
}
|
|
183
|
-
// Handle external accessories (standalone bridges)
|
|
184
116
|
if (externalAccessories.length > 0) {
|
|
185
|
-
// Add plugin association (no platform for external)
|
|
186
117
|
externalAccessories.forEach((accessory) => {
|
|
187
118
|
const internal = accessory;
|
|
188
119
|
internal._associatedPlugin = pluginIdentifier;
|
|
189
120
|
});
|
|
190
121
|
log.debug(`${pluginIdentifier}: Publishing ${externalAccessories.length} external Matter accessor${externalAccessories.length === 1 ? 'y' : 'ies'} (${externalAccessories.map(a => a.displayName).join(', ')})`);
|
|
191
|
-
// Create a promise to track when external publishing completes
|
|
192
122
|
const registrationId = `${pluginIdentifier}-${Date.now()}-${Math.random()}`;
|
|
193
123
|
const registrationPromise = new Promise((resolve) => {
|
|
194
|
-
// Store the resolve function so it can be called when publishing completes
|
|
195
124
|
this.api._pendingExternalRegistrations.set(registrationId, resolve);
|
|
196
125
|
});
|
|
197
|
-
|
|
198
|
-
this.api.emit("publishExternalMatterAccessories" /* InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES */, externalAccessories, registrationId);
|
|
199
|
-
// Wait for external publishing to complete
|
|
126
|
+
this.api.emit("publishExternalMatterAccessories", externalAccessories, registrationId);
|
|
200
127
|
await registrationPromise;
|
|
201
128
|
}
|
|
202
129
|
}
|
|
203
|
-
/**
|
|
204
|
-
* Update Matter platform accessories in the cache
|
|
205
|
-
* Similar to api.updatePlatformAccessories() for HAP accessories
|
|
206
|
-
*/
|
|
207
130
|
async updatePlatformAccessories(accessories) {
|
|
208
131
|
if (accessories.length === 0) {
|
|
209
132
|
log.warn('Attempted to update 0 Matter platform accessories');
|
|
210
133
|
return;
|
|
211
134
|
}
|
|
212
135
|
log.debug(`Updating ${accessories.length} Matter platform accessor${accessories.length === 1 ? 'y' : 'ies'} in cache`);
|
|
213
|
-
|
|
214
|
-
this.api.emit("updateMatterPlatformAccessories" /* InternalAPIEvent.UPDATE_MATTER_PLATFORM_ACCESSORIES */, accessories);
|
|
136
|
+
this.api.emit("updateMatterPlatformAccessories", accessories);
|
|
215
137
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Unregister Matter platform accessories
|
|
218
|
-
* Automatically handles external accessories (e.g., RoboticVacuumCleaner) that have dedicated bridges
|
|
219
|
-
*/
|
|
220
138
|
async unregisterPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
221
139
|
if (accessories.length === 0) {
|
|
222
140
|
log.warn(`${pluginIdentifier}: Attempted to unregister 0 Matter accessories`);
|
|
223
141
|
return;
|
|
224
142
|
}
|
|
225
|
-
// Split accessories into normal (bridge) and external (standalone) based on device type
|
|
226
143
|
const normalAccessories = [];
|
|
227
144
|
const externalAccessories = [];
|
|
228
145
|
for (const accessory of accessories) {
|
|
@@ -233,23 +150,16 @@ export class MatterAPIImpl {
|
|
|
233
150
|
normalAccessories.push(accessory);
|
|
234
151
|
}
|
|
235
152
|
}
|
|
236
|
-
// Handle normal accessories (on bridge)
|
|
237
153
|
if (normalAccessories.length > 0) {
|
|
238
154
|
log.debug(`${pluginIdentifier}: Unregistering ${normalAccessories.length} Matter accessor${normalAccessories.length === 1 ? 'y' : 'ies'} from platform '${platformName}'`);
|
|
239
|
-
this.api.emit("unregisterMatterPlatformAccessories"
|
|
155
|
+
this.api.emit("unregisterMatterPlatformAccessories", pluginIdentifier, platformName, normalAccessories);
|
|
240
156
|
}
|
|
241
|
-
// Handle external accessories (standalone bridges)
|
|
242
157
|
if (externalAccessories.length > 0) {
|
|
243
158
|
log.debug(`${pluginIdentifier}: Unregistering ${externalAccessories.length} external Matter accessor${externalAccessories.length === 1 ? 'y' : 'ies'} (${externalAccessories.map(a => a.displayName).join(', ')})`);
|
|
244
|
-
this.api.emit("unregisterExternalMatterAccessories"
|
|
159
|
+
this.api.emit("unregisterExternalMatterAccessories", externalAccessories);
|
|
245
160
|
}
|
|
246
161
|
}
|
|
247
|
-
/**
|
|
248
|
-
* Update a Matter accessory's cluster state
|
|
249
|
-
* Validates inputs before updating
|
|
250
|
-
*/
|
|
251
162
|
async updateAccessoryState(uuid, cluster, attributes, partId) {
|
|
252
|
-
// Validate inputs
|
|
253
163
|
if (!uuid) {
|
|
254
164
|
log.error('updateAccessoryState: uuid parameter is required');
|
|
255
165
|
return;
|
|
@@ -262,18 +172,11 @@ export class MatterAPIImpl {
|
|
|
262
172
|
log.warn(`updateAccessoryState: No attributes provided for accessory ${uuid}, cluster ${cluster}`);
|
|
263
173
|
return;
|
|
264
174
|
}
|
|
265
|
-
// Validate cluster name (warning only, don't block)
|
|
266
175
|
this.validateClusterName(cluster, `updateAccessoryState (${uuid})`);
|
|
267
176
|
log.debug(`Updating Matter accessory state: uuid=${uuid}, cluster=${cluster}, attributes=${Object.keys(attributes).join(', ')}${partId ? `, partId=${partId}` : ''}`);
|
|
268
|
-
this.api.emit("updateMatterAccessoryState"
|
|
177
|
+
this.api.emit("updateMatterAccessoryState", uuid, cluster, attributes, partId);
|
|
269
178
|
}
|
|
270
|
-
/**
|
|
271
|
-
* Get a Matter accessory's current cluster state
|
|
272
|
-
* Checks both external servers and main bridge server
|
|
273
|
-
* Validates inputs before retrieving state
|
|
274
|
-
*/
|
|
275
179
|
async getAccessoryState(uuid, cluster, partId) {
|
|
276
|
-
// Validate inputs
|
|
277
180
|
if (!uuid) {
|
|
278
181
|
log.error('getAccessoryState: uuid parameter is required');
|
|
279
182
|
return undefined;
|
|
@@ -282,10 +185,8 @@ export class MatterAPIImpl {
|
|
|
282
185
|
log.error(`getAccessoryState: cluster parameter is required for accessory ${uuid}`);
|
|
283
186
|
return undefined;
|
|
284
187
|
}
|
|
285
|
-
// Validate cluster name (warning only, don't block)
|
|
286
188
|
this.validateClusterName(cluster, `getAccessoryState (${uuid})`);
|
|
287
189
|
log.debug(`Getting Matter accessory state: uuid=${uuid}, cluster=${cluster}${partId ? `, partId=${partId}` : ''}`);
|
|
288
|
-
// Check external servers first (for accessories like robot vacuums)
|
|
289
190
|
const matterManager = this.api._matterManager;
|
|
290
191
|
if (matterManager?.externalMatterServers) {
|
|
291
192
|
const externalServer = matterManager.externalMatterServers.get(uuid);
|
|
@@ -293,7 +194,6 @@ export class MatterAPIImpl {
|
|
|
293
194
|
return externalServer.getAccessoryState(uuid, cluster, partId);
|
|
294
195
|
}
|
|
295
196
|
}
|
|
296
|
-
// Otherwise, try the main bridge server
|
|
297
197
|
const matterServer = this.api._matterServer;
|
|
298
198
|
if (!matterServer) {
|
|
299
199
|
log.debug(`getAccessoryState: Matter server not available for accessory ${uuid}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatterAPIImpl.js","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MatterAPIImpl.js","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matter Bridge Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages Matter server lifecycle and accessories for the main Homebridge bridge.
|
|
5
|
-
* This class extracts Matter-specific logic from server.ts to minimize changes to core files.
|
|
6
|
-
*/
|
|
7
1
|
import type { HomebridgeAPI } from '../api.js';
|
|
8
2
|
import type { HomebridgeConfig } from '../bridgeService.js';
|
|
9
3
|
import type { ExternalPortService } from '../externalPortService.js';
|
|
10
4
|
import type { HomebridgeOptions } from '../server.js';
|
|
11
5
|
import type { InternalMatterAccessory } from './types.js';
|
|
12
6
|
import { PluginManager } from '../pluginManager.js';
|
|
13
|
-
|
|
14
|
-
* Matter server status information for IPC communication
|
|
15
|
-
*/
|
|
7
|
+
import { BaseMatterManager } from './BaseMatterManager.js';
|
|
16
8
|
export interface MatterStatusInfo {
|
|
17
9
|
enabled: boolean;
|
|
18
10
|
port?: number;
|
|
@@ -22,66 +14,23 @@ export interface MatterStatusInfo {
|
|
|
22
14
|
commissioned?: boolean;
|
|
23
15
|
deviceCount?: number;
|
|
24
16
|
}
|
|
25
|
-
|
|
26
|
-
* Manages Matter server and accessories for the main bridge
|
|
27
|
-
*/
|
|
28
|
-
export declare class MatterBridgeManager {
|
|
17
|
+
export declare class MatterBridgeManager extends BaseMatterManager {
|
|
29
18
|
private readonly config;
|
|
30
19
|
private readonly api;
|
|
31
20
|
private readonly externalPortService;
|
|
32
|
-
private readonly pluginManager;
|
|
33
21
|
private readonly options;
|
|
34
|
-
private matterServer?;
|
|
35
|
-
private readonly externalMatterServers;
|
|
36
22
|
constructor(config: HomebridgeConfig, api: HomebridgeAPI, externalPortService: ExternalPortService, pluginManager: PluginManager, options: HomebridgeOptions);
|
|
37
|
-
|
|
38
|
-
* Collect all configured Matter ports from config to avoid conflicts
|
|
39
|
-
*/
|
|
23
|
+
private setupEventListeners;
|
|
40
24
|
static collectConfiguredMatterPorts(config: HomebridgeConfig): number[];
|
|
41
|
-
/**
|
|
42
|
-
* Initialize Matter server for main bridge if enabled
|
|
43
|
-
*/
|
|
44
25
|
initialize(): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Handle external Matter accessories - each gets its own dedicated Matter server
|
|
47
|
-
* This is required for devices like Robotic Vacuum Cleaners that Apple Home
|
|
48
|
-
* requires to be on their own bridge.
|
|
49
|
-
*/
|
|
50
26
|
handlePublishExternalAccessories(accessories: InternalMatterAccessory[], registrationId: string): Promise<void>;
|
|
51
|
-
/**
|
|
52
|
-
* Handle registration of Matter platform accessories
|
|
53
|
-
*/
|
|
54
|
-
handleRegisterPlatformAccessories(pluginIdentifier: string, platformName: string, accessories: InternalMatterAccessory[]): Promise<void>;
|
|
55
|
-
/**
|
|
56
|
-
* Handle unregistration of Matter platform accessories
|
|
57
|
-
*/
|
|
58
|
-
handleUnregisterPlatformAccessories(pluginIdentifier: string, platformName: string, accessories: InternalMatterAccessory[]): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* Handle unregistration of external Matter accessories
|
|
61
|
-
* Stops dedicated servers and cleans up storage
|
|
62
|
-
*/
|
|
63
|
-
handleUnregisterExternalAccessories(accessories: InternalMatterAccessory[]): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Handle updating Matter platform accessories in the cache
|
|
66
|
-
* Checks both external servers and main bridge server
|
|
67
|
-
*/
|
|
68
|
-
handleUpdatePlatformAccessories(accessories: InternalMatterAccessory[]): Promise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* Handle Matter accessory state updates
|
|
71
|
-
* Checks both external servers and main bridge server
|
|
72
|
-
*/
|
|
73
|
-
handleUpdateAccessoryState(uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
|
|
74
|
-
/**
|
|
75
|
-
* Restore cached Matter accessories (matching HAP pattern)
|
|
76
|
-
*/
|
|
77
|
-
restoreCachedAccessories(keepOrphaned: boolean): void;
|
|
78
|
-
/**
|
|
79
|
-
* Get Matter server status information for IPC communication
|
|
80
|
-
*/
|
|
81
27
|
getMatterStatus(): MatterStatusInfo;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
28
|
+
collectAllAccessories(bridgeUsername?: string): any[];
|
|
29
|
+
getAccessoryInfo(uuid: string): any | undefined;
|
|
30
|
+
private collectAccessoriesFromServer;
|
|
31
|
+
private transformAccessoryData;
|
|
32
|
+
private getAccessoryDetailFromServer;
|
|
33
|
+
private getCurrentStateFromServer;
|
|
85
34
|
teardown(): Promise<void>;
|
|
86
35
|
}
|
|
87
36
|
//# sourceMappingURL=MatterBridgeManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatterBridgeManager.d.ts","sourceRoot":"","sources":["../../src/matter/MatterBridgeManager.ts"],"names":[],"mappings":"
|
|
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;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAS1D,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;gBAJP,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,aAAa,EAClB,mBAAmB,EAAE,mBAAmB,EACzD,aAAa,EAAE,aAAa,EACX,OAAO,EAAE,iBAAiB;IAU7C,OAAO,CAAC,mBAAmB;IA4C3B,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE;IAyBjE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyG3B,gCAAgC,CAAC,WAAW,EAAE,uBAAuB,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DrH,eAAe,IAAI,gBAAgB;IA+BnC,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAmCrD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAmC/C,OAAO,CAAC,4BAA4B;IA0BpC,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAC,4BAA4B;IA4BpC,OAAO,CAAC,yBAAyB;IAmC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
|