matterbridge 3.0.7 → 3.0.8-dev-20250622-9a6255a

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 (207) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/bin/matterbridge +2 -0
  3. package/dist/cli.js +5 -66
  4. package/dist/clusters/export.js +0 -2
  5. package/dist/defaultConfigSchema.js +0 -23
  6. package/dist/deviceManager.js +2 -95
  7. package/dist/devices/export.js +0 -2
  8. package/dist/evse.js +9 -65
  9. package/dist/frontend.js +47 -383
  10. package/dist/globalMatterbridge.js +0 -20
  11. package/dist/helpers.js +4 -52
  12. package/dist/index.js +2 -29
  13. package/dist/laundryWasher.js +7 -92
  14. package/dist/logger/export.js +0 -1
  15. package/dist/matter/behaviors.js +0 -2
  16. package/dist/matter/clusters.js +0 -2
  17. package/dist/matter/devices.js +0 -2
  18. package/dist/matter/endpoints.js +0 -2
  19. package/dist/matter/export.js +0 -2
  20. package/dist/matter/types.js +0 -2
  21. package/dist/matterbridge.js +53 -755
  22. package/dist/matterbridgeAccessoryPlatform.js +0 -34
  23. package/dist/matterbridgeBehaviors.js +1 -54
  24. package/dist/matterbridgeDeviceTypes.js +15 -578
  25. package/dist/matterbridgeDynamicPlatform.js +0 -34
  26. package/dist/matterbridgeEndpoint.js +45 -1000
  27. package/dist/matterbridgeEndpointHelpers.js +12 -206
  28. package/dist/matterbridgePlatform.js +13 -225
  29. package/dist/matterbridgeTypes.js +0 -24
  30. package/dist/pluginManager.js +4 -270
  31. package/dist/roboticVacuumCleaner.js +9 -84
  32. package/dist/shelly.js +9 -156
  33. package/dist/storage/export.js +0 -1
  34. package/dist/update.js +0 -53
  35. package/dist/utils/colorUtils.js +2 -205
  36. package/dist/utils/commandLine.js +0 -53
  37. package/dist/utils/copyDirectory.js +1 -37
  38. package/dist/utils/createDirectory.js +0 -31
  39. package/dist/utils/createZip.js +2 -42
  40. package/dist/utils/deepCopy.js +0 -38
  41. package/dist/utils/deepEqual.js +1 -71
  42. package/dist/utils/export.js +0 -1
  43. package/dist/utils/hex.js +0 -57
  44. package/dist/utils/isvalid.js +0 -100
  45. package/dist/utils/network.js +6 -77
  46. package/dist/utils/spawn.js +0 -16
  47. package/dist/utils/wait.js +10 -58
  48. package/dist/waterHeater.js +5 -65
  49. package/frontend/build/matterbridge 1250x1250.png +0 -0
  50. package/frontend/build/matterbridge 624x624.png +0 -0
  51. package/frontend/package-lock.json +19176 -0
  52. package/frontend/package.json +79 -0
  53. package/frontend/public/Shelly.svg +1 -0
  54. package/frontend/public/bmc-button.svg +22 -0
  55. package/frontend/public/discord.svg +5 -0
  56. package/frontend/public/favicon.ico +0 -0
  57. package/frontend/public/index.html +19 -0
  58. package/frontend/public/manifest.json +15 -0
  59. package/frontend/public/matter.png +0 -0
  60. package/frontend/public/matterbridge 1250x1250.png +0 -0
  61. package/frontend/public/matterbridge 32x32.png +0 -0
  62. package/frontend/public/matterbridge 624x624.png +0 -0
  63. package/frontend/public/matterbridge 64x64.png +0 -0
  64. package/frontend/public/matterbridge.svg +50 -0
  65. package/frontend/public/robots.txt +3 -0
  66. package/npm-shrinkwrap.json +33 -42
  67. package/package.json +3 -4
  68. package/dist/cli.d.ts +0 -29
  69. package/dist/cli.d.ts.map +0 -1
  70. package/dist/cli.js.map +0 -1
  71. package/dist/clusters/export.d.ts +0 -2
  72. package/dist/clusters/export.d.ts.map +0 -1
  73. package/dist/clusters/export.js.map +0 -1
  74. package/dist/defaultConfigSchema.d.ts +0 -27
  75. package/dist/defaultConfigSchema.d.ts.map +0 -1
  76. package/dist/defaultConfigSchema.js.map +0 -1
  77. package/dist/deviceManager.d.ts +0 -114
  78. package/dist/deviceManager.d.ts.map +0 -1
  79. package/dist/deviceManager.js.map +0 -1
  80. package/dist/devices/export.d.ts +0 -5
  81. package/dist/devices/export.d.ts.map +0 -1
  82. package/dist/devices/export.js.map +0 -1
  83. package/dist/evse.d.ts +0 -67
  84. package/dist/evse.d.ts.map +0 -1
  85. package/dist/evse.js.map +0 -1
  86. package/dist/frontend.d.ts +0 -256
  87. package/dist/frontend.d.ts.map +0 -1
  88. package/dist/frontend.js.map +0 -1
  89. package/dist/globalMatterbridge.d.ts +0 -32
  90. package/dist/globalMatterbridge.d.ts.map +0 -1
  91. package/dist/globalMatterbridge.js.map +0 -1
  92. package/dist/helpers.d.ts +0 -47
  93. package/dist/helpers.d.ts.map +0 -1
  94. package/dist/helpers.js.map +0 -1
  95. package/dist/index.d.ts +0 -37
  96. package/dist/index.d.ts.map +0 -1
  97. package/dist/index.js.map +0 -1
  98. package/dist/laundryWasher.d.ts +0 -243
  99. package/dist/laundryWasher.d.ts.map +0 -1
  100. package/dist/laundryWasher.js.map +0 -1
  101. package/dist/logger/export.d.ts +0 -2
  102. package/dist/logger/export.d.ts.map +0 -1
  103. package/dist/logger/export.js.map +0 -1
  104. package/dist/matter/behaviors.d.ts +0 -2
  105. package/dist/matter/behaviors.d.ts.map +0 -1
  106. package/dist/matter/behaviors.js.map +0 -1
  107. package/dist/matter/clusters.d.ts +0 -2
  108. package/dist/matter/clusters.d.ts.map +0 -1
  109. package/dist/matter/clusters.js.map +0 -1
  110. package/dist/matter/devices.d.ts +0 -2
  111. package/dist/matter/devices.d.ts.map +0 -1
  112. package/dist/matter/devices.js.map +0 -1
  113. package/dist/matter/endpoints.d.ts +0 -2
  114. package/dist/matter/endpoints.d.ts.map +0 -1
  115. package/dist/matter/endpoints.js.map +0 -1
  116. package/dist/matter/export.d.ts +0 -5
  117. package/dist/matter/export.d.ts.map +0 -1
  118. package/dist/matter/export.js.map +0 -1
  119. package/dist/matter/types.d.ts +0 -3
  120. package/dist/matter/types.d.ts.map +0 -1
  121. package/dist/matter/types.js.map +0 -1
  122. package/dist/matterbridge.d.ts +0 -445
  123. package/dist/matterbridge.d.ts.map +0 -1
  124. package/dist/matterbridge.js.map +0 -1
  125. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -40
  126. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  127. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  128. package/dist/matterbridgeBehaviors.d.ts +0 -1333
  129. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  130. package/dist/matterbridgeBehaviors.js.map +0 -1
  131. package/dist/matterbridgeDeviceTypes.d.ts +0 -644
  132. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  133. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  134. package/dist/matterbridgeDynamicPlatform.d.ts +0 -40
  135. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  136. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  137. package/dist/matterbridgeEndpoint.d.ts +0 -1145
  138. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  139. package/dist/matterbridgeEndpoint.js.map +0 -1
  140. package/dist/matterbridgeEndpointHelpers.d.ts +0 -3083
  141. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  142. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  143. package/dist/matterbridgePlatform.d.ts +0 -290
  144. package/dist/matterbridgePlatform.d.ts.map +0 -1
  145. package/dist/matterbridgePlatform.js.map +0 -1
  146. package/dist/matterbridgeTypes.d.ts +0 -196
  147. package/dist/matterbridgeTypes.d.ts.map +0 -1
  148. package/dist/matterbridgeTypes.js.map +0 -1
  149. package/dist/pluginManager.d.ts +0 -273
  150. package/dist/pluginManager.d.ts.map +0 -1
  151. package/dist/pluginManager.js.map +0 -1
  152. package/dist/roboticVacuumCleaner.d.ts +0 -102
  153. package/dist/roboticVacuumCleaner.d.ts.map +0 -1
  154. package/dist/roboticVacuumCleaner.js.map +0 -1
  155. package/dist/shelly.d.ts +0 -161
  156. package/dist/shelly.d.ts.map +0 -1
  157. package/dist/shelly.js.map +0 -1
  158. package/dist/storage/export.d.ts +0 -2
  159. package/dist/storage/export.d.ts.map +0 -1
  160. package/dist/storage/export.js.map +0 -1
  161. package/dist/update.d.ts +0 -58
  162. package/dist/update.d.ts.map +0 -1
  163. package/dist/update.js.map +0 -1
  164. package/dist/utils/colorUtils.d.ts +0 -61
  165. package/dist/utils/colorUtils.d.ts.map +0 -1
  166. package/dist/utils/colorUtils.js.map +0 -1
  167. package/dist/utils/commandLine.d.ts +0 -58
  168. package/dist/utils/commandLine.d.ts.map +0 -1
  169. package/dist/utils/commandLine.js.map +0 -1
  170. package/dist/utils/copyDirectory.d.ts +0 -32
  171. package/dist/utils/copyDirectory.d.ts.map +0 -1
  172. package/dist/utils/copyDirectory.js.map +0 -1
  173. package/dist/utils/createDirectory.d.ts +0 -32
  174. package/dist/utils/createDirectory.d.ts.map +0 -1
  175. package/dist/utils/createDirectory.js.map +0 -1
  176. package/dist/utils/createZip.d.ts +0 -38
  177. package/dist/utils/createZip.d.ts.map +0 -1
  178. package/dist/utils/createZip.js.map +0 -1
  179. package/dist/utils/deepCopy.d.ts +0 -31
  180. package/dist/utils/deepCopy.d.ts.map +0 -1
  181. package/dist/utils/deepCopy.js.map +0 -1
  182. package/dist/utils/deepEqual.d.ts +0 -53
  183. package/dist/utils/deepEqual.d.ts.map +0 -1
  184. package/dist/utils/deepEqual.js.map +0 -1
  185. package/dist/utils/export.d.ts +0 -12
  186. package/dist/utils/export.d.ts.map +0 -1
  187. package/dist/utils/export.js.map +0 -1
  188. package/dist/utils/hex.d.ts +0 -48
  189. package/dist/utils/hex.d.ts.map +0 -1
  190. package/dist/utils/hex.js.map +0 -1
  191. package/dist/utils/isvalid.d.ts +0 -102
  192. package/dist/utils/isvalid.d.ts.map +0 -1
  193. package/dist/utils/isvalid.js.map +0 -1
  194. package/dist/utils/network.d.ts +0 -69
  195. package/dist/utils/network.d.ts.map +0 -1
  196. package/dist/utils/network.js.map +0 -1
  197. package/dist/utils/spawn.d.ts +0 -12
  198. package/dist/utils/spawn.d.ts.map +0 -1
  199. package/dist/utils/spawn.js.map +0 -1
  200. package/dist/utils/wait.d.ts +0 -52
  201. package/dist/utils/wait.d.ts.map +0 -1
  202. package/dist/utils/wait.js.map +0 -1
  203. package/dist/waterHeater.d.ts +0 -90
  204. package/dist/waterHeater.d.ts.map +0 -1
  205. package/dist/waterHeater.js.map +0 -1
  206. package/tsconfig.jest.json +0 -8
  207. package/tsconfig.production.json +0 -13
