matterbridge 3.0.4 → 3.0.5-dev-20250526-422f029

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.
Files changed (164) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cli.js +16 -43
  3. package/dist/cluster/export.js +0 -2
  4. package/dist/defaultConfigSchema.js +0 -23
  5. package/dist/deviceManager.js +1 -94
  6. package/dist/frontend.js +16 -363
  7. package/dist/helpers.js +0 -51
  8. package/dist/index.js +1 -27
  9. package/dist/laundryWasher.js +122 -0
  10. package/dist/logger/export.js +0 -1
  11. package/dist/matter/behaviors.js +0 -2
  12. package/dist/matter/clusters.js +0 -2
  13. package/dist/matter/devices.js +0 -2
  14. package/dist/matter/endpoints.js +0 -2
  15. package/dist/matter/export.js +0 -2
  16. package/dist/matter/types.js +0 -2
  17. package/dist/matterbridge.js +47 -747
  18. package/dist/matterbridgeAccessoryPlatform.js +0 -34
  19. package/dist/matterbridgeBehaviors.js +4 -63
  20. package/dist/matterbridgeDeviceTypes.js +15 -563
  21. package/dist/matterbridgeDynamicPlatform.js +0 -34
  22. package/dist/matterbridgeEndpoint.js +23 -903
  23. package/dist/matterbridgeEndpointHelpers.js +11 -173
  24. package/dist/matterbridgePlatform.js +7 -225
  25. package/dist/matterbridgeTypes.js +0 -24
  26. package/dist/pluginManager.js +3 -264
  27. package/dist/roboticVacuumCleaner.js +3 -78
  28. package/dist/shelly.js +7 -155
  29. package/dist/storage/export.js +0 -1
  30. package/dist/update.js +0 -53
  31. package/dist/utils/colorUtils.js +2 -205
  32. package/dist/utils/commandLine.js +0 -53
  33. package/dist/utils/copyDirectory.js +1 -37
  34. package/dist/utils/createZip.js +2 -42
  35. package/dist/utils/deepCopy.js +0 -38
  36. package/dist/utils/deepEqual.js +1 -71
  37. package/dist/utils/export.js +0 -1
  38. package/dist/utils/hex.js +0 -57
  39. package/dist/utils/isvalid.js +0 -100
  40. package/dist/utils/network.js +5 -76
  41. package/dist/utils/wait.js +9 -58
  42. package/dist/waterHeater.js +0 -52
  43. package/npm-shrinkwrap.json +2 -2
  44. package/package.json +1 -2
  45. package/dist/cli.d.ts +0 -29
  46. package/dist/cli.d.ts.map +0 -1
  47. package/dist/cli.js.map +0 -1
  48. package/dist/cluster/export.d.ts +0 -2
  49. package/dist/cluster/export.d.ts.map +0 -1
  50. package/dist/cluster/export.js.map +0 -1
  51. package/dist/defaultConfigSchema.d.ts +0 -27
  52. package/dist/defaultConfigSchema.d.ts.map +0 -1
  53. package/dist/defaultConfigSchema.js.map +0 -1
  54. package/dist/deviceManager.d.ts +0 -114
  55. package/dist/deviceManager.d.ts.map +0 -1
  56. package/dist/deviceManager.js.map +0 -1
  57. package/dist/frontend.d.ts +0 -256
  58. package/dist/frontend.d.ts.map +0 -1
  59. package/dist/frontend.js.map +0 -1
  60. package/dist/helpers.d.ts +0 -47
  61. package/dist/helpers.d.ts.map +0 -1
  62. package/dist/helpers.js.map +0 -1
  63. package/dist/index.d.ts +0 -35
  64. package/dist/index.d.ts.map +0 -1
  65. package/dist/index.js.map +0 -1
  66. package/dist/logger/export.d.ts +0 -2
  67. package/dist/logger/export.d.ts.map +0 -1
  68. package/dist/logger/export.js.map +0 -1
  69. package/dist/matter/behaviors.d.ts +0 -2
  70. package/dist/matter/behaviors.d.ts.map +0 -1
  71. package/dist/matter/behaviors.js.map +0 -1
  72. package/dist/matter/clusters.d.ts +0 -2
  73. package/dist/matter/clusters.d.ts.map +0 -1
  74. package/dist/matter/clusters.js.map +0 -1
  75. package/dist/matter/devices.d.ts +0 -2
  76. package/dist/matter/devices.d.ts.map +0 -1
  77. package/dist/matter/devices.js.map +0 -1
  78. package/dist/matter/endpoints.d.ts +0 -2
  79. package/dist/matter/endpoints.d.ts.map +0 -1
  80. package/dist/matter/endpoints.js.map +0 -1
  81. package/dist/matter/export.d.ts +0 -5
  82. package/dist/matter/export.d.ts.map +0 -1
  83. package/dist/matter/export.js.map +0 -1
  84. package/dist/matter/types.d.ts +0 -3
  85. package/dist/matter/types.d.ts.map +0 -1
  86. package/dist/matter/types.js.map +0 -1
  87. package/dist/matterbridge.d.ts +0 -445
  88. package/dist/matterbridge.d.ts.map +0 -1
  89. package/dist/matterbridge.js.map +0 -1
  90. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -40
  91. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  92. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  93. package/dist/matterbridgeBehaviors.d.ts +0 -1398
  94. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  95. package/dist/matterbridgeBehaviors.js.map +0 -1
  96. package/dist/matterbridgeDeviceTypes.d.ts +0 -629
  97. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  98. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  99. package/dist/matterbridgeDynamicPlatform.d.ts +0 -40
  100. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  101. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  102. package/dist/matterbridgeEndpoint.d.ts +0 -1053
  103. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  104. package/dist/matterbridgeEndpoint.js.map +0 -1
  105. package/dist/matterbridgeEndpointHelpers.d.ts +0 -2749
  106. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  107. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  108. package/dist/matterbridgePlatform.d.ts +0 -294
  109. package/dist/matterbridgePlatform.d.ts.map +0 -1
  110. package/dist/matterbridgePlatform.js.map +0 -1
  111. package/dist/matterbridgeTypes.d.ts +0 -196
  112. package/dist/matterbridgeTypes.d.ts.map +0 -1
  113. package/dist/matterbridgeTypes.js.map +0 -1
  114. package/dist/pluginManager.d.ts +0 -273
  115. package/dist/pluginManager.d.ts.map +0 -1
  116. package/dist/pluginManager.js.map +0 -1
  117. package/dist/roboticVacuumCleaner.d.ts +0 -82
  118. package/dist/roboticVacuumCleaner.d.ts.map +0 -1
  119. package/dist/roboticVacuumCleaner.js.map +0 -1
  120. package/dist/shelly.d.ts +0 -153
  121. package/dist/shelly.d.ts.map +0 -1
  122. package/dist/shelly.js.map +0 -1
  123. package/dist/storage/export.d.ts +0 -2
  124. package/dist/storage/export.d.ts.map +0 -1
  125. package/dist/storage/export.js.map +0 -1
  126. package/dist/update.d.ts +0 -58
  127. package/dist/update.d.ts.map +0 -1
  128. package/dist/update.js.map +0 -1
  129. package/dist/utils/colorUtils.d.ts +0 -61
  130. package/dist/utils/colorUtils.d.ts.map +0 -1
  131. package/dist/utils/colorUtils.js.map +0 -1
  132. package/dist/utils/commandLine.d.ts +0 -58
  133. package/dist/utils/commandLine.d.ts.map +0 -1
  134. package/dist/utils/commandLine.js.map +0 -1
  135. package/dist/utils/copyDirectory.d.ts +0 -32
  136. package/dist/utils/copyDirectory.d.ts.map +0 -1
  137. package/dist/utils/copyDirectory.js.map +0 -1
  138. package/dist/utils/createZip.d.ts +0 -38
  139. package/dist/utils/createZip.d.ts.map +0 -1
  140. package/dist/utils/createZip.js.map +0 -1
  141. package/dist/utils/deepCopy.d.ts +0 -31
  142. package/dist/utils/deepCopy.d.ts.map +0 -1
  143. package/dist/utils/deepCopy.js.map +0 -1
  144. package/dist/utils/deepEqual.d.ts +0 -53
  145. package/dist/utils/deepEqual.d.ts.map +0 -1
  146. package/dist/utils/deepEqual.js.map +0 -1
  147. package/dist/utils/export.d.ts +0 -11
  148. package/dist/utils/export.d.ts.map +0 -1
  149. package/dist/utils/export.js.map +0 -1
  150. package/dist/utils/hex.d.ts +0 -48
  151. package/dist/utils/hex.d.ts.map +0 -1
  152. package/dist/utils/hex.js.map +0 -1
  153. package/dist/utils/isvalid.d.ts +0 -102
  154. package/dist/utils/isvalid.d.ts.map +0 -1
  155. package/dist/utils/isvalid.js.map +0 -1
  156. package/dist/utils/network.d.ts +0 -69
  157. package/dist/utils/network.d.ts.map +0 -1
  158. package/dist/utils/network.js.map +0 -1
  159. package/dist/utils/wait.d.ts +0 -52
  160. package/dist/utils/wait.d.ts.map +0 -1
  161. package/dist/utils/wait.js.map +0 -1
  162. package/dist/waterHeater.d.ts +0 -75
  163. package/dist/waterHeater.d.ts.map +0 -1
  164. package/dist/waterHeater.js.map +0 -1
