matterbridge 2.2.8 → 2.2.9-dev.1

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 (152) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/dist/cli.js +2 -37
  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 +19 -326
  7. package/dist/index.js +1 -28
  8. package/dist/logger/export.js +0 -1
  9. package/dist/matter/behaviors.js +0 -2
  10. package/dist/matter/clusters.js +0 -2
  11. package/dist/matter/devices.js +0 -2
  12. package/dist/matter/endpoints.js +0 -2
  13. package/dist/matter/export.js +0 -2
  14. package/dist/matter/types.js +0 -2
  15. package/dist/matterbridge.js +51 -747
  16. package/dist/matterbridgeAccessoryPlatform.js +0 -33
  17. package/dist/matterbridgeBehaviors.js +1 -32
  18. package/dist/matterbridgeDeviceTypes.js +11 -112
  19. package/dist/matterbridgeDynamicPlatform.js +0 -33
  20. package/dist/matterbridgeEndpoint.js +6 -720
  21. package/dist/matterbridgeEndpointHelpers.js +9 -118
  22. package/dist/matterbridgePlatform.js +7 -216
  23. package/dist/matterbridgeTypes.js +0 -24
  24. package/dist/pluginManager.js +3 -262
  25. package/dist/shelly.js +6 -146
  26. package/dist/storage/export.js +0 -1
  27. package/dist/update.js +0 -45
  28. package/dist/utils/colorUtils.js +2 -205
  29. package/dist/utils/copyDirectory.js +1 -37
  30. package/dist/utils/createZip.js +2 -42
  31. package/dist/utils/deepCopy.js +0 -40
  32. package/dist/utils/deepEqual.js +1 -65
  33. package/dist/utils/export.js +0 -1
  34. package/dist/utils/isvalid.js +0 -86
  35. package/dist/utils/network.js +5 -76
  36. package/dist/utils/parameter.js +0 -41
  37. package/dist/utils/wait.js +5 -48
  38. package/frontend/build/asset-manifest.json +3 -3
  39. package/frontend/build/index.html +1 -1
  40. package/frontend/build/static/js/{main.e11d6bb4.js → main.ff47208e.js} +3 -3
  41. package/frontend/build/static/js/{main.e11d6bb4.js.map → main.ff47208e.js.map} +1 -1
  42. package/npm-shrinkwrap.json +9 -9
  43. package/package.json +1 -2
  44. package/dist/cli.d.ts +0 -29
  45. package/dist/cli.d.ts.map +0 -1
  46. package/dist/cli.js.map +0 -1
  47. package/dist/cluster/export.d.ts +0 -2
  48. package/dist/cluster/export.d.ts.map +0 -1
  49. package/dist/cluster/export.js.map +0 -1
  50. package/dist/defaultConfigSchema.d.ts +0 -27
  51. package/dist/defaultConfigSchema.d.ts.map +0 -1
  52. package/dist/defaultConfigSchema.js.map +0 -1
  53. package/dist/deviceManager.d.ts +0 -114
  54. package/dist/deviceManager.d.ts.map +0 -1
  55. package/dist/deviceManager.js.map +0 -1
  56. package/dist/frontend.d.ts +0 -221
  57. package/dist/frontend.d.ts.map +0 -1
  58. package/dist/frontend.js.map +0 -1
  59. package/dist/index.d.ts +0 -35
  60. package/dist/index.d.ts.map +0 -1
  61. package/dist/index.js.map +0 -1
  62. package/dist/logger/export.d.ts +0 -2
  63. package/dist/logger/export.d.ts.map +0 -1
  64. package/dist/logger/export.js.map +0 -1
  65. package/dist/matter/behaviors.d.ts +0 -2
  66. package/dist/matter/behaviors.d.ts.map +0 -1
  67. package/dist/matter/behaviors.js.map +0 -1
  68. package/dist/matter/clusters.d.ts +0 -2
  69. package/dist/matter/clusters.d.ts.map +0 -1
  70. package/dist/matter/clusters.js.map +0 -1
  71. package/dist/matter/devices.d.ts +0 -2
  72. package/dist/matter/devices.d.ts.map +0 -1
  73. package/dist/matter/devices.js.map +0 -1
  74. package/dist/matter/endpoints.d.ts +0 -2
  75. package/dist/matter/endpoints.d.ts.map +0 -1
  76. package/dist/matter/endpoints.js.map +0 -1
  77. package/dist/matter/export.d.ts +0 -5
  78. package/dist/matter/export.d.ts.map +0 -1
  79. package/dist/matter/export.js.map +0 -1
  80. package/dist/matter/types.d.ts +0 -3
  81. package/dist/matter/types.d.ts.map +0 -1
  82. package/dist/matter/types.js.map +0 -1
  83. package/dist/matterbridge.d.ts +0 -425
  84. package/dist/matterbridge.d.ts.map +0 -1
  85. package/dist/matterbridge.js.map +0 -1
  86. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -39
  87. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  88. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  89. package/dist/matterbridgeBehaviors.d.ts +0 -1056
  90. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  91. package/dist/matterbridgeBehaviors.js.map +0 -1
  92. package/dist/matterbridgeDeviceTypes.d.ts +0 -177
  93. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  94. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  95. package/dist/matterbridgeDynamicPlatform.d.ts +0 -39
  96. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  97. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  98. package/dist/matterbridgeEndpoint.d.ts +0 -867
  99. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  100. package/dist/matterbridgeEndpoint.js.map +0 -1
  101. package/dist/matterbridgeEndpointHelpers.d.ts +0 -2275
  102. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  103. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  104. package/dist/matterbridgePlatform.d.ts +0 -285
  105. package/dist/matterbridgePlatform.d.ts.map +0 -1
  106. package/dist/matterbridgePlatform.js.map +0 -1
  107. package/dist/matterbridgeTypes.d.ts +0 -183
  108. package/dist/matterbridgeTypes.d.ts.map +0 -1
  109. package/dist/matterbridgeTypes.js.map +0 -1
  110. package/dist/pluginManager.d.ts +0 -271
  111. package/dist/pluginManager.d.ts.map +0 -1
  112. package/dist/pluginManager.js.map +0 -1
  113. package/dist/shelly.d.ts +0 -92
  114. package/dist/shelly.d.ts.map +0 -1
  115. package/dist/shelly.js.map +0 -1
  116. package/dist/storage/export.d.ts +0 -2
  117. package/dist/storage/export.d.ts.map +0 -1
  118. package/dist/storage/export.js.map +0 -1
  119. package/dist/update.d.ts +0 -32
  120. package/dist/update.d.ts.map +0 -1
  121. package/dist/update.js.map +0 -1
  122. package/dist/utils/colorUtils.d.ts +0 -61
  123. package/dist/utils/colorUtils.d.ts.map +0 -1
  124. package/dist/utils/colorUtils.js.map +0 -1
  125. package/dist/utils/copyDirectory.d.ts +0 -32
  126. package/dist/utils/copyDirectory.d.ts.map +0 -1
  127. package/dist/utils/copyDirectory.js.map +0 -1
  128. package/dist/utils/createZip.d.ts +0 -38
  129. package/dist/utils/createZip.d.ts.map +0 -1
  130. package/dist/utils/createZip.js.map +0 -1
  131. package/dist/utils/deepCopy.d.ts +0 -31
  132. package/dist/utils/deepCopy.d.ts.map +0 -1
  133. package/dist/utils/deepCopy.js.map +0 -1
  134. package/dist/utils/deepEqual.d.ts +0 -53
  135. package/dist/utils/deepEqual.d.ts.map +0 -1
  136. package/dist/utils/deepEqual.js.map +0 -1
  137. package/dist/utils/export.d.ts +0 -10
  138. package/dist/utils/export.d.ts.map +0 -1
  139. package/dist/utils/export.js.map +0 -1
  140. package/dist/utils/isvalid.d.ts +0 -87
  141. package/dist/utils/isvalid.d.ts.map +0 -1
  142. package/dist/utils/isvalid.js.map +0 -1
  143. package/dist/utils/network.d.ts +0 -69
  144. package/dist/utils/network.d.ts.map +0 -1
  145. package/dist/utils/network.js.map +0 -1
  146. package/dist/utils/parameter.d.ts +0 -44
  147. package/dist/utils/parameter.d.ts.map +0 -1
  148. package/dist/utils/parameter.js.map +0 -1
  149. package/dist/utils/wait.d.ts +0 -43
  150. package/dist/utils/wait.d.ts.map +0 -1
  151. package/dist/utils/wait.js.map +0 -1
  152. /package/frontend/build/static/js/{main.e11d6bb4.js.LICENSE.txt → main.ff47208e.js.LICENSE.txt} +0 -0
