homebridge 2.0.0-beta.43 → 2.0.0-beta.45
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 +126 -80
- 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 +5 -69
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
- package/dist/matter/ChildBridgeMatterManager.js +36 -227
- 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 +2 -27
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
- package/dist/matter/MatterAPIImpl.d.ts +7 -68
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
- package/dist/matter/MatterAPIImpl.js +6 -106
- 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 +139 -215
- 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 +14 -27
- 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 +7 -273
- package/dist/matter/types.d.ts.map +1 -1
- package/dist/matter/types.js +7 -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 +304 -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,28 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Behavior Registry
|
|
3
|
-
*
|
|
4
|
-
* Manages handler registration and accessory state without global mutable state.
|
|
5
|
-
* This replaces the global Maps in matterBehaviors.ts.
|
|
6
|
-
*/
|
|
7
1
|
import { Logger } from '../../logger.js';
|
|
8
2
|
const log = Logger.withPrefix('Matter/Behaviors');
|
|
9
|
-
/**
|
|
10
|
-
* Registry for behavior handlers and accessory state
|
|
11
|
-
* Replaces global state with a proper class instance
|
|
12
|
-
*/
|
|
13
3
|
export class BehaviorRegistry {
|
|
14
|
-
// Handler storage: endpointId -> clusterName -> commandName -> handler
|
|
15
4
|
handlers = new Map();
|
|
16
|
-
// Part endpoint mapping: endpointId -> { parentUuid, partId }
|
|
17
5
|
partEndpoints = new Map();
|
|
18
|
-
// Reference to accessories map (not owned by registry)
|
|
19
6
|
accessoriesMap;
|
|
20
|
-
|
|
7
|
+
server;
|
|
8
|
+
constructor(accessoriesMap, server) {
|
|
21
9
|
this.accessoriesMap = accessoriesMap;
|
|
10
|
+
this.server = server;
|
|
11
|
+
}
|
|
12
|
+
setServer(server) {
|
|
13
|
+
this.server = server;
|
|
22
14
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Register a command handler for an endpoint
|
|
25
|
-
*/
|
|
26
15
|
registerHandler(endpointId, clusterName, commandName, handler) {
|
|
27
16
|
if (!this.handlers.has(endpointId)) {
|
|
28
17
|
this.handlers.set(endpointId, new Map());
|
|
@@ -35,15 +24,9 @@ export class BehaviorRegistry {
|
|
|
35
24
|
clusterHandlers.set(commandName, handler);
|
|
36
25
|
log.debug(`Registered handler: ${endpointId}.${clusterName}.${commandName}`);
|
|
37
26
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Get a registered handler
|
|
40
|
-
*/
|
|
41
27
|
getHandler(endpointId, clusterName, commandName) {
|
|
42
28
|
return this.handlers.get(endpointId)?.get(clusterName)?.get(commandName);
|
|
43
29
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Execute a handler if it exists
|
|
46
|
-
*/
|
|
47
30
|
async executeHandler(endpointId, clusterName, commandName, ...args) {
|
|
48
31
|
const handler = this.getHandler(endpointId, clusterName, commandName);
|
|
49
32
|
if (!handler) {
|
|
@@ -58,28 +41,16 @@ export class BehaviorRegistry {
|
|
|
58
41
|
throw error;
|
|
59
42
|
}
|
|
60
43
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Register a part endpoint mapping
|
|
63
|
-
*/
|
|
64
44
|
registerPartEndpoint(endpointId, parentUuid, partId) {
|
|
65
45
|
this.partEndpoints.set(endpointId, { parentUuid, partId });
|
|
66
46
|
log.debug(`Registered part endpoint: ${endpointId} -> ${parentUuid}.${partId}`);
|
|
67
47
|
}
|
|
68
|
-
/**
|
|
69
|
-
* Get part endpoint info
|
|
70
|
-
*/
|
|
71
48
|
getPartEndpointInfo(endpointId) {
|
|
72
49
|
return this.partEndpoints.get(endpointId);
|
|
73
50
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Sync cluster state to cache
|
|
76
|
-
* Updates the accessory's cached cluster state when values change
|
|
77
|
-
*/
|
|
78
51
|
syncStateToCache(endpointId, clusterName, attributes) {
|
|
79
|
-
// Check if this is a part endpoint
|
|
80
52
|
const partInfo = this.partEndpoints.get(endpointId);
|
|
81
53
|
if (partInfo) {
|
|
82
|
-
// Update part cluster state
|
|
83
54
|
const accessory = this.accessoriesMap.get(partInfo.parentUuid);
|
|
84
55
|
if (!accessory?._parts) {
|
|
85
56
|
return;
|
|
@@ -96,9 +67,11 @@ export class BehaviorRegistry {
|
|
|
96
67
|
...attributes,
|
|
97
68
|
};
|
|
98
69
|
log.debug(`Synced ${clusterName} state to cache for part ${partInfo.partId}:`, attributes);
|
|
70
|
+
if (this.server) {
|
|
71
|
+
this.server.notifyStateChange(partInfo.parentUuid, clusterName, attributes, partInfo.partId);
|
|
72
|
+
}
|
|
99
73
|
}
|
|
100
74
|
else {
|
|
101
|
-
// Update main accessory cluster state
|
|
102
75
|
const accessory = this.accessoriesMap.get(endpointId);
|
|
103
76
|
if (!accessory?.clusters) {
|
|
104
77
|
return;
|
|
@@ -111,18 +84,15 @@ export class BehaviorRegistry {
|
|
|
111
84
|
...attributes,
|
|
112
85
|
};
|
|
113
86
|
log.debug(`Synced ${clusterName} state to cache for ${endpointId}:`, attributes);
|
|
87
|
+
if (this.server) {
|
|
88
|
+
this.server.notifyStateChange(endpointId, clusterName, attributes);
|
|
89
|
+
}
|
|
114
90
|
}
|
|
115
91
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Clear all handlers (for cleanup)
|
|
118
|
-
*/
|
|
119
92
|
clear() {
|
|
120
93
|
this.handlers.clear();
|
|
121
94
|
this.partEndpoints.clear();
|
|
122
95
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Get statistics
|
|
125
|
-
*/
|
|
126
96
|
getStats() {
|
|
127
97
|
let handlerCount = 0;
|
|
128
98
|
for (const endpointHandlers of this.handlers.values()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorRegistry.js","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BehaviorRegistry.js","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ColorControl Cluster Behavior
|
|
3
|
-
*
|
|
4
|
-
* Handles color control commands for RGB lights and color temperature lights
|
|
5
|
-
*/
|
|
6
1
|
import type { ColorControl } from '@matter/main/clusters';
|
|
7
2
|
import type { BehaviorRegistry } from './BehaviorRegistry.js';
|
|
8
3
|
import { ColorControlServer } from '@matter/main/behaviors/color-control';
|
|
9
|
-
/**
|
|
10
|
-
* Custom ColorControl Server that calls plugin handlers
|
|
11
|
-
*
|
|
12
|
-
* ColorControl handles color changes for lights (hue, saturation, XY color, color temperature).
|
|
13
|
-
* Plugin developers can override these *Logic methods to handle color changes in their hardware.
|
|
14
|
-
*
|
|
15
|
-
* Features (Xy, ColorTemperature, HueSaturation) are added by the device type, not this behavior.
|
|
16
|
-
* This ensures each device only gets the features it needs.
|
|
17
|
-
*/
|
|
18
4
|
export declare class HomebridgeColorControlServer extends ColorControlServer {
|
|
19
5
|
private static registry;
|
|
20
|
-
/**
|
|
21
|
-
* Set the behavior registry (called once during server initialization)
|
|
22
|
-
*/
|
|
23
6
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
24
|
-
/**
|
|
25
|
-
* Called when color temperature is changed
|
|
26
|
-
* @param colorTemperatureMireds - Target color temperature in mireds (micro reciprocal degrees)
|
|
27
|
-
* @param transitionTime - Transition time in seconds (0 = as fast as possible)
|
|
28
|
-
*/
|
|
29
7
|
moveToColorTemperatureLogic(colorTemperatureMireds: number, transitionTime: number): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Called when hue and saturation are changed together
|
|
32
|
-
* @param hue - Target hue value (0-254 for normal hue, 0-65535 for enhanced hue)
|
|
33
|
-
* @param saturation - Target saturation value (0-254)
|
|
34
|
-
* @param transitionTime - Transition time in seconds (0 = as fast as possible)
|
|
35
|
-
*/
|
|
36
8
|
moveToHueAndSaturationLogic(hue: number, saturation: number, transitionTime: number): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Called when XY color coordinates are changed
|
|
39
|
-
* @param targetX - Target X value (0-65535 representing 0.0-1.0 in CIE color space)
|
|
40
|
-
* @param targetY - Target Y value (0-65535 representing 0.0-1.0 in CIE color space)
|
|
41
|
-
* @param transitionTime - Transition time in seconds (0 = as fast as possible)
|
|
42
|
-
*/
|
|
43
9
|
moveToColorLogic(targetX: number, targetY: number, transitionTime: number): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Called when hue is changed individually
|
|
46
|
-
* @param targetHue - Target hue value
|
|
47
|
-
* @param direction - Direction to move (shortest, longest, up, down)
|
|
48
|
-
* @param transitionTime - Transition time in seconds
|
|
49
|
-
* @param isEnhancedHue - Whether this is enhanced hue (16-bit) or normal hue (8-bit)
|
|
50
|
-
*/
|
|
51
10
|
moveToHueLogic(targetHue: number, direction: ColorControl.Direction, transitionTime: number, isEnhancedHue?: boolean): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Called when saturation is changed individually
|
|
54
|
-
* @param targetSaturation - Target saturation value (0-254)
|
|
55
|
-
* @param transitionTime - Transition time in seconds
|
|
56
|
-
*/
|
|
57
11
|
moveToSaturationLogic(targetSaturation: number, transitionTime: number): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Called when all color movement should be stopped
|
|
60
|
-
*/
|
|
61
12
|
stopAllColorMovement(): Promise<void>;
|
|
62
13
|
}
|
|
63
14
|
//# sourceMappingURL=ColorControlBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorControlBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/ColorControlBehavior.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ColorControlBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/ColorControlBehavior.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAczE,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAKzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IASrC,2BAA2B,CAAC,sBAAsB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ClG,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CnG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CzF,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ClI,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCtF,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BrD"}
|
|
@@ -1,41 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ColorControl Cluster Behavior
|
|
3
|
-
*
|
|
4
|
-
* Handles color control commands for RGB lights and color temperature lights
|
|
5
|
-
*/
|
|
6
1
|
import { ColorControlServer } from '@matter/main/behaviors/color-control';
|
|
7
2
|
import { Status, StatusResponseError } from '@matter/main/types';
|
|
8
3
|
import { MatterStatus } from '../errors.js';
|
|
9
|
-
/**
|
|
10
|
-
* Custom ColorControl Server that calls plugin handlers
|
|
11
|
-
*
|
|
12
|
-
* ColorControl handles color changes for lights (hue, saturation, XY color, color temperature).
|
|
13
|
-
* Plugin developers can override these *Logic methods to handle color changes in their hardware.
|
|
14
|
-
*
|
|
15
|
-
* Features (Xy, ColorTemperature, HueSaturation) are added by the device type, not this behavior.
|
|
16
|
-
* This ensures each device only gets the features it needs.
|
|
17
|
-
*/
|
|
18
4
|
export class HomebridgeColorControlServer extends ColorControlServer {
|
|
19
5
|
static registry;
|
|
20
|
-
/**
|
|
21
|
-
* Set the behavior registry (called once during server initialization)
|
|
22
|
-
*/
|
|
23
6
|
static setRegistry(registry) {
|
|
24
7
|
this.registry = registry;
|
|
25
8
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Called when color temperature is changed
|
|
28
|
-
* @param colorTemperatureMireds - Target color temperature in mireds (micro reciprocal degrees)
|
|
29
|
-
* @param transitionTime - Transition time in seconds (0 = as fast as possible)
|
|
30
|
-
*/
|
|
31
9
|
async moveToColorTemperatureLogic(colorTemperatureMireds, transitionTime) {
|
|
32
10
|
const endpointId = this.endpoint.id;
|
|
33
11
|
try {
|
|
34
|
-
// Execute user handler
|
|
35
12
|
await HomebridgeColorControlServer.registry.executeHandler(endpointId, 'colorControl', 'moveToColorTemperatureLogic', { colorTemperatureMireds, transitionTime });
|
|
36
|
-
// Only reached if handler succeeded - update Matter state
|
|
37
13
|
await super.moveToColorTemperatureLogic(colorTemperatureMireds, transitionTime);
|
|
38
|
-
// Sync color temperature to cache
|
|
39
14
|
const currentState = this.state;
|
|
40
15
|
if (currentState.colorTemperatureMireds !== undefined) {
|
|
41
16
|
HomebridgeColorControlServer.registry.syncStateToCache(endpointId, 'colorControl', {
|
|
@@ -44,31 +19,18 @@ export class HomebridgeColorControlServer extends ColorControlServer {
|
|
|
44
19
|
}
|
|
45
20
|
}
|
|
46
21
|
catch (error) {
|
|
47
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
48
|
-
// This sends a proper Matter protocol error response to the controller
|
|
49
22
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
50
23
|
throw error;
|
|
51
24
|
}
|
|
52
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
53
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
54
25
|
const message = error instanceof Error ? error.message : String(error);
|
|
55
26
|
throw new StatusResponseError(`Failed to set color temperature: ${message}`, Status.Failure);
|
|
56
27
|
}
|
|
57
28
|
}
|
|
58
|
-
/**
|
|
59
|
-
* Called when hue and saturation are changed together
|
|
60
|
-
* @param hue - Target hue value (0-254 for normal hue, 0-65535 for enhanced hue)
|
|
61
|
-
* @param saturation - Target saturation value (0-254)
|
|
62
|
-
* @param transitionTime - Transition time in seconds (0 = as fast as possible)
|
|
63
|
-
*/
|
|
64
29
|
async moveToHueAndSaturationLogic(hue, saturation, transitionTime) {
|
|
65
30
|
const endpointId = this.endpoint.id;
|
|
66
31
|
try {
|
|
67
|
-
// Execute user handler
|
|
68
32
|
await HomebridgeColorControlServer.registry.executeHandler(endpointId, 'colorControl', 'moveToHueAndSaturationLogic', { hue, saturation, transitionTime });
|
|
69
|
-
// Only reached if handler succeeded - update Matter state
|
|
70
33
|
await super.moveToHueAndSaturationLogic(hue, saturation, transitionTime);
|
|
71
|
-
// Sync hue and saturation to cache
|
|
72
34
|
const currentState = this.state;
|
|
73
35
|
const stateUpdate = {};
|
|
74
36
|
if (currentState.currentHue !== undefined) {
|
|
@@ -80,31 +42,18 @@ export class HomebridgeColorControlServer extends ColorControlServer {
|
|
|
80
42
|
HomebridgeColorControlServer.registry.syncStateToCache(endpointId, 'colorControl', stateUpdate);
|
|
81
43
|
}
|
|
82
44
|
catch (error) {
|
|
83
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
84
|
-
// This sends a proper Matter protocol error response to the controller
|
|
85
45
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
86
46
|
throw error;
|
|
87
47
|
}
|
|
88
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
89
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
90
48
|
const message = error instanceof Error ? error.message : String(error);
|
|
91
49
|
throw new StatusResponseError(`Failed to set hue and saturation: ${message}`, Status.Failure);
|
|
92
50
|
}
|
|
93
51
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Called when XY color coordinates are changed
|
|
96
|
-
* @param targetX - Target X value (0-65535 representing 0.0-1.0 in CIE color space)
|
|
97
|
-
* @param targetY - Target Y value (0-65535 representing 0.0-1.0 in CIE color space)
|
|
98
|
-
* @param transitionTime - Transition time in seconds (0 = as fast as possible)
|
|
99
|
-
*/
|
|
100
52
|
async moveToColorLogic(targetX, targetY, transitionTime) {
|
|
101
53
|
const endpointId = this.endpoint.id;
|
|
102
54
|
try {
|
|
103
|
-
// Execute user handler
|
|
104
55
|
await HomebridgeColorControlServer.registry.executeHandler(endpointId, 'colorControl', 'moveToColorLogic', { targetX, targetY, transitionTime });
|
|
105
|
-
// Only reached if handler succeeded - update Matter state
|
|
106
56
|
await super.moveToColorLogic(targetX, targetY, transitionTime);
|
|
107
|
-
// Sync XY color to cache
|
|
108
57
|
const currentState = this.state;
|
|
109
58
|
const stateUpdate = {};
|
|
110
59
|
if (currentState.currentX !== undefined) {
|
|
@@ -116,32 +65,18 @@ export class HomebridgeColorControlServer extends ColorControlServer {
|
|
|
116
65
|
HomebridgeColorControlServer.registry.syncStateToCache(endpointId, 'colorControl', stateUpdate);
|
|
117
66
|
}
|
|
118
67
|
catch (error) {
|
|
119
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
120
|
-
// This sends a proper Matter protocol error response to the controller
|
|
121
68
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
122
69
|
throw error;
|
|
123
70
|
}
|
|
124
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
125
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
126
71
|
const message = error instanceof Error ? error.message : String(error);
|
|
127
72
|
throw new StatusResponseError(`Failed to set XY color: ${message}`, Status.Failure);
|
|
128
73
|
}
|
|
129
74
|
}
|
|
130
|
-
/**
|
|
131
|
-
* Called when hue is changed individually
|
|
132
|
-
* @param targetHue - Target hue value
|
|
133
|
-
* @param direction - Direction to move (shortest, longest, up, down)
|
|
134
|
-
* @param transitionTime - Transition time in seconds
|
|
135
|
-
* @param isEnhancedHue - Whether this is enhanced hue (16-bit) or normal hue (8-bit)
|
|
136
|
-
*/
|
|
137
75
|
async moveToHueLogic(targetHue, direction, transitionTime, isEnhancedHue = false) {
|
|
138
76
|
const endpointId = this.endpoint.id;
|
|
139
77
|
try {
|
|
140
|
-
// Execute user handler
|
|
141
78
|
await HomebridgeColorControlServer.registry.executeHandler(endpointId, 'colorControl', 'moveToHueLogic', { targetHue, direction, transitionTime, isEnhancedHue });
|
|
142
|
-
// Only reached if handler succeeded - update Matter state
|
|
143
79
|
await super.moveToHueLogic(targetHue, direction, transitionTime, isEnhancedHue);
|
|
144
|
-
// Sync hue to cache
|
|
145
80
|
const currentState = this.state;
|
|
146
81
|
const stateUpdate = {};
|
|
147
82
|
if (isEnhancedHue && currentState.enhancedCurrentHue !== undefined) {
|
|
@@ -153,30 +88,18 @@ export class HomebridgeColorControlServer extends ColorControlServer {
|
|
|
153
88
|
HomebridgeColorControlServer.registry.syncStateToCache(endpointId, 'colorControl', stateUpdate);
|
|
154
89
|
}
|
|
155
90
|
catch (error) {
|
|
156
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
157
|
-
// This sends a proper Matter protocol error response to the controller
|
|
158
91
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
159
92
|
throw error;
|
|
160
93
|
}
|
|
161
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
162
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
163
94
|
const message = error instanceof Error ? error.message : String(error);
|
|
164
95
|
throw new StatusResponseError(`Failed to set hue: ${message}`, Status.Failure);
|
|
165
96
|
}
|
|
166
97
|
}
|
|
167
|
-
/**
|
|
168
|
-
* Called when saturation is changed individually
|
|
169
|
-
* @param targetSaturation - Target saturation value (0-254)
|
|
170
|
-
* @param transitionTime - Transition time in seconds
|
|
171
|
-
*/
|
|
172
98
|
async moveToSaturationLogic(targetSaturation, transitionTime) {
|
|
173
99
|
const endpointId = this.endpoint.id;
|
|
174
100
|
try {
|
|
175
|
-
// Execute user handler
|
|
176
101
|
await HomebridgeColorControlServer.registry.executeHandler(endpointId, 'colorControl', 'moveToSaturationLogic', { targetSaturation, transitionTime });
|
|
177
|
-
// Only reached if handler succeeded - update Matter state
|
|
178
102
|
await super.moveToSaturationLogic(targetSaturation, transitionTime);
|
|
179
|
-
// Sync saturation to cache
|
|
180
103
|
const currentState = this.state;
|
|
181
104
|
if (currentState.currentSaturation !== undefined) {
|
|
182
105
|
HomebridgeColorControlServer.registry.syncStateToCache(endpointId, 'colorControl', {
|
|
@@ -185,36 +108,23 @@ export class HomebridgeColorControlServer extends ColorControlServer {
|
|
|
185
108
|
}
|
|
186
109
|
}
|
|
187
110
|
catch (error) {
|
|
188
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
189
|
-
// This sends a proper Matter protocol error response to the controller
|
|
190
111
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
191
112
|
throw error;
|
|
192
113
|
}
|
|
193
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
194
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
195
114
|
const message = error instanceof Error ? error.message : String(error);
|
|
196
115
|
throw new StatusResponseError(`Failed to set saturation: ${message}`, Status.Failure);
|
|
197
116
|
}
|
|
198
117
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Called when all color movement should be stopped
|
|
201
|
-
*/
|
|
202
118
|
async stopAllColorMovement() {
|
|
203
119
|
const endpointId = this.endpoint.id;
|
|
204
120
|
try {
|
|
205
|
-
// Execute user handler
|
|
206
121
|
await HomebridgeColorControlServer.registry.executeHandler(endpointId, 'colorControl', 'stopAllColorMovement');
|
|
207
|
-
// Only reached if handler succeeded - update Matter state
|
|
208
122
|
await super.stopAllColorMovement();
|
|
209
123
|
}
|
|
210
124
|
catch (error) {
|
|
211
|
-
// If user handler already threw a StatusResponseError, propagate it as-is
|
|
212
|
-
// This sends a proper Matter protocol error response to the controller
|
|
213
125
|
if (MatterStatus.isMatterProtocolError(error)) {
|
|
214
126
|
throw error;
|
|
215
127
|
}
|
|
216
|
-
// For other errors, wrap in appropriate StatusResponseError
|
|
217
|
-
// This prevents the endpoint from crashing and keeps the device online
|
|
218
128
|
const message = error instanceof Error ? error.message : String(error);
|
|
219
129
|
throw new StatusResponseError(`Failed to stop color movement: ${message}`, Status.Failure);
|
|
220
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorControlBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/ColorControlBehavior.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ColorControlBehavior.js","sourceRoot":"","sources":["../../../src/matter/behaviors/ColorControlBehavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,120 +1,29 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Concentration Measurement Cluster Behavior
|
|
3
|
-
*
|
|
4
|
-
* Handles concentration measurement readings for various pollutants and gases.
|
|
5
|
-
* This cluster is primarily read-only, exposing concentration measurements to Matter controllers.
|
|
6
|
-
*
|
|
7
|
-
* Supported measurement types:
|
|
8
|
-
* - PM2.5: Fine particulate matter density
|
|
9
|
-
* - PM10: Coarse particulate matter density
|
|
10
|
-
* - Ozone (O3): Ozone concentration
|
|
11
|
-
* - NO2: Nitrogen dioxide concentration
|
|
12
|
-
* - CO: Carbon monoxide level
|
|
13
|
-
*
|
|
14
|
-
* Example usage:
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const accessory: MatterAccessory = {
|
|
17
|
-
* uuid: 'air-quality-sensor-1',
|
|
18
|
-
* displayName: 'Living Room Air Quality',
|
|
19
|
-
* deviceType: api.matter.deviceTypes.AirQualitySensor,
|
|
20
|
-
* serialNumber: 'AQ-12345',
|
|
21
|
-
* manufacturer: 'Acme',
|
|
22
|
-
* model: 'AQ-100',
|
|
23
|
-
* clusters: {
|
|
24
|
-
* pm25ConcentrationMeasurement: {
|
|
25
|
-
* measuredValue: 12.5, // PM2.5 concentration in µg/m³
|
|
26
|
-
* minMeasuredValue: 0,
|
|
27
|
-
* maxMeasuredValue: 1000,
|
|
28
|
-
* measurementUnit: 0, // 0 = µg/m³
|
|
29
|
-
* },
|
|
30
|
-
* pm10ConcentrationMeasurement: {
|
|
31
|
-
* measuredValue: 25.0, // PM10 concentration in µg/m³
|
|
32
|
-
* minMeasuredValue: 0,
|
|
33
|
-
* maxMeasuredValue: 1000,
|
|
34
|
-
* measurementUnit: 0,
|
|
35
|
-
* },
|
|
36
|
-
* ozoneConcentrationMeasurement: {
|
|
37
|
-
* measuredValue: 0.05, // Ozone concentration in ppm
|
|
38
|
-
* minMeasuredValue: 0,
|
|
39
|
-
* maxMeasuredValue: 1,
|
|
40
|
-
* measurementUnit: 1, // 1 = ppm
|
|
41
|
-
* },
|
|
42
|
-
* nitrogenDioxideConcentrationMeasurement: {
|
|
43
|
-
* measuredValue: 0.02, // NO2 concentration in ppm
|
|
44
|
-
* minMeasuredValue: 0,
|
|
45
|
-
* maxMeasuredValue: 1,
|
|
46
|
-
* measurementUnit: 1,
|
|
47
|
-
* },
|
|
48
|
-
* carbonMonoxideConcentrationMeasurement: {
|
|
49
|
-
* measuredValue: 3.0, // CO concentration in ppm
|
|
50
|
-
* minMeasuredValue: 0,
|
|
51
|
-
* maxMeasuredValue: 100,
|
|
52
|
-
* measurementUnit: 1,
|
|
53
|
-
* }
|
|
54
|
-
* }
|
|
55
|
-
* }
|
|
56
|
-
*
|
|
57
|
-
* // Update concentration readings
|
|
58
|
-
* await api.matter.updateClusterState(accessory.uuid, 'pm25ConcentrationMeasurement', { measuredValue: 15.3 })
|
|
59
|
-
* await api.matter.updateClusterState(accessory.uuid, 'carbonMonoxideConcentrationMeasurement', { measuredValue: 2.5 })
|
|
60
|
-
* ```
|
|
61
|
-
*/
|
|
62
1
|
import type { BehaviorRegistry } from './BehaviorRegistry.js';
|
|
63
2
|
import { CarbonMonoxideConcentrationMeasurementServer } from '@matter/node/behaviors/carbon-monoxide-concentration-measurement';
|
|
64
3
|
import { NitrogenDioxideConcentrationMeasurementServer } from '@matter/node/behaviors/nitrogen-dioxide-concentration-measurement';
|
|
65
4
|
import { OzoneConcentrationMeasurementServer } from '@matter/node/behaviors/ozone-concentration-measurement';
|
|
66
5
|
import { Pm10ConcentrationMeasurementServer } from '@matter/node/behaviors/pm10-concentration-measurement';
|
|
67
6
|
import { Pm25ConcentrationMeasurementServer } from '@matter/node/behaviors/pm25-concentration-measurement';
|
|
68
|
-
/**
|
|
69
|
-
* Custom PM2.5 Concentration Measurement Server
|
|
70
|
-
*
|
|
71
|
-
* Measures fine particulate matter (particles with diameter ≤ 2.5 micrometers)
|
|
72
|
-
* This is a read-only cluster - plugins update state via the Matter API
|
|
73
|
-
*/
|
|
74
7
|
export declare class HomebridgePm25ConcentrationMeasurementServer extends Pm25ConcentrationMeasurementServer {
|
|
75
8
|
private static registry;
|
|
76
9
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
77
10
|
initialize(): void;
|
|
78
11
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Custom PM10 Concentration Measurement Server
|
|
81
|
-
*
|
|
82
|
-
* Measures coarse particulate matter (particles with diameter ≤ 10 micrometers)
|
|
83
|
-
* This is a read-only cluster - plugins update state via the Matter API
|
|
84
|
-
*/
|
|
85
12
|
export declare class HomebridgePm10ConcentrationMeasurementServer extends Pm10ConcentrationMeasurementServer {
|
|
86
13
|
private static registry;
|
|
87
14
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
88
15
|
initialize(): void;
|
|
89
16
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Custom Ozone Concentration Measurement Server
|
|
92
|
-
*
|
|
93
|
-
* Measures ozone (O3) concentration
|
|
94
|
-
* This is a read-only cluster - plugins update state via the Matter API
|
|
95
|
-
*/
|
|
96
17
|
export declare class HomebridgeOzoneConcentrationMeasurementServer extends OzoneConcentrationMeasurementServer {
|
|
97
18
|
private static registry;
|
|
98
19
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
99
20
|
initialize(): void;
|
|
100
21
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Custom Nitrogen Dioxide Concentration Measurement Server
|
|
103
|
-
*
|
|
104
|
-
* Measures nitrogen dioxide (NO2) concentration
|
|
105
|
-
* This is a read-only cluster - plugins update state via the Matter API
|
|
106
|
-
*/
|
|
107
22
|
export declare class HomebridgeNitrogenDioxideConcentrationMeasurementServer extends NitrogenDioxideConcentrationMeasurementServer {
|
|
108
23
|
private static registry;
|
|
109
24
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
110
25
|
initialize(): void;
|
|
111
26
|
}
|
|
112
|
-
/**
|
|
113
|
-
* Custom Carbon Monoxide Concentration Measurement Server
|
|
114
|
-
*
|
|
115
|
-
* Measures carbon monoxide (CO) concentration
|
|
116
|
-
* This is a read-only cluster - plugins update state via the Matter API
|
|
117
|
-
*/
|
|
118
27
|
export declare class HomebridgeCarbonMonoxideConcentrationMeasurementServer extends CarbonMonoxideConcentrationMeasurementServer {
|
|
119
28
|
private static registry;
|
|
120
29
|
static setRegistry(registry: BehaviorRegistry): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConcentrationMeasurementBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/ConcentrationMeasurementBehavior.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConcentrationMeasurementBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/ConcentrationMeasurementBehavior.ts"],"names":[],"mappings":"AA8DA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,4CAA4C,EAAE,MAAM,kEAAkE,CAAA;AAC/H,OAAO,EAAE,6CAA6C,EAAE,MAAM,mEAAmE,CAAA;AACjI,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAA;AAC5G,OAAO,EAAE,kCAAkC,EAAE,MAAM,uDAAuD,CAAA;AAC1G,OAAO,EAAE,kCAAkC,EAAE,MAAM,uDAAuD,CAAA;AAQ1G,qBAAa,4CAA6C,SAAQ,kCAAkC;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI3C,UAAU,IAAI,IAAI;CAI5B;AAQD,qBAAa,4CAA6C,SAAQ,kCAAkC;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI3C,UAAU,IAAI,IAAI;CAI5B;AAQD,qBAAa,6CAA8C,SAAQ,mCAAmC;IACpG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI3C,UAAU,IAAI,IAAI;CAI5B;AAQD,qBAAa,uDAAwD,SAAQ,6CAA6C;IACxH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI3C,UAAU,IAAI,IAAI;CAI5B;AAQD,qBAAa,sDAAuD,SAAQ,4CAA4C;IACtH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI3C,UAAU,IAAI,IAAI;CAI5B"}
|