package/dist/helpers.js CHANGED
@@ -1,26 +1,3 @@
1
- /**
2
- * This file contains the helpers functions of Matterbridge.
3
- *
4
- * @file helpers.ts
5
- * @author Luca Liguori
6
- * @date 2025-05-12
7
- * @version 1.0.0
8
- *
9
- * Copyright 2025, 2026, 2027 Luca Liguori.
10
- *
11
- * Licensed under the Apache License, Version 2.0 (the "License");
12
- * you may not use this file except in compliance with the License.
13
- * You may obtain a copy of the License at
14
- *
15
- * http://www.apache.org/licenses/LICENSE-2.0
16
- *
17
- * Unless required by applicable law or agreed to in writing, software
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
- * See the License for the specific language governing permissions and
21
- * limitations under the License. *
22
- */
23
- // @matter module
24
1
  import { OnOff } from '@matter/main/clusters/on-off';
25
2
  import { Endpoint } from '@matter/node';
26
3
  import { BridgedDeviceBasicInformationServer } from '@matter/node/behaviors/bridged-device-basic-information';
@@ -30,22 +7,7 @@ import { hasParameter } from './utils/commandLine.js';
30
7
  import { MountedOnOffControlDevice } from '@matter/node/devices/mounted-on-off-control';
31
8
  import { OnOffLightDevice } from '@matter/node/devices/on-off-light';
