matterbridge 1.6.5-dev.1 → 1.6.5-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/cli.js +0 -26
  3. package/dist/cluster/export.js +0 -2
  4. package/dist/defaultConfigSchema.js +0 -23
  5. package/dist/deviceManager.js +1 -26
  6. package/dist/index.js +0 -30
  7. package/dist/logger/export.js +0 -1
  8. package/dist/matter/export.js +0 -1
  9. package/dist/matterbridge.js +62 -702
  10. package/dist/matterbridgeAccessoryPlatform.js +0 -33
  11. package/dist/matterbridgeBehaviors.js +9 -34
  12. package/dist/matterbridgeDevice.js +117 -883
  13. package/dist/matterbridgeDeviceTypes.js +12 -40
  14. package/dist/matterbridgeDynamicPlatform.js +0 -33
  15. package/dist/matterbridgeEdge.js +0 -525
  16. package/dist/matterbridgeEndpoint.js +100 -943
  17. package/dist/matterbridgePlatform.js +3 -74
  18. package/dist/matterbridgeTypes.js +0 -24
  19. package/dist/matterbridgeWebsocket.js +0 -45
  20. package/dist/pluginManager.js +3 -231
  21. package/dist/storage/export.js +0 -1
  22. package/dist/utils/colorUtils.js +2 -78
  23. package/dist/utils/export.js +0 -1
  24. package/dist/utils/utils.js +7 -252
  25. package/frontend/build/asset-manifest.json +3 -3
  26. package/frontend/build/index.html +1 -1
  27. package/frontend/build/static/js/{main.a14c87e7.js → main.0ab89802.js} +3 -3
  28. package/frontend/build/static/js/{main.a14c87e7.js.map → main.0ab89802.js.map} +1 -1
  29. package/npm-shrinkwrap.json +5 -5
  30. package/package.json +4 -4
  31. package/tsconfig.production.json +19 -0
  32. package/dist/cli.d.ts +0 -25
  33. package/dist/cli.d.ts.map +0 -1
  34. package/dist/cli.js.map +0 -1
  35. package/dist/cluster/export.d.ts +0 -2
  36. package/dist/cluster/export.d.ts.map +0 -1
  37. package/dist/cluster/export.js.map +0 -1
  38. package/dist/defaultConfigSchema.d.ts +0 -27
  39. package/dist/defaultConfigSchema.d.ts.map +0 -1
  40. package/dist/defaultConfigSchema.js.map +0 -1
  41. package/dist/deviceManager.d.ts +0 -46
  42. package/dist/deviceManager.d.ts.map +0 -1
  43. package/dist/deviceManager.js.map +0 -1
  44. package/dist/index.d.ts +0 -40
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js.map +0 -1
  47. package/dist/logger/export.d.ts +0 -2
  48. package/dist/logger/export.d.ts.map +0 -1
  49. package/dist/logger/export.js.map +0 -1
  50. package/dist/matter/export.d.ts +0 -5
  51. package/dist/matter/export.d.ts.map +0 -1
  52. package/dist/matter/export.js.map +0 -1
  53. package/dist/matterbridge.d.ts +0 -466
  54. package/dist/matterbridge.d.ts.map +0 -1
  55. package/dist/matterbridge.js.map +0 -1
  56. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -39
  57. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  58. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  59. package/dist/matterbridgeBehaviors.d.ts +0 -1127
  60. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  61. package/dist/matterbridgeBehaviors.js.map +0 -1
  62. package/dist/matterbridgeDevice.d.ts +0 -5304
  63. package/dist/matterbridgeDevice.d.ts.map +0 -1
  64. package/dist/matterbridgeDevice.js.map +0 -1
  65. package/dist/matterbridgeDeviceTypes.d.ts +0 -65
  66. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  67. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  68. package/dist/matterbridgeDynamicPlatform.d.ts +0 -39
  69. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  70. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  71. package/dist/matterbridgeEdge.d.ts +0 -89
  72. package/dist/matterbridgeEdge.d.ts.map +0 -1
  73. package/dist/matterbridgeEdge.js.map +0 -1
  74. package/dist/matterbridgeEndpoint.d.ts +0 -7368
  75. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  76. package/dist/matterbridgeEndpoint.js.map +0 -1
  77. package/dist/matterbridgePlatform.d.ts +0 -96
  78. package/dist/matterbridgePlatform.d.ts.map +0 -1
  79. package/dist/matterbridgePlatform.js.map +0 -1
  80. package/dist/matterbridgeTypes.d.ts +0 -147
  81. package/dist/matterbridgeTypes.d.ts.map +0 -1
  82. package/dist/matterbridgeTypes.js.map +0 -1
  83. package/dist/matterbridgeWebsocket.d.ts +0 -49
  84. package/dist/matterbridgeWebsocket.d.ts.map +0 -1
  85. package/dist/matterbridgeWebsocket.js.map +0 -1
  86. package/dist/pluginManager.d.ts +0 -238
  87. package/dist/pluginManager.d.ts.map +0 -1
  88. package/dist/pluginManager.js.map +0 -1
  89. package/dist/storage/export.d.ts +0 -2
  90. package/dist/storage/export.d.ts.map +0 -1
  91. package/dist/storage/export.js.map +0 -1
  92. package/dist/utils/colorUtils.d.ts +0 -61
  93. package/dist/utils/colorUtils.d.ts.map +0 -1
  94. package/dist/utils/colorUtils.js.map +0 -1
  95. package/dist/utils/export.d.ts +0 -3
  96. package/dist/utils/export.d.ts.map +0 -1
  97. package/dist/utils/export.js.map +0 -1
  98. package/dist/utils/utils.d.ts +0 -221
  99. package/dist/utils/utils.d.ts.map +0 -1
  100. package/dist/utils/utils.js.map +0 -1
  101. /package/frontend/build/static/js/{main.a14c87e7.js.LICENSE.txt → main.0ab89802.js.LICENSE.txt} +0 -0
@@ -1,41 +1,15 @@
1
- /**
2
- * This file contains the class MatterbridgeDevice.
3
- *
4
- * @file matterbridgeDevice.ts
5
- * @author Luca Liguori
6
- * @date 2023-12-29
7
- * @version 2.0.0
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
- // @matter
24
1
  import { AirQuality, AirQualityCluster, BasicInformationCluster, BooleanState, BooleanStateCluster, BooleanStateConfiguration, BooleanStateConfigurationCluster, BridgedDeviceBasicInformationCluster, CarbonDioxideConcentrationMeasurement, CarbonDioxideConcentrationMeasurementCluster, CarbonMonoxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurementCluster, ColorControl, ColorControlCluster, ConcentrationMeasurement, Descriptor, DescriptorCluster, DeviceEnergyManagement, DeviceEnergyManagementCluster, DeviceEnergyManagementMode, DeviceEnergyManagementModeCluster, DoorLock, DoorLockCluster, ElectricalEnergyMeasurement, ElectricalEnergyMeasurementCluster, ElectricalPowerMeasurement, ElectricalPowerMeasurementCluster, FanControl, FanControlCluster, FlowMeasurement, FlowMeasurementCluster, FormaldehydeConcentrationMeasurement, FormaldehydeConcentrationMeasurementCluster, Groups, GroupsCluster, Identify, IdentifyCluster, IlluminanceMeasurement, IlluminanceMeasurementCluster, LevelControl, LevelControlCluster, ModeSelectCluster, NitrogenDioxideConcentrationMeasurement, NitrogenDioxideConcentrationMeasurementCluster, OccupancySensing, OccupancySensingCluster, OnOff, OnOffCluster, OzoneConcentrationMeasurement, OzoneConcentrationMeasurementCluster, Pm10ConcentrationMeasurement, Pm10ConcentrationMeasurementCluster, Pm1ConcentrationMeasurement, Pm1ConcentrationMeasurementCluster, Pm25ConcentrationMeasurement, Pm25ConcentrationMeasurementCluster, PowerSource, PowerSourceCluster, PowerSourceConfigurationCluster, PowerTopology, PowerTopologyCluster, PressureMeasurement, PressureMeasurementCluster, RadonConcentrationMeasurement, RadonConcentrationMeasurementCluster, RelativeHumidityMeasurement, RelativeHumidityMeasurementCluster, SmokeCoAlarm, SmokeCoAlarmCluster, Switch, SwitchCluster, TemperatureMeasurement, TemperatureMeasurementCluster, Thermostat, ThermostatCluster, ThreadNetworkDiagnostics, ThreadNetworkDiagnosticsCluster, TimeSynchronization, TimeSynchronizationCluster, TotalVolatileOrganicCompoundsConcentrationMeasurement, TotalVolatileOrganicCompoundsConcentrationMeasurementCluster, WindowCovering, WindowCoveringCluster, } from '@matter/main/clusters';
25
2
  import { Specification } from '@matter/main/model';
26
3
  import { EndpointNumber, extendPublicHandlerMethods, VendorId } from '@matter/main';
27
4
  import { MeasurementType, getClusterNameById } from '@matter/main/types';
28
- // @project-chip
29
- import { Device, Endpoint } from '@project-chip/matter.js/device';
5
+ import { Device } from '@project-chip/matter.js/device';
30
6
  import { GroupsClusterHandler, ClusterServer } from '@project-chip/matter.js/cluster';
31
- // AnsiLogger module
32
7
  import { AnsiLogger, CYAN, YELLOW, db, hk, or, zb, debugStringify } from 'node-ansi-logger';
33
- // Node.js modules
34
8
  import { createHash } from 'crypto';
35
9
  import { bridgedNode } from './matterbridgeDeviceTypes.js';
36
10
  export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
37
11
  static bridgeMode = '';
38
- static logLevel = "info" /* LogLevel.INFO */;
12
+ static logLevel = "info";
39
13
  log;
40
14
  plugin = undefined;
41
15
  serialNumber = undefined;
@@ -49,13 +23,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
49
23
  softwareVersionString = undefined;
50
24
  hardwareVersion = undefined;
51
25
  hardwareVersionString = undefined;