@@ -1,43 +1,23 @@
1
- /**
2
- * Store the Matterbridge instance globally for later retrieval.
3
- * @param {Matterbridge} matterbridge An initialized Matterbridge instance
4
- */
5
1
  export function setGlobalMatterbridge(matterbridge) {
6
2
  globalThis.__matterbridge__ = matterbridge;
7
3
  globalThis.__frontend__ = matterbridge.frontend;
8
4
  globalThis.__log__ = matterbridge.log;
9
5
  }
10
- /**
11
- * Retrieve the globally stored Matterbridge instance.
12
- * @returns {Matterbridge} The Matterbridge instance.
13
- * @throws {Error} If the Matterbridge instance is not set.
14
- */
15
6
  export function getGlobalMatterbridge() {
16
7
  if (!globalThis.__matterbridge__) {
17
8
  throw new Error('Global Matterbridge instance is not set.');
18
9
  }
19
10
  return globalThis.__matterbridge__;
20
11
  }
21
- /**
22
- * Retrieve the globally stored Frontend instance.
23
- * @returns {Frontend} The Frontend instance.
24
- * @throws {Error} If the Frontend instance is not set.
25
- */
26
12
  export function getGlobalFrontend() {
27
13
  if (!globalThis.__frontend__) {
28
14
  throw new Error('Global Frontend instance is not set.');
29
15
  }
30
16
  return globalThis.__frontend__;
31
17
  }