32
9
  import { OnOffLightSwitchDevice } from '@matter/node/devices/on-off-light-switch';
33
- /**
34
- * Adds a virtual device to the provided endpoint, sets up an event listener for device state changes,
35
- * and ensures the device is initialized in the off state.
36
- *
37
- * @param {Endpoint<AggregatorEndpoint>} aggregatorEndpoint - The aggragator endpoint to which the virtual device will be added.
38
- * @param {string} name - The name of the virtual device. Spaces in the name are removed to form the device ID.
39
- * @param {'light' | 'outlet' | 'switch' | 'mounted_switch'} type - The type of the virtual device. Can be 'light', 'outlet', 'switch', or 'mounted_switch'.
40
- * @param {() => Promise<void>} callback - A callback function that gets executed when the device's on/off state changes to true.
41
- * @returns {Promise<Endpoint>} A promise that resolves with the created virtual device.
42
- * @remark The virtual device is created as an instance of `Endpoint` with the `OnOffPlugInUnitDevice` device type.
43
- * The onOff state always reverts to false when the device is turned on.
44
- */
45
10
  export async function addVirtualDevice(aggregatorEndpoint, name, type, callback) {
46
- // Create a new virtual device by instantiating `Endpoint` with device information.
47
- // The device ID is created by replacing all spaces in the name with an empty string.
48
- // The node label of the bridged device basic information is set to the given name.
49
11
  let deviceType;
50
12
  switch (type) {
51
13
  case 'light':
@@ -66,9 +28,7 @@ export async function addVirtualDevice(aggregatorEndpoint, name, type, callback)
66
28
  bridgedDeviceBasicInformation: { nodeLabel: name.slice(0, 32) },
67
29
  onOff: { onOff: false, startUpOnOff: OnOff.StartUpOnOff.Off },
68
30
  });
69
- // Set up an event listener for when the `onOff` state changes.
70
31
  device.events.onOff.onOff$Changed.on((value) => {
71
- // If the `onOff` state becomes true, turn off the virtual device and execute the callback.
72
32
  if (value) {
73
33
  callback();
74
34
  process.nextTick(async () => {
@@ -76,24 +36,14 @@ export async function addVirtualDevice(aggregatorEndpoint, name, type, callback)
76
36
  await device.setStateOf(OnOffBaseServer, { onOff: false });
77
37
  }
78
38
  catch (_error) {
79
- // Not necessary to handle the error
80
39
  }
81
40
  });
82
41
  }
83
42
  });
