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.
- package/CHANGELOG.md +2 -0
- package/dist/cli.js +0 -26
- package/dist/cluster/export.js +0 -2
- package/dist/defaultConfigSchema.js +0 -23
- package/dist/deviceManager.js +1 -26
- package/dist/index.js +0 -30
- package/dist/logger/export.js +0 -1
- package/dist/matter/export.js +0 -1
- package/dist/matterbridge.js +62 -702
- package/dist/matterbridgeAccessoryPlatform.js +0 -33
- package/dist/matterbridgeBehaviors.js +9 -34
- package/dist/matterbridgeDevice.js +117 -883
- package/dist/matterbridgeDeviceTypes.js +12 -40
- package/dist/matterbridgeDynamicPlatform.js +0 -33
- package/dist/matterbridgeEdge.js +0 -525
- package/dist/matterbridgeEndpoint.js +100 -943
- package/dist/matterbridgePlatform.js +3 -74
- package/dist/matterbridgeTypes.js +0 -24
- package/dist/matterbridgeWebsocket.js +0 -45
- package/dist/pluginManager.js +3 -231
- package/dist/storage/export.js +0 -1
- package/dist/utils/colorUtils.js +2 -78
- package/dist/utils/export.js +0 -1
- package/dist/utils/utils.js +7 -252
- package/frontend/build/asset-manifest.json +3 -3
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/js/{main.a14c87e7.js → main.0ab89802.js} +3 -3
- package/frontend/build/static/js/{main.a14c87e7.js.map → main.0ab89802.js.map} +1 -1
- package/npm-shrinkwrap.json +5 -5
- package/package.json +4 -4
- package/tsconfig.production.json +19 -0
- package/dist/cli.d.ts +0 -25
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cluster/export.d.ts +0 -2
- package/dist/cluster/export.d.ts.map +0 -1
- package/dist/cluster/export.js.map +0 -1
- package/dist/defaultConfigSchema.d.ts +0 -27
- package/dist/defaultConfigSchema.d.ts.map +0 -1
- package/dist/defaultConfigSchema.js.map +0 -1
- package/dist/deviceManager.d.ts +0 -46
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.js.map +0 -1
- package/dist/index.d.ts +0 -40
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger/export.d.ts +0 -2
- package/dist/logger/export.d.ts.map +0 -1
- package/dist/logger/export.js.map +0 -1
- package/dist/matter/export.d.ts +0 -5
- package/dist/matter/export.d.ts.map +0 -1
- package/dist/matter/export.js.map +0 -1
- package/dist/matterbridge.d.ts +0 -466
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -39
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -1127
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDevice.d.ts +0 -5304
- package/dist/matterbridgeDevice.d.ts.map +0 -1
- package/dist/matterbridgeDevice.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -65
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -39
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEdge.d.ts +0 -89
- package/dist/matterbridgeEdge.d.ts.map +0 -1
- package/dist/matterbridgeEdge.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -7368
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -96
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -147
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/matterbridgeWebsocket.d.ts +0 -49
- package/dist/matterbridgeWebsocket.d.ts.map +0 -1
- package/dist/matterbridgeWebsocket.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -238
- package/dist/pluginManager.d.ts.map +0 -1
- package/dist/pluginManager.js.map +0 -1
- package/dist/storage/export.d.ts +0 -2
- package/dist/storage/export.d.ts.map +0 -1
- package/dist/storage/export.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -61
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/export.d.ts +0 -3
- package/dist/utils/export.d.ts.map +0 -1
- package/dist/utils/export.js.map +0 -1
- package/dist/utils/utils.d.ts +0 -221
- package/dist/utils/utils.d.ts.map +0 -1
- package/dist/utils/utils.js.map +0 -1
- /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
|
-
|
|
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"
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
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
|
|
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,
|
|
1172
|
-
currentPositionLiftPercent100ths: positionPercent100ths ?? 0,
|
|
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,
|
|
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
|