32
- /**
33
- * Retrieve the globally stored Logger instance.
34
- * @returns {AnsiLogger} The AnsiLogger instance.
35
- * @throws {Error} If the Logger instance is not set.
36
- */
37
18
  export function getGlobalLog() {
38
19
  if (!globalThis.__log__) {
39
20
  throw new Error('Global Logger instance is not set.');
40
21
  }
41
22
  return globalThis.__log__;
42
23
  }
43
- //# sourceMappingURL=globalMatterbridge.js.map
package/dist/helpers.js CHANGED
@@ -1,51 +1,13 @@
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';
27
4
  import { OnOffBaseServer } from '@matter/node/behaviors/on-off';
28
5
  import { OnOffPlugInUnitDevice } from '@matter/node/devices/on-off-plug-in-unit';
29
- import { hasParameter } from './utils/commandLine.js';
30
6
  import { MountedOnOffControlDevice } from '@matter/node/devices/mounted-on-off-control';
31
7
  import { OnOffLightDevice } from '@matter/node/devices/on-off-light';
32
8
  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
- */
9
+ import { hasParameter } from './utils/commandLine.js';
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...`);
@@ -109,6 +59,7 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
109
59
  getShelly('/api/updates/sys/perform', 10 * 1000)
110
60
  .then(() => {
111
61
  matterbridge.log.notice('Shelly system updated successfully');
62
+ return;
112
63
  })
113
64
  .catch((error) => {
114
65
  matterbridge.log.error(`Error updating shelly system: ${error}`);
@@ -116,6 +67,7 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
116
67
  getShelly('/api/updates/main/perform', 10 * 1000)
117
68
  .then(() => {
118
69
  matterbridge.log.notice('Shelly software updated successfully');
70
+ return;
119
71
  })
120
72
  .catch((error) => {
121
73
  matterbridge.log.error(`Error updating shelly software: ${error}`);
@@ -131,6 +83,7 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
131
83
  postShelly('/api/system/reboot', {}, 60 * 1000)
132
84
  .then(() => {
133
85
  matterbridge.log.notice('Rebooting shelly board...');
86
+ return;
134
87
  })
135
88
  .catch((error) => {
136
89
  matterbridge.log.error(`Error rebooting shelly board: ${error}`);
@@ -139,4 +92,3 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
139
92
  }
140
93
  }
141
94
  }
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
1
+ import { AnsiLogger } from 'node-ansi-logger';
24
2
  import { Matterbridge } from './matterbridge.js';
25
3
  import { hasParameter } from './utils/export.js';
26
- // AnsiLogger module
27
- 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';
@@ -36,12 +11,11 @@ export * from './matterbridgePlatform.js';
36
11
  export * from './matterbridgeAccessoryPlatform.js';
37
12
  export * from './matterbridgeDynamicPlatform.js';
38
13
  export { addVirtualDevice } from './helpers.js';
39
- // Single class device types (these exports will be removed in the next release)
40
14
  export * from './roboticVacuumCleaner.js';
41
15
  export * from './laundryWasher.js';
42
16
  export * from './waterHeater.js';
43
17
  export * from './evse.js';
44
- const log = new AnsiLogger({ logName: 'Main', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: hasParameter('debug') ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
18
+ const log = new AnsiLogger({ logName: 'Main', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
45
19
  async function main() {
46
20
  log.debug('***Matterbridge.loadInstance() called');
47
21
  await Matterbridge.loadInstance();
@@ -50,4 +24,3 @@ async function main() {
50
24
  main().catch((error) => {
51
25
  log.error(`Matterbridge.loadInstance() failed with error: ${error instanceof Error ? error.message : error}`);
52
26
  });
53
- //# sourceMappingURL=index.js.map
@@ -1,25 +1,3 @@
1
- /**
2
- * This file contains the LaundryWasher class.
3
- *
4
- * @file laundryWasher.ts
5
- * @author Luca Liguori
6
- * @date 2025-05-25
7
- * @version 1.1.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
1
  import { LaundryWasherControls } from '@matter/main/clusters/laundry-washer-controls';
24
2
  import { LaundryWasherMode } from '@matter/main/clusters/laundry-washer-mode';
25
3
  import { TemperatureControl } from '@matter/main/clusters/temperature-control';
@@ -27,35 +5,10 @@ import { ModeBase } from '@matter/main/clusters/mode-base';
27
5
  import { TemperatureControlServer } from '@matter/main/behaviors/temperature-control';
28
6
  import { LaundryWasherModeServer } from '@matter/main/behaviors/laundry-washer-mode';
29
7
  import { LaundryWasherControlsServer } from '@matter/main/behaviors/laundry-washer-controls';
30
- // Matterbridge
31
8
  import { laundryWasher } from './matterbridgeDeviceTypes.js';
32
9
  import { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
33
10
  import { MatterbridgeOnOffServer, MatterbridgeServer } from './matterbridgeBehaviors.js';
34
11
  export class LaundryWasher extends MatterbridgeEndpoint {
35
- /**
36
- * Creates an instance of the LaundryWasher class.
37
- *
38
- * @param {string} name - The name of the laundry washer.
39
- * @param {string} serial - The serial number of the laundry washer.
40
- * @param {number} [currentMode=2] - The current mode of the laundry washer. Defaults to 2 (Normal mode). Dead Front OnOff Cluster will set this to 2 when turned off. Persistent attribute.
41
- * @param {LaundryWasherMode.ModeOption[]} [supportedModes] - The supported modes of the laundry washer. Defaults to a set of common modes (which include Delicate, Normal, Heavy, and Whites). Fixed attribute.
42
- * @param {number} [spinSpeedCurrent=2] - The current spin speed as index of the spinSpeeds array. Defaults to 2 (which corresponds to '1200').
43
- * @param {string[]} [spinSpeeds] - The supported spin speeds. Defaults to ['400', '800', '1200', '1600'].
44
- * @param {LaundryWasherControls.NumberOfRinses} [numberOfRinses=LaundryWasherControls.NumberOfRinses.Normal] - The number of rinses. Defaults to LaundryWasherControls.NumberOfRinses.Normal (which corresponds to 1 rinse).
45
- * @param {LaundryWasherControls.NumberOfRinses[]} [supportedRinses] - The supported rinses. Defaults to [NumberOfRinses.None, NumberOfRinses.Normal, NumberOfRinses.Max, NumberOfRinses.Extra].
46
- * @param {number} [selectedTemperatureLevel=1] - The selected temperature level as an index of the supportedTemperatureLevels array. Defaults to 1 (which corresponds to 'Warm').
47
- * @param {string[]} [supportedTemperatureLevels] - The supported temperature levels. Defaults to ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']. Fixed attribute.
48
- * @param {number} [temperatureSetpoint] - The temperature setpoint * 100. Defaults to 40 * 100 (which corresponds to 40°C).
49
- * @param {number} [minTemperature=30 * 100] - The minimum temperature * 100. Defaults to 30 * 100 (which corresponds to 30°C). Fixed attribute.
50
- * @param {number} [maxTemperature=60 * 100] - The maximum temperature * 100. Defaults to 60 * 100 (which corresponds to 60°C). Fixed attribute.
51
- * @param {number} [step=10 * 100] - The step size for temperature changes. Defaults to 10 * 100 (which corresponds to 10°C). Fixed attribute.
52
- * @param {OperationalState.OperationalStateEnum} [operationalState=OperationalState.OperationalStateEnum.Off] - The operational state of the laundry washer. Defaults to OperationalState.OperationalStateEnum.Off.
53
- *
54
- * @remarks
55
- * - If `temperatureSetpoint` is provided, the `createNumberTemperatureControlClusterServer` method will be used to create the TemperatureControl Cluster Server with features TemperatureNumber and TemperatureStep.
56
- * - If `temperatureSetpoint` is not provided, the `createLevelTemperatureControlClusterServer` method will be used to create the TemperatureControl Cluster Server with feature TemperatureLevel.
57
- *
58
- */
59
12
  constructor(name, serial, currentMode, supportedModes, spinSpeedCurrent, spinSpeeds, numberOfRinses, supportedRinses, selectedTemperatureLevel, supportedTemperatureLevels, temperatureSetpoint, minTemperature, maxTemperature, step, operationalState) {
60
13
  super(laundryWasher, { uniqueStorageKey: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` }, true);