52
- /**
53
- * Create a Matterbridge device.
54
- * @constructor
55
- * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The DeviceTypeDefinition of the device.
56
- * @param {EndpointOptions} [options={}] - The options for the device.
57
- * @param {boolean} [debug=false] - The debug level for the device.
58
- */
59
26
  constructor(definition, options = {}, debug = false) {
60
27
  let firstDefinition;
61
28
  if (Array.isArray(definition))
@@ -63,7 +30,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
63
30
  else
64
31
  firstDefinition = definition;
65
32
  super(firstDefinition, options);
66
- this.log = new AnsiLogger({ logName: 'MatterbridgeDevice', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: debug === true ? "debug" /* LogLevel.DEBUG */ : MatterbridgeDevice.logLevel });
33
+ this.log = new AnsiLogger({ logName: 'MatterbridgeDevice', logTimestampFormat: 4, logLevel: debug === true ? "debug" : MatterbridgeDevice.logLevel });
67
34
  this.log.debug(`new MatterbridgeDevice with deviceType: ${zb}${firstDefinition.code}${db}-${zb}${firstDefinition.name}${db}`);
68
35
  if (Array.isArray(definition)) {
69
36
  definition.forEach((deviceType) => {
@@ -73,28 +40,12 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
73
40
  else
74
41
  this.addDeviceType(firstDefinition);
75
42
  }
76
- /**
77
- * Loads asyncronously an instance of the MatterbridgeDevice class.
78
- *
79
- * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The DeviceTypeDefinition of the device.
80
- * @param {EndpointOptions} [options={}] - The options for the device.
81
- * @param {boolean} [debug=false] - The debug level for the device.
82
- * @returns {Promise<MatterbridgeDevice>} A Promise of MatterbridgeDevice instance.
83
- */
84
43
  static async loadInstance(definition, options = {}, debug = false) {
85
44
  return new MatterbridgeDevice(definition, options, debug);
86
45
  }
87
- // Present in new API but not here
88
46
  get maybeNumber() {
89
47
  return this.number;
90
48
  }
91
- /**
92
- * Adds a device type to the list of device types of the MatterbridgeDevice endpoint.
93
- * If the device type is not already present in the list, it will be added.
94
- *
95
- * @param {DeviceTypeDefinition} deviceType - The device type to add.
96
- * @returns {MatterbridgeDevice} The MatterbridgeDevice instance.
97
- */
98
49
  addDeviceType(deviceType) {
99
50
  const deviceTypes = this.getDeviceTypes();
100
51
  if (!deviceTypes.includes(deviceType)) {
@@ -104,13 +55,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
104
55
  }
105
56
  return this;
106
57
  }
107
- /**
108
- * Adds one or more device types with the required cluster servers and the specified cluster servers.
109
- *
110
- * @param {AtLeastOne<DeviceTypeDefinition>} deviceTypes - The device types to add.
111
- * @param {ClusterId[]} includeServerList - The list of cluster IDs to include.
112
- * @returns {MatterbridgeDevice} The MatterbridgeDevice instance.
113
- */
114
58
  addDeviceTypeWithClusterServer(deviceTypes, includeServerList = []) {
115
59
  this.log.debug('addDeviceTypeWithClusterServer:');
116
60
  deviceTypes.forEach((deviceType) => {
@@ -132,22 +76,11 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
132
76
  this.addClusterServerFromList(this, includeServerList);
133
77
  return this;
134
78
  }
135
- /**
136
- * Adds a child endpoint with the specified device types and options.
137
- * If the child endpoint is not already present, it will be created and added.
138
- * If the child endpoint is already present, the device types will be added to the existing child endpoint.
139
- *
140
- * @param {string} endpointName - The name of the new endpoint to add.
141
- * @param {AtLeastOne<DeviceTypeDefinition>} deviceTypes - The device types to add.
142
- * @param {MatterbridgeEndpointOptions} [options={}] - The options for the endpoint.
143
- * @param {boolean} [debug=false] - Whether to enable debug logging.
144
- * @returns {Endpoint} - The child endpoint that was found or added.
145
- */
146
79
  addChildDeviceType(endpointName, deviceTypes, options = {}, debug = false) {
147
80
  this.log.debug(`addChildDeviceType: ${CYAN}${endpointName}${db}`);
148
81
  let child = this.getChildEndpoints().find((endpoint) => endpoint.uniqueStorageKey === endpointName);
149
82
  if (!child) {
150
- child = new Endpoint(deviceTypes, { uniqueStorageKey: endpointName });
83
+ child = new MatterbridgeDevice(deviceTypes, { uniqueStorageKey: endpointName });
151
84
  if ('tagList' in options) {
152
85
  for (const tag of options.tagList) {
153
86
  this.log.debug(`- with tagList: mfgCode ${CYAN}${tag.mfgCode}${db} namespaceId ${CYAN}${tag.namespaceId}${db} tag ${CYAN}${tag.tag}${db} label ${CYAN}${tag.label}${db}`);
@@ -167,24 +100,11 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
167
100
  child.setDeviceTypes(childDeviceTypes);
168
101
  return child;
169
102
  }
170
- /**
171
- * Adds a child endpoint with one or more device types with the required cluster servers and the specified cluster servers.
172
- * If the child endpoint is not already present in the childEndpoints, it will be added.
173
- * If the child endpoint is already present in the childEndpoints, the device types and cluster servers will be added to the existing child endpoint.
174
- *
175
- * @param {string} endpointName - The name of the new enpoint to add.
176
- * @param {AtLeastOne<DeviceTypeDefinition>} deviceTypes - The device types to add.
177
- * @param {ClusterId[]} [includeServerList=[]] - The list of cluster IDs to include.
178
- * @param {EndpointOptions} [options={}] - The options for the device.
179
- * @param {boolean} [debug=false] - Whether to enable debug logging.
180
- * @returns {Endpoint} - The child endpoint that was found or added.
181
- */
182
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
103
  addChildDeviceTypeWithClusterServer(endpointName, deviceTypes, includeServerList = [], options = {}, debug = false) {
184
104
  this.log.debug(`addChildDeviceTypeWithClusterServer: ${CYAN}${endpointName}${db}`);
185
105
  let child = this.getChildEndpoints().find((endpoint) => endpoint.uniqueStorageKey === endpointName);
186
106
  if (!child) {
187
- child = new Endpoint(deviceTypes, { uniqueStorageKey: endpointName });
107
+ child = new MatterbridgeDevice(deviceTypes, { uniqueStorageKey: endpointName });
188
108
  if ('tagList' in options) {
189
109
  for (const tag of options.tagList) {
190
110
  this.log.debug(`- with tagList: mfgCode ${CYAN}${tag.mfgCode}${db} namespaceId ${CYAN}${tag.namespaceId}${db} tag ${CYAN}${tag.tag}${db} label ${CYAN}${tag.label}${db}`);
@@ -212,12 +132,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
212
132
  this.addClusterServerFromList(child, includeServerList);
213
133
  return child;
214
134
  }
215
- /**
216
- * Adds the required cluster servers (only if they are not present) for the device types of the specified endpoint.
217
- *
218
- * @param {Endpoint} endpoint - The endpoint to add the required cluster servers to.
219
- * @returns {Endpoint} The updated endpoint with the required cluster servers added.
220
- */
221
135
  addRequiredClusterServers(endpoint) {
222
136
  const requiredServerList = [];
223
137
  this.log.debug(`addRequiredClusterServer for ${CYAN}${endpoint.name}${db}`);
@@ -234,12 +148,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
234
148
  this.addClusterServerFromList(endpoint, requiredServerList);
235
149
  return endpoint;
236
150
  }
237
- /**
238
- * Adds the optional cluster servers (only if they are not present) for the device types of the specified endpoint.
239
- *
240
- * @param {Endpoint} endpoint - The endpoint to add the required cluster servers to.
241
- * @returns {Endpoint} The updated endpoint with the required cluster servers added.
242
- */
243
151
  addOptionalClusterServers(endpoint) {
244
152
  const optionalServerList = [];
245
153
  this.log.debug(`addRequiredClusterServer for ${CYAN}${endpoint.name}${db}`);
@@ -256,19 +164,11 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
256
164
  this.addClusterServerFromList(endpoint, optionalServerList);
257
165
  return endpoint;
258
166
  }
259
- /**
260
- * Adds cluster servers to the specified endpoint based on the provided server list.
261
- *
262
- * @param {Endpoint} endpoint - The endpoint to add cluster servers to.
263
- * @param {ClusterId[]} includeServerList - The list of cluster IDs to include.
264
- * @returns {Endpoint} The updated endpoint with the cluster servers added.
265
- */
266
167
  addClusterServerFromList(endpoint, includeServerList) {
267
168
  if (includeServerList.includes(Identify.Cluster.id))
268
169
  endpoint.addClusterServer(this.getDefaultIdentifyClusterServer());
269
170
  if (includeServerList.includes(Groups.Cluster.id))
270
171
  endpoint.addClusterServer(this.getDefaultGroupsClusterServer());
271
- // if (includeServerList.includes(ScenesManagement.Cluster.id)) endpoint.addClusterServer(this.getDefaultScenesClusterServer());
272
172
  if (includeServerList.includes(OnOff.Cluster.id))
273
173
  endpoint.addClusterServer(this.getDefaultOnOffClusterServer());
274
174
  if (includeServerList.includes(LevelControl.Cluster.id))
@@ -341,25 +241,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
341
241
  endpoint.addClusterServer(this.getDefaultDeviceEnergyManagementModeClusterServer());
342
242
  return endpoint;
343
243
  }
344
- /**
345
- * Retrieves a child endpoint by its name.
346
- *
347
- * @param {string} endpointName - The name of the endpoint to retrieve.
348
- * @returns {Endpoint | undefined} The child endpoint with the specified name, or undefined if not found.
349
- */
350
244
  getChildEndpointByName(endpointName) {
351
245
  return this.getChildEndpoints().find((endpoint) => endpoint.uniqueStorageKey === endpointName);
352
246
  }
353
- /**
354
- * Retrieves the value of the specified attribute from the given endpoint and cluster.
355
- *
356
- * @param {ClusterId} clusterId - The ID of the cluster to retrieve the attribute from.
357
- * @param {string} attribute - The name of the attribute to retrieve.
358
- * @param {AnsiLogger} [log] - Optional logger for error and info messages.
359
- * @param {Endpoint} [endpoint] - Optional the child endpoint to retrieve the attribute from.
360
- * @returns {any} The value of the attribute, or undefined if the attribute is not found.
361
- */
362
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
363
247
  getAttribute(clusterId, attribute, log, endpoint) {
364
248
  if (!endpoint)
365
249
  endpoint = this;
@@ -373,28 +257,15 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
373
257
  this.log.error(`getAttribute error: Attribute ${attribute} not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
374
258
  return undefined;
375
259
  }
376
- // Find the getter method
377
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
378
260
  if (!clusterServer[`get${capitalizedAttributeName}Attribute`]) {
379
261
  this.log.error(`getAttribute error: Getter get${capitalizedAttributeName}Attribute not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
380
262
  return undefined;
381
263
  }
382
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
383
264
  const getter = clusterServer[`get${capitalizedAttributeName}Attribute`];
384
265
  const value = getter();
385
266
  log?.info(`${db}Get endpoint ${or}${endpoint.name}:${endpoint.number}${db} attribute ${hk}${clusterServer.name}.${capitalizedAttributeName}${db} value ${YELLOW}${typeof value === 'object' ? debugStringify(value) : value}${db}`);
386
267
  return value;
387
268
  }
388
- /**
389
- * Sets the value of an attribute on a cluster server endpoint.
390
- *
391
- * @param {ClusterId} clusterId - The ID of the cluster.
392
- * @param {string} attribute - The name of the attribute.
393
- * @param {any} value - The value to set for the attribute.
394
- * @param {AnsiLogger} [log] - (Optional) The logger to use for logging errors and information.
395
- * @param {Endpoint} [endpoint] - (Optional) The endpoint to set the attribute on. If not provided, the attribute will be set on the current endpoint.
396
- */
397
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
398
269
  setAttribute(clusterId, attribute, value, log, endpoint) {
399
270
  if (!endpoint)
400
271
  endpoint = this;
@@ -408,21 +279,15 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
408
279
  this.log.error(`setAttribute error: Attribute ${attribute} not found on Cluster ${clusterId} on endpoint ${endpoint.name}:${endpoint.number}`);
409
280
  return false;
410
281
  }
411
- // Find the getter method
412
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
413
282
  if (!clusterServer[`get${capitalizedAttributeName}Attribute`]) {
414
283
  this.log.error(`setAttribute error: Getter get${capitalizedAttributeName}Attribute not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
415
284
  return false;
416
285
  }
417
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
418
286
  const getter = clusterServer[`get${capitalizedAttributeName}Attribute`];
419
- // Find the setter method
420
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
421
287
  if (!clusterServer[`set${capitalizedAttributeName}Attribute`]) {
422
288
  this.log.error(`setAttribute error: Setter set${capitalizedAttributeName}Attribute not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
423
289
  return false;
424
290
  }
425
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
426
291
  const setter = clusterServer[`set${capitalizedAttributeName}Attribute`];
427
292
  const oldValue = getter();
428
293
  setter(value);
@@ -431,17 +296,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
431
296
  `to ${YELLOW}${typeof value === 'object' ? debugStringify(value) : value}${db}`);
432
297
  return true;
433
298
  }
434
- /**
435
- * Subscribes to an attribute on a cluster.
436
- *
437
- * @param {ClusterId} clusterId - The ID of the cluster.
438
- * @param {string} attribute - The name of the attribute to subscribe to.
439
- * @param {(newValue: any, oldValue: any) => void} listener - A callback function that will be called when the attribute value changes.
440
- * @param {AnsiLogger} log - (Optional) An AnsiLogger instance for logging errors and information.
441
- * @param {Endpoint} endpoint - (Optional) The endpoint to subscribe the attribute on. If not provided, the current endpoint will be used.
442
- * @returns A boolean indicating whether the subscription was successful.
443
- */
444
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
445
299
  subscribeAttribute(clusterId, attribute, listener, log, endpoint) {
446
300
  if (!endpoint)
447
301
  endpoint = this;
@@ -455,28 +309,15 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
455
309
  this.log.error(`subscribeAttribute error: Attribute ${attribute} not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
456
310
  return false;
457
311
  }
458
- // Find the subscribe method
459
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
460
312
  if (!clusterServer[`subscribe${capitalizedAttributeName}Attribute`]) {
461
313
  this.log.error(`subscribeAttribute error: subscribe${capitalizedAttributeName}Attribute not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
462
314
  return false;
463
315
  }
464
- // Subscribe to the attribute
465
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
466
316
  const subscribe = clusterServer[`subscribe${capitalizedAttributeName}Attribute`];
467
317
  subscribe(listener);
468
318
  log?.info(`${db}Subscribe endpoint ${or}${endpoint.name}:${endpoint.number}${db} attribute ${hk}${clusterServer.name}.${capitalizedAttributeName}${db}`);
469
319
  return true;
470
320
  }
471
- /**
472
- * Triggers the specified event of the specified cluster from the given endpoint and cluster.
473
- *
474
- * @param {ClusterId} clusterId - The ID of the cluster to retrieve the event from.
475
- * @param {string} event - The name of the event to trigger.
476
- * @param {Record<string, any>} payload - The payload of the event to trigger.
477
- * @param {AnsiLogger} [log] - Optional logger for error and info messages.
478
- * @param {Endpoint} [endpoint] - Optional the child endpoint to retrieve the event from.
479
- */
480
321
  triggerEvent(clusterId, event, payload, log, endpoint) {
481
322
  if (!endpoint)
482
323
  endpoint = this;
@@ -492,43 +333,20 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
492
333
  this.log.error(`triggerEvent error: Event ${event} not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
493
334
  return;
494
335
  }
495
- // Find the getter method
496
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
497
336
  if (!clusterServer[`trigger${capitalizedEventName}Event`]) {
498
337
  this.log.error(`triggerEvent error: Trigger trigger${capitalizedEventName}Event not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
499
338
  return;
500
339
  }
501
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
502
340
  const trigger = clusterServer[`trigger${capitalizedEventName}Event`];
503
341
  trigger(payload);
504
342
  log?.info(`${db}Trigger event ${hk}${clusterServer.name}.${capitalizedEventName}${db} on endpoint ${or}${endpoint.name}:${endpoint.number}${db}`);
505
343
  }
506
- /**
507
- * Adds a tag to the tag list of the specified endpoint.
508
- *
509
- * @param {Endpoint} endpoint - The endpoint to add the tag to.
510
- * @param {VendorId | null} mfgCode - The manufacturer code.
511
- * @param {number} namespaceId - The namespace ID of the tag.
512
- * @param {number} tag - The tag number.
513
- * @param {string | null} [label=null] - The label for the tag.
514
- *
515
- * @remarks
516
- * This method is used to add a tag to the tag list of a given endpoint.
517
- * If the tag list already exists, the new tag is added to the existing list. Otherwise, a new tag list is created with the provided tag.
518
- *
519
- * Example usage:
520
- * ```typescript
521
- * this.addTagList(endpoint, null, NumberTag.One.namespaceId, NumberTag.One.tag, 'Label');
522
- * this.addTagList(endpoint, null, SwitchesTag.Custom.namespaceId, SwitchesTag.Custom.tag, 'Label');
523
- * ```
524
- */
525
344
  addTagList(endpoint, mfgCode, namespaceId, tag, label) {
526
345
  const descriptor = endpoint.getClusterServer(DescriptorCluster.with(Descriptor.Feature.TagList));
527
346
  if (!descriptor) {
528
347
  this.log.error(`addTagList: descriptor cluster not found on endpoint ${endpoint.name}:${endpoint.number}`);
529
348
  return;
530
349
  }
531
- // tagList: { mfgCode: VendorId | null; namespaceId: number; tag: number; label?: string | null }[] = [];
532
350
  if (descriptor.attributes.tagList) {
533
351
  this.log.debug(`addTagList: adding ${CYAN}tagList${db} mfCode: ${mfgCode}, namespaceId: ${namespaceId}, tag: ${tag}, label: ${label} on endpoint ${endpoint.name}:${endpoint.number}`);
534
352
  const tagList = descriptor.attributes.tagList.getLocal();
@@ -544,12 +362,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
544
362
  partsList: [...descriptor.attributes.partsList.getLocal()],
545
363
  }, {}, {}));
546
364
  }
547
- /**
548
- * Serializes the Matterbridge device into a serialized object.
549
- *
550
- * @param pluginName - The name of the plugin.
551
- * @returns The serialized Matterbridge device object.
552
- */
553
365
  serialize() {
554
366
  if (!this.serialNumber || !this.deviceName || !this.uniqueId)
555
367
  return;
@@ -574,11 +386,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
574
386
  });
575
387
  return serialized;
576
388
  }
577
- /**
578
- * Deserializes the device into a serialized object.
579
- *
580
- * @returns The deserialized MatterbridgeDevice.
581
- */
582
389
  static deserialize(serializedDevice) {
583
390
  const device = new MatterbridgeDevice(serializedDevice.deviceTypes);
584
391
  device.serialNumber = serializedDevice.serialNumber;
@@ -594,9 +401,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
594
401
  }
595
402
  return device;
596
403
  }
597
- /**
598
- * Get a default IdentifyCluster server.
599
- */
600
404
  getDefaultIdentifyClusterServer(identifyTime = 0, identifyType = Identify.IdentifyType.None) {
601
405
  return ClusterServer(IdentifyCluster, {
602
406
  identifyTime,
@@ -612,88 +416,28 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
612
416
  },
613
417
  });
614
418
  }
615
- /**
616
- * Creates a default IdentifyCluster server.
617
- */
618
419
  createDefaultIdentifyClusterServer(identifyTime = 0, identifyType = Identify.IdentifyType.None) {
619
420
  this.addClusterServer(this.getDefaultIdentifyClusterServer(identifyTime, identifyType));
620
421
  }
621
- /**
622
- * Get a default IdentifyCluster server.
623
- */
624
422
  getDefaultGroupsClusterServer() {
625
423
  return ClusterServer(GroupsCluster, {
626
424
  nameSupport: {
627
425
  nameSupport: true,
628
426
  },
629
427
  }, GroupsClusterHandler());
630
- // return createDefaultGroupsClusterServer();
631
428
  }
632
- /**
633
- * Creates a default groups cluster server and adds it to the device.
634
- */
635
429
  createDefaultGroupsClusterServer() {
636
430
  this.addClusterServer(this.getDefaultGroupsClusterServer());
637
431
  }
638
- /**
639
- * Get a default scenes cluster server and adds it to the current instance.
640
- * @deprecated This method is deprecated.
641
- *
642
- */
643
432
  getDefaultScenesClusterServer() {
644
- /*
645
- return ClusterServer(
646
- ScenesCluster,
647
- {
648
- sceneCount: 0,
649
- currentScene: 0,
650
- currentGroup: GroupId(0),
651
- sceneValid: false,
652
- nameSupport: {
653
- nameSupport: true,
654
- },
655
- lastConfiguredBy: null,
656
- },
657
- {},
658
- );
659
- */
660
- }
661
- /**
662
- * Creates a default scenes cluster server and adds it to the current instance.
663
- * @deprecated This method is deprecated.
664
- */
433
+ }
665
434
  createDefaultScenesClusterServer() {
666
- /*
667
- this.addClusterServer(this.getDefaultScenesClusterServer());
668
- */
669
- }
670
- /**
671
- * Creates a unique identifier based on the provided parameters.
672
- * @param param1 - The first parameter.
673
- * @param param2 - The second parameter.
674
- * @param param3 - The third parameter.
675
- * @param param4 - The fourth parameter.
676
- * @returns A unique identifier generated using the MD5 hash algorithm.
677
- */
435
+ }
678
436
  createUniqueId(param1, param2, param3, param4) {
679
437
  const hash = createHash('md5');
680
438
  hash.update(param1 + param2 + param3 + param4);
681
439
  return hash.digest('hex');
682
440
  }
683
- /**
684
- * Get a default Basic Information Cluster Server.
685
- *
686
- * @param deviceName - The name of the device.
687
- * @param serialNumber - The serial number of the device.
688
- * @param vendorId - The vendor ID of the device.
689
- * @param vendorName - The vendor name of the device.
690
- * @param productId - The product ID of the device.
691
- * @param productName - The product name of the device.
692
- * @param softwareVersion - The software version of the device. Default is 1.
693
- * @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
694
- * @param hardwareVersion - The hardware version of the device. Default is 1.
695
- * @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
696
- */
697
441
  getDefaultBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productId, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
698
442
  this.log.logName = deviceName;
699
443
  this.deviceName = deviceName;
@@ -733,20 +477,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
733
477
  reachableChanged: true,
734
478
  });