84
- // Add the created device to the given endpoint.
85
43
  await aggregatorEndpoint.add(device);
86
- // Initially set the state of the virtual device's `OnOffBaseServer` to false (off).
87
44
  await device.setStateOf(OnOffBaseServer, { onOff: false });
88
45
  return device;
89
46
  }
90
- /**
91
- * Creates and add the virtual devices to the aggregator.
92
- *
93
- * @param {Matterbridge} matterbridge - The Matterbridge instance.
94
- * @param {Endpoint<AggregatorEndpoint>} aggregatorEndpoint - The aggregator node to add the virtual devices to.
95
- * @returns {Promise<void>} A promise that resolves when the virtual devices are added.
96
- */
97
47
  export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
98
48
  if (matterbridge.matterbridgeInformation.virtualMode !== 'disabled' && matterbridge.bridgeMode === 'bridge' && aggregatorEndpoint) {
99
49
  matterbridge.log.notice(`Creating virtual devices for Matterbridge server node...`);
@@ -139,4 +89,3 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
139
89
  }
140
90
  }
141
91
  }
142
- //# sourceMappingURL=helpers.js.map
package/dist/index.js CHANGED
@@ -1,31 +1,6 @@
1
- /**
2
- * This file contains the entry point of Matterbridge.
3
- *
4
- * @file index.ts
5
- * @author Luca Liguori
6
- * @date 2023-12-29
7
- * @version 1.0.7
8
- *
9
- * Copyright 2023, 2024, 2025 Luca Liguori.
10
- *
11
- * Licensed under the Apache License, Version 2.0 (the "License");
12
- * you may not use this file except in compliance with the License.
13
- * You may obtain a copy of the License at
14
- *
15
- * http://www.apache.org/licenses/LICENSE-2.0
16
- *
17
- * Unless required by applicable law or agreed to in writing, software
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
- * See the License for the specific language governing permissions and
21
- * limitations under the License. *
22
- */
23
- // Matterbridge
24
1
  import { Matterbridge } from './matterbridge.js';
25
2
  import { hasParameter } from './utils/export.js';
26
- // AnsiLogger module
27
3
  import { AnsiLogger } from './logger/export.js';
28
- // Matterbridge
29
4
  export * from './matterbridge.js';
30
5
  export * from './matterbridgeTypes.js';
31
6
  export * from './matterbridgeEndpoint.js';
@@ -38,7 +13,7 @@ export * from './matterbridgeDynamicPlatform.js';
38
13
  export * from './roboticVacuumCleaner.js';
39
14
  export * from './waterHeater.js';
40
15
  export { addVirtualDevice } from './helpers.js';