61
14
  this.createDefaultIdentifyClusterServer();
@@ -70,14 +23,6 @@ export class LaundryWasher extends MatterbridgeEndpoint {
70
23
  this.createLevelTemperatureControlClusterServer(selectedTemperatureLevel, supportedTemperatureLevels);
71
24
  this.createDefaultOperationalStateClusterServer(operationalState);
72
25
  }
73
- /**
74
- * Creates a default Laundry Washer Mode Cluster Server.
75
- *
76
- * @param {number} currentMode - The current mode of the laundry washer. Defaults to 2 (Normal mode). Dead Front OnOff Cluster will set this to 2 when turned off. Persistent attribute.
77
- * @param {LaundryWasherMode.ModeOption[]} supportedModes - The supported modes of the laundry washer. Defaults to a set of common modes (which include Delicate, Normal, Heavy, and Whites). Fixed attribute.
78
- *
79
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
80
- */
81
26
  createDefaultLaundryWasherModeClusterServer(currentMode = 2, supportedModes = [
82
27
  { label: 'Delicate', mode: 1, modeTags: [{ value: LaundryWasherMode.ModeTag.Delicate }] },
83
28
  { label: 'Normal', mode: 2, modeTags: [{ value: LaundryWasherMode.ModeTag.Normal }] },
@@ -85,38 +30,20 @@ export class LaundryWasher extends MatterbridgeEndpoint {
85
30
  { label: 'Whites', mode: 4, modeTags: [{ value: LaundryWasherMode.ModeTag.Whites }] },
86
31
  ]) {
87
32
  this.behaviors.require(MatterbridgeLaundryWasherModeServer, {
88
- supportedModes, // Fixed attribute.
89
- currentMode, // Persistent attribute.
33
+ supportedModes,
34
+ currentMode,
90
35
  });
91
36
  return this;
92
37
  }
93
- /**
94
- * Creates a Laundry Washer Controls Cluster Server with feature Spin for selecting the spin speed and feature Rinse for selecting the number of rinses.
95
- *
96
- * @param {number} spinSpeedCurrent - The current spin speed as index of the spinSpeeds array. Default to 2 (which corresponds to '1200').
97
- * @param {string[]} spinSpeeds - The supported spin speeds. Default to ['400', '800', '1200', '1600'].
98
- * @param {LaundryWasherControls.NumberOfRinses} numberOfRinses - The number of rinses. Default to LaundryWasherControls.NumberOfRinses.Normal (which corresponds to 1 rinse).
99
- * @param {LaundryWasherControls.NumberOfRinses[]} supportedRinses - The supported rinses. Default to [NumberOfRinses.None, NumberOfRinses.Normal, NumberOfRinses.Max, NumberOfRinses.Extra].
100
- *
101
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
102
- */
103
38
  createDefaultLaundryWasherControlsClusterServer(spinSpeedCurrent = 2, spinSpeeds = ['400', '800', '1200', '1600'], numberOfRinses = LaundryWasherControls.NumberOfRinses.Normal, supportedRinses = [LaundryWasherControls.NumberOfRinses.None, LaundryWasherControls.NumberOfRinses.Normal, LaundryWasherControls.NumberOfRinses.Max, LaundryWasherControls.NumberOfRinses.Extra]) {
104
39
  this.behaviors.require(LaundryWasherControlsServer.with(LaundryWasherControls.Feature.Spin, LaundryWasherControls.Feature.Rinse), {
105
40
  spinSpeeds,
106
- spinSpeedCurrent, // Writable and nullable
41
+ spinSpeedCurrent,
107
42
  supportedRinses,
108
- numberOfRinses, // Writable
43
+ numberOfRinses,
109
44
  });
110
45
  return this;
111
46
  }
112
- /**
113
- * Creates a TemperatureControl Cluster Server with feature TemperatureLevel.
114
- *
115
- * @param {number} selectedTemperatureLevel - The selected temperature level as an index of the supportedTemperatureLevels array. Defaults to 1 (which corresponds to 'Warm').
116
- * @param {string[]} supportedTemperatureLevels - The supported temperature levels. Defaults to ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']. Fixed attribute.
117
- *
118
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
119
- */
120
47
  createLevelTemperatureControlClusterServer(selectedTemperatureLevel = 1, supportedTemperatureLevels = ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']) {
121
48
  this.behaviors.require(MatterbridgeLevelTemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel), {
122
49
  selectedTemperatureLevel,
@@ -124,22 +51,12 @@ export class LaundryWasher extends MatterbridgeEndpoint {
124
51
  });
125
52
  return this;
126
53
  }
127
- /**
128
- * Creates a TemperatureControl Cluster Server with features TemperatureNumber and TemperatureStep.
129
- *
130
- * @param {number} temperatureSetpoint - The temperature setpoint * 100. Defaults to 40 * 100 (which corresponds to 40°C).
131
- * @param {number} minTemperature - The minimum temperature * 100. Defaults to 30 * 100 (which corresponds to 30°C). Fixed attribute.
132
- * @param {number} maxTemperature - The maximum temperature * 100. Defaults to 60 * 100 (which corresponds to 60°C). Fixed attribute.
133
- * @param {number} [step=1] - The step size for temperature changes. Defaults to 10 * 100 (which corresponds to 10°C). Fixed attribute.
134
- *
135
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
136
- */
137
54
  createNumberTemperatureControlClusterServer(temperatureSetpoint = 40 * 100, minTemperature = 30 * 100, maxTemperature = 60 * 100, step = 10 * 100) {
138
55
  this.behaviors.require(MatterbridgeNumberTemperatureControlServer.with(TemperatureControl.Feature.TemperatureNumber, TemperatureControl.Feature.TemperatureStep), {
139
56
  temperatureSetpoint,
140
- minTemperature, // Fixed attribute
141
- maxTemperature, // Fixed attribute
142
- step, // Fixed attribute
57
+ minTemperature,
58
+ maxTemperature,
59
+ step,
143
60
  });
144
61
  return this;
145
62
  }
@@ -188,7 +105,6 @@ export class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer
188
105
  device.log.info(`MatterbridgeLaundryWasherModeServer initialized: currentMode is ${this.state.currentMode}`);
189
106
  this.reactTo(this.agent.get(MatterbridgeOnOffServer).events.onOff$Changed, this.handleOnOffChange);
190
107
  }
191
- // Dead Front OnOff Cluster
192
108
  handleOnOffChange(onOff) {
193
109
  const device = this.endpoint.stateOf(MatterbridgeServer);
194
110
  device.log.info(`HandleOnOffChange (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
@@ -213,4 +129,3 @@ export class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer
213
129
  }
214
130
  }
215
131
  }
216
- //# sourceMappingURL=laundryWasher.js.map
@@ -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