735
479
  }
736
- /**
737
- * Creates a default Basic Information Cluster Server.
738
- *
739
- * @param deviceName - The name of the device.
740
- * @param serialNumber - The serial number of the device.
741
- * @param vendorId - The vendor ID of the device.
742
- * @param vendorName - The vendor name of the device.
743
- * @param productId - The product ID of the device.
744
- * @param productName - The product name of the device.
745
- * @param softwareVersion - The software version of the device. Default is 1.
746
- * @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
747
- * @param hardwareVersion - The hardware version of the device. Default is 1.
748
- * @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
749
- */
750
480
  createDefaultBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productId, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
751
481
  if (MatterbridgeDevice.bridgeMode === 'bridge') {
752
482
  this.addDeviceType(bridgedNode);
@@ -755,19 +485,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
755
485
  }
756
486
  this.addClusterServer(this.getDefaultBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productId, productName, softwareVersion, softwareVersionString, hardwareVersion, hardwareVersionString));
757
487
  }
758
- /**
759
- * Get a default BridgedDeviceBasicInformationClusterServer.
760
- *
761
- * @param deviceName - The name of the device.
762
- * @param serialNumber - The serial number of the device.
763
- * @param vendorId - The vendor ID of the device.
764
- * @param vendorName - The name of the vendor.
765
- * @param productName - The name of the product.
766
- * @param softwareVersion - The software version of the device. Default is 1.
767
- * @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
768
- * @param hardwareVersion - The hardware version of the device. Default is 1.
769
- * @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
770
- */
771
488
  getDefaultBridgedDeviceBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
772
489
  this.log.logName = deviceName;
773
490
  this.deviceName = deviceName;
@@ -782,7 +499,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
782
499
  this.hardwareVersion = hardwareVersion;
783
500
  this.hardwareVersionString = hardwareVersionString;
784
501
  return ClusterServer(BridgedDeviceBasicInformationCluster, {
785
- vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined, // 4874
502
+ vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined,
786
503
  vendorName: vendorName.slice(0, 32),
787
504
  productName: productName.slice(0, 32),
788
505
  productLabel: deviceName.slice(0, 64),
@@ -801,36 +518,12 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
801
518
  reachableChanged: true,
802
519
  });
803
520
  }
804
- /**
805
- * Creates a default BridgedDeviceBasicInformationClusterServer.
806
- *
807
- * @param deviceName - The name of the device.
808
- * @param serialNumber - The serial number of the device.
809
- * @param vendorId - The vendor ID of the device.
810
- * @param vendorName - The name of the vendor.
811
- * @param productName - The name of the product.
812
- * @param softwareVersion - The software version of the device. Default is 1.
813
- * @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
814
- * @param hardwareVersion - The hardware version of the device. Default is 1.
815
- * @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
816
- */
817
521
  createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