@@ -1,36 +1,10 @@
1
- /**
2
- * This file contains the class MatterbridgeEndpoint that extends the Endpoint class from the Matter.js library.
3
- *
4
- * @file matterbridgeEndpoint.ts
5
- * @author Luca Liguori
6
- * @date 2024-10-01
7
- * @version 2.0.0
8
- *
9
- * Copyright 2024, 2025, 2026 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
- // AnsiLogger module
24
1
  import { AnsiLogger, BLUE, CYAN, YELLOW, db, debugStringify, er, hk, or, zb } from './logger/export.js';
25
- // Matterbridge
26
2
  import { bridgedNode } from './matterbridgeDeviceTypes.js';
27
3
  import { isValidNumber, isValidObject } from './utils/export.js';
28
4
  import { MatterbridgeBehavior, MatterbridgeBehaviorDevice, MatterbridgeIdentifyServer, MatterbridgeOnOffServer, MatterbridgeLevelControlServer, MatterbridgeColorControlServer, MatterbridgeWindowCoveringServer, MatterbridgeThermostatServer, MatterbridgeFanControlServer, MatterbridgeDoorLockServer, MatterbridgeModeSelectServer, MatterbridgeValveConfigurationAndControlServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeSwitchServer, } from './matterbridgeBehaviors.js';
29
5
  import { addClusterServers, addFixedLabel, addOptionalClusterServers, addRequiredClusterServers, addUserLabel, capitalizeFirstLetter, createUniqueId, getBehavior, getBehaviourTypesFromClusterClientIds, getBehaviourTypesFromClusterServerIds, getDefaultFlowMeasurementClusterServer, getDefaultIlluminanceMeasurementClusterServer, getDefaultPressureMeasurementClusterServer, getDefaultRelativeHumidityMeasurementClusterServer, getDefaultTemperatureMeasurementClusterServer, getDefaultOccupancySensingClusterServer, lowercaseFirstLetter, updateAttribute, getClusterId, getAttributeId, setAttribute, getAttribute, checkNotLatinCharacters, generateUniqueId, subscribeAttribute, } from './matterbridgeEndpointHelpers.js';
30
- // @matter
31
6
  import { Endpoint, Lifecycle, MutableEndpoint, NamedHandler, SupportedBehaviors, VendorId } from '@matter/main';
32
7
  import { getClusterNameById, MeasurementType } from '@matter/main/types';
33
- // @matter clusters
34
8
  import { Descriptor } from '@matter/main/clusters/descriptor';
35
9
  import { PowerSource } from '@matter/main/clusters/power-source';
36
10
  import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
@@ -52,7 +26,6 @@ import { ElectricalPowerMeasurement } from '@matter/main/clusters/electrical-pow
52
26
  import { ElectricalEnergyMeasurement } from '@matter/main/clusters/electrical-energy-measurement';
53
27
  import { AirQuality } from '@matter/main/clusters/air-quality';
54
28
  import { ConcentrationMeasurement } from '@matter/main/clusters/concentration-measurement';
55
- // @matter behaviors
56
29
  import { DescriptorServer } from '@matter/main/behaviors/descriptor';
57
30
  import { PowerSourceServer } from '@matter/main/behaviors/power-source';
58
31
  import { BridgedDeviceBasicInformationServer } from '@matter/main/behaviors/bridged-device-basic-information';
@@ -83,7 +56,7 @@ import { RadonConcentrationMeasurementServer } from '@matter/main/behaviors/rado
83
56
  import { TotalVolatileOrganicCompoundsConcentrationMeasurementServer } from '@matter/main/behaviors/total-volatile-organic-compounds-concentration-measurement';
84
57
  export class MatterbridgeEndpoint extends Endpoint {
85
58
  static bridgeMode = '';
86
- static logLevel = "info" /* LogLevel.INFO */;
59
+ static logLevel = "info";
87
60
  log;
88
61
  plugin = undefined;
89
62
  configUrl = undefined;
