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
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
const CLUSTER_COMMAND_MAPPINGS = {
|
|
2
|
+
onOff: {
|
|
3
|
+
map: (attributes) => {
|
|
4
|
+
if ('onOff' in attributes) {
|
|
5
|
+
return {
|
|
6
|
+
command: attributes.onOff ? 'on' : 'off',
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
levelControl: {
|
|
13
|
+
map: (attributes) => {
|
|
14
|
+
if ('currentLevel' in attributes) {
|
|
15
|
+
return {
|
|
16
|
+
command: 'moveToLevel',
|
|
17
|
+
args: { level: attributes.currentLevel },
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
colorControl: {
|
|
24
|
+
map: (attributes) => {
|
|
25
|
+
if ('colorTemperatureMireds' in attributes) {
|
|
26
|
+
return {
|
|
27
|
+
command: 'moveToColorTemperature',
|
|
28
|
+
args: {
|
|
29
|
+
colorTemperatureMireds: attributes.colorTemperatureMireds,
|
|
30
|
+
transitionTime: attributes.transitionTime ?? null,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if ('colorX' in attributes && 'colorY' in attributes) {
|
|
35
|
+
return {
|
|
36
|
+
command: 'moveToColor',
|
|
37
|
+
args: {
|
|
38
|
+
colorX: attributes.colorX,
|
|
39
|
+
colorY: attributes.colorY,
|
|
40
|
+
transitionTime: attributes.transitionTime ?? null,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if ('currentHue' in attributes || 'currentSaturation' in attributes) {
|
|
45
|
+
return {
|
|
46
|
+
command: 'moveToHueAndSaturation',
|
|
47
|
+
args: {
|
|
48
|
+
hue: attributes.currentHue ?? 0,
|
|
49
|
+
saturation: attributes.currentSaturation ?? 0,
|
|
50
|
+
transitionTime: attributes.transitionTime ?? null,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
fanControl: {
|
|
58
|
+
map: (attributes) => {
|
|
59
|
+
if ('_command' in attributes && attributes._command === 'step') {
|
|
60
|
+
return {
|
|
61
|
+
command: 'step',
|
|
62
|
+
args: {
|
|
63
|
+
direction: attributes.direction ?? 0,
|
|
64
|
+
wrap: attributes.wrap ?? false,
|
|
65
|
+
lowestOff: attributes.lowestOff ?? true,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if ('fanMode' in attributes) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
if ('percentSetting' in attributes) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
windowCovering: {
|
|
79
|
+
map: (attributes) => {
|
|
80
|
+
if ('_command' in attributes) {
|
|
81
|
+
const cmd = attributes._command;
|
|
82
|
+
if (cmd === 'upOrOpen' || cmd === 'downOrClose' || cmd === 'stopMotion') {
|
|
83
|
+
return { command: cmd };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if ('targetPositionLiftPercent100ths' in attributes) {
|
|
87
|
+
return {
|
|
88
|
+
command: 'goToLiftPercentage',
|
|
89
|
+
args: {
|
|
90
|
+
liftPercent100thsValue: attributes.targetPositionLiftPercent100ths,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if ('targetPositionTiltPercent100ths' in attributes) {
|
|
95
|
+
return {
|
|
96
|
+
command: 'goToTiltPercentage',
|
|
97
|
+
args: {
|
|
98
|
+
tiltPercent100thsValue: attributes.targetPositionTiltPercent100ths,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
doorLock: {
|
|
106
|
+
map: (attributes) => {
|
|
107
|
+
if ('_command' in attributes) {
|
|
108
|
+
const cmd = attributes._command;
|
|
109
|
+
if (cmd === 'lockDoor' || cmd === 'unlockDoor') {
|
|
110
|
+
return { command: cmd };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if ('lockState' in attributes) {
|
|
114
|
+
return {
|
|
115
|
+
command: attributes.lockState === 1 ? 'lockDoor' : 'unlockDoor',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
thermostat: {
|
|
122
|
+
map: (attributes) => {
|
|
123
|
+
if ('_command' in attributes && attributes._command === 'setpointRaiseLower') {
|
|
124
|
+
return {
|
|
125
|
+
command: 'setpointRaiseLower',
|
|
126
|
+
args: {
|
|
127
|
+
mode: attributes.mode ?? 0,
|
|
128
|
+
amount: attributes.amount ?? 10,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if ('systemMode' in attributes) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if ('occupiedHeatingSetpoint' in attributes) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
if ('occupiedCoolingSetpoint' in attributes) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
rvcOperationalState: {
|
|
145
|
+
map: (attributes) => {
|
|
146
|
+
if ('_command' in attributes) {
|
|
147
|
+
return { command: attributes._command };
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
rvcRunMode: {
|
|
153
|
+
map: (attributes) => {
|
|
154
|
+
if ('currentMode' in attributes) {
|
|
155
|
+
return {
|
|
156
|
+
command: 'changeToMode',
|
|
157
|
+
args: { newMode: attributes.currentMode },
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
rvcCleanMode: {
|
|
164
|
+
map: (attributes) => {
|
|
165
|
+
if ('currentMode' in attributes) {
|
|
166
|
+
return {
|
|
167
|
+
command: 'changeToMode',
|
|
168
|
+
args: { newMode: attributes.currentMode },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
serviceArea: {
|
|
175
|
+
map: (attributes) => {
|
|
176
|
+
if ('selectedAreas' in attributes && Array.isArray(attributes.selectedAreas)) {
|
|
177
|
+
return {
|
|
178
|
+
command: 'selectAreas',
|
|
179
|
+
args: { newAreas: attributes.selectedAreas },
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if ('skipArea' in attributes) {
|
|
183
|
+
return {
|
|
184
|
+
command: 'skipArea',
|
|
185
|
+
args: { skippedArea: attributes.skipArea },
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
export function mapAttributesToCommand(cluster, attributes) {
|
|
193
|
+
const mapping = CLUSTER_COMMAND_MAPPINGS[cluster];
|
|
194
|
+
if (!mapping) {
|
|
195
|
+
throw new Error(`Command mapping not implemented for cluster: ${cluster}`);
|
|
196
|
+
}
|
|
197
|
+
const result = mapping.map(attributes);
|
|
198
|
+
if (result === null) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=ClusterCommandMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClusterCommandMapper.js","sourceRoot":"","sources":["../../src/matter/ClusterCommandMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External Matter Accessory Publisher
|
|
3
|
-
*
|
|
4
|
-
* Shared logic for publishing external Matter accessories on dedicated bridges.
|
|
5
|
-
* Used by both MatterBridgeManager and ChildBridgeMatterManager to avoid code duplication.
|
|
6
|
-
*/
|
|
7
1
|
import type { InternalMatterAccessory } from './types.js';
|
|
8
2
|
import { MatterServer } from './server.js';
|
|
9
|
-
/**
|
|
10
|
-
* Configuration context for publishing external Matter accessories
|
|
11
|
-
*/
|
|
12
3
|
export interface ExternalAccessoryPublishContext {
|
|
13
|
-
/** Port service for allocating Matter ports */
|
|
14
4
|
portService: {
|
|
15
5
|
requestMatterPort: (uniqueId: string) => Promise<number | null | undefined>;
|
|
16
6
|
};
|
|
17
|
-
/** Network interfaces to bind to (from bridge config) */
|
|
18
7
|
networkInterfaces?: string[];
|
|
19
|
-
/** Whether debug mode is enabled */
|
|
20
8
|
debugModeEnabled?: boolean;
|
|
21
9
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Result of publishing an external Matter accessory
|
|
24
|
-
*/
|
|
25
10
|
export interface PublishedExternalAccessory {
|
|
26
|
-
/** The MatterServer instance for this accessory */
|
|
27
11
|
server: MatterServer;
|
|
28
|
-
/** Port the server is running on */
|
|
29
12
|
port: number;
|
|
30
|
-
/** Commissioning information */
|
|
31
13
|
commissioningInfo: {
|
|
32
14
|
qrCode?: string;
|
|
33
15
|
manualPairingCode?: string;
|
|
@@ -35,14 +17,5 @@ export interface PublishedExternalAccessory {
|
|
|
35
17
|
commissioned: boolean;
|
|
36
18
|
};
|
|
37
19
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Publish an external Matter accessory on its own dedicated Matter server.
|
|
40
|
-
* This is required for devices like Robotic Vacuum Cleaners that Apple Home
|
|
41
|
-
* requires to be on their own bridge.
|
|
42
|
-
*
|
|
43
|
-
* @param accessory - The Matter accessory to publish
|
|
44
|
-
* @param context - Configuration context for publishing
|
|
45
|
-
* @returns Published accessory info, or null if publishing failed
|
|
46
|
-
*/
|
|
47
20
|
export declare function publishExternalMatterAccessory(accessory: InternalMatterAccessory, context: ExternalAccessoryPublishContext): Promise<PublishedExternalAccessory | null>;
|
|
48
21
|
//# sourceMappingURL=ExternalMatterAccessoryPublisher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalMatterAccessoryPublisher.d.ts","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExternalMatterAccessoryPublisher.d.ts","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO1C,MAAM,WAAW,+BAA+B;IAE9C,WAAW,EAAE;QACX,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;KAC5E,CAAA;IAED,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE5B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAKD,MAAM,WAAW,0BAA0B;IAEzC,MAAM,EAAE,YAAY,CAAA;IAEpB,IAAI,EAAE,MAAM,CAAA;IAEZ,iBAAiB,EAAE;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,OAAO,CAAA;KACtB,CAAA;CACF;AAWD,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,uBAAuB,EAClC,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAgE5C"}
|
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External Matter Accessory Publisher
|
|
3
|
-
*
|
|
4
|
-
* Shared logic for publishing external Matter accessories on dedicated bridges.
|
|
5
|
-
* Used by both MatterBridgeManager and ChildBridgeMatterManager to avoid code duplication.
|
|
6
|
-
*/
|
|
7
1
|
import { Logger } from '../logger.js';
|
|
8
2
|
import { User } from '../user.js';
|
|
9
3
|
import { generate } from '../util/mac.js';
|
|
10
4
|
import { MatterServer } from './server.js';
|
|
11
|
-
const log = Logger.
|
|
12
|
-
/**
|
|
13
|
-
* Publish an external Matter accessory on its own dedicated Matter server.
|
|
14
|
-
* This is required for devices like Robotic Vacuum Cleaners that Apple Home
|
|
15
|
-
* requires to be on their own bridge.
|
|
16
|
-
*
|
|
17
|
-
* @param accessory - The Matter accessory to publish
|
|
18
|
-
* @param context - Configuration context for publishing
|
|
19
|
-
* @returns Published accessory info, or null if publishing failed
|
|
20
|
-
*/
|
|
5
|
+
const log = Logger.withPrefix('Matter/External');
|
|
21
6
|
export async function publishExternalMatterAccessory(accessory, context) {
|
|
22
|
-
// Validate accessory has required fields
|
|
23
7
|
if (!accessory.uuid) {
|
|
24
8
|
log.error('External Matter accessory missing UUID - skipping');
|
|
25
9
|
return null;
|
|
@@ -28,11 +12,8 @@ export async function publishExternalMatterAccessory(accessory, context) {
|
|
|
28
12
|
log.error(`External Matter accessory ${accessory.uuid} missing displayName - skipping`);
|
|
29
13
|
return null;
|
|
30
14
|
}
|
|
31
|
-
// Generate deterministic MAC address from UUID (same pattern as HAP external accessories)
|
|
32
15
|
const advertiseAddress = generate(accessory.uuid);
|
|
33
|
-
// For Matter, use the MAC without colons as uniqueId
|
|
34
16
|
const uniqueId = advertiseAddress.replace(/:/g, '');
|
|
35
|
-
// Allocate Matter port for the external Matter server
|
|
36
17
|
const port = await context.portService.requestMatterPort(uniqueId);
|
|
37
18
|
if (!port) {
|
|
38
19
|
log.error(`Failed to allocate Matter port for external Matter accessory ${accessory.displayName}`);
|
|
@@ -40,7 +21,6 @@ export async function publishExternalMatterAccessory(accessory, context) {
|
|
|
40
21
|
return null;
|
|
41
22
|
}
|
|
42
23
|
log.info(`Allocated port ${port} for external Matter accessory: ${accessory.displayName}`);
|
|
43
|
-
// Create dedicated Matter server for this accessory
|
|
44
24
|
const matterServer = new MatterServer({
|
|
45
25
|
port,
|
|
46
26
|
uniqueId,
|
|
@@ -48,21 +28,16 @@ export async function publishExternalMatterAccessory(accessory, context) {
|
|
|
48
28
|
manufacturer: accessory.manufacturer,
|
|
49
29
|
model: accessory.model,
|
|
50
30
|
firmwareRevision: accessory.firmwareRevision,
|
|
51
|
-
serialNumber: accessory.serialNumber || uniqueId,
|
|
31
|
+
serialNumber: accessory.serialNumber || uniqueId,
|
|
52
32
|
debugModeEnabled: context.debugModeEnabled,
|
|
53
|
-
externalAccessory: true,
|
|
33
|
+
externalAccessory: true,
|
|
54
34
|
networkInterfaces: context.networkInterfaces,
|
|
55
35
|
});
|
|
56
|
-
// Start the Matter server (but don't run it yet due to externalAccessory mode)
|
|
57
36
|
await matterServer.start();
|
|
58
|
-
// Get plugin identifier from accessory
|
|
59
37
|
const pluginIdentifier = accessory._associatedPlugin || 'unknown';
|
|
60
|
-
// Register the accessory to this dedicated server
|
|
61
38
|
await matterServer.registerPlatformAccessories(pluginIdentifier, 'ExternalMatter', [accessory]);
|
|
62
|
-
// Now run the server with the device already attached (required for external accessories)
|
|
63
39
|
await matterServer.runServer();
|
|
64
40
|
log.info(`✓ External Matter accessory published: ${accessory.displayName} on port ${port}`);
|
|
65
|
-
// Get commissioning info
|
|
66
41
|
const commissioningInfo = matterServer.getCommissioningInfo();
|
|
67
42
|
return {
|
|
68
43
|
server: matterServer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalMatterAccessoryPublisher.js","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExternalMatterAccessoryPublisher.js","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AA0ChD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,SAAkC,EAClC,OAAwC;IAGxC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,6BAA6B,SAAS,CAAC,IAAI,iCAAiC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACb,CAAC;IAGD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAGjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAGnD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,gEAAgE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;QAClG,GAAG,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAC1G,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,mCAAmC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;IAG1F,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,QAAQ;QAChD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,iBAAiB,EAAE,IAAI;QACvB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAA;IAGF,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;IAG1B,MAAM,gBAAgB,GAAG,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAA;IAGjE,MAAM,YAAY,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAG/F,MAAM,YAAY,CAAC,SAAS,EAAE,CAAA;IAE9B,GAAG,CAAC,IAAI,CAAC,0CAA0C,SAAS,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC,CAAA;IAG3F,MAAM,iBAAiB,GAAG,YAAY,CAAC,oBAAoB,EAAE,CAAA;IAE7D,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI;QACJ,iBAAiB;KAClB,CAAA;AACH,CAAC"}
|
|
@@ -1,49 +1,13 @@
|
|
|
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 type { EndpointType } from '@matter/main';
|
|
16
2
|
import type { HomebridgeAPI, MatterAPI, PlatformName, PluginIdentifier } from '../api.js';
|
|
17
3
|
import { clusters, MatterAccessory } from './index.js';
|
|
18
|
-
/**
|
|
19
|
-
* Implementation of the Matter API
|
|
20
|
-
* Delegates to the HomebridgeAPI instance for event emission and server access
|
|
21
|
-
* Provides validation and coordination for Matter accessory operations
|
|
22
|
-
*/
|
|
23
4
|
export declare class MatterAPIImpl implements MatterAPI {
|
|
24
5
|
private readonly api;
|
|
25
6
|
constructor(api: HomebridgeAPI);
|
|
26
|
-
/**
|
|
27
|
-
* Validate a Matter accessory has required fields
|
|
28
|
-
* @throws MatterAccessoryValidationError if validation fails
|
|
29
|
-
*/
|
|
30
7
|
private validateAccessory;
|
|
31
|
-
/**
|
|
32
|
-
* Validate an array of accessories, logging errors for invalid ones
|
|
33
|
-
* @returns Array of valid accessories only
|
|
34
|
-
*/
|
|
35
8
|
private validateAccessories;
|
|
36
|
-
/**
|
|
37
|
-
* Validate cluster name is valid
|
|
38
|
-
*/
|
|
39
9
|
private validateClusterName;
|
|
40
|
-
/**
|
|
41
|
-
* UUID generator (alias of api.hap.uuid for convenience)
|
|
42
|
-
*/
|
|
43
10
|
get uuid(): typeof import("hap-nodejs/dist/lib/util/uuid.js");
|
|
44
|
-
/**
|
|
45
|
-
* Matter device types for creating accessories
|
|
46
|
-
*/
|
|
47
11
|
get deviceTypes(): {
|
|
48
12
|
readonly OnOffLight: import("@matter/node/devices").OnOffLightDevice;
|
|
49
13
|
readonly DimmableLight: import("@matter/node/devices").DimmableLightDevice;
|
|
@@ -439,13 +403,7 @@ export declare class MatterAPIImpl implements MatterAPI {
|
|
|
439
403
|
readonly Pump: import("@matter/node/devices").PumpDevice;
|
|
440
404
|
readonly RoomAirConditioner: import("@matter/node/devices").RoomAirConditionerDevice;
|
|
441
405
|
};
|
|
442
|
-
/**
|
|
443
|
-
* Matter clusters - Direct access to Matter.js cluster definitions
|
|
444
|
-
*/
|
|
445
406
|
get clusters(): typeof clusters;
|
|
446
|
-
/**
|
|
447
|
-
* Matter cluster names for type safety and autocomplete
|
|
448
|
-
*/
|
|
449
407
|
get clusterNames(): {
|
|
450
408
|
readonly OnOff: "onOff";
|
|
451
409
|
readonly LevelControl: "levelControl";
|
|
@@ -475,37 +433,11 @@ export declare class MatterAPIImpl implements MatterAPI {
|
|
|
475
433
|
readonly BasicInformation: "basicInformation";
|
|
476
434
|
readonly BridgedDeviceBasicInformation: "bridgedDeviceBasicInformation";
|
|
477
435
|
};
|
|
478
|
-
/**
|
|
479
|
-
* Matter types - Access to Matter.js cluster type definitions and enums
|
|
480
|
-
*/
|
|
481
436
|
get types(): typeof clusters;
|
|
482
|
-
/**
|
|
483
|
-
* Register Matter platform accessories
|
|
484
|
-
* Automatically handles external accessories (e.g., RoboticVacuumCleaner) that need dedicated bridges
|
|
485
|
-
* Validates accessories before registration
|
|
486
|
-
* Returns a promise that resolves when all accessories are fully registered
|
|
487
|
-
*/
|
|
488
437
|
registerPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]): Promise<void>;
|
|
489
|
-
/**
|
|
490
|
-
* Update Matter platform accessories in the cache
|
|
491
|
-
* Similar to api.updatePlatformAccessories() for HAP accessories
|
|
492
|
-
*/
|
|
493
438
|
updatePlatformAccessories(accessories: MatterAccessory[]): Promise<void>;
|
|
494
|
-
/**
|
|
495
|
-
* Unregister Matter platform accessories
|
|
496
|
-
* Automatically handles external accessories (e.g., RoboticVacuumCleaner) that have dedicated bridges
|
|
497
|
-
*/
|
|
498
439
|
unregisterPlatformAccessories(pluginIdentifier: PluginIdentifier, platformName: PlatformName, accessories: MatterAccessory[]): Promise<void>;
|
|
499
|
-
/**
|
|
500
|
-
* Update a Matter accessory's cluster state
|
|
501
|
-
* Validates inputs before updating
|
|
502
|
-
*/
|
|
503
440
|
updateAccessoryState(uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
|
|
504
|
-
/**
|
|
505
|
-
* Get a Matter accessory's current cluster state
|
|
506
|
-
* Checks both external servers and main bridge server
|
|
507
|
-
* Validates inputs before retrieving state
|
|
508
|
-
*/
|
|
509
441
|
getAccessoryState(uuid: string, cluster: string, partId?: string): Promise<Record<string, unknown> | undefined>;
|
|
510
442
|
}
|
|
511
443
|
//# sourceMappingURL=MatterAPIImpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatterAPIImpl.d.ts","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MatterAPIImpl.d.ts","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAKzF,OAAO,EAAgB,QAAQ,EAAe,eAAe,EAA6B,MAAM,YAAY,CAAA;AAmC5G,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAM/C,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,mBAAmB;IAc3B,IAAI,IAAI,sDAEP;IAKD,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAgQg59B,uBAAuB;;4EAAmL,uBAAuB;;;;;;;;;;4EAAkpB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;yFAAwwC,uBAAuB;;8EAAuL,uBAAuB;;;oFAAwO,uBAAuB;;;;;;;;;;;;;wFAAk2B,uBAAuB;;;;;;;;;;8EAAymB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA9P7gmC;IAKD,IAAI,QAAQ,oBAEX;IAKD,IAAI,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEf;IAKD,IAAI,KAAK,oBAER;IAQK,2BAA2B,CAC/B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAkFV,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxE,6BAA6B,CACjC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAuCV,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAiCV,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAqChD"}
|