818
522
  this.addClusterServer(this.getDefaultBridgedDeviceBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productName, softwareVersion, softwareVersionString, hardwareVersion, hardwareVersionString));
819
523
  }
820
- /**
821
- * Get a default Power Topology Cluster Server.
822
- *
823
- * @returns {ClusterServer} - The configured Power Topology Cluster Server.
824
- */
825
524
  getDefaultPowerTopologyClusterServer() {
826
525
  return ClusterServer(PowerTopologyCluster.with(PowerTopology.Feature.TreeTopology), {}, {}, {});
827
526
  }
828
- /**
829
- * Get a default Electrical Energy Measurement Cluster Server.
830
- *
831
- * @param {number} energy - The total consumption value in mW/h.
832
- * @returns {ClusterServer} - The configured Electrical Energy Measurement Cluster Server.
833
- */
834
527
  getDefaultElectricalEnergyMeasurementClusterServer(energy = null) {
835
528
  return ClusterServer(ElectricalEnergyMeasurementCluster.with(ElectricalEnergyMeasurement.Feature.ImportedEnergy, ElectricalEnergyMeasurement.Feature.ExportedEnergy, ElectricalEnergyMeasurement.Feature.CumulativeEnergy), {
836
529
  accuracy: {
@@ -847,15 +540,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
847
540
  cumulativeEnergyMeasured: true,
848
541
  });
849
542
  }
850
- /**
851
- * Get a default Electrical Power Measurement Cluster Server.
852
- *
853
- * @param {number} voltage - The voltage value in millivolts.
854
- * @param {number} current - The current value in milliamperes.
855
- * @param {number} power - The power value in milliwatts.
856
- * @param {number} frequency - The frequency value in millihertz.
857
- * @returns {ClusterServer} - The configured Electrical Power Measurement Cluster Server.
858
- */
859
543
  getDefaultElectricalPowerMeasurementClusterServer(voltage = null, current = null, power = null, frequency = null) {
860
544
  return ClusterServer(ElectricalPowerMeasurementCluster.with(ElectricalPowerMeasurement.Feature.AlternatingCurrent), {
861
545
  powerMode: ElectricalPowerMeasurement.PowerMode.Ac,
@@ -896,15 +580,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
896
580
  frequency: frequency,
897
581
  }, {}, {});
898
582
  }
899
- /**
900
- * Creates a default Dummy Thread Network Diagnostics Cluster server.
901
- * @deprecated This method is deprecated and is only used for testing.
902
- *
903
- * @remarks
904
- * This method adds a cluster server used only to give the networkName to Eve app.
905
- *
906
- * @returns void
907
- */
908
583
  createDefaultDummyThreadNetworkDiagnosticsClusterServer() {
909
584
  this.addClusterServer(ClusterServer(ThreadNetworkDiagnosticsCluster.with(ThreadNetworkDiagnostics.Feature.PacketCounts, ThreadNetworkDiagnostics.Feature.ErrorCounts), {
910
585
  channel: 1,
@@ -932,11 +607,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
932
607
  },
933
608
  }, {}));
934
609
  }
935
- /**
936
- * Get a default OnOff cluster server.
937
- *
938
- * @param onOff - The initial state of the OnOff cluster (default: false).
939
- */
940
610
  getDefaultOnOffClusterServer(onOff = false) {
941
611
  return ClusterServer(OnOffCluster, {
942
612
  onOff,
@@ -955,22 +625,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
955
625
  },
956
626
  }, {});
957
627
  }
958
- /**
959
- * Creates a default OnOff cluster server.
960
- *
961
- * @param onOff - The initial state of the OnOff cluster (default: false).
962
- */
963
628
  createDefaultOnOffClusterServer(onOff = false) {
964
629
  this.addClusterServer(this.getDefaultOnOffClusterServer(onOff));
965
630
  }
966
- /**
967
- * Get a default level control cluster server.
968
- *
969
- * @param currentLevel - The current level (default: 254).
970
- * @param minLevel - The minimum level (default: 0).
971
- * @param maxLevel - The maximum level (default: 254).
972
- * @param onLevel - The on level (default: null).
973
- */
974
631
  getDefaultLevelControlClusterServer(currentLevel = 254, minLevel = 0, maxLevel = 254, onLevel = null) {
975
632
  return ClusterServer(LevelControlCluster.with(LevelControl.Feature.OnOff), {
976
633
  currentLevel,
@@ -1010,28 +667,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1010
667
  },
1011
668
  });
1012
669
  }
1013
- /**
1014
- * Creates a default level control cluster server.
1015
- *
1016
- * @param currentLevel - The current level (default: 254).
1017
- * @param minLevel - The minimum level (default: 0).
1018
- * @param maxLevel - The maximum level (default: 254).
1019
- * @param onLevel - The on level (default: null).
1020
- */
1021
670
  createDefaultLevelControlClusterServer(currentLevel = 254, minLevel = 0, maxLevel = 254, onLevel = null) {
1022
671
  this.addClusterServer(this.getDefaultLevelControlClusterServer(currentLevel, minLevel, maxLevel, onLevel));
1023
672
  }
1024
- /**
1025
- * Get a default color control cluster server.
1026
- *
1027
- * @param currentX - The current X value.
1028
- * @param currentY - The current Y value.
1029
- * @param currentHue - The current hue value.
1030
- * @param currentSaturation - The current saturation value.
1031
- * @param colorTemperatureMireds - The color temperature in mireds.
1032
- * @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
1033
- * @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
1034
- */
1035
673
  getDefaultColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
1036
674
  return ClusterServer(ColorControlCluster.with(ColorControl.Feature.Xy, ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
1037
675
  colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
@@ -1098,32 +736,114 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1098
736
  },
1099
737
  }, {});
1100
738
  }
1101
- /**
1102
- * Creates a default color control cluster server.
1103
- *
1104
- * @param currentX - The current X value.
1105
- * @param currentY - The current Y value.
1106
- * @param currentHue - The current hue value.
1107
- * @param currentSaturation - The current saturation value.
1108
- * @param colorTemperatureMireds - The color temperature in mireds.
1109
- * @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
1110
- * @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
1111
- */
1112
739
  createDefaultColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
1113
740
  this.addClusterServer(this.getDefaultColorControlClusterServer(currentX, currentY, currentHue, currentSaturation, colorTemperatureMireds, colorTempPhysicalMinMireds, colorTempPhysicalMaxMireds));
1114
741
  }
1115
- /**
1116
- * Configures the color control cluster for a device.
1117
- *
1118
- * @remark This method must be called only after creating the cluster with getDefaultCompleteColorControlClusterServer or createDefaultCompleteColorControlClusterServer
1119
- * and before starting the matter server.
1120
- *
1121
- * @param {boolean} hueSaturation - A boolean indicating whether the device supports hue and saturation control.
1122
- * @param {boolean} xy - A boolean indicating whether the device supports XY control.
1123
- * @param {boolean} colorTemperature - A boolean indicating whether the device supports color temperature control.
1124
- * @param {ColorControl.ColorMode} colorMode - An optional parameter specifying the color mode of the device.
1125
- * @param {Endpoint} endpoint - An optional parameter specifying the endpoint to configure. If not provided, the device endpoint will be used.
1126
- */
742
+ getXyColorControlClusterServer(currentX = 0, currentY = 0) {
743
+ return ClusterServer(ColorControlCluster.with(ColorControl.Feature.Xy), {
744
+ colorMode: ColorControl.ColorMode.CurrentXAndCurrentY,
745
+ enhancedColorMode: ColorControl.EnhancedColorMode.CurrentXAndCurrentY,
746
+ colorCapabilities: { xy: true, hueSaturation: false, colorLoop: false, enhancedHue: false, colorTemperature: false },
747
+ options: {
748
+ executeIfOff: false,
749
+ },
750
+ numberOfPrimaries: null,
751
+ currentX,
752
+ currentY,
753
+ }, {
754
+ moveToColor: async (data) => {
755
+ this.log.debug('Matter command: moveToColor request:', data.request, 'attributes.currentX:', data.attributes.currentX.getLocal(), 'attributes.currentY:', data.attributes.currentY.getLocal());
756
+ this.commandHandler.executeHandler('moveToColor', data);
757
+ },
758
+ moveColor: async () => {
759
+ this.log.error('Matter command: moveColor not implemented');
760
+ },
761
+ stepColor: async () => {
762
+ this.log.error('Matter command: stepColor not implemented');
763
+ },
764
+ stopMoveStep: async () => {
765
+ this.log.error('Matter command: stopMoveStep not implemented');
766
+ },
767
+ }, {});
768
+ }
769
+ createXyControlClusterServer(currentX = 0, currentY = 0) {
770
+ this.addClusterServer(this.getXyColorControlClusterServer(currentX, currentY));
771
+ }
772
+ getHsColorControlClusterServer(currentHue = 0, currentSaturation = 0) {
773
+ return ClusterServer(ColorControlCluster.with(ColorControl.Feature.HueSaturation), {
774
+ colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
775
+ enhancedColorMode: ColorControl.EnhancedColorMode.CurrentHueAndCurrentSaturation,
776
+ colorCapabilities: { xy: false, hueSaturation: true, colorLoop: false, enhancedHue: false, colorTemperature: false },
777
+ options: {
778
+ executeIfOff: false,
779
+ },
780
+ numberOfPrimaries: null,
781
+ currentHue,
782
+ currentSaturation,
783
+ }, {
784
+ moveToHue: async ({ request, attributes, endpoint }) => {
785
+ this.log.debug('Matter command: moveToHue request:', request, 'attributes.currentHue:', attributes.currentHue.getLocal());
786
+ this.commandHandler.executeHandler('moveToHue', { request, attributes, endpoint });
787
+ },
788
+ moveHue: async () => {
789
+ this.log.error('Matter command: moveHue not implemented');
790
+ },
791
+ stepHue: async () => {
792
+ this.log.error('Matter command: stepHue not implemented');
793
+ },
794
+ moveToSaturation: async ({ request, attributes, endpoint }) => {
795
+ this.log.debug('Matter command: moveToSaturation request:', request, 'attributes.currentSaturation:', attributes.currentSaturation.getLocal());
796
+ this.commandHandler.executeHandler('moveToSaturation', { request, attributes, endpoint });
797
+ },
798
+ moveSaturation: async () => {
799
+ this.log.error('Matter command: moveSaturation not implemented');
800
+ },
801
+ stepSaturation: async () => {
802
+ this.log.error('Matter command: stepSaturation not implemented');
803
+ },
804
+ moveToHueAndSaturation: async ({ request, attributes, endpoint }) => {
805
+ this.log.debug('Matter command: moveToHueAndSaturation request:', request, 'attributes.currentHue:', attributes.currentHue.getLocal(), 'attributes.currentSaturation:', attributes.currentSaturation.getLocal());
806
+ this.commandHandler.executeHandler('moveToHueAndSaturation', { request, attributes, endpoint });
807
+ },
808
+ stopMoveStep: async () => {
809
+ this.log.error('Matter command: stopMoveStep not implemented');
810
+ },
811
+ }, {});
812
+ }
813
+ createHsColorControlClusterServer(currentHue = 0, currentSaturation = 0) {
814
+ this.addClusterServer(this.getHsColorControlClusterServer(currentHue, currentSaturation));
815
+ }
816
+ getCtColorControlClusterServer(colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
817
+ return ClusterServer(ColorControlCluster.with(ColorControl.Feature.ColorTemperature), {
818
+ colorMode: ColorControl.ColorMode.ColorTemperatureMireds,
819
+ enhancedColorMode: ColorControl.EnhancedColorMode.ColorTemperatureMireds,
820
+ colorCapabilities: { xy: false, hueSaturation: false, colorLoop: false, enhancedHue: false, colorTemperature: true },
821
+ options: {
822
+ executeIfOff: false,
823
+ },
824
+ numberOfPrimaries: null,
825
+ colorTemperatureMireds,
826
+ colorTempPhysicalMinMireds,
827
+ colorTempPhysicalMaxMireds,
828
+ }, {
829
+ stopMoveStep: async () => {
830
+ this.log.error('Matter command: stopMoveStep not implemented');
831
+ },
832
+ moveToColorTemperature: async ({ request, attributes, endpoint }) => {
833
+ this.log.debug('Matter command: moveToColorTemperature request:', request, 'attributes.colorTemperatureMireds:', attributes.colorTemperatureMireds.getLocal());
834
+ this.commandHandler.executeHandler('moveToColorTemperature', { request, attributes, endpoint });
835
+ },
836
+ moveColorTemperature: async () => {
837
+ this.log.error('Matter command: moveColorTemperature not implemented');
838
+ },
839
+ stepColorTemperature: async () => {
840
+ this.log.error('Matter command: stepColorTemperature not implemented');
841
+ },
842
+ }, {});
843
+ }
844
+ createCtColorControlClusterServer(colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
845
+ this.addClusterServer(this.getCtColorControlClusterServer(colorTemperatureMireds, colorTempPhysicalMinMireds, colorTempPhysicalMaxMireds));
846
+ }
1127
847
  configureColorControlCluster(hueSaturation, xy, colorTemperature, colorMode, endpoint) {
1128
848
  if (!endpoint)
1129
849
  endpoint = this;
@@ -1134,12 +854,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1134
854
  endpoint.getClusterServer(ColorControlCluster)?.setEnhancedColorModeAttribute(colorMode);
1135
855
  }