41
- const log = new AnsiLogger({ logName: 'Main', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: hasParameter('debug') ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
16
+ const log = new AnsiLogger({ logName: 'Main', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
42
17
  async function main() {
43
18
  log.debug('***Matterbridge.loadInstance() called');
44
19
  await Matterbridge.loadInstance();
@@ -47,4 +22,3 @@ async function main() {
47
22
  main().catch((error) => {
48
23
  log.error(`Matterbridge.loadInstance() failed with error: ${error instanceof Error ? error.message : error}`);
49
24
  });
50
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,122 @@
1
+ import { OperationalState } from '@matter/main/clusters/operational-state';
2
+ import { LaundryWasherControls } from '@matter/main/clusters/laundry-washer-controls';
3
+ import { LaundryWasherMode } from '@matter/main/clusters/laundry-washer-mode';
4
+ import { TemperatureControl } from '@matter/main/clusters/temperature-control';
5
+ import { ModeBase } from '@matter/main/clusters/mode-base';
6
+ import { TemperatureControlServer } from '@matter/main/behaviors/temperature-control';
7
+ import { LaundryWasherModeServer } from '@matter/main/behaviors/laundry-washer-mode';
8
+ import { LaundryWasherControlsServer } from '@matter/main/behaviors/laundry-washer-controls';
9
+ import { laundryWasher } from './matterbridgeDeviceTypes.js';
10
+ import { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
11
+ import { MatterbridgeOnOffServer, MatterbridgeServer } from './matterbridgeBehaviors.js';
12
+ export class LaundryWasher extends MatterbridgeEndpoint {
13
+ constructor(name, serial) {
14
+ super(laundryWasher, { uniqueStorageKey: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` }, true);
15
+ this.createDefaultIdentifyClusterServer();
16
+ this.createDefaultBasicInformationClusterServer(name, serial, 0xfff1, 'Matterbridge', 0x8000, 'Matterbridge Laundry Washer');
17
+ this.createDefaultPowerSourceWiredClusterServer();
18
+ this.createDeadFrontOnOffClusterServer();
19
+ this.createLevelTemperatureControlClusterServer(3, ['Cold', '30°', '40°', '60°', '80°']);
20
+ this.createDefaultLaundryWasherControlsClusterServer();
21
+ this.createDefaultLaundryWasherModeClusterServer();
22
+ this.createDefaultOperationalStateClusterServer(OperationalState.OperationalStateEnum.Stopped);
23
+ }
24
+ createDefaultLaundryWasherControlsClusterServer(spinSpeedCurrent = 3, spinSpeeds = ['400', '800', '1200', '1600'], numberOfRinses = LaundryWasherControls.NumberOfRinses.Normal, supportedRinses = [LaundryWasherControls.NumberOfRinses.None, LaundryWasherControls.NumberOfRinses.Normal, LaundryWasherControls.NumberOfRinses.Max, LaundryWasherControls.NumberOfRinses.Extra]) {
25
+ this.behaviors.require(LaundryWasherControlsServer.with(LaundryWasherControls.Feature.Spin, LaundryWasherControls.Feature.Rinse), {
26
+ spinSpeeds,
27
+ spinSpeedCurrent,
28
+ supportedRinses,
29
+ numberOfRinses,
30
+ });
31
+ return this;
32
+ }
33
+ createDefaultLaundryWasherModeClusterServer(currentMode = 2, supportedModes = [
34
+ { label: 'Delicate', mode: 1, modeTags: [{ value: LaundryWasherMode.ModeTag.Delicate }] },
35
+ { label: 'Normal', mode: 2, modeTags: [{ value: LaundryWasherMode.ModeTag.Normal }] },
36
+ { label: 'Heavy', mode: 3, modeTags: [{ value: LaundryWasherMode.ModeTag.Heavy }] },
37
+ { label: 'Whites', mode: 4, modeTags: [{ value: LaundryWasherMode.ModeTag.Whites }] },
38
+ ]) {
39
+ this.behaviors.require(MatterbridgeLaundryWasherModeServer, {
40
+ supportedModes,
41
+ currentMode,
42
+ });
43
+ return this;
44
+ }
45
+ createLevelTemperatureControlClusterServer(selectedTemperatureLevel = 1, supportedTemperatureLevels = ['Cold', 'Warm', 'Hot']) {
46
+ this.behaviors.require(MatterbridgeLevelTemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel), {
47
+ selectedTemperatureLevel,
48
+ supportedTemperatureLevels,
49
+ });
50
+ return this;
51
+ }
52
+ createNumberTemperatureControlClusterServer(temperatureSetpoint = 40 * 100, minTemperature = 30 * 100, maxTemperature = 60 * 100, step = 10 * 100) {
53
+ this.behaviors.require(MatterbridgeNumberTemperatureControlServer.with(TemperatureControl.Feature.TemperatureNumber, TemperatureControl.Feature.TemperatureStep), {
54
+ temperatureSetpoint,
55
+ minTemperature,
56
+ maxTemperature,
57
+ step,
58
+ });
59
+ return this;
60
+ }
61
+ }
62
+ class MatterbridgeLevelTemperatureControlServer extends TemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel) {
63
+ initialize() {
64
+ if (this.state.supportedTemperatureLevels.length >= 2) {
65
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
66
+ device.log.info('MatterbridgeLevelTemperatureControlServer initialized');
67
+ }
68
+ }
69
+ setTemperature(request) {
70
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
71
+ if (request.targetTemperatureLevel !== undefined && request.targetTemperatureLevel >= 0 && request.targetTemperatureLevel < this.state.supportedTemperatureLevels.length) {
72
+ device.log.info(`MatterbridgeLevelTemperatureControlServer: setTemperature called setting selectedTemperatureLevel to ${request.targetTemperatureLevel}: ${this.state.supportedTemperatureLevels[request.targetTemperatureLevel]}`);
73
+ this.state.selectedTemperatureLevel = request.targetTemperatureLevel;
74
+ }
75
+ else {
76
+ device.log.error(`MatterbridgeLevelTemperatureControlServer: setTemperature called with invalid targetTemperatureLevel ${request.targetTemperatureLevel}`);
77
+ }
78
+ }
79
+ }
80
+ class MatterbridgeNumberTemperatureControlServer extends TemperatureControlServer.with(TemperatureControl.Feature.TemperatureNumber) {
81
+ initialize() {
82
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
83
+ device.log.info('MatterbridgeNumberTemperatureControlServer initialized');
84
+ }
85
+ setTemperature(request) {
86
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
87
+ if (request.targetTemperature !== undefined && request.targetTemperature >= this.state.minTemperature && request.targetTemperature <= this.state.maxTemperature) {
88
+ device.log.info(`MatterbridgeNumberTemperatureControlServer: setTemperature called setting temperatureSetpoint to ${request.targetTemperature}`);
89
+ this.state.temperatureSetpoint = request.targetTemperature;
90
+ }
91
+ else {
92
+ device.log.error(`MatterbridgeNumberTemperatureControlServer: setTemperature called with invalid targetTemperature ${request.targetTemperature}`);
93
+ }
94
+ }
95
+ }
96
+ class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer {
97
+ initialize() {
98
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
99
+ device.log.info(`LaundryWasherModeServer initialized: currentMode is ${this.state.currentMode}`);
100
+ this.reactTo(this.agent.get(MatterbridgeOnOffServer).events.onOff$Changed, this.handleOnOffChange);
101
+ }
102
+ handleOnOffChange(onOff) {
103
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
104
+ if (onOff === false) {
105
+ device.log.notice('OnOffServer changed to OFF: setting Dead Front state to Manufacturer Specific');
106
+ this.state.currentMode = 2;
107
+ }
108
+ }
109
+ changeToMode(request) {
110
+ const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
111
+ const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
112
+ if (supportedMode) {
113
+ device.log.info(`LaundryWasherModeServer: changeToMode called with mode ${supportedMode.mode} = ${supportedMode.label}`);
114
+ this.state.currentMode = request.newMode;
115
+ return { status: ModeBase.ModeChangeStatus.Success, statusText: 'Success' };
116
+ }
117
+ else {
118
+ device.log.error(`LaundryWasherModeServer: changeToMode called with invalid mode ${request.newMode}`);
119
+ return { status: ModeBase.ModeChangeStatus.InvalidInMode, statusText: 'Invalid mode' };
120
+ }
121
+ }
122
+ }
@@ -1,2 +1 @@
1
1
  export * from 'node-ansi-logger';
2
- //# sourceMappingURL=export.js.map
@@ -1,3 +1 @@
1
- // @matter
2
1
  export * from '@matter/node/behaviors';
3
- //# sourceMappingURL=behaviors.js.map
@@ -1,3 +1 @@
1
- // @matter
2
1
  export * from '@matter/types/clusters';
3
- //# sourceMappingURL=clusters.js.map
@@ -1,3 +1 @@
1
- // @matter
2
1
  export * from '@matter/node/devices';
3
- //# sourceMappingURL=devices.js.map
@@ -1,3 +1 @@
1
- // @matter
2
1
  export { AggregatorEndpoint, ElectricalSensorEndpoint, PowerSourceEndpoint, BridgedNodeEndpoint, RootEndpoint, DeviceEnergyManagementEndpoint, OtaProviderEndpoint, OtaRequestorEndpoint } from '@matter/node/endpoints';
3
- //# sourceMappingURL=endpoints.js.map
@@ -1,6 +1,4 @@
1
- // @matter
2
1
  export * from '@matter/main';
3
2
  export { SemanticNamespace, ClosureTag, CompassDirectionTag, CompassLocationTag, DirectionTag, ElectricalMeasurementTag, LaundryTag, LevelTag, LocationTag, NumberTag, PositionTag, PowerSourceTag, RefrigeratorTag, RoomAirConditionerTag, SwitchesTag, } from '@matter/main';
4
3
  export { AttributeElement, ClusterElement, ClusterModel, CommandElement, EventElement, FieldElement } from '@matter/main/model';
5
4
  export { MdnsService, Val } from '@matter/main/protocol';
6
- //# sourceMappingURL=export.js.map
@@ -1,4 +1,2 @@
1
- // @matter
2
1
  export * from '@matter/types';
3
2
  export { ClusterRegistry } from '@matter/types';
4
- //# sourceMappingURL=types.js.map