@@ -99,25 +72,14 @@ export class MatterbridgeEndpoint extends Endpoint {
99
72
  hardwareVersion = undefined;
100
73
  hardwareVersionString = undefined;
101
74
  productUrl = 'https://www.npmjs.com/package/matterbridge';
102
- // The first device type of the endpoint
103
75
  name = undefined;
104
76
  deviceType;
105
77
  uniqueStorageKey = undefined;
106
78
  tagList = undefined;
107
- // Maps matter deviceTypes
108
79
  deviceTypes = new Map();
109
- // Command handler
110
80
  commandHandler = new NamedHandler();
111
- /**
112
- * Represents a MatterbridgeEndpoint.
113
- * @constructor
114
- * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The DeviceTypeDefinition(s) of the endpoint.
115
- * @param {MatterbridgeEndpointOptions} [options={}] - The options for the device.
116
- * @param {boolean} [debug=false] - Debug flag.
117
- */
118
81
  constructor(definition, options = {}, debug = false) {
119
82
  let deviceTypeList = [];
120
- // Get the first DeviceTypeDefinition
121
83
  let firstDefinition;
122
84
  if (Array.isArray(definition)) {
123
85
  firstDefinition = definition[0];
@@ -130,7 +92,6 @@ export class MatterbridgeEndpoint extends Endpoint {
130
92
  firstDefinition = definition;
131
93
  deviceTypeList = [{ deviceType: firstDefinition.code, revision: firstDefinition.revision }];
132
94
  }
133
- // Convert the first DeviceTypeDefinition to an EndpointType.Options
134
95
  const deviceTypeDefinitionV8 = {
135
96
  name: firstDefinition.name.replace('-', '_'),
136
97
  deviceType: firstDefinition.code,
@@ -149,11 +110,9 @@ export class MatterbridgeEndpoint extends Endpoint {
149
110
  behaviors: options.tagList ? SupportedBehaviors(DescriptorServer.with(Descriptor.Feature.TagList)) : {},
150
111
  };
151
112
  const endpointV8 = MutableEndpoint(deviceTypeDefinitionV8);
152
- // Check if the uniqueStorageKey is valid
153
113
  if (options.uniqueStorageKey && checkNotLatinCharacters(options.uniqueStorageKey)) {
154
114
  options.uniqueStorageKey = generateUniqueId(options.uniqueStorageKey);
155
115
  }
156
- // Convert the options to an Endpoint.Options
157
116
  const optionsV8 = {
158
117
  id: options.uniqueStorageKey?.replace(/[ .]/g, ''),
159
118
  number: options.endpointId,
@@ -171,41 +130,17 @@ export class MatterbridgeEndpoint extends Endpoint {
171
130
  }
172
131
  else
173
132
  this.deviceTypes.set(firstDefinition.code, firstDefinition);
174
- // console.log('MatterbridgeEndpoint.option', options);
175
- // console.log('MatterbridgeEndpoint.endpointV8', endpointV8);
176
- // console.log('MatterbridgeEndpoint.optionsV8', optionsV8);
177
- // Create the logger
178
- this.log = new AnsiLogger({ logName: options.uniqueStorageKey ?? 'MatterbridgeEndpoint', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: debug === true ? "debug" /* LogLevel.DEBUG */ : MatterbridgeEndpoint.logLevel });
133
+ this.log = new AnsiLogger({ logName: options.uniqueStorageKey ?? 'MatterbridgeEndpoint', logTimestampFormat: 4, logLevel: debug === true ? "debug" : MatterbridgeEndpoint.logLevel });
179
134
  this.log.debug(`${YELLOW}new${db} MatterbridgeEndpoint: ${zb}${'0x' + firstDefinition.code.toString(16).padStart(4, '0')}${db}-${zb}${firstDefinition.name}${db} ` +
180
135
  `id: ${CYAN}${options.uniqueStorageKey}${db} number: ${CYAN}${options.endpointId}${db} taglist: ${CYAN}${options.tagList ? debugStringify(options.tagList) : 'undefined'}${db}`);
181
- // Add MatterbridgeBehavior with MatterbridgeBehaviorDevice
182
136
  this.behaviors.require(MatterbridgeBehavior, { deviceCommand: new MatterbridgeBehaviorDevice(this.log, this.commandHandler, undefined) });
183
137
  }
184
- /**
185
- * Loads an instance of the MatterbridgeEndpoint class.
186
- *
187
- * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The DeviceTypeDefinition(s) of the device.
188
- * @param {MatterbridgeEndpointOptions} [options={}] - The options for the device.
189
- * @param {boolean} [debug=false] - Debug flag.
190
- * @returns {Promise<MatterbridgeEndpoint>} MatterbridgeEndpoint instance.
191
- */
192
138
  static async loadInstance(definition, options = {}, debug = false) {
193
139
  return new MatterbridgeEndpoint(definition, options, debug);
194
140
  }
195
- /**
196
- * Get all the device types of this endpoint.
197
- *
198
- * @returns {DeviceTypeDefinition[]} The device types of this endpoint.
199
- */
200
141
  getDeviceTypes() {
201
142
  return Array.from(this.deviceTypes.values());
202
143
  }
203
- /**
204
- * Checks if the provided cluster server is supported by this endpoint.
205
- *
206
- * @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to check.
207
- * @returns {boolean} True if the cluster server is supported, false otherwise.
208
- */
209
144
  hasClusterServer(cluster) {
210
145
  const behavior = getBehavior(this, cluster);
211
146
  if (behavior)
@@ -213,13 +148,6 @@ export class MatterbridgeEndpoint extends Endpoint {
213
148
  else
214
149
  return false;
215
150
  }
216
- /**
217
- * Checks if the provided attribute server is supported for a given cluster of this endpoint.
218
- *
219
- * @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to check.
220
- * @param {string} attribute - The attribute name to check.
221
- * @returns {boolean} True if the attribute server is supported, false otherwise.
222
- */
223
151
  hasAttributeServer(cluster, attribute) {
224
152
  const behavior = getBehavior(this, cluster);
225
153
  if (!behavior || !this.behaviors.supported[behavior.id])
@@ -228,186 +156,72 @@ export class MatterbridgeEndpoint extends Endpoint {
228
156
  const defaults = this.behaviors.defaultsFor(behavior);
229
157
  return lowercaseFirstLetter(attribute) in options || lowercaseFirstLetter(attribute) in defaults;
230
158
  }
231
- /**
232
- * Retrieves the initial options for the provided cluster server.
233
- *
234
- * @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to get options for.
235
- * @returns {Record<string, boolean | number | bigint | string | object | null> | undefined} The options for the provided cluster server, or undefined if the cluster is not supported.
236
- */
237
159
  getClusterServerOptions(cluster) {
238
160
  const behavior = getBehavior(this, cluster);
239
161
  if (!behavior)
240
162
  return undefined;
241
163
  return this.behaviors.optionsFor(behavior);
242
164
  }
243
- /**
244
- * Retrieves the value of the provided attribute from the given cluster.
245
- *
246
- * @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to retrieve the attribute from.
247
- * @param {string} attribute - The name of the attribute to retrieve.
248
- * @param {AnsiLogger} [log] - Optional logger for error and info messages.
249
- * @returns {any} The value of the attribute, or undefined if the attribute is not found.
250
- */
251
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
252
165
  getAttribute(cluster, attribute, log) {
253
166
  return getAttribute(this, cluster, attribute, log);
254
167
  }
255
- /**
256
- * Sets the value of an attribute on a cluster server.
257
- *
258
- * @param {Behavior.Type | ClusterType | ClusterId | string} clusterId - The ID of the cluster.
259
- * @param {string} attribute - The name of the attribute.
260
- * @param {boolean | number | bigint | string | object | null} value - The value to set for the attribute.
261
- * @param {AnsiLogger} [log] - (Optional) The logger to use for logging errors and information.
262
- * @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the attribute was successfully set.
263
- */
264
168
  async setAttribute(clusterId, attribute, value, log) {
265
169
  return await setAttribute(this, clusterId, attribute, value, log);
266
170
  }
267
- /**
268
- * Update the value of an attribute on a cluster server only if the value is different.
269
- *
270
- * @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to set the attribute on.
271
- * @param {string} attribute - The name of the attribute.
272
- * @param {boolean | number | bigint | string | object | null} value - The value to set for the attribute.
273
- * @param {AnsiLogger} [log] - (Optional) The logger to use for logging the update. Errors are logged to the endpoint logger.
274
- * @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the attribute was successfully set.
275
- */
276
171
  async updateAttribute(cluster, attribute, value, log) {
277
172
  return await updateAttribute(this, cluster, attribute, value, log);
278
173
  }
279
- /**
280
- * Subscribes to the provided attribute on a cluster.
281
- *
282
- * @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to subscribe the attribute to.
283
- * @param {string} attribute - The name of the attribute to subscribe to.
284
- * @param {(newValue: any, oldValue: any) => void} listener - A callback function that will be called when the attribute value changes.
285
- * @param {AnsiLogger} [log] - Optional logger for logging errors and information.
286
- * @returns {Promise<boolean>} - A boolean indicating whether the subscription was successful.
287
- */
288
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
289
174
  async subscribeAttribute(cluster, attribute, listener, log) {
290
175
  return await subscribeAttribute(this, cluster, attribute, listener, log);
291
176
  }
292
- /**
293
- * Triggers an event on the specified cluster.
294
- *
295
- * @param {ClusterId} clusterId - The ID of the cluster.
296
- * @param {string} event - The name of the event to trigger.
297
- * @param {Record<string, boolean | number | bigint | string | object | undefined | null>} payload - The payload to pass to the event.
298
- * @param {AnsiLogger} [log] - Optional logger for logging information.
299
- * @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the event was successfully triggered.
300
- */
301
177
  async triggerEvent(clusterId, event, payload, log) {
302
178
  const clusterName = lowercaseFirstLetter(getClusterNameById(clusterId));
303
179
  if (this.construction.status !== Lifecycle.Status.Active) {
304
180
  this.log.error(`triggerEvent ${hk}${clusterName}.${event}${er} error: Endpoint ${or}${this.maybeId}${er}:${or}${this.maybeNumber}${er} is in the ${BLUE}${this.construction.status}${er} state`);
305
181
  return false;
306
182
  }
307
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
308
183
  const events = this.events;
309
184
  if (!(clusterName in events) || !(event in events[clusterName])) {
310
185
  this.log.error(`triggerEvent ${hk}${event}${er} error: Cluster ${'0x' + clusterId.toString(16).padStart(4, '0')}:${clusterName} not found on endpoint ${or}${this.id}${er}:${or}${this.number}${er}`);
311
186
  return false;
312
187
  }
313
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
314
- // @ts-ignore
315
188
  await this.act((agent) => agent[clusterName].events[event].emit(payload, agent.context));
316
189
  log?.info(`${db}Trigger event ${hk}${capitalizeFirstLetter(clusterName)}${db}.${hk}${event}${db} with ${debugStringify(payload)}${db} on endpoint ${or}${this.id}${db}:${or}${this.number}${db} `);
317
190
  return true;
318
191
  }
319
- /**
320
- * Adds cluster servers from the provided server list.
321
- *
322
- * @param {ClusterId[]} serverList - The list of cluster IDs to add.
323
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
324
- */
325
192
  addClusterServers(serverList) {
326
193
  addClusterServers(this, serverList);
327
194
  return this;
328
195
  }
329
- /**
330
- * Adds a fixed label to the FixedLabel cluster. If the cluster server is not present, it will be added.
331
- *
332
- * @param {string} label - The label to add.
333
- * @param {string} value - The value of the label.
334
- * @returns {Promise<this>} The current MatterbridgeEndpoint instance for chaining.
335
- */
336
196
  async addFixedLabel(label, value) {
337
197
  await addFixedLabel(this, label, value);
338
198
  return this;
339
199
  }
340
- /**
341
- * Adds a user label to the UserLabel cluster. If the cluster server is not present, it will be added.
342
- *
343
- * @param {string} label - The label to add.
344
- * @param {string} value - The value of the label.
345
- * @returns {Promise<this>} The current MatterbridgeEndpoint instance for chaining.
346
- */
347
200
  async addUserLabel(label, value) {
348
201
  await addUserLabel(this, label, value);
349
202
  return this;
350
203
  }
351
- /**
352
- * Adds a command handler for the specified command.
353
- *
354
- * @param {keyof MatterbridgeEndpointCommands} command - The command to add the handler for.
355
- * @param {HandlerFunction} handler - The handler function to execute when the command is received.
356
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
357
- */
358
204
  addCommandHandler(command, handler) {
359
205
  this.commandHandler.addHandler(command, handler);
360
206
  return this;
361
207
  }
362
- /**
363
- * Execute the command handler for the specified command. Mainly used in Jest tests.
364
- *
365
- * @param {keyof MatterbridgeEndpointCommands} command - The command to execute.
366
- * @param {Record<string, boolean | number | bigint | string | object | null>} request - The optional request to pass to the handler function.
367
- * @returns {Promise<void>} A promise that resolves when the command handler has been executed
368
- */
369
208
  async executeCommandHandler(command, request) {
370
209
  await this.commandHandler.executeHandler(command, { request });
371
210
  }
372
- /**
373
- * Adds the required cluster servers (only if they are not present) for the device types of the specified endpoint.
374
- *
375
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
376
- */
377
211
  addRequiredClusterServers() {
378
212
  addRequiredClusterServers(this);
379
213
  return this;
380
214
  }
381
- /**
382
- * Adds the optional cluster servers (only if they are not present) for the device types of the specified endpoint.
383
- *
384
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
385
- */
386
215
  addOptionalClusterServers() {
387
216
  addOptionalClusterServers(this);
388
217
  return this;
389
218
  }
390
- /**
391
- * Retrieves all cluster servers.
392
- *
393
- * @returns {Behavior.Type[]} An array of all cluster servers.
394
- */
395
219
  getAllClusterServers() {
396
220
  return Object.values(this.behaviors.supported);
397
221
  }
398
- /**
399
- * Retrieves the names of all cluster servers.
400
- *
401
- * @returns {string[]} An array of all cluster server names.
402
- */
403
222
  getAllClusterServerNames() {
404
223
  return Object.keys(this.behaviors.supported);
405
224
  }
406
- /**
407
- * Iterates over each attribute of each cluster server of the device state and calls the provided callback function.
408
- *
409
- * @param {Function} callback - The callback function to call with the cluster name, cluster id, attribute name, attribute id and attribute value.
410
- */
411
225
  forEachAttribute(callback) {
412
226
  if (!this.lifecycle.isReady || this.construction.status !== Lifecycle.Status.Active)
413
227
  return;
@@ -415,34 +229,16 @@ export class MatterbridgeEndpoint extends Endpoint {
415
229
  for (const [attributeName, attributeValue] of Object.entries(clusterAttributes)) {
416
230
  const clusterId = getClusterId(this, clusterName);
417
231
  if (clusterId === undefined) {
418
- // this.log.error(`forEachAttribute error: cluster ${clusterName} not found`);
419
232
  continue;
420
233
  }
421
234
  const attributeId = getAttributeId(this, clusterName, attributeName);
422
235
  if (attributeId === undefined) {
423
- // this.log.error(`forEachAttribute error: attribute ${clusterName}.${attributeName} not found`);
424
236
  continue;
425
237
  }
426
238
  callback(clusterName, clusterId, attributeName, attributeId, attributeValue);
427
239
  }
428
240
  }
429
241
  }
430
- /**
431
- * Adds a child endpoint with the specified device types and options.
432
- * If the child endpoint is not already present, it will be created and added.
433
- * If the child endpoint is already present, the existing child endpoint will be returned.
434
- *
435
- * @param {string} endpointName - The name of the new endpoint to add.
436
- * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The device types to add.
437
- * @param {MatterbridgeEndpointOptions} [options={}] - The options for the endpoint.
438
- * @param {boolean} [debug=false] - Whether to enable debug logging.
439
- * @returns {MatterbridgeEndpoint} - The child endpoint that was found or added.
440
- *
441
- * @example
442
- * ```typescript
443
- * const endpoint = device.addChildDeviceType('Temperature', [temperatureSensor], { tagList: [{ mfgCode: null, namespaceId: LocationTag.Indoor.namespaceId, tag: LocationTag.Indoor.tag, label: null }] }, true);
444
- * ```
445
- */
446
242
  addChildDeviceType(endpointName, definition, options = {}, debug = false) {
447
243
  this.log.debug(`addChildDeviceType: ${CYAN}${endpointName}${db}`);
448
244
  let alreadyAdded = false;
@@ -482,23 +278,6 @@ export class MatterbridgeEndpoint extends Endpoint {
482
278
  }
483
279
  return child;
484
280
  }
485
- /**
486
- * Adds a child endpoint with one or more device types with the required cluster servers and the specified cluster servers.
487
- * If the child endpoint is not already present in the childEndpoints, it will be added.
488
- * If the child endpoint is already present in the childEndpoints, the device types and cluster servers will be added to the existing child endpoint.
489
- *
490
- * @param {string} endpointName - The name of the new enpoint to add.
491
- * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The device types to add.
492
- * @param {ClusterId[]} [serverList=[]] - The list of cluster IDs to include.
493
- * @param {MatterbridgeEndpointOptions} [options={}] - The options for the device.
494
- * @param {boolean} [debug=false] - Whether to enable debug logging.
495
- * @returns {MatterbridgeEndpoint} - The child endpoint that was found or added.
496
- *
497
- * @example
498
- * ```typescript
499
- * const endpoint = device.addChildDeviceTypeWithClusterServer('Temperature', [temperatureSensor], [], { tagList: [{ mfgCode: null, namespaceId: LocationTag.Indoor.namespaceId, tag: LocationTag.Indoor.tag, label: null }] }, true);
500
- * ```
501
- */
502
281
  addChildDeviceTypeWithClusterServer(endpointName, definition, serverList = [], options = {}, debug = false) {
503
282
  this.log.debug(`addChildDeviceTypeWithClusterServer: ${CYAN}${endpointName}${db}`);
504
283
  let alreadyAdded = false;
@@ -561,38 +340,15 @@ export class MatterbridgeEndpoint extends Endpoint {
561
340
  }
562
341
  return child;
563
342
  }
564
- /**
565
- * Retrieves a child endpoint by its name.
566
- *
567
- * @param {string} endpointName - The name of the endpoint to retrieve.
568
- * @returns {Endpoint | undefined} The child endpoint with the specified name, or undefined if not found.
569
- */
570
343
  getChildEndpointByName(endpointName) {
571
344
  return this.parts.find((part) => part.id === endpointName);
572
345
  }
573
- /**
574
- * Retrieves a child endpoint by its EndpointNumber.
575
- *
576
- * @param {EndpointNumber} endpointNumber - The EndpointNumber of the endpoint to retrieve.
577
- * @returns {MatterbridgeEndpoint | undefined} The child endpoint with the specified EndpointNumber, or undefined if not found.
578
- */
579
346
  getChildEndpoint(endpointNumber) {
580
347
  return this.parts.find((part) => part.number === endpointNumber);
581
348
  }
582
- /**
583
- * Get all the child endpoints of this endpoint.
584
- *
585
- * @returns {MatterbridgeEndpoint[]} The child endpoints.
586
- */
587
349
  getChildEndpoints() {
588
350
  return Array.from(this.parts);
589
351
  }
590
- /**
591
- * Serializes the Matterbridge device into a serialized object.
592
- *
593
- * @param pluginName - The name of the plugin.
594
- * @returns The serialized Matterbridge device object.
595
- */
596
352
  static serialize(device) {
597
353
  if (!device.serialNumber || !device.deviceName || !device.uniqueId)
598
354
  return;
@@ -615,15 +371,9 @@ export class MatterbridgeEndpoint extends Endpoint {
615
371
  serialized.clusterServersId.push(BridgedDeviceBasicInformation.Cluster.id);
616
372
  if (behaviorName === 'powerSource')
617
373
  serialized.clusterServersId.push(PowerSource.Cluster.id);
618
- // serialized.clusterServersId.push(this.behaviors.supported[behaviorName]cluster.id);
619
374
  });
620
375
  return serialized;
621
376
  }
622
- /**
623
- * Deserializes the device into a serialized object.
624
- *
625
- * @returns The deserialized MatterbridgeDevice.
626
- */
627
377
  static deserialize(serializedDevice) {
628
378
  const device = new MatterbridgeEndpoint(serializedDevice.deviceTypes, { uniqueStorageKey: serializedDevice.endpointName, endpointId: serializedDevice.endpoint }, false);
629
379
  device.plugin = serializedDevice.pluginName;
@@ -639,16 +389,9 @@ export class MatterbridgeEndpoint extends Endpoint {
639
389
  device.createDefaultBridgedDeviceBasicInformationClusterServer(serializedDevice.deviceName, serializedDevice.serialNumber, serializedDevice.vendorId ?? 0xfff1, serializedDevice.vendorName ?? 'Matterbridge', serializedDevice.productName ?? 'Matterbridge device');
640
390
  else if (clusterId === PowerSource.Cluster.id)
641
391
  device.createDefaultPowerSourceWiredClusterServer();
642
- // else addClusterServerFromList(device, [clusterId]);
643
392
  }
644
393
  return device;
645
394
  }
646
- /**
647
- * Creates a default power source wired cluster server.
648
- *
649
- * @param wiredCurrentType - The type of wired current (default: PowerSource.WiredCurrentType.Ac)
650
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
651
- */
652
395
  createDefaultPowerSourceWiredClusterServer(wiredCurrentType = PowerSource.WiredCurrentType.Ac) {
653
396
  this.behaviors.require(PowerSourceServer.with(PowerSource.Feature.Wired), {
654
397
  wiredCurrentType,
@@ -659,16 +402,6 @@ export class MatterbridgeEndpoint extends Endpoint {
659
402
  });
660
403
  return this;
661
404
  }
662
- /**
663
- * Creates a default power source replaceable battery cluster server.
664
- *
665
- * @param batPercentRemaining - The remaining battery percentage (default: 100).
666
- * @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
667
- * @param batVoltage - The battery voltage (default: 1500).
668
- * @param batReplacementDescription - The battery replacement description (default: 'Battery type').
669
- * @param batQuantity - The battery quantity (default: 1).
670
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
671
- */
672
405
  createDefaultPowerSourceReplaceableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500, batReplacementDescription = 'Battery type', batQuantity = 1) {
673
406
  this.behaviors.require(PowerSourceServer.with(PowerSource.Feature.Battery, PowerSource.Feature.Replaceable), {
674
407
  status: PowerSource.PowerSourceStatus.Active,
@@ -686,14 +419,6 @@ export class MatterbridgeEndpoint extends Endpoint {
686
419
  });
687
420
  return this;
688
421
  }
689
- /**
690
- * Creates a default power source rechargeable battery cluster server.
691
- *
692
- * @param batPercentRemaining - The remaining battery percentage (default: 100).
693
- * @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
694
- * @param batVoltage - The battery voltage (default: 1500).
695
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
696
- */
697
422
  createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500) {
698
423
  this.behaviors.require(PowerSourceServer.with(PowerSource.Feature.Battery, PowerSource.Feature.Rechargeable), {
699
424
  status: PowerSource.PowerSourceStatus.Active,
@@ -712,21 +437,6 @@ export class MatterbridgeEndpoint extends Endpoint {
712
437
  });
713
438
  return this;
714
439
  }
715
- /**
716
- * Creates a default Basic Information Cluster Server for the server node.
717
- *
718
- * @param deviceName - The name of the device.
719
- * @param serialNumber - The serial number of the device.
720
- * @param vendorId - The vendor ID of the device.
721
- * @param vendorName - The vendor name of the device.
722
- * @param productId - The product ID of the device.
723
- * @param productName - The product name of the device.
724
- * @param softwareVersion - The software version of the device. Default is 1.
725
- * @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
726
- * @param hardwareVersion - The hardware version of the device. Default is 1.
727
- * @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
728
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
729
- */
730
440
  createDefaultBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productId, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
731
441
  this.log.logName = deviceName;
732
442
  this.deviceName = deviceName;
@@ -750,20 +460,6 @@ export class MatterbridgeEndpoint extends Endpoint {
750
460
  }
751
461
  return this;
752
462
  }
753
- /**
754
- * Creates a default BridgedDeviceBasicInformationClusterServer for the aggregator endpoints.
755
- *
756
- * @param deviceName - The name of the device.
757
- * @param serialNumber - The serial number of the device.
758
- * @param vendorId - The vendor ID of the device.
759
- * @param vendorName - The name of the vendor.
760
- * @param productName - The name of the product.
761
- * @param softwareVersion - The software version of the device. Default is 1.
762
- * @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
763
- * @param hardwareVersion - The hardware version of the device. Default is 1.
764
- * @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
765
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
766
- */
767
463
  createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
768
464
  this.log.logName = deviceName;
769
465
  this.deviceName = deviceName;
@@ -780,7 +476,7 @@ export class MatterbridgeEndpoint extends Endpoint {
780
476
  this.behaviors.require(BridgedDeviceBasicInformationServer.enable({
781
477
  events: { leave: true, reachableChanged: true },
782
478
  }), {
783
- vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined, // 4874
479
+ vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined,
784
480
  vendorName: vendorName.slice(0, 32),
785
481
  productName: productName.slice(0, 32),
786
482
  productUrl: this.productUrl,
@@ -796,13 +492,6 @@ export class MatterbridgeEndpoint extends Endpoint {
796
492
  });
797
493
  return this;
798
494
  }
799
- /**
800
- * Creates a default identify cluster server with the specified identify time and type.
801
- *
802
- * @param {number} [identifyTime=0] - The time to identify the server. Defaults to 0.
803
- * @param {Identify.IdentifyType} [identifyType=Identify.IdentifyType.None] - The type of identification. Defaults to Identify.IdentifyType.None.
804
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
805
- */
806
495
  createDefaultIdentifyClusterServer(identifyTime = 0, identifyType = Identify.IdentifyType.None) {
807
496
  this.behaviors.require(MatterbridgeIdentifyServer, {
808
497
  identifyTime,
@@ -810,32 +499,14 @@ export class MatterbridgeEndpoint extends Endpoint {
810
499
  });
811
500
  return this;
812
501
  }
813
- /**
814
- * Creates a default groups cluster server.
815
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
816
- */
817
502
  createDefaultGroupsClusterServer() {
818
503
  this.behaviors.require(GroupsServer);
819
504
  return this;
820
505
  }
821
- /**
822
- * Creates a default scenes management cluster server.
823
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
824
- */
825
506
  createDefaultScenesClusterServer() {
826
507
  this.behaviors.require(ScenesManagementServer);
827
508
  return this;
828
509
  }
829
- /**
830
- * Creates a default OnOff cluster server for light devices.
831
- *
832
- * @param {boolean} [onOff=false] - The initial state of the OnOff cluster.
833
- * @param {boolean} [globalSceneControl=false] - The global scene control state.
834
- * @param {number} [onTime=0] - The on time value.
835
- * @param {number} [offWaitTime=0] - The off wait time value.
836
- * @param {OnOff.StartUpOnOff | null} [startUpOnOff=null] - The start-up OnOff state. Null means previous state.
837
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
838
- */
839
510
  createDefaultOnOffClusterServer(onOff = false, globalSceneControl = false, onTime = 0, offWaitTime = 0, startUpOnOff = null) {
840
511
  this.behaviors.require(MatterbridgeOnOffServer.with(OnOff.Feature.Lighting), {
841
512
  onOff,
@@ -846,40 +517,18 @@ export class MatterbridgeEndpoint extends Endpoint {
846
517
  });
847
518
  return this;
848
519
  }
849
- /**
850
- * Creates an OnOff cluster server without features.
851
- *
852
- * @param {boolean} [onOff=false] - The initial state of the OnOff cluster.
853
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
854
- */
855
520
  createOnOffClusterServer(onOff = false) {
856
521
  this.behaviors.require(MatterbridgeOnOffServer, {
857
522
  onOff,
858
523
  });
859
524
  return this;
860
525
  }
861
- /**
862
- * Creates a DeadFront OnOff cluster server.
863
- *
864
- * @param {boolean} [onOff=false] - The initial state of the OnOff cluster.
865
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
866
- */
867
526
  createDeadFrontOnOffClusterServer(onOff = false) {
868
527
  this.behaviors.require(MatterbridgeOnOffServer.with(OnOff.Feature.DeadFrontBehavior), {
869
528
  onOff,
870
529
  });
871
530
  return this;
872
531
  }
873
- /**
874
- * Creates a default level control cluster server for light devices.
875
- *
876
- * @param {number} [currentLevel=254] - The current level (default: 254).
877
- * @param {number} [minLevel=1] - The minimum level (default: 1).
878
- * @param {number} [maxLevel=254] - The maximum level (default: 254).
879
- * @param {number | null} [onLevel=null] - The on level (default: null).
880
- * @param {number | null} [startUpCurrentLevel=null] - The startUp on level (default: null).
881
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
882
- */
883
532
  createDefaultLevelControlClusterServer(currentLevel = 254, minLevel = 1, maxLevel = 254, onLevel = null, startUpCurrentLevel = null) {
884
533
  this.behaviors.require(MatterbridgeLevelControlServer.with(LevelControl.Feature.OnOff, LevelControl.Feature.Lighting), {
885
534
  currentLevel,
@@ -895,13 +544,6 @@ export class MatterbridgeEndpoint extends Endpoint {
895
544
  });
896
545
  return this;
897
546
  }
898
- /**
899
- * Creates a level control cluster server without features.
900
- *
901
- * @param {number} [currentLevel=254] - The current level (default: 254).
902
- * @param {number | null} [onLevel=null] - The on level (default: null).
903
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
904
- */
905
547
  createLevelControlClusterServer(currentLevel = 254, onLevel = null) {
906
548
  this.behaviors.require(MatterbridgeLevelControlServer, {
907
549
  currentLevel,
@@ -913,18 +555,6 @@ export class MatterbridgeEndpoint extends Endpoint {
913
555
  });
914
556
  return this;
915
557
  }
916
- /**
917
- * Creates a default color control cluster server with Xy, HueSaturation and ColorTemperature.
918
- *
919
- * @param currentX - The current X value.
920
- * @param currentY - The current Y value.
921
- * @param currentHue - The current hue value.
922
- * @param currentSaturation - The current saturation value.
923
- * @param colorTemperatureMireds - The color temperature in mireds.
924
- * @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
925
- * @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
926
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
927
- */
928
558
  createDefaultColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
929
559
  this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.Xy, ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
930
560
  colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
@@ -947,19 +577,6 @@ export class MatterbridgeEndpoint extends Endpoint {
947
577
  });
948
578
  return this;
949
579
  }
950
- /**
951
- * Creates a Xy color control cluster server with Xy and ColorTemperature.
952
- *
953
- * @param currentX - The current X value.
954
- * @param currentY - The current Y value.
955
- * @param colorTemperatureMireds - The color temperature in mireds.
956
- * @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
957
- * @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
958
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
959
- *
960
- * @remarks
961
- * From zigbee to matter = Math.max(Math.min(Math.round(x * 65536), 65279), 0)
962
- */
963
580
  createXyColorControlClusterServer(currentX = 0, currentY = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
964
581
  this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.Xy, ColorControl.Feature.ColorTemperature), {
965
582
  colorMode: ColorControl.ColorMode.CurrentXAndCurrentY,
@@ -980,16 +597,6 @@ export class MatterbridgeEndpoint extends Endpoint {
980
597
  });
981
598
  return this;
982
599
  }
983
- /**
984
- * Creates a default hue and saturation control cluster server with HueSaturation and ColorTemperature.
985
- *
986
- * @param currentHue - The current hue value.
987
- * @param currentSaturation - The current saturation value.
988
- * @param colorTemperatureMireds - The color temperature in mireds.
989
- * @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
990
- * @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
991
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
992
- */
993
600
  createHsColorControlClusterServer(currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
994
601
  this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
995
602
  colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
@@ -1010,14 +617,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1010
617
  });
1011
618
  return this;
1012
619
  }
1013
- /**
1014
- * Creates a color temperature color control cluster server.
1015
- *
1016
- * @param colorTemperatureMireds - The color temperature in mireds.
1017
- * @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
1018
- * @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
1019
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1020
- */
1021
620
  createCtColorControlClusterServer(colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
1022
621
  this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.ColorTemperature), {
1023
622
  colorMode: ColorControl.ColorMode.ColorTemperatureMireds,
@@ -1036,23 +635,12 @@ export class MatterbridgeEndpoint extends Endpoint {
1036
635
  });
1037
636
  return this;
1038
637
  }
1039
- /**
1040
- * Configures the color control mode for the device.
1041
- *
1042
- * @param {ColorControl.ColorMode} colorMode - The color mode to set.
1043
- */
1044
638
  async configureColorControlMode(colorMode) {
1045
639
  if (isValidNumber(colorMode, ColorControl.ColorMode.CurrentHueAndCurrentSaturation, ColorControl.ColorMode.ColorTemperatureMireds)) {
1046
640
  await this.setAttribute(ColorControl.Cluster.id, 'colorMode', colorMode, this.log);
1047
641
  await this.setAttribute(ColorControl.Cluster.id, 'enhancedColorMode', colorMode, this.log);
1048
642
  }
1049
643
  }
1050
- /**
1051
- * Creates a default window covering cluster server (Lift and PositionAwareLift).
1052
- *
1053
- * @param positionPercent100ths - The position percentage in 100ths (0-10000). Defaults to 0. Matter uses 10000 = fully closed 0 = fully opened.
1054
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1055
- */
1056
644
  createDefaultWindowCoveringClusterServer(positionPercent100ths) {
1057
645
  this.behaviors.require(MatterbridgeWindowCoveringServer.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift), {
1058
646
  type: WindowCovering.WindowCoveringType.Rollershade,
@@ -1068,15 +656,11 @@ export class MatterbridgeEndpoint extends Endpoint {
1068
656
  operationalStatus: { global: WindowCovering.MovementStatus.Stopped, lift: WindowCovering.MovementStatus.Stopped, tilt: WindowCovering.MovementStatus.Stopped },
1069
657
  endProductType: WindowCovering.EndProductType.RollerShade,
1070
658
  mode: { motorDirectionReversed: false, calibrationMode: false, maintenanceMode: false, ledFeedback: false },
1071
- targetPositionLiftPercent100ths: positionPercent100ths ?? 0, // 0 Fully open 10000 fully closed
1072
- currentPositionLiftPercent100ths: positionPercent100ths ?? 0, // 0 Fully open 10000 fully closed
659
+ targetPositionLiftPercent100ths: positionPercent100ths ?? 0,
660
+ currentPositionLiftPercent100ths: positionPercent100ths ?? 0,
1073
661
  });
1074
662
  return this;
1075
663
  }
1076
- /**
1077
- * Sets the window covering target position as the current position and stops the movement.
1078
- *
1079
- */
1080
664
  async setWindowCoveringTargetAsCurrentAndStopped() {
1081
665
  const position = this.getAttribute(WindowCovering.Cluster.id, 'currentPositionLiftPercent100ths', this.log);
1082
666
  if (isValidNumber(position, 0, 10000)) {
@@ -1089,12 +673,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1089
673
  }
1090
674
  this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths and targetPositionLiftPercent100ths to ${position} and operationalStatus to Stopped.`);
1091
675
  }
1092
- /**
1093
- * Sets the current and target status of a window covering.
1094
- * @param {number} current - The current position of the window covering.
1095
- * @param {number} target - The target position of the window covering.
1096
- * @param {WindowCovering.MovementStatus} status - The movement status of the window covering.
1097
- */
1098
676
  async setWindowCoveringCurrentTargetStatus(current, target, status) {
1099
677
  await this.setAttribute(WindowCovering.Cluster.id, 'currentPositionLiftPercent100ths', current, this.log);
1100
678
  await this.setAttribute(WindowCovering.Cluster.id, 'targetPositionLiftPercent100ths', target, this.log);
@@ -1105,10 +683,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1105
683
  }, this.log);
1106
684
  this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths: ${current}, targetPositionLiftPercent100ths: ${target} and operationalStatus: ${status}.`);
1107
685
  }
1108
- /**
1109
- * Sets the status of the window covering.
1110
- * @param {WindowCovering.MovementStatus} status - The movement status to set.
1111
- */
1112
686
  async setWindowCoveringStatus(status) {
1113
687
  await this.setAttribute(WindowCovering.Cluster.id, 'operationalStatus', {
1114
688
  global: status,
@@ -1117,11 +691,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1117
691
  }, this.log);
1118
692
  this.log.debug(`Set WindowCovering operationalStatus: ${status}`);
1119
693
  }
1120
- /**
1121
- * Retrieves the status of the window covering.
1122
- *
1123
- * @returns The global operational status of the window covering or undefined.
1124
- */
1125
694
  getWindowCoveringStatus() {
1126
695
  const status = this.getAttribute(WindowCovering.Cluster.id, 'operationalStatus', this.log);
1127
696
  if (isValidObject(status, 3) && 'global' in status && typeof status.global === 'number') {
@@ -1129,66 +698,36 @@ export class MatterbridgeEndpoint extends Endpoint {
1129
698
  return status.global;
1130
699
  }
1131
700
  }
1132
- /**
1133
- * Sets the target and current position of the window covering.
1134
- *
1135
- * @param position - The position to set, specified as a number.
1136
- */
1137
701
  async setWindowCoveringTargetAndCurrentPosition(position) {
1138
702
  await this.setAttribute(WindowCovering.Cluster.id, 'currentPositionLiftPercent100ths', position, this.log);
1139
703
  await this.setAttribute(WindowCovering.Cluster.id, 'targetPositionLiftPercent100ths', position, this.log);
1140
704
  this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths: ${position} and targetPositionLiftPercent100ths: ${position}.`);
1141
705
  }
1142
- /**
1143
- * Creates a default thermostat cluster server with Thermostat.Feature.Heating, Thermostat.Feature.Cooling, Thermostat.Feature.AutoMode.
1144
- *
1145
- * @param {number} [localTemperature=23] - The local temperature value in degrees Celsius. Defaults to 23°.
1146
- * @param {number} [occupiedHeatingSetpoint=21] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
1147
- * @param {number} [occupiedCoolingSetpoint=25] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
1148
- * @param {number} [minSetpointDeadBand=1] - The minimum setpoint dead band value. Defaults to 1°.
1149
- * @param {number} [minHeatSetpointLimit=0] - The minimum heat setpoint limit value. Defaults to 0°.
1150
- * @param {number} [maxHeatSetpointLimit=50] - The maximum heat setpoint limit value. Defaults to 50°.
1151
- * @param {number} [minCoolSetpointLimit=0] - The minimum cool setpoint limit value. Defaults to 0°.
1152
- * @param {number} [maxCoolSetpointLimit=50] - The maximum cool setpoint limit value. Defaults to 50°.
1153
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1154
- */
1155
706
  createDefaultThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, occupiedCoolingSetpoint = 25, minSetpointDeadBand = 1, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
1156
707
  this.behaviors.require(MatterbridgeThermostatServer.with(Thermostat.Feature.Heating, Thermostat.Feature.Cooling, Thermostat.Feature.AutoMode), {
1157
708
  localTemperature: localTemperature * 100,
1158
709
  systemMode: Thermostat.SystemMode.Auto,
1159
710
  controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.CoolingAndHeating,
1160
- // Thermostat.Feature.Heating
1161
711
  occupiedHeatingSetpoint: occupiedHeatingSetpoint * 100,
1162
712
  minHeatSetpointLimit: minHeatSetpointLimit * 100,
1163
713
  maxHeatSetpointLimit: maxHeatSetpointLimit * 100,
1164
714
  absMinHeatSetpointLimit: minHeatSetpointLimit * 100,
1165
715
  absMaxHeatSetpointLimit: maxHeatSetpointLimit * 100,
1166
- // Thermostat.Feature.Cooling
1167
716
  occupiedCoolingSetpoint: occupiedCoolingSetpoint * 100,
1168
717
  minCoolSetpointLimit: minCoolSetpointLimit * 100,
1169
718
  maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
1170
719
  absMinCoolSetpointLimit: minCoolSetpointLimit * 100,
1171
720
  absMaxCoolSetpointLimit: maxCoolSetpointLimit * 100,
1172
- // Thermostat.Feature.AutoMode
1173
721
  minSetpointDeadBand: minSetpointDeadBand * 100,
1174
722
  thermostatRunningMode: Thermostat.ThermostatRunningMode.Off,
1175
723
  });
1176
724
  return this;
1177
725
  }
1178
- /**
1179
- * Creates a default heating thermostat cluster server with Thermostat.Feature.Heating.
1180
- * @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
1181
- * @param {number} [occupiedHeatingSetpoint] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
1182
- * @param {number} [minHeatSetpointLimit] - The minimum heat setpoint limit value. Defaults to 0°.
1183
- * @param {number} [maxHeatSetpointLimit] - The maximum heat setpoint limit value. Defaults to 50°.
1184
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1185
- */
1186
726
  createDefaultHeatingThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50) {
1187
727
  this.behaviors.require(MatterbridgeThermostatServer.with(Thermostat.Feature.Heating), {
1188
728
  localTemperature: localTemperature * 100,
1189
729
  systemMode: Thermostat.SystemMode.Heat,
1190
730
  controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.HeatingOnly,
1191
- // Thermostat.Feature.Heating
1192
731
  occupiedHeatingSetpoint: occupiedHeatingSetpoint * 100,
1193
732
  minHeatSetpointLimit: minHeatSetpointLimit * 100,
1194
733
  maxHeatSetpointLimit: maxHeatSetpointLimit * 100,
@@ -1197,20 +736,11 @@ export class MatterbridgeEndpoint extends Endpoint {
1197
736
  });
1198
737
  return this;
1199
738
  }
1200
- /**
1201
- * Creates a default cooling thermostat cluster server with Thermostat.Feature.Cooling.
1202
- * @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
1203
- * @param {number} [occupiedCoolingSetpoint] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
1204
- * @param {number} [minCoolSetpointLimit] - The minimum cool setpoint limit value. Defaults to 0°.
1205
- * @param {number} [maxCoolSetpointLimit] - The maximum cool setpoint limit value. Defaults to 50°.
1206
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1207
- */
1208
739
  createDefaultCoolingThermostatClusterServer(localTemperature = 23, occupiedCoolingSetpoint = 25, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
1209
740
  this.behaviors.require(MatterbridgeThermostatServer.with(Thermostat.Feature.Cooling), {
1210
741
  localTemperature: localTemperature * 100,
1211
742
  systemMode: Thermostat.SystemMode.Cool,
1212
743
  controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.CoolingOnly,
1213
- // Thermostat.Feature.Cooling
1214
744
  occupiedCoolingSetpoint: occupiedCoolingSetpoint * 100,
1215
745
  minCoolSetpointLimit: minCoolSetpointLimit * 100,
1216
746
  maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
@@ -1219,12 +749,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1219
749
  });
1220
750
  return this;
1221
751
  }
1222
- /**
1223
- * Creates a default fan control cluster server.
1224
- *
1225
- * @param fanMode The fan mode to set. Defaults to `FanControl.FanMode.Off`.
1226
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1227
- */
1228
752
  createDefaultFanControlClusterServer(fanMode = FanControl.FanMode.Off) {
1229
753
  this.behaviors.require(MatterbridgeFanControlServer.with(FanControl.Feature.MultiSpeed, FanControl.Feature.Auto, FanControl.Feature.Step), {
1230
754
  fanMode,
@@ -1237,16 +761,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1237
761
  });
1238
762
  return this;
1239
763
  }
1240
- /**
1241
- * Creates a default door lock cluster server.
1242
- *
1243
- * @param {DoorLock.LockState} [lockState=DoorLock.LockState.Locked] - The initial state of the lock (default: Locked).
1244
- * @param {DoorLock.LockType} [lockType=DoorLock.LockType.DeadBolt] - The type of the lock (default: DeadBolt).
1245
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1246
- *
1247
- * @remarks
1248
- * All operating modes NOT supported by a lock SHALL be set to one. The value of the OperatingMode enumeration defines the related bit to be set.
1249
- */
1250
764
  createDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
1251
765
  this.behaviors.require(MatterbridgeDoorLockServer.enable({ events: { doorLockAlarm: true, lockOperation: true, lockOperationError: true } }), {
1252
766
  operatingMode: DoorLock.OperatingMode.Normal,
@@ -1257,18 +771,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1257
771
  });
1258
772
  return this;
1259
773
  }
1260
- /**
1261
- * Creates a default Mode Select cluster server.
1262
- *
1263
- * @param {string} description - The description of the mode select cluster.
1264
- * @param {ModeSelect.ModeOption[]} supportedModes - The list of supported modes.
1265
- * @param {number} [currentMode=0] - The current mode (default: 0).
1266
- * @param {number} [startUpMode=0] - The startup mode (default: 0).
1267
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1268
- *
1269
- * @remarks
1270
- * endpoint.createDefaultModeSelectClusterServer('Night mode', [{ label: 'Led ON', mode: 0, semanticTags: [] }, { label: 'Led OFF', mode: 1, semanticTags: [] }], 0, 0);
1271
- */
1272
774
  createDefaultModeSelectClusterServer(description, supportedModes, currentMode = 0, startUpMode = 0) {
1273
775
  this.behaviors.require(MatterbridgeModeSelectServer, {
1274
776
  description: description,
@@ -1279,13 +781,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1279
781
  });
1280
782
  return this;
1281
783
  }
1282
- /**
1283
- * Creates the default Valve Configuration And Control cluster server.
1284
- *
1285
- * @param {ValveConfigurationAndControl.ValveState} [valveState=ValveConfigurationAndControl.ValveState.Closed] - The valve state to set. Defaults to `ValveConfigurationAndControl.ValveState.Closed`.
1286
- * @param {number} [valveLevel=0] - The valve level to set. Defaults to 0.
1287
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1288
- */
1289
784
  createDefaultValveConfigurationAndControlClusterServer(valveState = ValveConfigurationAndControl.ValveState.Closed, valveLevel = 0) {
1290
785
  this.behaviors.require(MatterbridgeValveConfigurationAndControlServer.with(ValveConfigurationAndControl.Feature.Level), {
1291
786
  currentState: valveState,
@@ -1298,12 +793,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1298
793
  });
1299
794
  return this;
1300
795
  }
1301
- /**
1302
- * Creates the default PumpConfigurationAndControl cluster server.
1303
- *
1304
- * @param {PumpConfigurationAndControl.OperationMode} [pumpMode=PumpConfigurationAndControl.OperationMode.Normal] - The pump mode to set. Defaults to `PumpConfigurationAndControl.OperationMode.Normal`.
1305
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1306
- */
1307
796
  createDefaultPumpConfigurationAndControlClusterServer(pumpMode = PumpConfigurationAndControl.OperationMode.Normal) {
1308
797
  this.behaviors.require(PumpConfigurationAndControlServer.with(PumpConfigurationAndControl.Feature.ConstantSpeed), {
1309
798
  minConstSpeed: null,
@@ -1318,13 +807,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1318
807
  });
1319
808
  return this;
1320
809
  }
1321
- /**
1322
- * Creates the default SmokeCOAlarm Cluster Server.
1323
- *
1324
- * @param {SmokeCoAlarm.AlarmState} smokeState - The state of the smoke alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
1325
- * @param {SmokeCoAlarm.AlarmState} coState - The state of the CO alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
1326
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1327
- */
1328
810
  createDefaultSmokeCOAlarmClusterServer(smokeState = SmokeCoAlarm.AlarmState.Normal, coState = SmokeCoAlarm.AlarmState.Normal) {
1329
811
  this.behaviors.require(MatterbridgeSmokeCoAlarmServer.with(SmokeCoAlarm.Feature.SmokeAlarm, SmokeCoAlarm.Feature.CoAlarm).enable({
1330
812
  events: { smokeAlarm: true, interconnectSmokeAlarm: false, coAlarm: true, interconnectCoAlarm: false, lowBattery: true, hardwareFault: true, endOfService: true, selfTestComplete: true, alarmMuted: true, muteEnded: true, allClear: true },
@@ -1337,17 +819,9 @@ export class MatterbridgeEndpoint extends Endpoint {
1337
819
  testInProgress: false,
1338
820
  hardwareFaultAlert: false,
1339
821
  endOfServiceAlert: SmokeCoAlarm.EndOfService.Normal,
1340
- // interconnectSmokeAlarm: SmokeCoAlarm.AlarmState.Normal,
1341
- // interconnectCoAlarm: SmokeCoAlarm.AlarmState.Normal,
1342
822
  });
1343
823
  return this;
1344
824
  }
1345
- /**
1346
- * Creates a smoke only SmokeCOAlarm Cluster Server.
1347
- *
1348
- * @param {SmokeCoAlarm.AlarmState} smokeState - The state of the smoke alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
1349
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1350
- */
1351
825
  createSmokeOnlySmokeCOAlarmClusterServer(smokeState = SmokeCoAlarm.AlarmState.Normal) {
1352
826
  this.behaviors.require(MatterbridgeSmokeCoAlarmServer.with(SmokeCoAlarm.Feature.SmokeAlarm).enable({
1353
827
  events: { smokeAlarm: true, interconnectSmokeAlarm: false, coAlarm: false, interconnectCoAlarm: false, lowBattery: true, hardwareFault: true, endOfService: true, selfTestComplete: true, alarmMuted: true, muteEnded: true, allClear: true },
@@ -1362,12 +836,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1362
836
  });
1363
837
  return this;
1364
838
  }
1365
- /**
1366
- * Creates a co only SmokeCOAlarm Cluster Server.
1367
- *
1368
- * @param {SmokeCoAlarm.AlarmState} coState - The state of the CO alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
1369
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1370
- */
1371
839
  createCoOnlySmokeCOAlarmClusterServer(coState = SmokeCoAlarm.AlarmState.Normal) {
1372
840
  this.behaviors.require(MatterbridgeSmokeCoAlarmServer.with(SmokeCoAlarm.Feature.CoAlarm).enable({
1373
841
  events: { smokeAlarm: false, interconnectSmokeAlarm: false, coAlarm: true, interconnectCoAlarm: false, lowBattery: true, hardwareFault: true, endOfService: true, selfTestComplete: true, alarmMuted: true, muteEnded: true, allClear: true },
@@ -1382,13 +850,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1382
850
  });
1383
851
  return this;
1384
852
  }
1385
- /**
1386
- * Creates a default momentary switch cluster server.
1387
- *
1388
- * @remarks
1389
- * This method adds a cluster server with default momentary switch features and configuration suitable for (AppleHome) Single Double Long automations.
1390
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1391
- */
1392
853
  createDefaultSwitchClusterServer() {
1393
854
  this.behaviors.require(MatterbridgeSwitchServer.with(Switch.Feature.MomentarySwitch, Switch.Feature.MomentarySwitchRelease, Switch.Feature.MomentarySwitchLongPress, Switch.Feature.MomentarySwitchMultiPress).enable({
1394
855
  events: { initialPress: true, longPress: true, shortRelease: true, longRelease: true, multiPressOngoing: true, multiPressComplete: true },
@@ -1399,13 +860,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1399
860
  });
1400
861
  return this;
1401
862
  }
1402
- /**
1403
- * Creates a default latching switch cluster server.
1404
- *
1405
- * @remarks
1406
- * This method adds a cluster server with default latching switch features and configuration suitable for a latching switch with 2 positions.
1407
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1408
- */
1409
863
  createDefaultLatchingSwitchClusterServer() {
1410
864
  this.behaviors.require(SwitchServer.with(Switch.Feature.LatchingSwitch).enable({
1411
865
  events: { switchLatched: true },
@@ -1415,13 +869,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1415
869
  });
1416
870
  return this;
1417
871
  }
1418
- /**
1419
- * Triggers a switch event on the specified endpoint.
1420
- *
1421
- * @param {string} event - The type of event to trigger. Possible values are 'Single', 'Double', 'Long' for momentarySwitch and 'Press', 'Release' for latchingSwitch.
1422
- * @param {Endpoint} endpoint - The endpoint on which to trigger the event (default the device endpoint).
1423
- * @returns {boolean} - A boolean indicating whether the event was successfully triggered.
1424
- */
1425
872
  async triggerSwitchEvent(event, log) {
1426
873
  if (this.maybeNumber === undefined) {
1427
874
  this.log.error(`triggerSwitchEvent ${event} error: Endpoint number not assigned on endpoint ${this.maybeId}:${this.maybeNumber}`);
@@ -1481,31 +928,14 @@ export class MatterbridgeEndpoint extends Endpoint {
1481
928
  }
1482
929
  return true;
1483
930
  }
1484
- /**
1485
- * Creates a default boolean state cluster server.
1486
- *
1487
- * @param {boolean} contact - The state of the cluster. Defaults to true (true = contact).
1488
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1489
- */
1490
931
  createDefaultBooleanStateClusterServer(contact) {
1491
932
  this.behaviors.require(BooleanStateServer.enable({
1492
933
  events: { stateChange: true },
1493
934
  }), {
1494
- stateValue: contact ?? true, // true=contact false=no_contact
935
+ stateValue: contact ?? true,
1495
936
  });
1496
937
  return this;
1497
938
  }
1498
- /**
1499
- * Creates a default boolean state configuration cluster server to be used with the waterFreezeDetector, waterLeakDetector, and rainSensor device types.
1500
- *
1501
- * @remarks Supports the enableDisableAlarm command.
1502
- *
1503
- * @param {boolean} [sensorFault=false] - Optional boolean value indicating the sensor fault state. Defaults to `false` if not provided.
1504
- * @param {number} [currentSensitivityLevel=0] - The current sensitivity level. Defaults to `0` if not provided.
1505
- * @param {number} [supportedSensitivityLevels=2] - The number of supported sensitivity levels. Defaults to `2` if not provided (min 2, max 10).
1506
- * @param {number} [defaultSensitivityLevel=0] - The default sensitivity level. Defaults to `0` if not provided.
1507
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1508
- */
1509
939
  createDefaultBooleanStateConfigurationClusterServer(sensorFault = false, currentSensitivityLevel = 0, supportedSensitivityLevels = 2, defaultSensitivityLevel = 0) {
1510
940
  this.behaviors.require(MatterbridgeBooleanStateConfigurationServer.with(BooleanStateConfiguration.Feature.Visual, BooleanStateConfiguration.Feature.Audible, BooleanStateConfiguration.Feature.SensitivityLevel).enable({
1511
941
  events: { alarmsStateChanged: true, sensorFault: true },
@@ -1520,21 +950,10 @@ export class MatterbridgeEndpoint extends Endpoint {
1520
950
  });
1521
951
  return this;
1522
952
  }
1523
- /**
1524
- * Creates a default Power Topology Cluster Server with feature TreeTopology. Only needed for an electricalSensor device type.
1525
- *
1526
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1527
- */
1528
953
  createDefaultPowerTopologyClusterServer() {
1529
954
  this.behaviors.require(PowerTopologyServer.with(PowerTopology.Feature.TreeTopology));
1530
955
  return this;
1531
956
  }
1532
- /**
1533
- * Creates a default Electrical Energy Measurement Cluster Server.
1534
- *
1535
- * @param {number} energy - The total consumption value in mW/h.
1536
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1537
- */
1538
957
  createDefaultElectricalEnergyMeasurementClusterServer(energy = null) {
1539
958
  this.behaviors.require(ElectricalEnergyMeasurementServer.with(ElectricalEnergyMeasurement.Feature.ImportedEnergy, ElectricalEnergyMeasurement.Feature.ExportedEnergy, ElectricalEnergyMeasurement.Feature.CumulativeEnergy), {
1540
959
  accuracy: {
@@ -1550,15 +969,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1550
969
  });
1551
970
  return this;
1552
971
  }
1553
- /**
1554
- * Creates a default Electrical Power Measurement Cluster Server.
1555
- *
1556
- * @param {number} voltage - The voltage value in millivolts.
1557
- * @param {number} current - The current value in milliamperes.
1558
- * @param {number} power - The power value in milliwatts.
1559
- * @param {number} frequency - The frequency value in millihertz.
1560
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1561
- */
1562
972
  createDefaultElectricalPowerMeasurementClusterServer(voltage = null, current = null, power = null, frequency = null) {
1563
973
  this.behaviors.require(ElectricalPowerMeasurementServer.with(ElectricalPowerMeasurement.Feature.AlternatingCurrent), {
1564
974
  powerMode: ElectricalPowerMeasurement.PowerMode.Ac,
@@ -1600,91 +1010,36 @@ export class MatterbridgeEndpoint extends Endpoint {
1600
1010
  });
1601
1011
  return this;
1602
1012
  }
1603
- /**
1604
- * Creates a default TemperatureMeasurement cluster server.
1605
- *
1606
- * @param {number} measuredValue - The measured value of the temperature x 100.
1607
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1608
- */
1609
1013
  createDefaultTemperatureMeasurementClusterServer(measuredValue = 0) {
1610
1014
  this.behaviors.require(TemperatureMeasurementServer, getDefaultTemperatureMeasurementClusterServer(measuredValue));
1611
1015
  return this;
1612
1016
  }
1613
- /**
1614
- * Creates a default RelativeHumidityMeasurement cluster server.
1615
- *
1616
- * @param {number} measuredValue - The measured value of the relative humidity x 100.
1617
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1618
- */
1619
1017
  createDefaultRelativeHumidityMeasurementClusterServer(measuredValue = 0) {
1620
1018
  this.behaviors.require(RelativeHumidityMeasurementServer, getDefaultRelativeHumidityMeasurementClusterServer(measuredValue));
1621
1019
  return this;
1622
1020
  }
1623
- /**
1624
- * Creates a default PressureMeasurement cluster server.
1625
- *
1626
- * @param {number} measuredValue - The measured value for the pressure.
1627
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1628
- */
1629
1021
  createDefaultPressureMeasurementClusterServer(measuredValue = 1000) {
1630
1022
  this.behaviors.require(PressureMeasurementServer, getDefaultPressureMeasurementClusterServer(measuredValue));
1631
1023
  return this;
1632
1024
  }
1633
- /**
1634
- * Creates a default IlluminanceMeasurement cluster server.
1635
- *
1636
- * @param {number} measuredValue - The measured value of illuminance.
1637
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1638
- *
1639
- * @remarks
1640
- * Lux to matter = Math.round(Math.max(Math.min(10000 * Math.log10(lux), 0xfffe), 0))
1641
- * Matter to Lux = Math.round(Math.max(Math.pow(10, value / 10000), 0))
1642
- */
1643
1025
  createDefaultIlluminanceMeasurementClusterServer(measuredValue = 0) {
1644
1026
  this.behaviors.require(IlluminanceMeasurementServer, getDefaultIlluminanceMeasurementClusterServer(measuredValue));
1645
1027
  return this;
1646
1028
  }
1647
- /**
1648
- * Creates a default FlowMeasurement cluster server.
1649
- *
1650
- * @param {number} measuredValue - The measured value of the flow in 10 x m/h.
1651
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1652
- */
1653
1029
  createDefaultFlowMeasurementClusterServer(measuredValue = 0) {
1654
1030
  this.behaviors.require(FlowMeasurementServer, getDefaultFlowMeasurementClusterServer(measuredValue));
1655
1031
  return this;
1656
1032
  }
1657
- /**
1658
- * Creates a default OccupancySensing cluster server.
1659
- *
1660
- * @param {boolean} occupied - A boolean indicating whether the occupancy is occupied or not. Default is false.
1661
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1662
- */
1663
1033
  createDefaultOccupancySensingClusterServer(occupied = false) {
1664
1034
  this.behaviors.require(OccupancySensingServer, getDefaultOccupancySensingClusterServer(occupied));
1665
1035
  return this;
1666
1036
  }
1667
- /**
1668
- * Creates a default AirQuality cluster server.
1669
- *
1670
- * @param {AirQuality.AirQualityEnum} airQuality The air quality level. Defaults to `AirQuality.AirQualityType.Unknown`.
1671
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1672
- */
1673
1037
  createDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
1674
1038
  this.behaviors.require(AirQualityServer.with(AirQuality.Feature.Fair, AirQuality.Feature.Moderate, AirQuality.Feature.VeryPoor, AirQuality.Feature.ExtremelyPoor), {
1675
1039
  airQuality,
1676
1040
  });
1677
1041
  return this;
1678
1042
  }
1679
- /**
1680
- * Creates a default TotalVolatileOrganicCompoundsConcentrationMeasurement cluster server.
1681
- *
1682
- * @param {number} measuredValue - The measured value of the concentration (default to 0).
1683
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1684
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1685
- * @param {number} [uncertainty] - The uncertainty value (optional).
1686
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1687
- */
1688
1043
  createDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air, uncertainty) {
1689
1044
  this.behaviors.require(TotalVolatileOrganicCompoundsConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1690
1045
  measuredValue,
@@ -1696,11 +1051,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1696
1051
  });
1697
1052
  return this;
1698
1053
  }
1699
- /**
1700
- * @param {ConcentrationMeasurement.LevelValue} levelValue - The level value of the measurement (default to ConcentrationMeasurement.LevelValue.Unknown).
1701
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The measurement medium (default to ConcentrationMeasurement.MeasurementMedium.Air).
1702
- * @returns {this} The current MatterbridgeEndpoint instance for chaining.
1703
- */
1704
1054
  createLevelTvocMeasurementClusterServer(levelValue = ConcentrationMeasurement.LevelValue.Unknown, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1705
1055
  this.behaviors.require(TotalVolatileOrganicCompoundsConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.LevelIndication, ConcentrationMeasurement.Feature.MediumLevel, ConcentrationMeasurement.Feature.CriticalLevel), {
1706
1056
  levelValue,
@@ -1708,13 +1058,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1708
1058
  });
1709
1059
  return this;
1710
1060
  }
1711
- /**
1712
- * Create a default CarbonMonoxideConcentrationMeasurement cluster server.
1713
- *
1714
- * @param {number} measuredValue - The measured value of the concentration.
1715
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1716
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1717
- */
1718
1061
  createDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1719
1062
  this.behaviors.require(CarbonMonoxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1720
1063
  measuredValue,
@@ -1726,13 +1069,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1726
1069
  });
1727
1070
  return this;
1728
1071
  }
1729
- /**
1730
- * Create a default CarbonDioxideConcentrationMeasurement cluster server.
1731
- *
1732
- * @param {number} measuredValue - The measured value of the concentration.
1733
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1734
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1735
- */
1736
1072
  createDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1737
1073
  this.behaviors.require(CarbonDioxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1738
1074
  measuredValue,
@@ -1744,13 +1080,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1744
1080
  });
1745
1081
  return this;
1746
1082
  }
1747
- /**
1748
- * Create a default FormaldehydeConcentrationMeasurement cluster server.
1749
- *
1750
- * @param {number} measuredValue - The measured value of the concentration.
1751
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1752
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1753
- */
1754
1083
  createDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1755
1084
  this.behaviors.require(FormaldehydeConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1756
1085
  measuredValue,
@@ -1762,13 +1091,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1762
1091
  });
1763
1092
  return this;
1764
1093
  }
1765
- /**
1766
- * Create a default Pm1ConcentrationMeasurement cluster server.
1767
- *
1768
- * @param {number} measuredValue - The measured value of the concentration.
1769
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1770
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1771
- */
1772
1094
  createDefaultPm1ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1773
1095
  this.behaviors.require(Pm1ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1774
1096
  measuredValue,
@@ -1780,13 +1102,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1780
1102
  });
1781
1103
  return this;
1782
1104
  }
1783
- /**
1784
- * Create a default Pm25ConcentrationMeasurement cluster server.
1785
- *
1786
- * @param {number} measuredValue - The measured value of the concentration.
1787
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1788
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1789
- */
1790
1105
  createDefaultPm25ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1791
1106
  this.behaviors.require(Pm25ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1792
1107
  measuredValue,
@@ -1798,13 +1113,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1798
1113
  });
1799
1114
  return this;
1800
1115
  }
1801
- /**
1802
- * Create a default Pm10ConcentrationMeasurement cluster server.
1803
- *
1804
- * @param {number} measuredValue - The measured value of the concentration.
1805
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1806
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1807
- */
1808
1116
  createDefaultPm10ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1809
1117
  this.behaviors.require(Pm10ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1810
1118
  measuredValue,
@@ -1816,13 +1124,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1816
1124
  });
1817
1125
  return this;
1818
1126
  }
1819
- /**
1820
- * Create a default OzoneConcentrationMeasurement cluster server.
1821
- *
1822
- * @param {number} measuredValue - The measured value of the concentration.
1823
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ugm3).
1824
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1825
- */
1826
1127
  createDefaultOzoneConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1827
1128
  this.behaviors.require(OzoneConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1828
1129
  measuredValue,
@@ -1834,13 +1135,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1834
1135
  });
1835
1136
  return this;
1836
1137
  }
1837
- /**
1838
- * Create a default RadonConcentrationMeasurement cluster server.
1839
- *
1840
- * @param {number} measuredValue - The measured value of the concentration.
1841
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
1842
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1843
- */
1844
1138
  createDefaultRadonConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1845
1139
  this.behaviors.require(RadonConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1846
1140
  measuredValue,
@@ -1852,13 +1146,6 @@ export class MatterbridgeEndpoint extends Endpoint {
1852
1146
  });
1853
1147
  return this;
1854
1148
  }
1855
- /**
1856
- * Create a default NitrogenDioxideConcentrationMeasurement cluster server.
1857
- *
1858
- * @param {number} measuredValue - The measured value of the concentration.
1859
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ugm3).
1860
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
1861
- */
1862
1149
  createDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1863
1150
  this.behaviors.require(NitrogenDioxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1864
1151
  measuredValue,
@@ -1871,4 +1158,3 @@ export class MatterbridgeEndpoint extends Endpoint {
1871
1158
  return this;
1872
1159
  }
1873
1160
  }
1874
- //# sourceMappingURL=matterbridgeEndpoint.js.map