1136
856
  }
1137
- /**
1138
- * Configures the color control mode for the device.
1139
- *
1140
- * @param {ColorControl.ColorMode} colorMode - The color mode to set.
1141
- * @param {Endpoint} endpoint - The optional endpoint to configure. If not provided, the method will configure the current endpoint.
1142
- */
1143
857
  configureColorControlMode(colorMode, endpoint) {
1144
858
  if (!endpoint)
1145
859
  endpoint = this;
@@ -1148,13 +862,8 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1148
862
  endpoint.getClusterServer(ColorControlCluster)?.setEnhancedColorModeAttribute(colorMode);
1149
863
  }
1150
864
  }
1151
- /**
1152
- * Get a default window covering cluster server.
1153
- *
1154
- * @param positionPercent100ths - The position percentage in 100ths (0-10000). Defaults to 0.
1155
- */
1156
865
  getDefaultWindowCoveringClusterServer(positionPercent100ths) {
1157
- return ClusterServer(WindowCoveringCluster.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift /* , WindowCovering.Feature.AbsolutePosition*/), {
866
+ return ClusterServer(WindowCoveringCluster.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift), {
1158
867
  type: WindowCovering.WindowCoveringType.Rollershade,
1159
868
  configStatus: {
1160
869
  operational: true,
@@ -1168,10 +877,8 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1168
877
  operationalStatus: { global: WindowCovering.MovementStatus.Stopped, lift: WindowCovering.MovementStatus.Stopped, tilt: WindowCovering.MovementStatus.Stopped },
1169
878
  endProductType: WindowCovering.EndProductType.RollerShade,
1170
879
  mode: { motorDirectionReversed: false, calibrationMode: false, maintenanceMode: false, ledFeedback: false },
1171
- targetPositionLiftPercent100ths: positionPercent100ths ?? 0, // 0 Fully open 10000 fully closed
1172
- currentPositionLiftPercent100ths: positionPercent100ths ?? 0, // 0 Fully open 10000 fully closed
1173
- // installedClosedLimitLift: 10000,
1174
- // installedOpenLimitLift: 0,
880
+ targetPositionLiftPercent100ths: positionPercent100ths ?? 0,
881
+ currentPositionLiftPercent100ths: positionPercent100ths ?? 0,
1175
882
  }, {
1176
883
  upOrOpen: async (data) => {
1177
884
  this.log.debug('Matter command: upOrOpen');
@@ -1192,18 +899,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1192
899
  },
1193
900
  }, {});
1194
901
  }
1195
- /**
1196
- * Creates a default window covering cluster server.
1197
- *
1198
- * @param positionPercent100ths - The position percentage in 100ths (0-10000). Defaults to 0.
1199
- */
1200
902
  createDefaultWindowCoveringClusterServer(positionPercent100ths) {
1201
903
  this.addClusterServer(this.getDefaultWindowCoveringClusterServer(positionPercent100ths));
1202
904
  }
1203
- /**
1204
- * Sets the window covering target position as the current position and stops the movement.
1205
- * @param {Endpoint} endpoint - The endpoint on which to set the window covering (default the device endpoint).
1206
- */
1207
905
  setWindowCoveringTargetAsCurrentAndStopped(endpoint) {
1208
906
  if (!endpoint)
1209
907
  endpoint = this;
@@ -1221,13 +919,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1221
919
  this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths and targetPositionLiftPercent100ths to ${position} and operationalStatus to Stopped.`);
1222
920
  }
1223
921
  }
1224
- /**
1225
- * Sets the current and target status of a window covering.
1226
- * @param {number} current - The current position of the window covering.
1227
- * @param {number} target - The target position of the window covering.
1228
- * @param {WindowCovering.MovementStatus} status - The movement status of the window covering.
1229
- * @param {Endpoint} endpoint - The endpoint on which to set the window covering (default the device endpoint).
1230
- */
1231
922
  setWindowCoveringCurrentTargetStatus(current, target, status, endpoint) {
1232
923
  if (!endpoint)
1233
924
  endpoint = this;
@@ -1243,11 +934,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1243
934
  }
1244
935
  this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths: ${current}, targetPositionLiftPercent100ths: ${target} and operationalStatus: ${status}.`);
1245
936
  }
1246
- /**
1247
- * Sets the status of the window covering.
1248
- * @param {WindowCovering.MovementStatus} status - The movement status to set.
1249
- * @param {Endpoint} endpoint - The endpoint on which to set the window covering (default the device endpoint).
1250
- */
1251
937
  setWindowCoveringStatus(status, endpoint) {
1252
938
  if (!endpoint)
1253
939
  endpoint = this;
@@ -1257,12 +943,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1257
943
  windowCovering.setOperationalStatusAttribute({ global: status, lift: status, tilt: status });
1258
944
  this.log.debug(`Set WindowCovering operationalStatus: ${status}`);
1259
945
  }
1260
- /**
1261
- * Retrieves the status of the window covering.
1262
- * @param {Endpoint} endpoint - The endpoint on which to get the window covering (default the device endpoint).
1263
- *
1264
- * @returns The global operational status of the window covering.
1265
- */
1266
946
  getWindowCoveringStatus(endpoint) {
1267
947
  if (!endpoint)
1268
948
  endpoint = this;
@@ -1273,12 +953,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1273
953
  this.log.debug(`Get WindowCovering operationalStatus: ${status.global}`);
1274
954
  return status.global;
1275
955
  }
