@matterbridge/core 3.5.3
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/LICENSE +202 -0
- package/README.md +22 -0
- package/dist/cli.d.ts +29 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +268 -0
- package/dist/cli.js.map +1 -0
- package/dist/cliEmitter.d.ts +50 -0
- package/dist/cliEmitter.d.ts.map +1 -0
- package/dist/cliEmitter.js +49 -0
- package/dist/cliEmitter.js.map +1 -0
- package/dist/cliHistory.d.ts +48 -0
- package/dist/cliHistory.d.ts.map +1 -0
- package/dist/cliHistory.js +826 -0
- package/dist/cliHistory.js.map +1 -0
- package/dist/clusters/export.d.ts +2 -0
- package/dist/clusters/export.d.ts.map +1 -0
- package/dist/clusters/export.js +3 -0
- package/dist/clusters/export.js.map +1 -0
- package/dist/crypto/attestationDecoder.d.ts +180 -0
- package/dist/crypto/attestationDecoder.d.ts.map +1 -0
- package/dist/crypto/attestationDecoder.js +176 -0
- package/dist/crypto/attestationDecoder.js.map +1 -0
- package/dist/crypto/declarationDecoder.d.ts +72 -0
- package/dist/crypto/declarationDecoder.d.ts.map +1 -0
- package/dist/crypto/declarationDecoder.js +241 -0
- package/dist/crypto/declarationDecoder.js.map +1 -0
- package/dist/crypto/extract/342/200/220cert/342/200/220extensions.d.ts +9 -0
- package/dist/crypto/extract/342/200/220cert/342/200/220extensions.d.ts.map +1 -0
- package/dist/crypto/extract/342/200/220cert/342/200/220extensions.js +120 -0
- package/dist/crypto/extract/342/200/220cert/342/200/220extensions.js.map +1 -0
- package/dist/crypto/read-extensions.d.ts +2 -0
- package/dist/crypto/read-extensions.d.ts.map +1 -0
- package/dist/crypto/read-extensions.js +81 -0
- package/dist/crypto/read-extensions.js.map +1 -0
- package/dist/crypto/testData.d.ts +31 -0
- package/dist/crypto/testData.d.ts.map +1 -0
- package/dist/crypto/testData.js +131 -0
- package/dist/crypto/testData.js.map +1 -0
- package/dist/crypto/walk-der.d.ts +2 -0
- package/dist/crypto/walk-der.d.ts.map +1 -0
- package/dist/crypto/walk-der.js +165 -0
- package/dist/crypto/walk-der.js.map +1 -0
- package/dist/deviceManager.d.ts +135 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +270 -0
- package/dist/deviceManager.js.map +1 -0
- package/dist/devices/airConditioner.d.ts +98 -0
- package/dist/devices/airConditioner.d.ts.map +1 -0
- package/dist/devices/airConditioner.js +74 -0
- package/dist/devices/airConditioner.js.map +1 -0
- package/dist/devices/basicVideoPlayer.d.ts +88 -0
- package/dist/devices/basicVideoPlayer.d.ts.map +1 -0
- package/dist/devices/basicVideoPlayer.js +155 -0
- package/dist/devices/basicVideoPlayer.js.map +1 -0
- package/dist/devices/batteryStorage.d.ts +48 -0
- package/dist/devices/batteryStorage.d.ts.map +1 -0
- package/dist/devices/batteryStorage.js +75 -0
- package/dist/devices/batteryStorage.js.map +1 -0
- package/dist/devices/castingVideoPlayer.d.ts +79 -0
- package/dist/devices/castingVideoPlayer.d.ts.map +1 -0
- package/dist/devices/castingVideoPlayer.js +101 -0
- package/dist/devices/castingVideoPlayer.js.map +1 -0
- package/dist/devices/cooktop.d.ts +61 -0
- package/dist/devices/cooktop.d.ts.map +1 -0
- package/dist/devices/cooktop.js +77 -0
- package/dist/devices/cooktop.js.map +1 -0
- package/dist/devices/dishwasher.d.ts +71 -0
- package/dist/devices/dishwasher.d.ts.map +1 -0
- package/dist/devices/dishwasher.js +130 -0
- package/dist/devices/dishwasher.js.map +1 -0
- package/dist/devices/evse.d.ts +76 -0
- package/dist/devices/evse.d.ts.map +1 -0
- package/dist/devices/evse.js +156 -0
- package/dist/devices/evse.js.map +1 -0
- package/dist/devices/export.d.ts +19 -0
- package/dist/devices/export.d.ts.map +1 -0
- package/dist/devices/export.js +23 -0
- package/dist/devices/export.js.map +1 -0
- package/dist/devices/extractorHood.d.ts +46 -0
- package/dist/devices/extractorHood.d.ts.map +1 -0
- package/dist/devices/extractorHood.js +78 -0
- package/dist/devices/extractorHood.js.map +1 -0
- package/dist/devices/heatPump.d.ts +47 -0
- package/dist/devices/heatPump.d.ts.map +1 -0
- package/dist/devices/heatPump.js +84 -0
- package/dist/devices/heatPump.js.map +1 -0
- package/dist/devices/laundryDryer.d.ts +67 -0
- package/dist/devices/laundryDryer.d.ts.map +1 -0
- package/dist/devices/laundryDryer.js +106 -0
- package/dist/devices/laundryDryer.js.map +1 -0
- package/dist/devices/laundryWasher.d.ts +81 -0
- package/dist/devices/laundryWasher.d.ts.map +1 -0
- package/dist/devices/laundryWasher.js +147 -0
- package/dist/devices/laundryWasher.js.map +1 -0
- package/dist/devices/microwaveOven.d.ts +168 -0
- package/dist/devices/microwaveOven.d.ts.map +1 -0
- package/dist/devices/microwaveOven.js +179 -0
- package/dist/devices/microwaveOven.js.map +1 -0
- package/dist/devices/oven.d.ts +105 -0
- package/dist/devices/oven.d.ts.map +1 -0
- package/dist/devices/oven.js +190 -0
- package/dist/devices/oven.js.map +1 -0
- package/dist/devices/refrigerator.d.ts +118 -0
- package/dist/devices/refrigerator.d.ts.map +1 -0
- package/dist/devices/refrigerator.js +186 -0
- package/dist/devices/refrigerator.js.map +1 -0
- package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
- package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
- package/dist/devices/roboticVacuumCleaner.js +268 -0
- package/dist/devices/roboticVacuumCleaner.js.map +1 -0
- package/dist/devices/solarPower.d.ts +40 -0
- package/dist/devices/solarPower.d.ts.map +1 -0
- package/dist/devices/solarPower.js +59 -0
- package/dist/devices/solarPower.js.map +1 -0
- package/dist/devices/speaker.d.ts +87 -0
- package/dist/devices/speaker.d.ts.map +1 -0
- package/dist/devices/speaker.js +120 -0
- package/dist/devices/speaker.js.map +1 -0
- package/dist/devices/temperatureControl.d.ts +166 -0
- package/dist/devices/temperatureControl.d.ts.map +1 -0
- package/dist/devices/temperatureControl.js +78 -0
- package/dist/devices/temperatureControl.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +111 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +166 -0
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/dgram/export.d.ts +2 -0
- package/dist/dgram/export.d.ts.map +1 -0
- package/dist/dgram/export.js +2 -0
- package/dist/dgram/export.js.map +1 -0
- package/dist/export.d.ts +32 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +39 -0
- package/dist/export.js.map +1 -0
- package/dist/frontend.d.ts +248 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +2605 -0
- package/dist/frontend.js.map +1 -0
- package/dist/helpers.d.ts +48 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +161 -0
- package/dist/helpers.js.map +1 -0
- package/dist/jestutils/export.d.ts +2 -0
- package/dist/jestutils/export.d.ts.map +1 -0
- package/dist/jestutils/export.js +2 -0
- package/dist/jestutils/export.js.map +1 -0
- package/dist/jestutils/jestHelpers.d.ts +349 -0
- package/dist/jestutils/jestHelpers.d.ts.map +1 -0
- package/dist/jestutils/jestHelpers.js +980 -0
- package/dist/jestutils/jestHelpers.js.map +1 -0
- package/dist/matter/behaviors.d.ts +2 -0
- package/dist/matter/behaviors.d.ts.map +1 -0
- package/dist/matter/behaviors.js +3 -0
- package/dist/matter/behaviors.js.map +1 -0
- package/dist/matter/clusters.d.ts +2 -0
- package/dist/matter/clusters.d.ts.map +1 -0
- package/dist/matter/clusters.js +3 -0
- package/dist/matter/clusters.js.map +1 -0
- package/dist/matter/devices.d.ts +2 -0
- package/dist/matter/devices.d.ts.map +1 -0
- package/dist/matter/devices.js +3 -0
- package/dist/matter/devices.js.map +1 -0
- package/dist/matter/endpoints.d.ts +2 -0
- package/dist/matter/endpoints.d.ts.map +1 -0
- package/dist/matter/endpoints.js +3 -0
- package/dist/matter/endpoints.js.map +1 -0
- package/dist/matter/export.d.ts +4 -0
- package/dist/matter/export.d.ts.map +1 -0
- package/dist/matter/export.js +5 -0
- package/dist/matter/export.js.map +1 -0
- package/dist/matter/types.d.ts +2 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +3 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matterNode.d.ts +341 -0
- package/dist/matterNode.d.ts.map +1 -0
- package/dist/matterNode.js +1329 -0
- package/dist/matterNode.js.map +1 -0
- package/dist/matterbridge.d.ts +544 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +2880 -0
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +49 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +80 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +2428 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +620 -0
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +744 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +1312 -0
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +49 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +80 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +1548 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +2883 -0
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +1855 -0
- package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
- package/dist/matterbridgeEndpointHelpers.js +1270 -0
- package/dist/matterbridgeEndpointHelpers.js.map +1 -0
- package/dist/matterbridgeEndpointTypes.d.ts +172 -0
- package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
- package/dist/matterbridgeEndpointTypes.js +28 -0
- package/dist/matterbridgeEndpointTypes.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +520 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +921 -0
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/mb_coap.d.ts +24 -0
- package/dist/mb_coap.d.ts.map +1 -0
- package/dist/mb_coap.js +89 -0
- package/dist/mb_coap.js.map +1 -0
- package/dist/mb_health.d.ts +77 -0
- package/dist/mb_health.d.ts.map +1 -0
- package/dist/mb_health.js +147 -0
- package/dist/mb_health.js.map +1 -0
- package/dist/mb_mdns.d.ts +24 -0
- package/dist/mb_mdns.d.ts.map +1 -0
- package/dist/mb_mdns.js +285 -0
- package/dist/mb_mdns.js.map +1 -0
- package/dist/pluginManager.d.ts +388 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +1574 -0
- package/dist/pluginManager.js.map +1 -0
- package/dist/spawn.d.ts +33 -0
- package/dist/spawn.d.ts.map +1 -0
- package/dist/spawn.js +165 -0
- package/dist/spawn.js.map +1 -0
- package/dist/utils/export.d.ts +2 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/export.js +2 -0
- package/dist/utils/export.js.map +1 -0
- package/dist/workers/brand.d.ts +25 -0
- package/dist/workers/brand.d.ts.map +1 -0
- package/dist/workers/brand.extend.d.ts +10 -0
- package/dist/workers/brand.extend.d.ts.map +1 -0
- package/dist/workers/brand.extend.js +15 -0
- package/dist/workers/brand.extend.js.map +1 -0
- package/dist/workers/brand.invalid.d.ts +9 -0
- package/dist/workers/brand.invalid.d.ts.map +1 -0
- package/dist/workers/brand.invalid.js +19 -0
- package/dist/workers/brand.invalid.js.map +1 -0
- package/dist/workers/brand.js +67 -0
- package/dist/workers/brand.js.map +1 -0
- package/dist/workers/clusterTypes.d.ts +47 -0
- package/dist/workers/clusterTypes.d.ts.map +1 -0
- package/dist/workers/clusterTypes.js +57 -0
- package/dist/workers/clusterTypes.js.map +1 -0
- package/dist/workers/frontendWorker.d.ts +2 -0
- package/dist/workers/frontendWorker.d.ts.map +1 -0
- package/dist/workers/frontendWorker.js +90 -0
- package/dist/workers/frontendWorker.js.map +1 -0
- package/dist/workers/helloWorld.d.ts +2 -0
- package/dist/workers/helloWorld.d.ts.map +1 -0
- package/dist/workers/helloWorld.js +135 -0
- package/dist/workers/helloWorld.js.map +1 -0
- package/dist/workers/matterWorker.d.ts +2 -0
- package/dist/workers/matterWorker.d.ts.map +1 -0
- package/dist/workers/matterWorker.js +104 -0
- package/dist/workers/matterWorker.js.map +1 -0
- package/dist/workers/matterbridgeWorker.d.ts +2 -0
- package/dist/workers/matterbridgeWorker.d.ts.map +1 -0
- package/dist/workers/matterbridgeWorker.js +75 -0
- package/dist/workers/matterbridgeWorker.js.map +1 -0
- package/dist/workers/messageLab.d.ts +134 -0
- package/dist/workers/messageLab.d.ts.map +1 -0
- package/dist/workers/messageLab.js +129 -0
- package/dist/workers/messageLab.js.map +1 -0
- package/dist/workers/testWorker.d.ts +2 -0
- package/dist/workers/testWorker.d.ts.map +1 -0
- package/dist/workers/testWorker.js +45 -0
- package/dist/workers/testWorker.js.map +1 -0
- package/dist/workers/usage.d.ts +19 -0
- package/dist/workers/usage.d.ts.map +1 -0
- package/dist/workers/usage.js +140 -0
- package/dist/workers/usage.js.map +1 -0
- package/dist/workers/workerManager.d.ts +115 -0
- package/dist/workers/workerManager.d.ts.map +1 -0
- package/dist/workers/workerManager.js +464 -0
- package/dist/workers/workerManager.js.map +1 -0
- package/dist/workers/workerServer.d.ts +126 -0
- package/dist/workers/workerServer.d.ts.map +1 -0
- package/dist/workers/workerServer.js +340 -0
- package/dist/workers/workerServer.js.map +1 -0
- package/dist/workers/workerTypes.d.ts +23 -0
- package/dist/workers/workerTypes.d.ts.map +1 -0
- package/dist/workers/workerTypes.js +3 -0
- package/dist/workers/workerTypes.js.map +1 -0
- package/package.json +120 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matterbridgeBehaviors.d.ts","sourceRoot":"","sources":["../src/matterbridgeBehaviors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file contains the behavior classes of Matterbridge.
|
|
3
|
+
*
|
|
4
|
+
* @file matterbridgeBehaviors.ts
|
|
5
|
+
* @author Luca Liguori
|
|
6
|
+
* @created 2024-11-07
|
|
7
|
+
* @version 1.3.0
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*
|
|
10
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
import { Behavior } from '@matter/node';
|
|
25
|
+
// @matter clusters
|
|
26
|
+
import { BooleanStateConfiguration } from '@matter/types/clusters/boolean-state-configuration';
|
|
27
|
+
import { ColorControl } from '@matter/types/clusters/color-control';
|
|
28
|
+
import { FanControl } from '@matter/types/clusters/fan-control';
|
|
29
|
+
import { WindowCovering } from '@matter/types/clusters/window-covering';
|
|
30
|
+
import { Thermostat } from '@matter/types/clusters/thermostat';
|
|
31
|
+
import { ValveConfigurationAndControl } from '@matter/types/clusters/valve-configuration-and-control';
|
|
32
|
+
import { SmokeCoAlarm } from '@matter/types/clusters/smoke-co-alarm';
|
|
33
|
+
import { OperationalState } from '@matter/types/clusters/operational-state';
|
|
34
|
+
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
35
|
+
import { ServiceArea } from '@matter/types/clusters/service-area';
|
|
36
|
+
import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
|
|
37
|
+
import { ResourceMonitoring } from '@matter/types/clusters/resource-monitoring';
|
|
38
|
+
import { DeviceEnergyManagementMode } from '@matter/types/clusters/device-energy-management-mode';
|
|
39
|
+
// @matter behaviors
|
|
40
|
+
import { IdentifyServer } from '@matter/node/behaviors/identify';
|
|
41
|
+
import { OnOffServer } from '@matter/node/behaviors/on-off';
|
|
42
|
+
import { LevelControlServer } from '@matter/node/behaviors/level-control';
|
|
43
|
+
import { ColorControlServer } from '@matter/node/behaviors/color-control';
|
|
44
|
+
import { WindowCoveringServer } from '@matter/node/behaviors/window-covering';
|
|
45
|
+
import { BooleanStateConfigurationServer } from '@matter/node/behaviors/boolean-state-configuration';
|
|
46
|
+
import { DoorLockServer } from '@matter/node/behaviors/door-lock';
|
|
47
|
+
import { FanControlServer } from '@matter/node/behaviors/fan-control';
|
|
48
|
+
import { ThermostatServer } from '@matter/node/behaviors/thermostat';
|
|
49
|
+
import { ValveConfigurationAndControlServer } from '@matter/node/behaviors/valve-configuration-and-control';
|
|
50
|
+
import { ModeSelectServer } from '@matter/node/behaviors/mode-select';
|
|
51
|
+
import { SmokeCoAlarmServer } from '@matter/node/behaviors/smoke-co-alarm';
|
|
52
|
+
import { SwitchServer } from '@matter/node/behaviors/switch';
|
|
53
|
+
import { OperationalStateServer } from '@matter/node/behaviors/operational-state';
|
|
54
|
+
import { ServiceAreaServer } from '@matter/node/behaviors/service-area';
|
|
55
|
+
import { DeviceEnergyManagementServer } from '@matter/node/behaviors/device-energy-management';
|
|
56
|
+
import { DeviceEnergyManagementModeServer } from '@matter/node/behaviors/device-energy-management-mode';
|
|
57
|
+
import { HepaFilterMonitoringServer } from '@matter/node/behaviors/hepa-filter-monitoring';
|
|
58
|
+
import { ActivatedCarbonFilterMonitoringServer } from '@matter/node/behaviors/activated-carbon-filter-monitoring';
|
|
59
|
+
import { PowerSourceServer } from '@matter/node/behaviors/power-source';
|
|
60
|
+
export class MatterbridgeServer extends Behavior {
|
|
61
|
+
static id = 'matterbridge';
|
|
62
|
+
initialize() {
|
|
63
|
+
this.state.log.debug(`MatterbridgeServer initialized (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
64
|
+
super.initialize();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
(function (MatterbridgeServer) {
|
|
68
|
+
class State {
|
|
69
|
+
log;
|
|
70
|
+
commandHandler;
|
|
71
|
+
}
|
|
72
|
+
MatterbridgeServer.State = State;
|
|
73
|
+
})(MatterbridgeServer || (MatterbridgeServer = {}));
|
|
74
|
+
export class MatterbridgePowerSourceServer extends PowerSourceServer {
|
|
75
|
+
initialize() {
|
|
76
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
77
|
+
device.log.info(`Initializing MatterbridgePowerSourceServer (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
78
|
+
this.state.endpointList = [this.endpoint.number];
|
|
79
|
+
this.endpoint.construction.onSuccess(() => {
|
|
80
|
+
device.log.debug(`MatterbridgePowerSourceServer: endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber} construction completed`);
|
|
81
|
+
const endpointList = [this.endpoint.number];
|
|
82
|
+
for (const endpoint of this.endpoint.parts) {
|
|
83
|
+
if (endpoint.lifecycle.isReady) {
|
|
84
|
+
endpointList.push(endpoint.number);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
this.endpoint.setStateOf(PowerSourceServer, { endpointList });
|
|
88
|
+
device.log.debug(`MatterbridgePowerSourceServer: endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber} construction completed with endpointList: ${endpointList.join(', ')}`);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export class MatterbridgeIdentifyServer extends IdentifyServer {
|
|
93
|
+
identify(request) {
|
|
94
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
95
|
+
device.log.info(`Identifying device for ${request.identifyTime} seconds (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
96
|
+
device.commandHandler.executeHandler('identify', { request, cluster: IdentifyServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
97
|
+
device.log.debug(`MatterbridgeIdentifyServer: identify called`);
|
|
98
|
+
super.identify(request);
|
|
99
|
+
}
|
|
100
|
+
triggerEffect(request) {
|
|
101
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
102
|
+
device.log.info(`Triggering effect ${request.effectIdentifier} variant ${request.effectVariant} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
103
|
+
device.commandHandler.executeHandler('triggerEffect', { request, cluster: IdentifyServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
104
|
+
device.log.debug(`MatterbridgeIdentifyServer: triggerEffect called`);
|
|
105
|
+
super.triggerEffect(request);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export class MatterbridgeOnOffServer extends OnOffServer {
|
|
109
|
+
on() {
|
|
110
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
111
|
+
device.log.info(`Switching device on (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
112
|
+
device.commandHandler.executeHandler('on', { request: {}, cluster: OnOffServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
113
|
+
device.log.debug(`MatterbridgeOnOffServer: on called`);
|
|
114
|
+
super.on();
|
|
115
|
+
}
|
|
116
|
+
off() {
|
|
117
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
118
|
+
device.log.info(`Switching device off (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
119
|
+
device.commandHandler.executeHandler('off', { request: {}, cluster: OnOffServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
120
|
+
device.log.debug(`MatterbridgeOnOffServer: off called`);
|
|
121
|
+
super.off();
|
|
122
|
+
}
|
|
123
|
+
toggle() {
|
|
124
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
125
|
+
device.log.info(`Toggle device on/off (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
126
|
+
device.commandHandler.executeHandler('toggle', { request: {}, cluster: OnOffServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
127
|
+
device.log.debug(`MatterbridgeOnOffServer: toggle called`);
|
|
128
|
+
super.toggle();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
132
|
+
moveToLevel(request) {
|
|
133
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
134
|
+
device.log.info(`Setting level to ${request.level} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
135
|
+
device.commandHandler.executeHandler('moveToLevel', { request, cluster: LevelControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
136
|
+
device.log.debug(`MatterbridgeLevelControlServer: moveToLevel called`);
|
|
137
|
+
super.moveToLevel(request);
|
|
138
|
+
}
|
|
139
|
+
moveToLevelWithOnOff(request) {
|
|
140
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
141
|
+
device.log.info(`Setting level to ${request.level} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
142
|
+
device.commandHandler.executeHandler('moveToLevelWithOnOff', { request, cluster: LevelControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
143
|
+
device.log.debug(`MatterbridgeLevelControlServer: moveToLevelWithOnOff called`);
|
|
144
|
+
super.moveToLevelWithOnOff(request);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export class MatterbridgeColorControlServer extends ColorControlServer.with(ColorControl.Feature.HueSaturation, ColorControl.Feature.Xy, ColorControl.Feature.ColorTemperature) {
|
|
148
|
+
moveToHue(request) {
|
|
149
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
150
|
+
device.log.info(`Setting hue to ${request.hue} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
151
|
+
device.commandHandler.executeHandler('moveToHue', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
152
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToHue called`);
|
|
153
|
+
super.moveToHue(request);
|
|
154
|
+
}
|
|
155
|
+
moveToSaturation(request) {
|
|
156
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
157
|
+
device.log.info(`Setting saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
158
|
+
device.commandHandler.executeHandler('moveToSaturation', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
159
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToSaturation called`);
|
|
160
|
+
super.moveToSaturation(request);
|
|
161
|
+
}
|
|
162
|
+
moveToHueAndSaturation(request) {
|
|
163
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
164
|
+
device.log.info(`Setting hue to ${request.hue} and saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
165
|
+
device.commandHandler.executeHandler('moveToHueAndSaturation', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
166
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToHueAndSaturation called`);
|
|
167
|
+
super.moveToHueAndSaturation(request);
|
|
168
|
+
}
|
|
169
|
+
moveToColor(request) {
|
|
170
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
171
|
+
device.log.info(`Setting color to ${request.colorX}, ${request.colorY} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
172
|
+
device.commandHandler.executeHandler('moveToColor', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
173
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToColor called`);
|
|
174
|
+
super.moveToColor(request);
|
|
175
|
+
}
|
|
176
|
+
moveToColorTemperature(request) {
|
|
177
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
178
|
+
device.log.info(`Setting color temperature to ${request.colorTemperatureMireds} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
179
|
+
device.commandHandler.executeHandler('moveToColorTemperature', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
180
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToColorTemperature called`);
|
|
181
|
+
super.moveToColorTemperature(request);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export class MatterbridgeEnhancedColorControlServer extends ColorControlServer.with(ColorControl.Feature.HueSaturation, ColorControl.Feature.EnhancedHue, ColorControl.Feature.Xy, ColorControl.Feature.ColorTemperature) {
|
|
185
|
+
moveToHue(request) {
|
|
186
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
187
|
+
device.log.info(`Setting hue to ${request.hue} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
188
|
+
device.commandHandler.executeHandler('moveToHue', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
189
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToHue called`);
|
|
190
|
+
super.moveToHue(request);
|
|
191
|
+
}
|
|
192
|
+
enhancedMoveToHue(request) {
|
|
193
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
194
|
+
device.log.info(`Setting enhanced hue to ${request.enhancedHue} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
195
|
+
device.commandHandler.executeHandler('enhancedMoveToHue', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
196
|
+
device.log.debug(`MatterbridgeColorControlServer: enhancedMoveToHue called`);
|
|
197
|
+
super.enhancedMoveToHue(request);
|
|
198
|
+
}
|
|
199
|
+
moveToSaturation(request) {
|
|
200
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
201
|
+
device.log.info(`Setting saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
202
|
+
device.commandHandler.executeHandler('moveToSaturation', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
203
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToSaturation called`);
|
|
204
|
+
super.moveToSaturation(request);
|
|
205
|
+
}
|
|
206
|
+
moveToHueAndSaturation(request) {
|
|
207
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
208
|
+
device.log.info(`Setting hue to ${request.hue} and saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
209
|
+
device.commandHandler.executeHandler('moveToHueAndSaturation', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
210
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToHueAndSaturation called`);
|
|
211
|
+
super.moveToHueAndSaturation(request);
|
|
212
|
+
}
|
|
213
|
+
enhancedMoveToHueAndSaturation(request) {
|
|
214
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
215
|
+
device.log.info(`Setting enhanced hue to ${request.enhancedHue} and saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
216
|
+
device.commandHandler.executeHandler('enhancedMoveToHueAndSaturation', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
217
|
+
device.log.debug(`MatterbridgeColorControlServer: enhancedMoveToHueAndSaturation called`);
|
|
218
|
+
super.enhancedMoveToHueAndSaturation(request);
|
|
219
|
+
}
|
|
220
|
+
moveToColor(request) {
|
|
221
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
222
|
+
device.log.info(`Setting color to ${request.colorX}, ${request.colorY} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
223
|
+
device.commandHandler.executeHandler('moveToColor', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
224
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToColor called`);
|
|
225
|
+
super.moveToColor(request);
|
|
226
|
+
}
|
|
227
|
+
moveToColorTemperature(request) {
|
|
228
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
229
|
+
device.log.info(`Setting color temperature to ${request.colorTemperatureMireds} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
230
|
+
device.commandHandler.executeHandler('moveToColorTemperature', { request, cluster: ColorControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
231
|
+
device.log.debug(`MatterbridgeColorControlServer: moveToColorTemperature called`);
|
|
232
|
+
super.moveToColorTemperature(request);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
export class MatterbridgeLiftWindowCoveringServer extends WindowCoveringServer.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift) {
|
|
236
|
+
upOrOpen() {
|
|
237
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
238
|
+
device.log.info(`Opening cover (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
239
|
+
device.commandHandler.executeHandler(`upOrOpen`, { request: {}, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
240
|
+
device.log.debug(`MatterbridgeWindowCoveringServer: upOrOpen called`);
|
|
241
|
+
super.upOrOpen();
|
|
242
|
+
}
|
|
243
|
+
downOrClose() {
|
|
244
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
245
|
+
device.log.info(`Closing cover (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
246
|
+
device.commandHandler.executeHandler(`downOrClose`, { request: {}, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
247
|
+
device.log.debug(`MatterbridgeWindowCoveringServer: downOrClose called`);
|
|
248
|
+
super.downOrClose();
|
|
249
|
+
}
|
|
250
|
+
stopMotion() {
|
|
251
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
252
|
+
device.log.info(`Stopping cover (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
253
|
+
device.commandHandler.executeHandler('stopMotion', { request: {}, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
254
|
+
device.log.debug(`MatterbridgeWindowCoveringServer: stopMotion called`);
|
|
255
|
+
super.stopMotion();
|
|
256
|
+
}
|
|
257
|
+
goToLiftPercentage(request) {
|
|
258
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
259
|
+
device.log.info(`Setting cover lift percentage to ${request.liftPercent100thsValue} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
260
|
+
device.commandHandler.executeHandler('goToLiftPercentage', { request, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
261
|
+
device.log.debug(`MatterbridgeWindowCoveringServer: goToLiftPercentage with ${request.liftPercent100thsValue}`);
|
|
262
|
+
super.goToLiftPercentage(request);
|
|
263
|
+
}
|
|
264
|
+
async handleMovement(type, reversed, direction, targetPercent100ths) {
|
|
265
|
+
// Do nothing here, as the device will handle the movement
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
export class MatterbridgeLiftTiltWindowCoveringServer extends WindowCoveringServer.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift, WindowCovering.Feature.Tilt, WindowCovering.Feature.PositionAwareTilt) {
|
|
269
|
+
upOrOpen() {
|
|
270
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
271
|
+
device.log.info(`Opening cover (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
272
|
+
device.commandHandler.executeHandler(`upOrOpen`, { request: {}, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
273
|
+
device.log.debug(`MatterbridgeLiftTiltWindowCoveringServer: upOrOpen called`);
|
|
274
|
+
super.upOrOpen();
|
|
275
|
+
}
|
|
276
|
+
downOrClose() {
|
|
277
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
278
|
+
device.log.info(`Closing cover (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
279
|
+
device.commandHandler.executeHandler(`downOrClose`, { request: {}, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
280
|
+
device.log.debug(`MatterbridgeLiftTiltWindowCoveringServer: downOrClose called`);
|
|
281
|
+
super.downOrClose();
|
|
282
|
+
}
|
|
283
|
+
stopMotion() {
|
|
284
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
285
|
+
device.log.info(`Stopping cover (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
286
|
+
device.commandHandler.executeHandler('stopMotion', { request: {}, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
287
|
+
device.log.debug(`MatterbridgeLiftTiltWindowCoveringServer: stopMotion called`);
|
|
288
|
+
super.stopMotion();
|
|
289
|
+
}
|
|
290
|
+
goToLiftPercentage(request) {
|
|
291
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
292
|
+
device.log.info(`Setting cover lift percentage to ${request.liftPercent100thsValue} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
293
|
+
device.commandHandler.executeHandler('goToLiftPercentage', { request, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
294
|
+
device.log.debug(`MatterbridgeLiftTiltWindowCoveringServer: goToLiftPercentage with ${request.liftPercent100thsValue}`);
|
|
295
|
+
super.goToLiftPercentage(request);
|
|
296
|
+
}
|
|
297
|
+
goToTiltPercentage(request) {
|
|
298
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
299
|
+
device.log.info(`Setting cover tilt percentage to ${request.tiltPercent100thsValue} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
300
|
+
device.commandHandler.executeHandler('goToTiltPercentage', { request, cluster: WindowCoveringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
301
|
+
device.log.debug(`MatterbridgeLiftTiltWindowCoveringServer: goToTiltPercentage with ${request.tiltPercent100thsValue}`);
|
|
302
|
+
super.goToTiltPercentage(request);
|
|
303
|
+
}
|
|
304
|
+
async handleMovement(type, reversed, direction, targetPercent100ths) {
|
|
305
|
+
// Do nothing here, as the device will handle the movement
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
export class MatterbridgeDoorLockServer extends DoorLockServer {
|
|
309
|
+
lockDoor() {
|
|
310
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
311
|
+
device.log.info(`Locking door (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
312
|
+
device.commandHandler.executeHandler('lockDoor', { request: {}, cluster: DoorLockServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
313
|
+
device.log.debug(`MatterbridgeDoorLockServer: lockDoor called`);
|
|
314
|
+
super.lockDoor();
|
|
315
|
+
}
|
|
316
|
+
unlockDoor() {
|
|
317
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
318
|
+
device.log.info(`Unlocking door (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
319
|
+
device.commandHandler.executeHandler('unlockDoor', { request: {}, cluster: DoorLockServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
320
|
+
device.log.debug(`MatterbridgeDoorLockServer: unlockDoor called`);
|
|
321
|
+
super.unlockDoor();
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
export class MatterbridgeFanControlServer extends FanControlServer.with(FanControl.Feature.Auto, FanControl.Feature.Step) {
|
|
325
|
+
step(request) {
|
|
326
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
327
|
+
device.log.info(`Stepping fan with direction ${request.direction} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
328
|
+
device.commandHandler.executeHandler('step', { request, cluster: FanControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
329
|
+
const lookupStepDirection = ['Increase', 'Decrease'];
|
|
330
|
+
device.log.debug(`MatterbridgeFanControlServer: step called with direction: ${lookupStepDirection[request.direction]} wrap: ${request.wrap} lowestOff: ${request.lowestOff}`);
|
|
331
|
+
device.log.debug(`- current percentCurrent: ${this.state.percentCurrent}`);
|
|
332
|
+
if (request.direction === FanControl.StepDirection.Increase) {
|
|
333
|
+
if (request.wrap && this.state.percentCurrent === 100) {
|
|
334
|
+
this.state.percentCurrent = request.lowestOff ? 0 : 10;
|
|
335
|
+
}
|
|
336
|
+
else
|
|
337
|
+
this.state.percentCurrent = Math.min(this.state.percentCurrent + 10, 100);
|
|
338
|
+
}
|
|
339
|
+
else if (request.direction === FanControl.StepDirection.Decrease) {
|
|
340
|
+
if (request.wrap && this.state.percentCurrent === (request.lowestOff ? 0 : 10)) {
|
|
341
|
+
this.state.percentCurrent = 100;
|
|
342
|
+
}
|
|
343
|
+
else
|
|
344
|
+
this.state.percentCurrent = Math.max(this.state.percentCurrent - 10, request.lowestOff ? 0 : 10);
|
|
345
|
+
}
|
|
346
|
+
device.log.debug('Set percentCurrent to:', this.state.percentCurrent);
|
|
347
|
+
// step is not implemented in matter.js
|
|
348
|
+
// super.step(request);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
export class MatterbridgeThermostatServer extends ThermostatServer.with(Thermostat.Feature.Cooling, Thermostat.Feature.Heating, Thermostat.Feature.AutoMode) {
|
|
352
|
+
setpointRaiseLower(request) {
|
|
353
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
354
|
+
device.log.info(`Setting setpoint by ${request.amount} in mode ${request.mode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
355
|
+
device.commandHandler.executeHandler('setpointRaiseLower', { request, cluster: ThermostatServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
356
|
+
const lookupSetpointAdjustMode = ['Heat', 'Cool', 'Both'];
|
|
357
|
+
device.log.debug(`MatterbridgeThermostatServer: setpointRaiseLower called with mode: ${lookupSetpointAdjustMode[request.mode]} amount: ${request.amount / 10}`);
|
|
358
|
+
if (this.state.occupiedHeatingSetpoint !== undefined)
|
|
359
|
+
device.log.debug(`- current occupiedHeatingSetpoint: ${this.state.occupiedHeatingSetpoint / 100}`);
|
|
360
|
+
if (this.state.occupiedCoolingSetpoint !== undefined)
|
|
361
|
+
device.log.debug(`- current occupiedCoolingSetpoint: ${this.state.occupiedCoolingSetpoint / 100}`);
|
|
362
|
+
if ((request.mode === Thermostat.SetpointRaiseLowerMode.Heat || request.mode === Thermostat.SetpointRaiseLowerMode.Both) && this.state.occupiedHeatingSetpoint !== undefined) {
|
|
363
|
+
const setpoint = this.state.occupiedHeatingSetpoint / 100 + request.amount / 10;
|
|
364
|
+
this.state.occupiedHeatingSetpoint = setpoint * 100;
|
|
365
|
+
device.log.debug(`Set occupiedHeatingSetpoint to ${setpoint}`);
|
|
366
|
+
}
|
|
367
|
+
if ((request.mode === Thermostat.SetpointRaiseLowerMode.Cool || request.mode === Thermostat.SetpointRaiseLowerMode.Both) && this.state.occupiedCoolingSetpoint !== undefined) {
|
|
368
|
+
const setpoint = this.state.occupiedCoolingSetpoint / 100 + request.amount / 10;
|
|
369
|
+
this.state.occupiedCoolingSetpoint = setpoint * 100;
|
|
370
|
+
device.log.debug(`Set occupiedCoolingSetpoint to ${setpoint}`);
|
|
371
|
+
}
|
|
372
|
+
// super.setpointRaiseLower(request);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// istanbul ignore next
|
|
376
|
+
export class MatterbridgePresetThermostatServer extends ThermostatServer.with(Thermostat.Feature.Presets, Thermostat.Feature.Cooling, Thermostat.Feature.Heating, Thermostat.Feature.AutoMode) {
|
|
377
|
+
setpointRaiseLower(request) {
|
|
378
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
379
|
+
device.log.info(`Setting setpoint by ${request.amount} in mode ${request.mode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
380
|
+
device.commandHandler.executeHandler('setpointRaiseLower', { request, cluster: ThermostatServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
381
|
+
const lookupSetpointAdjustMode = ['Heat', 'Cool', 'Both'];
|
|
382
|
+
device.log.debug(`MatterbridgeThermostatServer: setpointRaiseLower called with mode: ${lookupSetpointAdjustMode[request.mode]} amount: ${request.amount / 10}`);
|
|
383
|
+
if (this.state.occupiedHeatingSetpoint !== undefined)
|
|
384
|
+
device.log.debug(`- current occupiedHeatingSetpoint: ${this.state.occupiedHeatingSetpoint / 100}`);
|
|
385
|
+
if (this.state.occupiedCoolingSetpoint !== undefined)
|
|
386
|
+
device.log.debug(`- current occupiedCoolingSetpoint: ${this.state.occupiedCoolingSetpoint / 100}`);
|
|
387
|
+
if ((request.mode === Thermostat.SetpointRaiseLowerMode.Heat || request.mode === Thermostat.SetpointRaiseLowerMode.Both) && this.state.occupiedHeatingSetpoint !== undefined) {
|
|
388
|
+
const setpoint = this.state.occupiedHeatingSetpoint / 100 + request.amount / 10;
|
|
389
|
+
this.state.occupiedHeatingSetpoint = setpoint * 100;
|
|
390
|
+
device.log.debug(`Set occupiedHeatingSetpoint to ${setpoint}`);
|
|
391
|
+
}
|
|
392
|
+
if ((request.mode === Thermostat.SetpointRaiseLowerMode.Cool || request.mode === Thermostat.SetpointRaiseLowerMode.Both) && this.state.occupiedCoolingSetpoint !== undefined) {
|
|
393
|
+
const setpoint = this.state.occupiedCoolingSetpoint / 100 + request.amount / 10;
|
|
394
|
+
this.state.occupiedCoolingSetpoint = setpoint * 100;
|
|
395
|
+
device.log.debug(`Set occupiedCoolingSetpoint to ${setpoint}`);
|
|
396
|
+
}
|
|
397
|
+
// super.setpointRaiseLower(request);
|
|
398
|
+
}
|
|
399
|
+
setActivePresetRequest(request) {
|
|
400
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
401
|
+
device.log.info(`Setting preset to ${request.presetHandle} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
402
|
+
device.commandHandler.executeHandler('setActivePresetRequest', { request, cluster: ThermostatServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
403
|
+
device.log.debug(`MatterbridgePresetThermostatServer: setActivePresetRequest called with presetHandle: ${request.presetHandle}`);
|
|
404
|
+
// super.setActivePresetRequest(request);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
export class MatterbridgeValveConfigurationAndControlServer extends ValveConfigurationAndControlServer.with(ValveConfigurationAndControl.Feature.Level) {
|
|
408
|
+
open(request) {
|
|
409
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
410
|
+
device.log.info(`Opening valve to ${request.targetLevel ? request.targetLevel + '%' : 'fully opened'} ${request.openDuration ? 'for ' + request.openDuration + 's' : 'until closed'} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
411
|
+
device.commandHandler.executeHandler('open', { request, cluster: ValveConfigurationAndControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
412
|
+
device.log.debug(`MatterbridgeValveConfigurationAndControlServer: open called with openDuration: ${request.openDuration} targetLevel: ${request.targetLevel}`);
|
|
413
|
+
this.state.targetState = ValveConfigurationAndControl.ValveState.Open;
|
|
414
|
+
this.state.currentState = ValveConfigurationAndControl.ValveState.Open;
|
|
415
|
+
this.state.targetLevel = request.targetLevel ?? 100;
|
|
416
|
+
this.state.currentLevel = request.targetLevel ?? 100;
|
|
417
|
+
this.state.openDuration = request.openDuration ?? this.state.defaultOpenDuration;
|
|
418
|
+
if (this.state.openDuration === null)
|
|
419
|
+
this.state.remainingDuration = null;
|
|
420
|
+
// open is not implemented in matter.js
|
|
421
|
+
// super.open(request);
|
|
422
|
+
}
|
|
423
|
+
close() {
|
|
424
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
425
|
+
device.log.info(`Closing valve (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
426
|
+
device.commandHandler.executeHandler('close', { request: {}, cluster: ValveConfigurationAndControlServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
427
|
+
device.log.debug(`MatterbridgeValveConfigurationAndControlServer: close called`);
|
|
428
|
+
this.state.targetState = ValveConfigurationAndControl.ValveState.Closed;
|
|
429
|
+
this.state.currentState = ValveConfigurationAndControl.ValveState.Closed;
|
|
430
|
+
this.state.targetLevel = 0;
|
|
431
|
+
this.state.currentLevel = 0;
|
|
432
|
+
this.state.openDuration = null;
|
|
433
|
+
this.state.remainingDuration = null;
|
|
434
|
+
// close is not implemented in matter.js
|
|
435
|
+
// super.close();
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
export class MatterbridgeSmokeCoAlarmServer extends SmokeCoAlarmServer.with(SmokeCoAlarm.Feature.SmokeAlarm, SmokeCoAlarm.Feature.CoAlarm) {
|
|
439
|
+
selfTestRequest() {
|
|
440
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
441
|
+
device.log.info(`Testing SmokeCOAlarm (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
442
|
+
device.commandHandler.executeHandler('selfTestRequest', { request: {}, cluster: SmokeCoAlarmServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
443
|
+
device.log.debug(`MatterbridgeSmokeCoAlarmServer: selfTestRequest called`);
|
|
444
|
+
// selfTestRequest is not implemented in matter.js
|
|
445
|
+
// super.selfTestRequest();
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
export class MatterbridgeBooleanStateConfigurationServer extends BooleanStateConfigurationServer.with(BooleanStateConfiguration.Feature.Visual, BooleanStateConfiguration.Feature.Audible, BooleanStateConfiguration.Feature.SensitivityLevel) {
|
|
449
|
+
enableDisableAlarm(request) {
|
|
450
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
451
|
+
device.log.info(`Enabling/disabling alarm ${request.alarmsToEnableDisable} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
452
|
+
device.commandHandler.executeHandler('enableDisableAlarm', { request, cluster: BooleanStateConfigurationServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
453
|
+
device.log.debug(`MatterbridgeBooleanStateConfigurationServer: enableDisableAlarm called`);
|
|
454
|
+
// enableDisableAlarm is not implemented in matter.js
|
|
455
|
+
// super.enableDisableAlarm(request);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
export class MatterbridgeSwitchServer extends SwitchServer {
|
|
459
|
+
initialize() {
|
|
460
|
+
// Do nothing here, as the device will handle the switch logic: we need to convert something like "single" into the appropriate sequence of state changes and events
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
export class MatterbridgeOperationalStateServer extends OperationalStateServer {
|
|
464
|
+
initialize() {
|
|
465
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
466
|
+
device.log.debug('MatterbridgeOperationalStateServer initialized: setting operational state to Stopped');
|
|
467
|
+
this.state.operationalState = OperationalState.OperationalStateEnum.Stopped;
|
|
468
|
+
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
469
|
+
super.initialize(); // Error handling logic is handled in matter.js
|
|
470
|
+
}
|
|
471
|
+
pause() {
|
|
472
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
473
|
+
device.log.info(`Pause (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
474
|
+
device.commandHandler.executeHandler('pause', { request: {}, cluster: OperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
475
|
+
device.log.debug('MatterbridgeOperationalStateServer: pause called setting operational state to Paused');
|
|
476
|
+
this.state.operationalState = OperationalState.OperationalStateEnum.Paused;
|
|
477
|
+
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
478
|
+
// pause is not implemented in matter.js
|
|
479
|
+
// return super.pause();
|
|
480
|
+
return {
|
|
481
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
stop() {
|
|
485
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
486
|
+
device.log.info(`Stop (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
487
|
+
device.commandHandler.executeHandler('stop', { request: {}, cluster: OperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
488
|
+
device.log.debug('MatterbridgeOperationalStateServer: stop called setting operational state to Stopped');
|
|
489
|
+
this.state.operationalState = OperationalState.OperationalStateEnum.Stopped;
|
|
490
|
+
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
491
|
+
// stop is not implemented in matter.js
|
|
492
|
+
// return super.stop();
|
|
493
|
+
return {
|
|
494
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
start() {
|
|
498
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
499
|
+
device.log.info(`Start (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
500
|
+
device.commandHandler.executeHandler('start', { request: {}, cluster: OperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
501
|
+
device.log.debug('MatterbridgeOperationalStateServer: start called setting operational state to Running');
|
|
502
|
+
this.state.operationalState = OperationalState.OperationalStateEnum.Running;
|
|
503
|
+
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
504
|
+
// start is not implemented in matter.js
|
|
505
|
+
// return super.start();
|
|
506
|
+
return {
|
|
507
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
resume() {
|
|
511
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
512
|
+
device.log.info(`Resume (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
513
|
+
device.commandHandler.executeHandler('resume', { request: {}, cluster: OperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
514
|
+
device.log.debug('MatterbridgeOperationalStateServer: resume called setting operational state to Running');
|
|
515
|
+
this.state.operationalState = OperationalState.OperationalStateEnum.Running;
|
|
516
|
+
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
517
|
+
// resume is not implemented in matter.js
|
|
518
|
+
// return super.resume();
|
|
519
|
+
return {
|
|
520
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
export class MatterbridgeServiceAreaServer extends ServiceAreaServer {
|
|
525
|
+
selectAreas(request) {
|
|
526
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
527
|
+
device.log.info(`Selecting areas ${request.newAreas} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
528
|
+
device.commandHandler.executeHandler('selectAreas', { request, cluster: ServiceAreaServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
529
|
+
for (const area of request.newAreas) {
|
|
530
|
+
const supportedArea = this.state.supportedAreas.find((supportedArea) => supportedArea.areaId === area);
|
|
531
|
+
if (!supportedArea) {
|
|
532
|
+
device.log.error(`MatterbridgeServiceAreaServer selectAreas called with unsupported area: ${area}`);
|
|
533
|
+
return { status: ServiceArea.SelectAreasStatus.UnsupportedArea, statusText: 'Unsupported areas' };
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
this.state.selectedAreas = request.newAreas;
|
|
537
|
+
device.log.debug(`MatterbridgeServiceAreaServer selectAreas called with: ${request.newAreas.map((area) => area.toString()).join(', ')}`);
|
|
538
|
+
return super.selectAreas(request);
|
|
539
|
+
// return { status: ServiceArea.SelectAreasStatus.Success, statusText: 'Succesfully selected new areas' };
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
export class MatterbridgeModeSelectServer extends ModeSelectServer {
|
|
543
|
+
changeToMode(request) {
|
|
544
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
545
|
+
device.log.info(`Changing mode to ${request.newMode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
546
|
+
device.commandHandler.executeHandler('changeToMode', { request, cluster: ModeSelectServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
547
|
+
device.log.debug(`MatterbridgeModeSelectServer: changeToMode called with mode: ${request.newMode}`);
|
|
548
|
+
super.changeToMode(request);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
export class MatterbridgeHepaFilterMonitoringServer extends HepaFilterMonitoringServer.with(ResourceMonitoring.Feature.Condition) {
|
|
552
|
+
resetCondition() {
|
|
553
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
554
|
+
device.log.info(`Resetting condition (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
555
|
+
device.commandHandler.executeHandler('resetCondition', { cluster: MatterbridgeHepaFilterMonitoringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
556
|
+
this.state.condition = 100; // Reset condition to 100%
|
|
557
|
+
this.state.lastChangedTime = Math.floor(new Date().getTime() / 1000); // TlvEpochS (seconds since Unix epoch)
|
|
558
|
+
device.log.debug(`MatterbridgeHepaFilterMonitoringServer: resetCondition called`);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
export class MatterbridgeActivatedCarbonFilterMonitoringServer extends ActivatedCarbonFilterMonitoringServer.with(ResourceMonitoring.Feature.Condition) {
|
|
562
|
+
resetCondition() {
|
|
563
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
564
|
+
device.log.info(`Resetting condition (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
565
|
+
device.commandHandler.executeHandler('resetCondition', { cluster: MatterbridgeActivatedCarbonFilterMonitoringServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
566
|
+
this.state.condition = 100; // Reset condition to 100%
|
|
567
|
+
this.state.lastChangedTime = Math.floor(new Date().getTime() / 1000); // TlvEpochS (seconds since Unix epoch)
|
|
568
|
+
device.log.debug(`MatterbridgeActivatedCarbonFilterMonitoringServer: resetCondition called`);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
export class MatterbridgeDeviceEnergyManagementServer extends DeviceEnergyManagementServer.with(DeviceEnergyManagement.Feature.PowerForecastReporting, DeviceEnergyManagement.Feature.PowerAdjustment) {
|
|
572
|
+
powerAdjustRequest(request) {
|
|
573
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
574
|
+
device.log.info(`Adjusting power to ${request.power} duration ${request.duration} cause ${request.cause} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
575
|
+
device.commandHandler.executeHandler('powerAdjustRequest', { request, cluster: DeviceEnergyManagementServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
576
|
+
device.log.debug(`MatterbridgeDeviceEnergyManagementServer powerAdjustRequest called with power ${request.power} duration ${request.duration} cause ${request.cause}`);
|
|
577
|
+
// The implementation is responsible for setting the device accordingly with the powerAdjustRequest command
|
|
578
|
+
// powerAdjustRequest is not implemented in matter.js
|
|
579
|
+
// return super.powerAdjustRequest();
|
|
580
|
+
}
|
|
581
|
+
cancelPowerAdjustRequest() {
|
|
582
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
583
|
+
device.log.info(`Cancelling power adjustment (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
584
|
+
device.commandHandler.executeHandler('cancelPowerAdjustRequest', { cluster: DeviceEnergyManagementServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
585
|
+
device.log.debug(`MatterbridgeDeviceEnergyManagementServer cancelPowerAdjustRequest called`);
|
|
586
|
+
// The implementation is responsible for setting the device accordingly with the cancelPowerAdjustRequest command
|
|
587
|
+
// cancelPowerAdjustRequest is not implemented in matter.js
|
|
588
|
+
// return super.cancelPowerAdjustRequest();
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
export class MatterbridgeDeviceEnergyManagementModeServer extends DeviceEnergyManagementModeServer {
|
|
592
|
+
changeToMode(request) {
|
|
593
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
594
|
+
device.log.info(`Changing mode to ${request.newMode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
595
|
+
device.commandHandler.executeHandler('changeToMode', { request, cluster: DeviceEnergyManagementModeServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
596
|
+
const supported = this.state.supportedModes.find((mode) => mode.mode === request.newMode);
|
|
597
|
+
if (!supported) {
|
|
598
|
+
device.log.error(`MatterbridgeDeviceEnergyManagementModeServer changeToMode called with unsupported newMode: ${request.newMode}`);
|
|
599
|
+
return { status: ModeBase.ModeChangeStatus.UnsupportedMode, statusText: 'Unsupported mode' };
|
|
600
|
+
}
|
|
601
|
+
this.state.currentMode = request.newMode;
|
|
602
|
+
// The implementation is responsible for setting the device accordingly with the new mode if this logic is not enough
|
|
603
|
+
if (supported.modeTags.find((tag) => tag.value === DeviceEnergyManagementMode.ModeTag.NoOptimization)) {
|
|
604
|
+
if (this.endpoint.behaviors.has(DeviceEnergyManagementServer))
|
|
605
|
+
this.endpoint.setStateOf(DeviceEnergyManagementServer.with(DeviceEnergyManagement.Feature.PowerForecastReporting, DeviceEnergyManagement.Feature.PowerAdjustment), {
|
|
606
|
+
optOutState: DeviceEnergyManagement.OptOutState.OptOut,
|
|
607
|
+
});
|
|
608
|
+
}
|
|
609
|
+
else {
|
|
610
|
+
if (this.endpoint.behaviors.has(DeviceEnergyManagementServer))
|
|
611
|
+
this.endpoint.setStateOf(DeviceEnergyManagementServer.with(DeviceEnergyManagement.Feature.PowerForecastReporting, DeviceEnergyManagement.Feature.PowerAdjustment), {
|
|
612
|
+
optOutState: DeviceEnergyManagement.OptOutState.NoOptOut,
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
device.log.debug(`MatterbridgeDeviceEnergyManagementModeServer changeToMode called with newMode ${request.newMode} => ${supported.label}`);
|
|
616
|
+
return super.changeToMode(request);
|
|
617
|
+
// return { status: ModeBase.ModeChangeStatus.Success, statusText: 'Success' };
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
//# sourceMappingURL=matterbridgeBehaviors.js.map
|