1276
- /**
1277
- * Sets the target and current position of the window covering.
1278
- *
1279
- * @param position - The position to set, specified as a number.
1280
- * @param {Endpoint} endpoint - The endpoint on which to set the window covering (default the device endpoint).
1281
- */
1282
956
  setWindowCoveringTargetAndCurrentPosition(position, endpoint) {
1283
957
  if (!endpoint)
1284
958
  endpoint = this;
@@ -1289,13 +963,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1289
963
  windowCovering.setTargetPositionLiftPercent100thsAttribute(position);
1290
964
  this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths: ${position} and targetPositionLiftPercent100ths: ${position}.`);
1291
965
  }
1292
- /**
1293
- * Get a default door lock cluster server.
1294
- *
1295
- * @remarks
1296
- * This method adds a cluster server for a door lock cluster with default settings.
1297
- *
1298
- */
1299
966
  getDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
1300
967
  return ClusterServer(DoorLockCluster, {
1301
968
  operatingMode: DoorLock.OperatingMode.Normal,
@@ -1318,22 +985,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1318
985
  lockOperationError: true,
1319
986
  });
1320
987
  }
1321
- /**
1322
- * Creates a default door lock cluster server.
1323
- *
1324
- * @remarks
1325
- * This method adds a cluster server for a door lock cluster with default settings.
1326
- *
1327
- */
1328
988
  createDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
1329
989
  this.addClusterServer(this.getDefaultDoorLockClusterServer(lockState, lockType));
1330
990
  }
1331
- /**
1332
- * Get a default momentary switch cluster server.
1333
- *
1334
- * @remarks
1335
- * This method adds a cluster server with default momentary switch features and configurations suitable for (AppleHome) Single Double Long automations.
1336
- */
1337
991
  getDefaultSwitchClusterServer() {
1338
992
  return ClusterServer(SwitchCluster.with(Switch.Feature.MomentarySwitch, Switch.Feature.MomentarySwitchRelease, Switch.Feature.MomentarySwitchLongPress, Switch.Feature.MomentarySwitchMultiPress), {
1339
993
  numberOfPositions: 2,
@@ -1348,21 +1002,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1348
1002
  multiPressComplete: true,
1349
1003
  });
1350
1004
  }
1351
- /**
1352
- * Creates a default momentary switch cluster server.
1353
- *
1354
- * @remarks
1355
- * This method adds a cluster server with default momentary switch features and configurations.
1356
- */
1357
1005
  createDefaultSwitchClusterServer() {
1358
1006
  this.addClusterServer(this.getDefaultSwitchClusterServer());
1359
1007
  }
1360
- /**
1361
- * Get a default latching switch cluster server.
1362
- *
1363
- * @remarks
1364
- * This method adds a cluster server with default latching switch features and configuration.
1365
- */
1366
1008
  getDefaultLatchingSwitchClusterServer() {
1367
1009
  return ClusterServer(SwitchCluster.with(Switch.Feature.LatchingSwitch), {
1368
1010
  numberOfPositions: 2,
@@ -1371,22 +1013,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1371
1013
  switchLatched: true,
1372
1014
  });
1373
1015
  }
1374
- /**
1375
- * Creates a default latching switch cluster server.
1376
- *
1377
- * @remarks
1378
- * This method adds a cluster server with default latching switch features and configuration.
1379
- */
1380
1016
  createDefaultLatchingSwitchClusterServer() {
1381
1017
  this.addClusterServer(this.getDefaultLatchingSwitchClusterServer());
1382
1018
  }
1383
- /**
1384
- * Triggers a switch event on the specified endpoint.
1385
- *
1386
- * @param {string} event - The type of event to trigger. Possible values are 'Single', 'Double', 'Long' for momentarySwitch and 'Press', 'Release' for latchingSwitch.
1387
- * @param {Endpoint} endpoint - The endpoint on which to trigger the event (default the device endpoint).
1388
- * @returns {void}
1389
- */
1390
1019
  triggerSwitchEvent(event, log, endpoint) {
1391
1020
  if (!endpoint)
1392
1021
  endpoint = this;
@@ -1458,15 +1087,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1458
1087
  }
1459
1088
  return true;
1460
1089
  }
1461
- /**
1462
- * Retrieves the default mode select cluster server.
1463
- *
1464
- * @param description - The description of the cluster server.
1465
- * @param supportedModes - The supported modes for the cluster server.
1466
- * @param currentMode - The current mode of the cluster server. Defaults to 0.
1467
- * @param startUpMode - The startup mode of the cluster server. Defaults to 0.
1468
- * @returns The default mode select cluster server.
1469
- */
1470
1090
  getDefaultModeSelectClusterServer(description, supportedModes, currentMode = 0, startUpMode = 0) {
1471
1091
  return ClusterServer(ModeSelectCluster, {
1472
1092
  description: description,
@@ -1481,24 +1101,11 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1481
1101
  },
1482
1102
  });
1483
1103
  }
1484
- /**
1485
- * Creates a default mode select cluster server.
1486
- *
1487
- * @remarks
1488
- * This method adds a cluster server for a mode select cluster with default settings.
1489
- *
1490
- * @param endpoint - The endpoint to add the cluster server to. Defaults to `this` if not provided.
1491
- */
1492
1104
  createDefaultModeSelectClusterServer(description, supportedModes, currentMode = 0, startUpMode = 0, endpoint) {
1493
1105
  if (!endpoint)
1494
1106
  endpoint = this;
1495
1107
  endpoint.addClusterServer(this.getDefaultModeSelectClusterServer(description, supportedModes, currentMode, startUpMode));
1496
1108
  }
1497
- /**
1498
- * Get a default occupancy sensing cluster server.
1499
- *
1500
- * @param occupied - A boolean indicating whether the occupancy is occupied or not. Default is false.
1501
- */
1502
1109
  getDefaultOccupancySensingClusterServer(occupied = false) {
1503
1110
  return ClusterServer(OccupancySensingCluster, {
1504
1111
  occupancy: { occupied },
@@ -1507,19 +1114,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1507
1114
  pirOccupiedToUnoccupiedDelay: 30,
1508
1115
  }, {});
1509
1116
  }
1510
- /**
1511
- * Creates a default occupancy sensing cluster server.
1512
- *
1513
- * @param occupied - A boolean indicating whether the occupancy is occupied or not. Default is false.
1514
- */
1515
1117
  createDefaultOccupancySensingClusterServer(occupied = false) {
1516
1118
  this.addClusterServer(this.getDefaultOccupancySensingClusterServer(occupied));
1517
1119
  }
1518
- /**
1519
- * Get a default Illuminance Measurement Cluster Server.
1520
- *
1521
- * @param measuredValue - The measured value of illuminance.
1522
- */
1523
1120
  getDefaultIlluminanceMeasurementClusterServer(measuredValue = 0) {
1524
1121
  return ClusterServer(IlluminanceMeasurementCluster, {
1525
1122
  measuredValue,
@@ -1528,19 +1125,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1528
1125
  tolerance: 0,
1529
1126
  }, {}, {});
1530
1127
  }
1531
- /**
1532
- * Creates a default Illuminance Measurement Cluster Server.
1533
- *
1534
- * @param measuredValue - The measured value of illuminance.
1535
- */
1536
1128
  createDefaultIlluminanceMeasurementClusterServer(measuredValue = 0) {
1537
1129
  this.addClusterServer(this.getDefaultIlluminanceMeasurementClusterServer(measuredValue));
1538
1130
  }
1539
- /**
1540
- * Get a default flow measurement cluster server.
1541
- *
1542
- * @param measuredValue - The measured value of the flow in 10 x m/h.
1543
- */
1544
1131
  getDefaultFlowMeasurementClusterServer(measuredValue = 0) {
1545
1132
  return ClusterServer(FlowMeasurementCluster, {
1546
1133
  measuredValue,
@@ -1549,19 +1136,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1549
1136
  tolerance: 0,
1550
1137
  }, {}, {});
1551
1138
  }
1552
- /**
1553
- * Creates a default flow measurement cluster server.
1554
- *
1555
- * @param measuredValue - The measured value of the of the flow in 10 x m/h.
1556
- */
1557
1139
  createDefaultFlowMeasurementClusterServer(measuredValue = 0) {
1558
1140
  this.addClusterServer(this.getDefaultFlowMeasurementClusterServer(measuredValue));
1559
1141
  }
1560
- /**
1561
- * Get a default temperature measurement cluster server.
1562
- *
1563
- * @param measuredValue - The measured value of the temperature x 100.
1564
- */
1565
1142
  getDefaultTemperatureMeasurementClusterServer(measuredValue = 0) {
1566
1143
  return ClusterServer(TemperatureMeasurementCluster, {
1567
1144
  measuredValue,
@@ -1570,19 +1147,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1570
1147
  tolerance: 0,
1571
1148
  }, {}, {});
1572
1149
  }
1573
- /**
1574
- * Creates a default temperature measurement cluster server.
1575
- *
1576
- * @param measuredValue - The measured value of the temperature x 100.
1577
- */
1578
1150
  createDefaultTemperatureMeasurementClusterServer(measuredValue = 0) {
1579
1151
  this.addClusterServer(this.getDefaultTemperatureMeasurementClusterServer(measuredValue));
1580
1152
  }
1581
- /**
1582
- * Get a default RelativeHumidityMeasurementCluster server.
1583
- *
1584
- * @param measuredValue - The measured value of the relative humidity x 100.
1585
- */
1586
1153
  getDefaultRelativeHumidityMeasurementClusterServer(measuredValue = 0) {
1587
1154
  return ClusterServer(RelativeHumidityMeasurementCluster, {
1588
1155
  measuredValue,
@@ -1591,19 +1158,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1591
1158
  tolerance: 0,
1592
1159
  }, {}, {});
1593
1160
  }
1594
- /**
1595
- * Creates a default RelativeHumidityMeasurementCluster server.
1596
- *
1597
- * @param measuredValue - The measured value of the relative humidity x 100.
1598
- */
1599
1161
  createDefaultRelativeHumidityMeasurementClusterServer(measuredValue = 0) {
1600
1162
  this.addClusterServer(this.getDefaultRelativeHumidityMeasurementClusterServer(measuredValue));
1601
1163
  }
1602
- /**
1603
- * Get a default Pressure Measurement Cluster Server.
1604
- *
1605
- * @param measuredValue - The measured value for the pressure.
1606
- */
1607
1164
  getDefaultPressureMeasurementClusterServer(measuredValue = 1000) {
1608
1165
  return ClusterServer(PressureMeasurementCluster, {
1609
1166
  measuredValue,
@@ -1612,39 +1169,19 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1612
1169
  tolerance: 0,
1613
1170
  }, {}, {});
1614
1171
  }
1615
- /**
1616
- * Creates a default Pressure Measurement Cluster Server.
1617
- *
1618
- * @param measuredValue - The measured value for the pressure.
1619
- */
1620
1172
  createDefaultPressureMeasurementClusterServer(measuredValue = 1000) {
1621
1173
  this.addClusterServer(this.getDefaultPressureMeasurementClusterServer(measuredValue));
1622
1174
  }
1623
- /**
1624
- * Get a default boolean state cluster server.
1625
- *
1626
- * @param contact - Optional boolean value indicating the contact state. Defaults to `true` if not provided.
1627
- */
1628
1175
  getDefaultBooleanStateClusterServer(contact) {
1629
1176
  return ClusterServer(BooleanStateCluster, {
1630
- stateValue: contact ?? true, // true=contact false=no_contact
1177
+ stateValue: contact ?? true,
1631
1178
  }, {}, {
1632
1179
  stateChange: true,
1633
1180
  });
1634
1181
  }
1635
- /**
1636
- * Creates a default boolean state configuration cluster server.
1637
- *
1638
- * @param contact - Optional boolean value indicating the contact state. Defaults to `true` if not provided.
1639
- */
1640
1182
  createDefaultBooleanStateClusterServer(contact) {
1641
1183
  this.addClusterServer(this.getDefaultBooleanStateClusterServer(contact));
1642
1184
  }
1643
- /**
1644
- * Get a default boolean state configuration cluster server.
1645
- *
1646
- * @param contact - Optional boolean value indicating the sensor fault state. Defaults to `false` if not provided.
1647
- */
1648
1185
  getDefaultBooleanStateConfigurationClusterServer(sensorFault = false) {
1649
1186
  return ClusterServer(BooleanStateConfigurationCluster.with(BooleanStateConfiguration.Feature.Visual, BooleanStateConfiguration.Feature.Audible, BooleanStateConfiguration.Feature.SensitivityLevel), {
1650
1187
  currentSensitivityLevel: 0,
@@ -1653,7 +1190,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1653
1190
  alarmsActive: { visual: false, audible: false },
1654
1191
  alarmsEnabled: { visual: false, audible: false },
1655
1192
  alarmsSupported: { visual: true, audible: true },
1656
- // alarmsSuppressed: { visual: false, audible: false },
1657
1193
  sensorFault: { generalFault: sensorFault },
1658
1194
  }, {
1659
1195
  enableDisableAlarm: async ({ request, attributes }) => {
@@ -1665,23 +1201,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1665
1201
  sensorFault: true,
1666
1202
  });
1667
1203
  }
1668
- /**
1669
- * Creates a default boolean state configuration cluster server.
1670
- *
1671
- * @param contact - Optional boolean value indicating the sensor fault state. Defaults to `false` if not provided.
1672
- */
1673
1204
  createDefaultBooleanStateConfigurationClusterServer(sensorFault = false) {
1674
1205
  this.addClusterServer(this.getDefaultBooleanStateConfigurationClusterServer(sensorFault));
1675
1206
  }
1676
- /**
1677
- * Get a default power source replaceable battery cluster server.
1678
- *
1679
- * @param batPercentRemaining - The remaining battery percentage (default: 100).
1680
- * @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
1681
- * @param batVoltage - The battery voltage (default: 1500).
1682
- * @param batReplacementDescription - The battery replacement description (default: 'Battery type').
1683
- * @param batQuantity - The battery quantity (default: 1).
1684
- */
1685
1207
  getDefaultPowerSourceReplaceableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500, batReplacementDescription = 'Battery type', batQuantity = 1) {
1686
1208
  return ClusterServer(PowerSourceCluster.with(PowerSource.Feature.Battery, PowerSource.Feature.Replaceable), {
1687
1209
  status: PowerSource.PowerSourceStatus.Active,
@@ -1698,25 +1220,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1698
1220
  endpointList: [],
1699
1221
  }, {}, {});
1700
1222
  }
1701
- /**
1702
- * Creates a default power source replaceable battery cluster server.
1703
- *
1704
- * @param batPercentRemaining - The remaining battery percentage (default: 100).
1705
- * @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
1706
- * @param batVoltage - The battery voltage (default: 1500).
1707
- * @param batReplacementDescription - The battery replacement description (default: 'Battery type').
1708
- * @param batQuantity - The battery quantity (default: 1).
1709
- */
1710
1223
  createDefaultPowerSourceReplaceableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500, batReplacementDescription = 'Battery type', batQuantity = 1) {
1711
1224
  this.addClusterServer(this.getDefaultPowerSourceReplaceableBatteryClusterServer(batPercentRemaining, batChargeLevel, batVoltage, batReplacementDescription, batQuantity));
1712
1225
  }
1713
- /**
1714
- * Get a default power source rechargeable battery cluster server.
1715
- *
1716
- * @param batPercentRemaining - The remaining battery percentage (default: 100).
1717
- * @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
1718
- * @param batVoltage - The battery voltage (default: 1500).
1719
- */
1720
1226
  getDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500) {
1721
1227
  return ClusterServer(PowerSourceCluster.with(PowerSource.Feature.Battery, PowerSource.Feature.Rechargeable), {
1722
1228
  status: PowerSource.PowerSourceStatus.Active,
@@ -1734,21 +1240,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1734
1240
  endpointList: [],
1735
1241
  }, {}, {});
1736
1242
  }
1737
- /**
1738
- * Creates a default power source rechargeable battery cluster server.
1739
- *
1740
- * @param batPercentRemaining - The remaining battery percentage (default: 100).
1741
- * @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
1742
- * @param batVoltage - The battery voltage (default: 1500).
1743
- */
1744
1243
  createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500) {
1745
1244
  this.addClusterServer(this.getDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining, batChargeLevel, batVoltage));
1746
1245
  }
1747
- /**
1748
- * Get a default power source wired cluster server.
1749
- *
1750
- * @param wiredCurrentType - The type of wired current (default: PowerSource.WiredCurrentType.Ac)
1751
- */
1752
1246
  getDefaultPowerSourceWiredClusterServer(wiredCurrentType = PowerSource.WiredCurrentType.Ac) {
1753
1247
  return ClusterServer(PowerSourceCluster.with(PowerSource.Feature.Wired), {
1754
1248
  wiredCurrentType,
@@ -1758,45 +1252,22 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1758
1252
  endpointList: [],
1759
1253
  }, {}, {});
1760
1254
  }
1761
- /**
1762
- * Creates a default power source wired cluster server.
1763
- *
1764
- * @param wiredCurrentType - The type of wired current (default: PowerSource.WiredCurrentType.Ac)
1765
- */
1766
1255
  createDefaultPowerSourceWiredClusterServer(wiredCurrentType = PowerSource.WiredCurrentType.Ac) {
1767
1256
  this.addClusterServer(this.getDefaultPowerSourceWiredClusterServer(wiredCurrentType));
1768
1257
  }
1769
- /**
1770
- * @deprecated This function is deprecated by Matter 1.3 spec and will be removed in a future version.
1771
- */
1772
1258
  createDefaultPowerSourceConfigurationClusterServer(endpointNumber) {
1773
1259
  this.addClusterServer(ClusterServer(PowerSourceConfigurationCluster, {
1774
1260
  sources: endpointNumber ? [EndpointNumber(endpointNumber)] : [],
1775
1261
  }, {}, {}));
1776
1262
  }
1777
- /**
1778
- * Get a default air quality cluster server.
1779
- *
1780
- * @param airQuality The air quality type. Defaults to `AirQuality.AirQualityType.Unknown`.
1781
- */
1782
1263
  getDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
1783
1264
  return ClusterServer(AirQualityCluster.with(AirQuality.Feature.Fair, AirQuality.Feature.Moderate, AirQuality.Feature.VeryPoor, AirQuality.Feature.ExtremelyPoor), {
1784
1265
  airQuality,
1785
1266
  }, {}, {});
1786
1267
  }
1787
- /**
1788
- * Creates a default air quality cluster server.
1789
- *
1790
- * @param airQuality The air quality type. Defaults to `AirQuality.AirQualityType.Unknown`.
1791
- */
1792
1268
  createDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
1793
1269
  this.addClusterServer(this.getDefaultAirQualityClusterServer(airQuality));
1794
1270
  }
1795
- /**
1796
- * Get a default TVOC measurement cluster server.
1797
- *
1798
- * @param measuredValue - The measured value for TVOC.
1799
- */
1800
1271
  getDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1801
1272
  return ClusterServer(TotalVolatileOrganicCompoundsConcentrationMeasurementCluster.with('NumericMeasurement'), {
1802
1273
  measuredValue,
@@ -1807,28 +1278,14 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1807
1278
  measurementMedium,
1808
1279
  }, {}, {});
1809
1280
  }
1810
- /**
1811
- * Creates a default TVOC measurement cluster server.
1812
- *
1813
- * @param measuredValue - The measured value for TVOC.
1814
- */
1815
1281
  createDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1816
1282
  this.addClusterServer(this.getDefaultTvocMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
1817
1283
  }
1818
- /**
1819
- * Get a default heating thermostat cluster server with the specified parameters.
1820
- * @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
1821
- * @param {number} [occupiedHeatingSetpoint] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
1822
- * @param {number} [minHeatSetpointLimit] - The minimum heat setpoint limit value. Defaults to 0°.
1823
- * @param {number} [maxHeatSetpointLimit] - The maximum heat setpoint limit value. Defaults to 50°.
1824
- * @returns {ThermostatClusterServer} A default thermostat cluster server configured with the specified parameters.
1825
- */
1826
1284
  getDefaultHeatingThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50) {
1827
1285
  return ClusterServer(ThermostatCluster.with(Thermostat.Feature.Heating), {
1828
1286
  localTemperature: localTemperature * 100,
1829
1287
  systemMode: Thermostat.SystemMode.Heat,
1830
1288
  controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.HeatingOnly,
1831
- // Thermostat.Feature.Heating
1832
1289
  occupiedHeatingSetpoint: occupiedHeatingSetpoint * 100,
1833
1290
  minHeatSetpointLimit: minHeatSetpointLimit * 100,
1834
1291
  maxHeatSetpointLimit: maxHeatSetpointLimit * 100,
@@ -1841,31 +1298,14 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1841
1298
  },
1842
1299
  }, {});
1843
1300
  }
1844
- /**
1845
- * Creates and adds a default heating thermostat cluster server to the device.
1846
- *
1847
- * @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
1848
- * @param {number} [occupiedHeatingSetpoint] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
1849
- * @param {number} [minHeatSetpointLimit] - The minimum heat setpoint limit value. Defaults to 0°.
1850
- * @param {number} [maxHeatSetpointLimit] - The maximum heat setpoint limit value. Defaults to 50°.
1851
- */
1852
1301
  createDefaultHeatingThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 25, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50) {
1853
1302
  this.addClusterServer(this.getDefaultHeatingThermostatClusterServer(localTemperature, occupiedHeatingSetpoint, minHeatSetpointLimit, maxHeatSetpointLimit));
1854
1303
  }
1855
- /**
1856
- * Get a default cooling thermostat cluster server with the specified parameters.
1857
- * @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
1858
- * @param {number} [occupiedCoolingSetpoint] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
1859
- * @param {number} [minCoolSetpointLimit] - The minimum cool setpoint limit value. Defaults to 0°.
1860
- * @param {number} [maxCoolSetpointLimit] - The maximum cool setpoint limit value. Defaults to 50°.
1861
- * @returns {ThermostatClusterServer} A default thermostat cluster server configured with the specified parameters.
1862
- */
1863
1304
  getDefaultCoolingThermostatClusterServer(localTemperature = 23, occupiedCoolingSetpoint = 25, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
1864
1305
  return ClusterServer(ThermostatCluster.with(Thermostat.Feature.Cooling), {
1865
1306
  localTemperature: localTemperature * 100,
1866
1307
  systemMode: Thermostat.SystemMode.Cool,
1867
1308
  controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.CoolingOnly,
1868
- // Thermostat.Feature.Cooling
1869
1309
  occupiedCoolingSetpoint: occupiedCoolingSetpoint * 100,
1870
1310
  minCoolSetpointLimit: minCoolSetpointLimit * 100,
1871
1311
  maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
@@ -1878,48 +1318,24 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1878
1318
  },
1879
1319
  }, {});
1880
1320
  }
1881
- /**
1882
- * Creates and adds a default cooling thermostat cluster server to the device.
1883
- *
1884
- * @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
1885
- * @param {number} [occupiedCoolingSetpoint] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
1886
- * @param {number} [minCoolSetpointLimit] - The minimum cool setpoint limit value. Defaults to 0°.
1887
- * @param {number} [maxCoolSetpointLimit] - The maximum cool setpoint limit value. Defaults to 50°.
1888
- */
1889
1321
  createDefaultCoolingThermostatClusterServer(localTemperature = 23, occupiedCoolingSetpoint = 25, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
1890
1322
  this.addClusterServer(this.getDefaultCoolingThermostatClusterServer(localTemperature, occupiedCoolingSetpoint, minCoolSetpointLimit, maxCoolSetpointLimit));
1891
1323
  }
1892
- /**
1893
- * Get a default thermostat cluster server with the specified parameters.
1894
- *
1895
- * @param {number} [localTemperature=23] - The local temperature value in degrees Celsius. Defaults to 23°.
1896
- * @param {number} [occupiedHeatingSetpoint=21] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
1897
- * @param {number} [occupiedCoolingSetpoint=25] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
1898
- * @param {number} [minSetpointDeadBand=1] - The minimum setpoint dead band value. Defaults to 1°.
1899
- * @param {number} [minHeatSetpointLimit=0] - The minimum heat setpoint limit value. Defaults to 0°.
1900
- * @param {number} [maxHeatSetpointLimit=50] - The maximum heat setpoint limit value. Defaults to 50°.
1901
- * @param {number} [minCoolSetpointLimit=0] - The minimum cool setpoint limit value. Defaults to 0°.
1902
- * @param {number} [maxCoolSetpointLimit=50] - The maximum cool setpoint limit value. Defaults to 50°.
1903
- * @returns {ThermostatClusterServer} A default thermostat cluster server configured with the specified parameters.
1904
- */
1905
1324
  getDefaultThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, occupiedCoolingSetpoint = 25, minSetpointDeadBand = 1, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
1906
1325
  return ClusterServer(ThermostatCluster.with(Thermostat.Feature.Heating, Thermostat.Feature.Cooling, Thermostat.Feature.AutoMode), {
1907
1326
  localTemperature: localTemperature * 100,
1908
1327
  systemMode: Thermostat.SystemMode.Auto,
1909
1328
  controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.CoolingAndHeating,
1910
- // Thermostat.Feature.Heating
1911
1329
  occupiedHeatingSetpoint: occupiedHeatingSetpoint * 100,
1912
1330
  minHeatSetpointLimit: minHeatSetpointLimit * 100,
1913
1331
  maxHeatSetpointLimit: maxHeatSetpointLimit * 100,
1914
1332
  absMinHeatSetpointLimit: minHeatSetpointLimit * 100,
1915
1333
  absMaxHeatSetpointLimit: maxHeatSetpointLimit * 100,
1916
- // Thermostat.Feature.Cooling
1917
1334
  occupiedCoolingSetpoint: occupiedCoolingSetpoint * 100,
1918
1335
  minCoolSetpointLimit: minCoolSetpointLimit * 100,
1919
1336
  maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
1920
1337
  absMinCoolSetpointLimit: minCoolSetpointLimit * 100,
1921
1338
  absMaxCoolSetpointLimit: maxCoolSetpointLimit * 100,
1922
- // Thermostat.Feature.AutoMode
1923
1339
  minSetpointDeadBand: minSetpointDeadBand * 100,
1924
1340
  thermostatRunningMode: Thermostat.ThermostatRunningMode.Off,
1925
1341
  }, {
@@ -1929,24 +1345,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1929
1345
  },
1930
1346
  }, {});
1931
1347
  }
1932
- /**
1933
- * Creates and adds a default thermostat cluster server to the device.
1934
- *
1935
- * @param {number} [localTemperature=23] - The local temperature value in degrees Celsius. Defaults to 23°.
1936
- * @param {number} [occupiedHeatingSetpoint=21] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
1937
- * @param {number} [occupiedCoolingSetpoint=25] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
1938
- * @param {number} [minSetpointDeadBand=1] - The minimum setpoint dead band value. Defaults to 1°.
1939
- * @param {number} [minHeatSetpointLimit=0] - The minimum heat setpoint limit value. Defaults to 0°.
1940
- * @param {number} [maxHeatSetpointLimit=50] - The maximum heat setpoint limit value. Defaults to 50°.
1941
- * @param {number} [minCoolSetpointLimit=0] - The minimum cool setpoint limit value. Defaults to 0°.
1942
- * @param {number} [maxCoolSetpointLimit=50] - The maximum cool setpoint limit value. Defaults to 50°.
1943
- */
1944
1348
  createDefaultThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, occupiedCoolingSetpoint = 25, minSetpointDeadBand = 1, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
1945
1349
  this.addClusterServer(this.getDefaultThermostatClusterServer(localTemperature, occupiedHeatingSetpoint, occupiedCoolingSetpoint, minSetpointDeadBand, minHeatSetpointLimit, maxHeatSetpointLimit, minCoolSetpointLimit, maxCoolSetpointLimit));
1946
1350
  }
1947
- /**
1948
- * Get a default dummy time sync cluster server. Only needed to create a thermostat.
1949
- */
1950
1351
  getDefaultTimeSyncClusterServer() {
1951
1352
  return ClusterServer(TimeSynchronizationCluster.with(TimeSynchronization.Feature.TimeZone), {
1952
1353
  utcTime: null,
@@ -1978,19 +1379,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
1978
1379
  timeFailure: true,
1979
1380
  });
1980
1381
  }
1981
- /**
1982
- * Creates a default dummy time sync cluster server. Only needed to create a thermostat.
1983
- */
1984
1382
  createDefaultTimeSyncClusterServer() {
1985
1383
  this.addClusterServer(this.getDefaultTimeSyncClusterServer());
1986
1384
  }
1987
- /**
1988
- * Returns the default SmokeCOAlarm Cluster Server.
1989
- *
1990
- * @param smokeState - The state of the smoke alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
1991
- * @param coState - The state of the CO alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
1992
- * @returns The default SmokeCOAlarmClusterServer.
1993
- */
1994
1385
  getDefaultSmokeCOAlarmClusterServer(smokeState = SmokeCoAlarm.AlarmState.Normal, coState = SmokeCoAlarm.AlarmState.Normal) {
1995
1386
  return ClusterServer(SmokeCoAlarmCluster.with(SmokeCoAlarm.Feature.SmokeAlarm, SmokeCoAlarm.Feature.CoAlarm), {
1996
1387
  smokeState,
@@ -2022,24 +1413,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2022
1413
  allClear: true,
2023
1414
  });
2024
1415
  }
2025
- /**
2026
- * Create the default SmokeCOAlarm Cluster Server.
2027
- *
2028
- * @param smokeState - The state of the smoke alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
2029
- * @param coState - The state of the CO alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
2030
- * @returns The default SmokeCOAlarmClusterServer.
2031
- */
2032
1416
  createDefaultSmokeCOAlarmClusterServer(smokeState = SmokeCoAlarm.AlarmState.Normal, coState = SmokeCoAlarm.AlarmState.Normal) {
2033
1417
  this.addClusterServer(this.getDefaultSmokeCOAlarmClusterServer(smokeState, coState));
2034
1418
  }
2035
- /**
2036
- * Returns the default Carbon Monoxide Concentration Measurement Cluster Server.
2037
- *
2038
- * @param {number} measuredValue - The measured value of the concentration.
2039
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2040
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2041
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2042
- */
2043
1419
  getDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2044
1420
  return ClusterServer(CarbonMonoxideConcentrationMeasurementCluster.with('NumericMeasurement'), {
2045
1421
  measuredValue,
@@ -2050,24 +1426,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2050
1426
  measurementMedium,
2051
1427
  }, {}, {});
2052
1428
  }
2053
- /**
2054
- * Create the default Carbon Monoxide Concentration Measurement Cluster Server.
2055
- *
2056
- * @param {number} measuredValue - The measured value of the concentration.
2057
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2058
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2059
- */
2060
1429
  createDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2061
1430
  this.addClusterServer(this.getDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2062
1431
  }
2063
- /**
2064
- * Returns the default Carbon Dioxide Concentration Measurement Cluster Server.
2065
- *
2066
- * @param {number} measuredValue - The measured value of the concentration.
2067
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2068
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2069
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2070
- */
2071
1432
  getDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2072
1433
  return ClusterServer(CarbonDioxideConcentrationMeasurementCluster.with('NumericMeasurement'), {
2073
1434
  measuredValue,
@@ -2078,24 +1439,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2078
1439
  measurementMedium,
2079
1440
  }, {}, {});
2080
1441
  }
2081
- /**
2082
- * Create the default Carbon Dioxide Concentration Measurement Cluster Server.
2083
- *
2084
- * @param {number} measuredValue - The measured value of the concentration.
2085
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2086
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2087
- */
2088
1442
  createDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2089
1443
  this.addClusterServer(this.getDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2090
1444
  }
2091
- /**
2092
- * Returns the default Formaldehyde Concentration Measurement Cluster Server.
2093
- *
2094
- * @param {number} measuredValue - The measured value of the concentration.
2095
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2096
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2097
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2098
- */
2099
1445
  getDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2100
1446
  return ClusterServer(FormaldehydeConcentrationMeasurementCluster.with('NumericMeasurement'), {
2101
1447
  measuredValue,
@@ -2106,24 +1452,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2106
1452
  measurementMedium,
2107
1453
  }, {}, {});
2108
1454
  }
2109
- /**
2110
- * Create the default Formaldehyde Concentration Measurement Cluster Server.
2111
- *
2112
- * @param {number} measuredValue - The measured value of the concentration.
2113
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2114
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2115
- */
2116
1455
  createDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2117
1456
  this.addClusterServer(this.getDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2118
1457
  }
2119
- /**
2120
- * Returns the default Pm1 Concentration Measurement Cluster Server.
2121
- *
2122
- * @param {number} measuredValue - The measured value of the concentration.
2123
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2124
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2125
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2126
- */
2127
1458
  getDefaultPm1ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2128
1459
  return ClusterServer(Pm1ConcentrationMeasurementCluster.with('NumericMeasurement'), {
2129
1460
  measuredValue,
@@ -2134,24 +1465,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2134
1465
  measurementMedium,
2135
1466
  }, {}, {});
2136
1467
  }
2137
- /**
2138
- * Create the default Pm1 Concentration Measurement Cluster Server.
2139
- *
2140
- * @param {number} measuredValue - The measured value of the concentration.
2141
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2142
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2143
- */
2144
1468
  createDefaulPm1ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2145
1469
  this.addClusterServer(this.getDefaultPm1ConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2146
1470
  }
2147
- /**
2148
- * Returns the default Pm25 Concentration Measurement Cluster Server.
2149
- *
2150
- * @param {number} measuredValue - The measured value of the concentration.
2151
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2152
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2153
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2154
- */
2155
1471
  getDefaultPm25ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2156
1472
  return ClusterServer(Pm25ConcentrationMeasurementCluster.with('NumericMeasurement'), {
2157
1473
  measuredValue,
@@ -2162,24 +1478,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2162
1478
  measurementMedium,
2163
1479
  }, {}, {});
2164
1480
  }
2165
- /**
2166
- * Create the default Pm25 Concentration Measurement Cluster Server.
2167
- *
2168
- * @param {number} measuredValue - The measured value of the concentration.
2169
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2170
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2171
- */
2172
1481
  createDefaulPm25ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2173
1482
  this.addClusterServer(this.getDefaultPm25ConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2174
1483
  }
2175
- /**
2176
- * Returns the default Pm10 Concentration Measurement Cluster Server.
2177
- *
2178
- * @param {number} measuredValue - The measured value of the concentration.
2179
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2180
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2181
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2182
- */
2183
1484
  getDefaultPm10ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2184
1485
  return ClusterServer(Pm10ConcentrationMeasurementCluster.with('NumericMeasurement'), {
2185
1486
  measuredValue,
@@ -2190,24 +1491,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2190
1491
  measurementMedium,
2191
1492
  }, {}, {});
2192
1493
  }
2193
- /**
2194
- * Create the default Pm10 Concentration Measurement Cluster Server.
2195
- *
2196
- * @param {number} measuredValue - The measured value of the concentration.
2197
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2198
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2199
- */
2200
1494
  createDefaulPm10ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2201
1495
  this.addClusterServer(this.getDefaultPm10ConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2202
1496
  }
2203
- /**
2204
- * Returns the default Ozone Concentration Measurement Cluster Server.
2205
- *
2206
- * @param {number} measuredValue - The measured value of the concentration.
2207
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2208
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2209
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2210
- */
2211
1497
  getDefaultOzoneConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2212
1498
  return ClusterServer(OzoneConcentrationMeasurementCluster.with('NumericMeasurement'), {
2213
1499
  measuredValue,
@@ -2218,24 +1504,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2218
1504
  measurementMedium,
2219
1505
  }, {}, {});
2220
1506
  }
2221
- /**
2222
- * Create the default Ozone Concentration Measurement Cluster Server.
2223
- *
2224
- * @param {number} measuredValue - The measured value of the concentration.
2225
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2226
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2227
- */
2228
1507
  createDefaulOzoneConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2229
1508
  this.addClusterServer(this.getDefaultOzoneConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2230
1509
  }
2231
- /**
2232
- * Returns the default Radon Concentration Measurement Cluster Server.
2233
- *
2234
- * @param {number} measuredValue - The measured value of the concentration.
2235
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2236
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2237
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2238
- */
2239
1510
  getDefaultRadonConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2240
1511
  return ClusterServer(RadonConcentrationMeasurementCluster.with('NumericMeasurement'), {
2241
1512
  measuredValue,
@@ -2246,24 +1517,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2246
1517
  measurementMedium,
2247
1518
  }, {}, {});
2248
1519
  }
2249
- /**
2250
- * Create the default Radon Concentration Measurement Cluster Server.
2251
- *
2252
- * @param {number} measuredValue - The measured value of the concentration.
2253
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2254
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2255
- */
2256
1520
  createDefaulRadonConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2257
1521
  this.addClusterServer(this.getDefaultRadonConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2258
1522
  }
2259
- /**
2260
- * Returns the default Nitrogen Dioxide Concentration Measurement Cluster Server.
2261
- *
2262
- * @param {number} measuredValue - The measured value of the concentration.
2263
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2264
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2265
- * @returns {ClusterServer} - The default Carbon Monoxide Concentration Measurement Cluster Server.
2266
- */
2267
1523
  getDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2268
1524
  return ClusterServer(NitrogenDioxideConcentrationMeasurementCluster.with('NumericMeasurement'), {
2269
1525
  measuredValue,
@@ -2274,22 +1530,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2274
1530
  measurementMedium,
2275
1531
  }, {}, {});
2276
1532
  }
2277
- /**
2278
- * Create the default Nitrogen Dioxide Concentration Measurement Cluster Server.
2279
- *
2280
- * @param {number} measuredValue - The measured value of the concentration.
2281
- * @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement.
2282
- * @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The medium of measurement.
2283
- */
2284
1533
  createDefaulNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
2285
1534
  this.addClusterServer(this.getDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
2286
1535
  }
2287
- /**
2288
- * Returns the default fan control cluster server rev 2.
2289
- *
2290
- * @param fanMode The fan mode to set. Defaults to `FanControl.FanMode.Off`.
2291
- * @returns The default fan control cluster server.
2292
- */
2293
1536
  getDefaultFanControlClusterServer(fanMode = FanControl.FanMode.Off) {
2294
1537
  return ClusterServer(FanControlCluster.with(FanControl.Feature.MultiSpeed, FanControl.Feature.Auto, FanControl.Feature.Step), {
2295
1538
  fanMode,
@@ -2306,16 +1549,9 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2306
1549
  },
2307
1550
  }, {});
2308
1551
  }
2309
- /**
2310
- * Create the default fan control cluster server rev 2.
2311
- *
2312
- * @param fanMode The fan mode to set. Defaults to `FanControl.FanMode.Off`.
2313
- * @returns The default fan control cluster server.
2314
- */
2315
1552
  createDefaultFanControlClusterServer(fanMode = FanControl.FanMode.Off) {
2316
1553
  this.addClusterServer(this.getDefaultFanControlClusterServer(fanMode));
2317
1554
  }
2318
- // NOTE Support of Device Energy Management Cluster is provisional.
2319
1555
  getDefaultDeviceEnergyManagementClusterServer() {
2320
1556
  return ClusterServer(DeviceEnergyManagementCluster.with(DeviceEnergyManagement.Feature.Pausable, DeviceEnergyManagement.Feature.PowerForecastReporting, DeviceEnergyManagement.Feature.StateForecastReporting), {
2321
1557
  esaType: DeviceEnergyManagement.EsaType.Other,
@@ -2339,7 +1575,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2339
1575
  resumed: true,
2340
1576
  });
2341
1577
  }
2342
- // NOTE Support of Device Energy Management Mode Cluster is provisional.
2343
1578
  getDefaultDeviceEnergyManagementModeClusterServer() {
2344
1579
  return ClusterServer(DeviceEnergyManagementModeCluster, {
2345
1580
  supportedModes: [
@@ -2356,4 +1591,3 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
2356
1591
  }, {});
2357
1592
  }
2358
1593
  }
2359
- //# sourceMappingURL=matterbridgeDevice.js.map