matterbridge 1.5.2 → 1.5.4
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 +31 -2
- package/README-DEV.md +4 -2
- package/dist/cluster/export.d.ts +1 -22
- package/dist/cluster/export.d.ts.map +1 -1
- package/dist/cluster/export.js +2 -22
- package/dist/cluster/export.js.map +1 -1
- package/dist/index.d.ts +3 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -32
- package/dist/index.js.map +1 -1
- package/dist/matterbridge.d.ts +3 -1
- package/dist/matterbridge.d.ts.map +1 -1
- package/dist/matterbridge.js +127 -20
- package/dist/matterbridge.js.map +1 -1
- package/dist/matterbridgeDevice.d.ts +4608 -2298
- package/dist/matterbridgeDevice.d.ts.map +1 -1
- package/dist/matterbridgeDevice.js +170 -582
- package/dist/matterbridgeDevice.js.map +1 -1
- package/dist/matterbridgeTypes.d.ts +3 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -1
- package/dist/pluginManager.d.ts.map +1 -1
- package/dist/pluginManager.js +20 -4
- package/dist/pluginManager.js.map +1 -1
- package/frontend/build/asset-manifest.json +3 -3
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/js/{main.cfcfbb06.js → main.f86befcf.js} +3 -3
- package/frontend/build/static/js/main.f86befcf.js.map +1 -0
- package/package.json +13 -8
- package/dist/cluster/AirQualityCluster.d.ts +0 -188
- package/dist/cluster/AirQualityCluster.d.ts.map +0 -1
- package/dist/cluster/AirQualityCluster.js +0 -98
- package/dist/cluster/AirQualityCluster.js.map +0 -1
- package/dist/cluster/BooleanStateConfigurationCluster.d.ts +0 -2200
- package/dist/cluster/BooleanStateConfigurationCluster.d.ts.map +0 -1
- package/dist/cluster/BooleanStateConfigurationCluster.js +0 -388
- package/dist/cluster/BooleanStateConfigurationCluster.js.map +0 -1
- package/dist/cluster/BridgedDeviceBasicInformationCluster.d.ts +0 -223
- package/dist/cluster/BridgedDeviceBasicInformationCluster.d.ts.map +0 -1
- package/dist/cluster/BridgedDeviceBasicInformationCluster.js +0 -177
- package/dist/cluster/BridgedDeviceBasicInformationCluster.js.map +0 -1
- package/dist/cluster/CarbonDioxideConcentrationMeasurementCluster.d.ts +0 -396
- package/dist/cluster/CarbonDioxideConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/CarbonDioxideConcentrationMeasurementCluster.js +0 -30
- package/dist/cluster/CarbonDioxideConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/CarbonMonoxideConcentrationMeasurementCluster.d.ts +0 -396
- package/dist/cluster/CarbonMonoxideConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/CarbonMonoxideConcentrationMeasurementCluster.js +0 -30
- package/dist/cluster/CarbonMonoxideConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/ConcentrationMeasurementCluster.d.ts +0 -524
- package/dist/cluster/ConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/ConcentrationMeasurementCluster.js +0 -282
- package/dist/cluster/ConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/DeviceEnergyManagementCluster.d.ts +0 -7851
- package/dist/cluster/DeviceEnergyManagementCluster.d.ts.map +0 -1
- package/dist/cluster/DeviceEnergyManagementCluster.js +0 -1634
- package/dist/cluster/DeviceEnergyManagementCluster.js.map +0 -1
- package/dist/cluster/DeviceEnergyManagementModeCluster.d.ts +0 -68
- package/dist/cluster/DeviceEnergyManagementModeCluster.d.ts.map +0 -1
- package/dist/cluster/DeviceEnergyManagementModeCluster.js +0 -49
- package/dist/cluster/DeviceEnergyManagementModeCluster.js.map +0 -1
- package/dist/cluster/ElectricalEnergyMeasurementCluster.d.ts +0 -4978
- package/dist/cluster/ElectricalEnergyMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/ElectricalEnergyMeasurementCluster.js +0 -510
- package/dist/cluster/ElectricalEnergyMeasurementCluster.js.map +0 -1
- package/dist/cluster/ElectricalPowerMeasurementCluster.d.ts +0 -3250
- package/dist/cluster/ElectricalPowerMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/ElectricalPowerMeasurementCluster.js +0 -675
- package/dist/cluster/ElectricalPowerMeasurementCluster.js.map +0 -1
- package/dist/cluster/FanControlCluster.d.ts +0 -1583
- package/dist/cluster/FanControlCluster.d.ts.map +0 -1
- package/dist/cluster/FanControlCluster.js +0 -492
- package/dist/cluster/FanControlCluster.js.map +0 -1
- package/dist/cluster/FormaldehydeConcentrationMeasurementCluster.d.ts +0 -396
- package/dist/cluster/FormaldehydeConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/FormaldehydeConcentrationMeasurementCluster.js +0 -30
- package/dist/cluster/FormaldehydeConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/MeasurementAccuracy.d.ts +0 -63
- package/dist/cluster/MeasurementAccuracy.d.ts.map +0 -1
- package/dist/cluster/MeasurementAccuracy.js +0 -47
- package/dist/cluster/MeasurementAccuracy.js.map +0 -1
- package/dist/cluster/MeasurementAccuracyRange.d.ts +0 -134
- package/dist/cluster/MeasurementAccuracyRange.d.ts.map +0 -1
- package/dist/cluster/MeasurementAccuracyRange.js +0 -103
- package/dist/cluster/MeasurementAccuracyRange.js.map +0 -1
- package/dist/cluster/MeasurementType.d.ts +0 -68
- package/dist/cluster/MeasurementType.d.ts.map +0 -1
- package/dist/cluster/MeasurementType.js +0 -69
- package/dist/cluster/MeasurementType.js.map +0 -1
- package/dist/cluster/NitrogenDioxideConcentrationMeasurementCluster.d.ts +0 -396
- package/dist/cluster/NitrogenDioxideConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/NitrogenDioxideConcentrationMeasurementCluster.js +0 -34
- package/dist/cluster/NitrogenDioxideConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/OzoneConcentrationMeasurementCluster.d.ts +0 -395
- package/dist/cluster/OzoneConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/OzoneConcentrationMeasurementCluster.js +0 -29
- package/dist/cluster/OzoneConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/Pm10ConcentrationMeasurementCluster.d.ts +0 -395
- package/dist/cluster/Pm10ConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/Pm10ConcentrationMeasurementCluster.js +0 -29
- package/dist/cluster/Pm10ConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/Pm1ConcentrationMeasurementCluster.d.ts +0 -395
- package/dist/cluster/Pm1ConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/Pm1ConcentrationMeasurementCluster.js +0 -29
- package/dist/cluster/Pm1ConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/Pm25ConcentrationMeasurementCluster.d.ts +0 -395
- package/dist/cluster/Pm25ConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/Pm25ConcentrationMeasurementCluster.js +0 -29
- package/dist/cluster/Pm25ConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/PowerTopologyCluster.d.ts +0 -345
- package/dist/cluster/PowerTopologyCluster.d.ts.map +0 -1
- package/dist/cluster/PowerTopologyCluster.js +0 -138
- package/dist/cluster/PowerTopologyCluster.js.map +0 -1
- package/dist/cluster/RadonConcentrationMeasurementCluster.d.ts +0 -395
- package/dist/cluster/RadonConcentrationMeasurementCluster.d.ts.map +0 -1
- package/dist/cluster/RadonConcentrationMeasurementCluster.js +0 -29
- package/dist/cluster/RadonConcentrationMeasurementCluster.js.map +0 -1
- package/dist/cluster/SmokeCoAlarmCluster.d.ts +0 -1575
- package/dist/cluster/SmokeCoAlarmCluster.d.ts.map +0 -1
- package/dist/cluster/SmokeCoAlarmCluster.js +0 -603
- package/dist/cluster/SmokeCoAlarmCluster.js.map +0 -1
- package/dist/cluster/TvocCluster.d.ts +0 -465
- package/dist/cluster/TvocCluster.d.ts.map +0 -1
- package/dist/cluster/TvocCluster.js +0 -197
- package/dist/cluster/TvocCluster.js.map +0 -1
- package/frontend/build/static/js/main.cfcfbb06.js.map +0 -1
- /package/frontend/build/static/js/{main.cfcfbb06.js.LICENSE.txt → main.f86befcf.js.LICENSE.txt} +0 -0
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @file matterbridgeDevice.ts
|
|
5
5
|
* @author Luca Liguori
|
|
6
6
|
* @date 2023-12-29
|
|
7
|
-
* @version
|
|
7
|
+
* @version 2.0.0
|
|
8
8
|
*
|
|
9
|
-
* Copyright 2023, 2024 Luca Liguori.
|
|
9
|
+
* Copyright 2023, 2024, 2025 Luca Liguori.
|
|
10
10
|
*
|
|
11
11
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
12
|
* you may not use this file except in compliance with the License.
|
|
@@ -20,35 +20,14 @@
|
|
|
20
20
|
* See the License for the specific language governing permissions and
|
|
21
21
|
* limitations under the License. *
|
|
22
22
|
*/
|
|
23
|
-
import { BasicInformationCluster, BooleanState, BooleanStateCluster, ClusterServer, ColorControl, ColorControlCluster, DoorLock, DoorLockCluster, FanControl, FanControlCluster, FixedLabelCluster, FlowMeasurement, FlowMeasurementCluster, Groups, GroupsCluster, GroupsClusterHandler, Identify, IdentifyCluster, IlluminanceMeasurement, IlluminanceMeasurementCluster, LevelControl, LevelControlCluster, ModeSelectCluster, OccupancySensing, OccupancySensingCluster, OnOff, OnOffCluster, PowerSource, PowerSourceCluster, PowerSourceConfigurationCluster, PressureMeasurement, PressureMeasurementCluster, RelativeHumidityMeasurement, RelativeHumidityMeasurementCluster,
|
|
24
|
-
import {
|
|
23
|
+
import { AirQuality, AirQualityCluster, BasicInformationCluster, BooleanState, BooleanStateCluster, BooleanStateConfiguration, BooleanStateConfigurationCluster, BridgedDeviceBasicInformation, BridgedDeviceBasicInformationCluster, CarbonDioxideConcentrationMeasurement, CarbonDioxideConcentrationMeasurementCluster, CarbonMonoxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurementCluster, ClusterServer, ColorControl, ColorControlCluster, ConcentrationMeasurement, DeviceEnergyManagement, DeviceEnergyManagementCluster, DeviceEnergyManagementMode, DeviceEnergyManagementModeCluster, DoorLock, DoorLockCluster, ElectricalEnergyMeasurement, ElectricalEnergyMeasurementCluster, ElectricalPowerMeasurement, ElectricalPowerMeasurementCluster, FanControl, FanControlCluster, FixedLabelCluster, FlowMeasurement, FlowMeasurementCluster, FormaldehydeConcentrationMeasurement, FormaldehydeConcentrationMeasurementCluster, Groups, GroupsCluster, GroupsClusterHandler, Identify, IdentifyCluster, IlluminanceMeasurement, IlluminanceMeasurementCluster, LevelControl, LevelControlCluster, MeasurementType, 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, getClusterNameById, } from '@project-chip/matter-node.js/cluster';
|
|
24
|
+
import { Specification } from '@project-chip/matter-node.js/model';
|
|
25
|
+
import { EndpointNumber, VendorId } from '@project-chip/matter-node.js/datatype';
|
|
25
26
|
import { Device, DeviceClasses, DeviceTypeDefinition, Endpoint } from '@project-chip/matter-node.js/device';
|
|
26
27
|
import { extendPublicHandlerMethods } from '@project-chip/matter-node.js/util';
|
|
27
28
|
import { EveHistory, MatterHistory } from 'matter-history';
|
|
28
29
|
import { AnsiLogger, CYAN, YELLOW, db, debugStringify, hk, or, zb } from 'node-ansi-logger';
|
|
29
|
-
import { AirQuality, AirQualityCluster } from './cluster/AirQualityCluster.js';
|
|
30
30
|
import { createHash } from 'crypto';
|
|
31
|
-
import { TvocMeasurement, TvocMeasurementCluster } from './cluster/TvocCluster.js';
|
|
32
|
-
import { BridgedDeviceBasicInformation, BridgedDeviceBasicInformationCluster } from './cluster/BridgedDeviceBasicInformationCluster.js';
|
|
33
|
-
import { PowerTopology, PowerTopologyCluster } from './cluster/PowerTopologyCluster.js';
|
|
34
|
-
import { ElectricalPowerMeasurement, ElectricalPowerMeasurementCluster } from './cluster/ElectricalPowerMeasurementCluster.js';
|
|
35
|
-
import { ElectricalEnergyMeasurement, ElectricalEnergyMeasurementCluster } from './cluster/ElectricalEnergyMeasurementCluster.js';
|
|
36
|
-
import { MeasurementType } from './cluster/MeasurementType.js';
|
|
37
|
-
import { CarbonMonoxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurementCluster } from './cluster/CarbonMonoxideConcentrationMeasurementCluster.js';
|
|
38
|
-
import { SmokeCoAlarm, SmokeCoAlarmCluster } from './cluster/SmokeCoAlarmCluster.js';
|
|
39
|
-
import { BooleanStateConfiguration, BooleanStateConfigurationCluster } from './cluster/BooleanStateConfigurationCluster.js';
|
|
40
|
-
import { DeviceEnergyManagement, DeviceEnergyManagementCluster } from './cluster/DeviceEnergyManagementCluster.js';
|
|
41
|
-
import { DeviceEnergyManagementMode, DeviceEnergyManagementModeCluster } from './cluster/DeviceEnergyManagementModeCluster.js';
|
|
42
|
-
// import { FanControl, FanControlCluster } from './cluster/FanControlCluster.js';
|
|
43
|
-
import { ConcentrationMeasurement } from './cluster/ConcentrationMeasurementCluster.js';
|
|
44
|
-
import { CarbonDioxideConcentrationMeasurement, CarbonDioxideConcentrationMeasurementCluster } from './cluster/CarbonDioxideConcentrationMeasurementCluster.js';
|
|
45
|
-
import { OzoneConcentrationMeasurement, OzoneConcentrationMeasurementCluster } from './cluster/OzoneConcentrationMeasurementCluster.js';
|
|
46
|
-
import { Pm1ConcentrationMeasurement, Pm1ConcentrationMeasurementCluster } from './cluster/Pm1ConcentrationMeasurementCluster.js';
|
|
47
|
-
import { Pm25ConcentrationMeasurement, Pm25ConcentrationMeasurementCluster } from './cluster/Pm25ConcentrationMeasurementCluster.js';
|
|
48
|
-
import { Pm10ConcentrationMeasurement, Pm10ConcentrationMeasurementCluster } from './cluster/Pm10ConcentrationMeasurementCluster.js';
|
|
49
|
-
import { RadonConcentrationMeasurement, RadonConcentrationMeasurementCluster } from './cluster/RadonConcentrationMeasurementCluster.js';
|
|
50
|
-
import { NitrogenDioxideConcentrationMeasurement, NitrogenDioxideConcentrationMeasurementCluster } from './cluster/NitrogenDioxideConcentrationMeasurementCluster.js';
|
|
51
|
-
import { FormaldehydeConcentrationMeasurement, FormaldehydeConcentrationMeasurementCluster } from './cluster/FormaldehydeConcentrationMeasurementCluster.js';
|
|
52
31
|
// Matter 1.2 and 1.3 device types
|
|
53
32
|
export const airQualitySensor = DeviceTypeDefinition({
|
|
54
33
|
name: 'MA-airQualitySensor',
|
|
@@ -68,7 +47,7 @@ export const airQualitySensor = DeviceTypeDefinition({
|
|
|
68
47
|
Pm25ConcentrationMeasurement.Cluster.id,
|
|
69
48
|
Pm10ConcentrationMeasurement.Cluster.id,
|
|
70
49
|
RadonConcentrationMeasurement.Cluster.id,
|
|
71
|
-
|
|
50
|
+
TotalVolatileOrganicCompoundsConcentrationMeasurement.Cluster.id,
|
|
72
51
|
],
|
|
73
52
|
});
|
|
74
53
|
export const waterFreezeDetector = DeviceTypeDefinition({
|
|
@@ -135,13 +114,61 @@ export const bridgedNode = DeviceTypeDefinition({
|
|
|
135
114
|
requiredServerClusters: [BridgedDeviceBasicInformation.Cluster.id],
|
|
136
115
|
optionalServerClusters: [PowerSource.Cluster.id],
|
|
137
116
|
});
|
|
117
|
+
export const genericSwitch = DeviceTypeDefinition({
|
|
118
|
+
name: 'MA-genericswitch',
|
|
119
|
+
code: 0x000f,
|
|
120
|
+
deviceClass: DeviceClasses.Simple,
|
|
121
|
+
revision: 1,
|
|
122
|
+
requiredServerClusters: [IdentifyCluster.id, SwitchCluster.id],
|
|
123
|
+
optionalServerClusters: [FixedLabelCluster.id],
|
|
124
|
+
});
|
|
125
|
+
export const onOffLight = DeviceTypeDefinition({
|
|
126
|
+
name: 'MA-onofflight',
|
|
127
|
+
code: 0x0100,
|
|
128
|
+
deviceClass: DeviceClasses.Simple,
|
|
129
|
+
revision: 2,
|
|
130
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id],
|
|
131
|
+
optionalServerClusters: [LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
132
|
+
});
|
|
133
|
+
export const dimmableLight = DeviceTypeDefinition({
|
|
134
|
+
name: 'MA-dimmablelight',
|
|
135
|
+
code: 0x0101,
|
|
136
|
+
deviceClass: DeviceClasses.Simple,
|
|
137
|
+
revision: 2,
|
|
138
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
139
|
+
optionalServerClusters: [ColorControl.Cluster.id],
|
|
140
|
+
});
|
|
141
|
+
export const colorTemperatureLight = DeviceTypeDefinition({
|
|
142
|
+
name: 'MA-colortemperaturelight',
|
|
143
|
+
code: 0x010c,
|
|
144
|
+
deviceClass: DeviceClasses.Simple,
|
|
145
|
+
revision: 2,
|
|
146
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
147
|
+
optionalServerClusters: [],
|
|
148
|
+
});
|
|
149
|
+
export const onOffOutlet = DeviceTypeDefinition({
|
|
150
|
+
name: 'MA-onoffpluginunit',
|
|
151
|
+
code: 0x010a,
|
|
152
|
+
deviceClass: DeviceClasses.Simple,
|
|
153
|
+
revision: 2,
|
|
154
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id],
|
|
155
|
+
optionalServerClusters: [LevelControl.Cluster.id],
|
|
156
|
+
});
|
|
157
|
+
export const dimmableOutlet = DeviceTypeDefinition({
|
|
158
|
+
name: 'MA-dimmablepluginunit',
|
|
159
|
+
code: 0x010b,
|
|
160
|
+
deviceClass: DeviceClasses.Simple,
|
|
161
|
+
revision: 2,
|
|
162
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
163
|
+
optionalServerClusters: [],
|
|
164
|
+
});
|
|
138
165
|
// Custom device types: switch without ClientClusters
|
|
139
166
|
export const onOffSwitch = DeviceTypeDefinition({
|
|
140
167
|
name: 'MA-onoffswitch',
|
|
141
168
|
code: 0x0103,
|
|
142
169
|
deviceClass: DeviceClasses.Simple,
|
|
143
170
|
revision: 2,
|
|
144
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, Scenes.Cluster.id
|
|
171
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id],
|
|
145
172
|
optionalServerClusters: [LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
146
173
|
});
|
|
147
174
|
export const dimmableSwitch = DeviceTypeDefinition({
|
|
@@ -149,7 +176,7 @@ export const dimmableSwitch = DeviceTypeDefinition({
|
|
|
149
176
|
code: 0x0104,
|
|
150
177
|
deviceClass: DeviceClasses.Simple,
|
|
151
178
|
revision: 2,
|
|
152
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, Scenes.Cluster.id
|
|
179
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
153
180
|
optionalServerClusters: [ColorControl.Cluster.id],
|
|
154
181
|
});
|
|
155
182
|
export const colorTemperatureSwitch = DeviceTypeDefinition({
|
|
@@ -157,7 +184,7 @@ export const colorTemperatureSwitch = DeviceTypeDefinition({
|
|
|
157
184
|
code: 0x0105,
|
|
158
185
|
deviceClass: DeviceClasses.Simple,
|
|
159
186
|
revision: 2,
|
|
160
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, Scenes.Cluster.id
|
|
187
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
161
188
|
optionalServerClusters: [],
|
|
162
189
|
});
|
|
163
190
|
export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
@@ -402,8 +429,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
402
429
|
endpoint.addClusterServer(this.getDefaultIdentifyClusterServer());
|
|
403
430
|
if (includeServerList.includes(Groups.Cluster.id))
|
|
404
431
|
endpoint.addClusterServer(this.getDefaultGroupsClusterServer());
|
|
405
|
-
if (includeServerList.includes(
|
|
406
|
-
endpoint.addClusterServer(this.getDefaultScenesClusterServer());
|
|
432
|
+
// if (includeServerList.includes(ScenesManagement.Cluster.id)) endpoint.addClusterServer(this.getDefaultScenesClusterServer());
|
|
407
433
|
if (includeServerList.includes(OnOff.Cluster.id))
|
|
408
434
|
endpoint.addClusterServer(this.getDefaultOnOffClusterServer());
|
|
409
435
|
if (includeServerList.includes(LevelControl.Cluster.id))
|
|
@@ -416,7 +442,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
416
442
|
endpoint.addClusterServer(this.getDefaultDoorLockClusterServer());
|
|
417
443
|
if (includeServerList.includes(Thermostat.Cluster.id))
|
|
418
444
|
endpoint.addClusterServer(this.getDefaultThermostatClusterServer());
|
|
419
|
-
if (includeServerList.includes(
|
|
445
|
+
if (includeServerList.includes(TimeSynchronization.Cluster.id))
|
|
420
446
|
endpoint.addClusterServer(this.getDefaultTimeSyncClusterServer());
|
|
421
447
|
if (includeServerList.includes(WindowCovering.Cluster.id))
|
|
422
448
|
endpoint.addClusterServer(this.getDefaultWindowCoveringClusterServer());
|
|
@@ -440,7 +466,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
440
466
|
endpoint.addClusterServer(this.getDefaultPowerSourceWiredClusterServer());
|
|
441
467
|
if (includeServerList.includes(EveHistory.Cluster.id))
|
|
442
468
|
endpoint.addClusterServer(MatterHistory.getEveHistoryClusterServer());
|
|
443
|
-
// if (includeServerList.includes(ElectricalMeasurement.Cluster.id)) endpoint.addClusterServer(this.getDefaultElectricalMeasurementClusterServer());
|
|
444
469
|
if (includeServerList.includes(PowerTopology.Cluster.id))
|
|
445
470
|
endpoint.addClusterServer(this.getDefaultPowerTopologyClusterServer());
|
|
446
471
|
if (includeServerList.includes(ElectricalPowerMeasurement.Cluster.id))
|
|
@@ -469,7 +494,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
469
494
|
endpoint.addClusterServer(this.getDefaultPm10ConcentrationMeasurementClusterServer());
|
|
470
495
|
if (includeServerList.includes(RadonConcentrationMeasurement.Cluster.id))
|
|
471
496
|
endpoint.addClusterServer(this.getDefaultRadonConcentrationMeasurementClusterServer());
|
|
472
|
-
if (includeServerList.includes(
|
|
497
|
+
if (includeServerList.includes(TotalVolatileOrganicCompoundsConcentrationMeasurement.Cluster.id))
|
|
473
498
|
endpoint.addClusterServer(this.getDefaultTvocMeasurementClusterServer());
|
|
474
499
|
if (includeServerList.includes(FanControl.Cluster.id))
|
|
475
500
|
endpoint.addClusterServer(this.getDefaultFanControlClusterServer());
|
|
@@ -631,6 +656,44 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
631
656
|
`to ${YELLOW}${typeof value === 'object' ? debugStringify(value) : value}${db}`);
|
|
632
657
|
return true;
|
|
633
658
|
}
|
|
659
|
+
/**
|
|
660
|
+
* Subscribes to an attribute on a cluster.
|
|
661
|
+
*
|
|
662
|
+
* @param {ClusterId} clusterId - The ID of the cluster.
|
|
663
|
+
* @param {string} attribute - The name of the attribute to subscribe to.
|
|
664
|
+
* @param {(newValue: any, oldValue: any) => void} listener - A callback function that will be called when the attribute value changes.
|
|
665
|
+
* @param {AnsiLogger} log - (Optional) An AnsiLogger instance for logging errors and information.
|
|
666
|
+
* @param {Endpoint} endpoint - (Optional) The endpoint to subscribe the attribute on. If not provided, the current endpoint will be used.
|
|
667
|
+
* @returns A boolean indicating whether the subscription was successful.
|
|
668
|
+
*/
|
|
669
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
670
|
+
subscribeAttribute(clusterId, attribute, listener, log, endpoint) {
|
|
671
|
+
if (!endpoint)
|
|
672
|
+
endpoint = this;
|
|
673
|
+
const clusterServer = endpoint.getClusterServerById(clusterId);
|
|
674
|
+
if (!clusterServer) {
|
|
675
|
+
log?.error(`subscribeAttribute error: Cluster ${clusterId} not found on endpoint ${endpoint.name}:${endpoint.number}`);
|
|
676
|
+
return false;
|
|
677
|
+
}
|
|
678
|
+
const capitalizedAttributeName = attribute.charAt(0).toUpperCase() + attribute.slice(1);
|
|
679
|
+
if (!clusterServer.isAttributeSupportedByName(attribute) && !clusterServer.isAttributeSupportedByName(capitalizedAttributeName)) {
|
|
680
|
+
if (log)
|
|
681
|
+
log.error(`subscribeAttribute error: Attribute ${attribute} not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
|
|
682
|
+
return false;
|
|
683
|
+
}
|
|
684
|
+
// Find the subscribe method
|
|
685
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
686
|
+
if (!clusterServer[`subscribe${capitalizedAttributeName}Attribute`]) {
|
|
687
|
+
log?.error(`subscribeAttribute error: subscribe${capitalizedAttributeName}Attribute not found on Cluster ${clusterServer.name} on endpoint ${endpoint.name}:${endpoint.number}`);
|
|
688
|
+
return false;
|
|
689
|
+
}
|
|
690
|
+
// Subscribe to the attribute
|
|
691
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
|
|
692
|
+
const subscribe = clusterServer[`subscribe${capitalizedAttributeName}Attribute`];
|
|
693
|
+
subscribe(listener);
|
|
694
|
+
log?.info(`${db}Subscribe endpoint ${or}${endpoint.name}:${endpoint.number}${db} attribute ${hk}${clusterServer.name}.${capitalizedAttributeName}${db}`);
|
|
695
|
+
return true;
|
|
696
|
+
}
|
|
634
697
|
/**
|
|
635
698
|
* Serializes the Matterbridge device into a serialized object.
|
|
636
699
|
*
|
|
@@ -648,7 +711,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
648
711
|
serialNumber: this.serialNumber,
|
|
649
712
|
deviceName: this.deviceName,
|
|
650
713
|
uniqueId: this.uniqueId,
|
|
651
|
-
productId: cluster.attributes.productId?.getLocal(),
|
|
652
714
|
productName: cluster.attributes.productName?.getLocal(),
|
|
653
715
|
vendorId: cluster.attributes.vendorId?.getLocal(),
|
|
654
716
|
vendorName: cluster.attributes.vendorName?.getLocal(),
|
|
@@ -682,475 +744,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
682
744
|
}
|
|
683
745
|
return device;
|
|
684
746
|
}
|
|
685
|
-
/**
|
|
686
|
-
* Returns a default static EveHistoryClusterServer object with the specified voltage, current, power, and consumption values.
|
|
687
|
-
* This shows up in HA as a static sensor!
|
|
688
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
689
|
-
* @param voltage - The voltage value (default: 0).
|
|
690
|
-
* @param current - The current value (default: 0).
|
|
691
|
-
* @param power - The power value (default: 0).
|
|
692
|
-
* @param consumption - The consumption value (default: 0).
|
|
693
|
-
* @returns The default static EveHistoryClusterServer object.
|
|
694
|
-
*/
|
|
695
|
-
/*
|
|
696
|
-
getDefaultStaticEveHistoryClusterServer(voltage = 0, current = 0, power = 0, consumption = 0) {
|
|
697
|
-
return ClusterServer(
|
|
698
|
-
EveHistoryCluster.with(EveHistory.Feature.EveEnergy),
|
|
699
|
-
{
|
|
700
|
-
// Dynamic attributes
|
|
701
|
-
ConfigDataGet: Uint8Array.fromHex(''),
|
|
702
|
-
ConfigDataSet: Uint8Array.fromHex(''),
|
|
703
|
-
HistoryStatus: Uint8Array.fromHex(''),
|
|
704
|
-
HistoryEntries: Uint8Array.fromHex(''),
|
|
705
|
-
HistoryRequest: Uint8Array.fromHex(''),
|
|
706
|
-
HistorySetTime: Uint8Array.fromHex(''),
|
|
707
|
-
LastEvent: 0,
|
|
708
|
-
ResetTotal: 0,
|
|
709
|
-
// Normal static attributes
|
|
710
|
-
Voltage: voltage,
|
|
711
|
-
Current: current,
|
|
712
|
-
Consumption: power,
|
|
713
|
-
TotalConsumption: consumption,
|
|
714
|
-
EnergyUnknown: 1,
|
|
715
|
-
ChildLock: false,
|
|
716
|
-
RLoc: 46080,
|
|
717
|
-
},
|
|
718
|
-
{},
|
|
719
|
-
{},
|
|
720
|
-
);
|
|
721
|
-
}
|
|
722
|
-
*/
|
|
723
|
-
/**
|
|
724
|
-
* Create a default static EveHistoryClusterServer object with the specified voltage, current, power, and consumption values.
|
|
725
|
-
* This shows up in HA as a static sensor!
|
|
726
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
727
|
-
* @param voltage - The voltage value (default: 0).
|
|
728
|
-
* @param current - The current value (default: 0).
|
|
729
|
-
* @param power - The power value (default: 0).
|
|
730
|
-
* @param consumption - The consumption value (default: 0).
|
|
731
|
-
* @returns The default static EveHistoryClusterServer object.
|
|
732
|
-
*/
|
|
733
|
-
/*
|
|
734
|
-
createDefaultStaticEveHistoryClusterServer(voltage = 0, current = 0, power = 0, consumption = 0) {
|
|
735
|
-
this.addClusterServer(this.getDefaultStaticEveHistoryClusterServer(voltage, current, power, consumption));
|
|
736
|
-
}
|
|
737
|
-
*/
|
|
738
|
-
/**
|
|
739
|
-
* Creates a room Eve History Cluster Server.
|
|
740
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
741
|
-
*
|
|
742
|
-
* @param history - The MatterHistory object.
|
|
743
|
-
* @param log - The AnsiLogger object.
|
|
744
|
-
*/
|
|
745
|
-
/*
|
|
746
|
-
createRoomEveHistoryClusterServer(history: MatterHistory, log: AnsiLogger) {
|
|
747
|
-
history.setMatterHystoryType('room', this.serialNumber);
|
|
748
|
-
this.addClusterServer(
|
|
749
|
-
ClusterServer(
|
|
750
|
-
EveHistoryCluster.with(EveHistory.Feature.EveRoom),
|
|
751
|
-
{
|
|
752
|
-
// Dynamic attributes
|
|
753
|
-
ConfigDataGet: Uint8Array.fromHex(''),
|
|
754
|
-
ConfigDataSet: Uint8Array.fromHex(''),
|
|
755
|
-
HistoryStatus: Uint8Array.fromHex(''),
|
|
756
|
-
HistoryEntries: Uint8Array.fromHex(''),
|
|
757
|
-
HistoryRequest: Uint8Array.fromHex(''),
|
|
758
|
-
HistorySetTime: Uint8Array.fromHex(''),
|
|
759
|
-
// Normal attributes
|
|
760
|
-
TemperatureDisplayUnits: TemperatureDisplayUnits.CELSIUS,
|
|
761
|
-
RLoc: 46080,
|
|
762
|
-
},
|
|
763
|
-
{
|
|
764
|
-
ConfigDataGetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
765
|
-
log.debug(`ConfigDataGetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
766
|
-
return history.OnGetConfigData(isFabricFiltered);
|
|
767
|
-
},
|
|
768
|
-
|
|
769
|
-
ConfigDataSetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
770
|
-
log.debug(`ConfigDataSetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
771
|
-
return Uint8Array.fromHex('');
|
|
772
|
-
},
|
|
773
|
-
ConfigDataSetAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
774
|
-
log.debug(`ConfigDataSetAttributeSetter [${value.toHex()}] ${attributes.ConfigDataSet} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
775
|
-
return history.OnSetConfigData(value);
|
|
776
|
-
},
|
|
777
|
-
|
|
778
|
-
HistoryStatusAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
779
|
-
log.debug(`HistoryStatusAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
780
|
-
return history.OnGetHistoryStatus(isFabricFiltered);
|
|
781
|
-
},
|
|
782
|
-
|
|
783
|
-
HistoryEntriesAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
784
|
-
log.debug(`HistoryEntriesAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
785
|
-
return history.OnGetHistoryEntries();
|
|
786
|
-
},
|
|
787
|
-
|
|
788
|
-
HistorySetTimeAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
789
|
-
log.debug(`HistorySetTimeAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
790
|
-
return Uint8Array.fromHex('');
|
|
791
|
-
},
|
|
792
|
-
HistorySetTimeAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
793
|
-
log.debug(`HistorySetTimeAttributeSetter ${value.toHex()} ${attributes.HistorySetTime} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
794
|
-
return history.OnSetHistorySetTime(value);
|
|
795
|
-
},
|
|
796
|
-
|
|
797
|
-
HistoryRequestAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
798
|
-
log.debug(`HistoryRequestAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
799
|
-
return Uint8Array.fromHex('');
|
|
800
|
-
},
|
|
801
|
-
HistoryRequestAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
802
|
-
log.debug(`HistoryRequestAttributeSetter ${value.toHex()} ${attributes.HistoryRequest} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
803
|
-
return history.OnSetHistoryRequest(value);
|
|
804
|
-
},
|
|
805
|
-
},
|
|
806
|
-
{},
|
|
807
|
-
),
|
|
808
|
-
);
|
|
809
|
-
}
|
|
810
|
-
*/
|
|
811
|
-
/**
|
|
812
|
-
* Creates a Weather Eve History Cluster Server.
|
|
813
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
814
|
-
*
|
|
815
|
-
* @param history - The MatterHistory instance.
|
|
816
|
-
* @param log - The AnsiLogger instance.
|
|
817
|
-
*/
|
|
818
|
-
/*
|
|
819
|
-
createWeatherEveHistoryClusterServer(history: MatterHistory, log: AnsiLogger) {
|
|
820
|
-
history.setMatterHystoryType('weather', this.serialNumber);
|
|
821
|
-
this.addClusterServer(
|
|
822
|
-
ClusterServer(
|
|
823
|
-
EveHistoryCluster.with(EveHistory.Feature.EveWeather),
|
|
824
|
-
{
|
|
825
|
-
// Dynamic attributes
|
|
826
|
-
ConfigDataGet: Uint8Array.fromHex(''),
|
|
827
|
-
ConfigDataSet: Uint8Array.fromHex(''),
|
|
828
|
-
HistoryStatus: Uint8Array.fromHex(''),
|
|
829
|
-
HistoryEntries: Uint8Array.fromHex(''),
|
|
830
|
-
HistoryRequest: Uint8Array.fromHex(''),
|
|
831
|
-
HistorySetTime: Uint8Array.fromHex(''),
|
|
832
|
-
// Normal attributes
|
|
833
|
-
Elevation: 0,
|
|
834
|
-
AirPressure: 1000,
|
|
835
|
-
WeatherTrend: WeatherTrend.SUN,
|
|
836
|
-
TemperatureDisplayUnits: TemperatureDisplayUnits.CELSIUS,
|
|
837
|
-
RLoc: 46080,
|
|
838
|
-
},
|
|
839
|
-
{
|
|
840
|
-
ConfigDataGetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
841
|
-
log.debug(`ConfigDataGetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
842
|
-
return history.OnGetConfigData(isFabricFiltered);
|
|
843
|
-
},
|
|
844
|
-
|
|
845
|
-
ConfigDataSetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
846
|
-
log.debug(`ConfigDataSetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
847
|
-
return Uint8Array.fromHex('');
|
|
848
|
-
},
|
|
849
|
-
ConfigDataSetAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
850
|
-
log.debug(`ConfigDataSetAttributeSetter [${value.toHex()}] ${attributes.ConfigDataSet} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
851
|
-
return history.OnSetConfigData(value);
|
|
852
|
-
},
|
|
853
|
-
|
|
854
|
-
HistoryStatusAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
855
|
-
log.debug(`HistoryStatusAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
856
|
-
return history.OnGetHistoryStatus(isFabricFiltered);
|
|
857
|
-
},
|
|
858
|
-
|
|
859
|
-
HistoryEntriesAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
860
|
-
log.debug(`HistoryEntriesAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
861
|
-
return history.OnGetHistoryEntries();
|
|
862
|
-
},
|
|
863
|
-
|
|
864
|
-
HistorySetTimeAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
865
|
-
log.debug(`HistorySetTimeAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
866
|
-
return Uint8Array.fromHex('');
|
|
867
|
-
},
|
|
868
|
-
HistorySetTimeAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
869
|
-
log.debug(`HistorySetTimeAttributeSetter ${value.toHex()} ${attributes.HistorySetTime} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
870
|
-
return history.OnSetHistorySetTime(value);
|
|
871
|
-
},
|
|
872
|
-
|
|
873
|
-
HistoryRequestAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
874
|
-
log.debug(`HistoryRequestAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
875
|
-
return Uint8Array.fromHex('');
|
|
876
|
-
},
|
|
877
|
-
HistoryRequestAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
878
|
-
log.debug(`HistoryRequestAttributeSetter ${value.toHex()} ${attributes.HistoryRequest} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
879
|
-
return history.OnSetHistoryRequest(value);
|
|
880
|
-
},
|
|
881
|
-
},
|
|
882
|
-
{},
|
|
883
|
-
),
|
|
884
|
-
);
|
|
885
|
-
}
|
|
886
|
-
*/
|
|
887
|
-
/**
|
|
888
|
-
* Creates an Energy Eve History Cluster Server.
|
|
889
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
890
|
-
*
|
|
891
|
-
* @param history - The MatterHistory object.
|
|
892
|
-
* @param log - The AnsiLogger object.
|
|
893
|
-
*/
|
|
894
|
-
/*
|
|
895
|
-
createEnergyEveHistoryClusterServer(history: MatterHistory, log: AnsiLogger) {
|
|
896
|
-
history.setMatterHystoryType('energy');
|
|
897
|
-
this.addClusterServer(
|
|
898
|
-
ClusterServer(
|
|
899
|
-
EveHistoryCluster.with(EveHistory.Feature.EveEnergy),
|
|
900
|
-
{
|
|
901
|
-
// Dynamic attributes
|
|
902
|
-
ConfigDataGet: Uint8Array.fromHex(''),
|
|
903
|
-
ConfigDataSet: Uint8Array.fromHex(''),
|
|
904
|
-
HistoryStatus: Uint8Array.fromHex(''),
|
|
905
|
-
HistoryEntries: Uint8Array.fromHex(''),
|
|
906
|
-
HistoryRequest: Uint8Array.fromHex(''),
|
|
907
|
-
HistorySetTime: Uint8Array.fromHex(''),
|
|
908
|
-
LastEvent: 0,
|
|
909
|
-
ResetTotal: 0,
|
|
910
|
-
// Normal attributes
|
|
911
|
-
Voltage: 0,
|
|
912
|
-
Current: 0,
|
|
913
|
-
Consumption: 0,
|
|
914
|
-
TotalConsumption: 0,
|
|
915
|
-
EnergyUnknown: 1,
|
|
916
|
-
ChildLock: false,
|
|
917
|
-
RLoc: 46080,
|
|
918
|
-
},
|
|
919
|
-
{
|
|
920
|
-
ConfigDataGetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
921
|
-
log.debug(`ConfigDataGetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
922
|
-
return history.OnGetConfigData(isFabricFiltered);
|
|
923
|
-
},
|
|
924
|
-
|
|
925
|
-
ConfigDataSetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
926
|
-
log.debug(`ConfigDataSetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
927
|
-
return Uint8Array.fromHex('');
|
|
928
|
-
},
|
|
929
|
-
ConfigDataSetAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
930
|
-
log.debug(`ConfigDataSetAttributeSetter [${value.toHex()}] ${attributes.ConfigDataSet} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
931
|
-
return history.OnSetConfigData(value);
|
|
932
|
-
},
|
|
933
|
-
|
|
934
|
-
HistoryStatusAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
935
|
-
log.debug(`HistoryStatusAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
936
|
-
return history.OnGetHistoryStatus(isFabricFiltered);
|
|
937
|
-
},
|
|
938
|
-
|
|
939
|
-
HistoryEntriesAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
940
|
-
log.debug(`HistoryEntriesAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
941
|
-
return history.OnGetHistoryEntries();
|
|
942
|
-
},
|
|
943
|
-
|
|
944
|
-
HistorySetTimeAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
945
|
-
log.debug(`HistorySetTimeAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
946
|
-
return Uint8Array.fromHex('');
|
|
947
|
-
},
|
|
948
|
-
HistorySetTimeAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
949
|
-
log.debug(`HistorySetTimeAttributeSetter ${value.toHex()} ${attributes.HistorySetTime} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
950
|
-
return history.OnSetHistorySetTime(value);
|
|
951
|
-
},
|
|
952
|
-
|
|
953
|
-
HistoryRequestAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
954
|
-
log.debug(`HistoryRequestAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
955
|
-
return Uint8Array.fromHex('');
|
|
956
|
-
},
|
|
957
|
-
HistoryRequestAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
958
|
-
log.debug(`HistoryRequestAttributeSetter ${value.toHex()} ${attributes.HistoryRequest} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
959
|
-
return history.OnSetHistoryRequest(value);
|
|
960
|
-
},
|
|
961
|
-
|
|
962
|
-
LastEventAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
963
|
-
log.debug(`LastEventAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
964
|
-
return history.OnGetLastEvent();
|
|
965
|
-
},
|
|
966
|
-
|
|
967
|
-
ResetTotalAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
968
|
-
log.debug(`LastResetTotalAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
969
|
-
return history.OnGetLastReset();
|
|
970
|
-
},
|
|
971
|
-
ResetTotalAttributeSetter: (value: number, { attributes, endpoint, session }) => {
|
|
972
|
-
log.debug(`LastResetTotalAttributeSetter ${value} ${attributes.ResetTotal} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
973
|
-
return history.OnSetLastReset(value);
|
|
974
|
-
},
|
|
975
|
-
},
|
|
976
|
-
{},
|
|
977
|
-
),
|
|
978
|
-
);
|
|
979
|
-
}
|
|
980
|
-
*/
|
|
981
|
-
/**
|
|
982
|
-
* Creates a Motion Eve History Cluster Server.
|
|
983
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
984
|
-
*
|
|
985
|
-
* @param history - The MatterHistory object.
|
|
986
|
-
* @param log - The AnsiLogger object.
|
|
987
|
-
*/
|
|
988
|
-
/*
|
|
989
|
-
createMotionEveHistoryClusterServer(history: MatterHistory, log: AnsiLogger) {
|
|
990
|
-
history.setMatterHystoryType('motion');
|
|
991
|
-
this.addClusterServer(
|
|
992
|
-
ClusterServer(
|
|
993
|
-
EveHistoryCluster.with(EveHistory.Feature.EveMotion),
|
|
994
|
-
{
|
|
995
|
-
// Dynamic attributes
|
|
996
|
-
ConfigDataGet: Uint8Array.fromHex(''),
|
|
997
|
-
ConfigDataSet: Uint8Array.fromHex(''),
|
|
998
|
-
HistoryStatus: Uint8Array.fromHex(''),
|
|
999
|
-
HistoryEntries: Uint8Array.fromHex(''),
|
|
1000
|
-
HistoryRequest: Uint8Array.fromHex(''),
|
|
1001
|
-
HistorySetTime: Uint8Array.fromHex(''),
|
|
1002
|
-
LastEvent: 0,
|
|
1003
|
-
// Normal attributes
|
|
1004
|
-
MotionSensitivity: Sensitivity.HIGH,
|
|
1005
|
-
RLoc: 46080,
|
|
1006
|
-
},
|
|
1007
|
-
{
|
|
1008
|
-
ConfigDataGetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1009
|
-
log.debug(`ConfigDataGetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1010
|
-
return history.OnGetConfigData(isFabricFiltered);
|
|
1011
|
-
},
|
|
1012
|
-
|
|
1013
|
-
ConfigDataSetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1014
|
-
log.debug(`ConfigDataSetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1015
|
-
return Uint8Array.fromHex('');
|
|
1016
|
-
},
|
|
1017
|
-
ConfigDataSetAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
1018
|
-
log.debug(`ConfigDataSetAttributeSetter [${value.toHex()}] ${attributes.ConfigDataSet} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1019
|
-
return history.OnSetConfigData(value);
|
|
1020
|
-
},
|
|
1021
|
-
|
|
1022
|
-
HistoryStatusAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1023
|
-
log.debug(`HistoryStatusAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1024
|
-
return history.OnGetHistoryStatus(isFabricFiltered);
|
|
1025
|
-
},
|
|
1026
|
-
|
|
1027
|
-
HistoryEntriesAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1028
|
-
log.debug(`HistoryEntriesAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1029
|
-
return history.OnGetHistoryEntries();
|
|
1030
|
-
},
|
|
1031
|
-
|
|
1032
|
-
HistorySetTimeAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1033
|
-
log.debug(`HistorySetTimeAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1034
|
-
return Uint8Array.fromHex('');
|
|
1035
|
-
},
|
|
1036
|
-
HistorySetTimeAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
1037
|
-
log.debug(`HistorySetTimeAttributeSetter ${value.toHex()} ${attributes.HistorySetTime} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1038
|
-
return history.OnSetHistorySetTime(value);
|
|
1039
|
-
},
|
|
1040
|
-
|
|
1041
|
-
HistoryRequestAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1042
|
-
log.debug(`HistoryRequestAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1043
|
-
return Uint8Array.fromHex('');
|
|
1044
|
-
},
|
|
1045
|
-
HistoryRequestAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
1046
|
-
log.debug(`HistoryRequestAttributeSetter ${value.toHex()} ${attributes.HistoryRequest} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1047
|
-
return history.OnSetHistoryRequest(value);
|
|
1048
|
-
},
|
|
1049
|
-
|
|
1050
|
-
LastEventAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1051
|
-
log.debug(`LastEventAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1052
|
-
return history.OnGetLastEvent();
|
|
1053
|
-
},
|
|
1054
|
-
},
|
|
1055
|
-
{},
|
|
1056
|
-
),
|
|
1057
|
-
);
|
|
1058
|
-
}
|
|
1059
|
-
*/
|
|
1060
|
-
/**
|
|
1061
|
-
* Creates a door EveHistoryCluster server.
|
|
1062
|
-
* @deprecated This method is deprecated and will be removed in a future version. Use MatterHistory.
|
|
1063
|
-
*
|
|
1064
|
-
* @param history - The MatterHistory instance.
|
|
1065
|
-
* @param log - The AnsiLogger instance.
|
|
1066
|
-
*/
|
|
1067
|
-
/*
|
|
1068
|
-
createDoorEveHistoryClusterServer(history: MatterHistory, log: AnsiLogger) {
|
|
1069
|
-
history.setMatterHystoryType('door');
|
|
1070
|
-
this.addClusterServer(
|
|
1071
|
-
ClusterServer(
|
|
1072
|
-
EveHistoryCluster.with(EveHistory.Feature.EveDoor),
|
|
1073
|
-
{
|
|
1074
|
-
// Dynamic attributes
|
|
1075
|
-
ConfigDataGet: Uint8Array.fromHex(''),
|
|
1076
|
-
ConfigDataSet: Uint8Array.fromHex(''),
|
|
1077
|
-
HistoryStatus: Uint8Array.fromHex(''),
|
|
1078
|
-
HistoryEntries: Uint8Array.fromHex(''),
|
|
1079
|
-
HistoryRequest: Uint8Array.fromHex(''),
|
|
1080
|
-
HistorySetTime: Uint8Array.fromHex(''),
|
|
1081
|
-
TimesOpened: 0,
|
|
1082
|
-
LastEvent: 0,
|
|
1083
|
-
ResetTotal: 0,
|
|
1084
|
-
// Normal attributes
|
|
1085
|
-
RLoc: 46080,
|
|
1086
|
-
},
|
|
1087
|
-
{
|
|
1088
|
-
ConfigDataGetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1089
|
-
log.debug(`ConfigDataGetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1090
|
-
return history.OnGetConfigData(isFabricFiltered);
|
|
1091
|
-
},
|
|
1092
|
-
|
|
1093
|
-
ConfigDataSetAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1094
|
-
log.debug(`ConfigDataSetAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1095
|
-
return Uint8Array.fromHex('');
|
|
1096
|
-
},
|
|
1097
|
-
ConfigDataSetAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
1098
|
-
log.debug(`ConfigDataSetAttributeSetter [${value.toHex()}] ${attributes.ConfigDataSet} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1099
|
-
return history.OnSetConfigData(value);
|
|
1100
|
-
},
|
|
1101
|
-
|
|
1102
|
-
HistoryStatusAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1103
|
-
log.debug(`HistoryStatusAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1104
|
-
return history.OnGetHistoryStatus(isFabricFiltered);
|
|
1105
|
-
},
|
|
1106
|
-
|
|
1107
|
-
HistoryEntriesAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1108
|
-
log.debug(`HistoryEntriesAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1109
|
-
return history.OnGetHistoryEntries();
|
|
1110
|
-
},
|
|
1111
|
-
|
|
1112
|
-
HistorySetTimeAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1113
|
-
log.debug(`HistorySetTimeAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1114
|
-
return Uint8Array.fromHex('');
|
|
1115
|
-
},
|
|
1116
|
-
HistorySetTimeAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
1117
|
-
log.debug(`HistorySetTimeAttributeSetter ${value.toHex()} ${attributes.HistorySetTime} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1118
|
-
return history.OnSetHistorySetTime(value);
|
|
1119
|
-
},
|
|
1120
|
-
|
|
1121
|
-
HistoryRequestAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1122
|
-
log.debug(`HistoryRequestAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1123
|
-
return Uint8Array.fromHex('');
|
|
1124
|
-
},
|
|
1125
|
-
HistoryRequestAttributeSetter: (value: Uint8Array, { attributes, endpoint, session }) => {
|
|
1126
|
-
log.debug(`HistoryRequestAttributeSetter ${value.toHex()} ${attributes.HistoryRequest} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1127
|
-
return history.OnSetHistoryRequest(value);
|
|
1128
|
-
},
|
|
1129
|
-
|
|
1130
|
-
LastEventAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1131
|
-
log.debug(`LastEventAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1132
|
-
return history.OnGetLastEvent();
|
|
1133
|
-
},
|
|
1134
|
-
|
|
1135
|
-
TimesOpenedAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1136
|
-
log.debug(`TimesOpenedAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1137
|
-
return history.OnGetimesOpened();
|
|
1138
|
-
},
|
|
1139
|
-
|
|
1140
|
-
ResetTotalAttributeGetter: ({ session, isFabricFiltered }) => {
|
|
1141
|
-
log.debug(`LastResetTotalAttributeGetter session: ${session?.name} ${isFabricFiltered?.valueOf()}`);
|
|
1142
|
-
return history.OnGetLastReset();
|
|
1143
|
-
},
|
|
1144
|
-
ResetTotalAttributeSetter: (value: number, { attributes, endpoint, session }) => {
|
|
1145
|
-
log.debug(`LastResetTotalAttributeSetter ${value} ${attributes.ResetTotal} endpoint: ${endpoint?.name} session: ${session?.name}`);
|
|
1146
|
-
return history.OnSetLastReset(value);
|
|
1147
|
-
},
|
|
1148
|
-
},
|
|
1149
|
-
{},
|
|
1150
|
-
),
|
|
1151
|
-
);
|
|
1152
|
-
}
|
|
1153
|
-
*/
|
|
1154
747
|
/**
|
|
1155
748
|
* Get a default IdentifyCluster server.
|
|
1156
749
|
*/
|
|
@@ -1194,25 +787,35 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1194
787
|
}
|
|
1195
788
|
/**
|
|
1196
789
|
* Get a default scenes cluster server and adds it to the current instance.
|
|
790
|
+
* @deprecated This method is deprecated.
|
|
791
|
+
*
|
|
1197
792
|
*/
|
|
1198
793
|
getDefaultScenesClusterServer() {
|
|
1199
|
-
|
|
794
|
+
/*
|
|
795
|
+
return ClusterServer(
|
|
796
|
+
ScenesCluster,
|
|
797
|
+
{
|
|
1200
798
|
sceneCount: 0,
|
|
1201
799
|
currentScene: 0,
|
|
1202
800
|
currentGroup: GroupId(0),
|
|
1203
801
|
sceneValid: false,
|
|
1204
802
|
nameSupport: {
|
|
1205
|
-
|
|
803
|
+
nameSupport: true,
|
|
1206
804
|
},
|
|
1207
805
|
lastConfiguredBy: null,
|
|
1208
|
-
|
|
1209
|
-
|
|
806
|
+
},
|
|
807
|
+
{},
|
|
808
|
+
);
|
|
809
|
+
*/
|
|
1210
810
|
}
|
|
1211
811
|
/**
|
|
1212
812
|
* Creates a default scenes cluster server and adds it to the current instance.
|
|
813
|
+
* @deprecated This method is deprecated.
|
|
1213
814
|
*/
|
|
1214
815
|
createDefaultScenesClusterServer() {
|
|
816
|
+
/*
|
|
1215
817
|
this.addClusterServer(this.getDefaultScenesClusterServer());
|
|
818
|
+
*/
|
|
1216
819
|
}
|
|
1217
820
|
/**
|
|
1218
821
|
* Creates a unique identifier based on the provided parameters.
|
|
@@ -1259,6 +862,8 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1259
862
|
hardwareVersionString: hardwareVersionString.slice(0, 64),
|
|
1260
863
|
reachable: true,
|
|
1261
864
|
capabilityMinima: { caseSessionsPerFabric: 3, subscriptionsPerFabric: 3 },
|
|
865
|
+
specificationVersion: Specification.SPECIFICATION_VERSION,
|
|
866
|
+
maxPathsPerInvoke: 1,
|
|
1262
867
|
}, {}, {
|
|
1263
868
|
startUp: true,
|
|
1264
869
|
shutDown: true,
|
|
@@ -1307,7 +912,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1307
912
|
return ClusterServer(BridgedDeviceBasicInformationCluster, {
|
|
1308
913
|
vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined, // 4874
|
|
1309
914
|
vendorName: vendorName.slice(0, 32),
|
|
1310
|
-
productId: 0x8000,
|
|
1311
915
|
productName: productName.slice(0, 32),
|
|
1312
916
|
productLabel: deviceName.slice(0, 64),
|
|
1313
917
|
nodeLabel: deviceName.slice(0, 32),
|
|
@@ -1363,7 +967,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1363
967
|
measured: true,
|
|
1364
968
|
minMeasuredValue: 0,
|
|
1365
969
|
maxMeasuredValue: 0,
|
|
1366
|
-
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62, fixedMin: 10, fixedMax: 10, fixedTypical: 0 }],
|
|
970
|
+
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62 /* , fixedMin: 10, fixedMax: 10, fixedTypical: 0*/ }],
|
|
1367
971
|
},
|
|
1368
972
|
cumulativeEnergyImported: { energy },
|
|
1369
973
|
cumulativeEnergyExported: null,
|
|
@@ -1386,21 +990,21 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1386
990
|
measured: true,
|
|
1387
991
|
minMeasuredValue: 0,
|
|
1388
992
|
maxMeasuredValue: 100,
|
|
1389
|
-
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62, fixedMin: 10, fixedMax: 10, fixedTypical: 0 }],
|
|
993
|
+
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62 /* , fixedMin: 10, fixedMax: 10, fixedTypical: 0*/ }],
|
|
1390
994
|
},
|
|
1391
995
|
{
|
|
1392
996
|
measurementType: MeasurementType.ActiveCurrent,
|
|
1393
997
|
measured: true,
|
|
1394
998
|
minMeasuredValue: 0,
|
|
1395
999
|
maxMeasuredValue: 100,
|
|
1396
|
-
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62, fixedMin: 10, fixedMax: 10, fixedTypical: 0 }],
|
|
1000
|
+
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62 /* , fixedMin: 10, fixedMax: 10, fixedTypical: 0 */ }],
|
|
1397
1001
|
},
|
|
1398
1002
|
{
|
|
1399
1003
|
measurementType: MeasurementType.ActivePower,
|
|
1400
1004
|
measured: true,
|
|
1401
1005
|
minMeasuredValue: 0,
|
|
1402
1006
|
maxMeasuredValue: 100,
|
|
1403
|
-
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62, fixedMin: 10, fixedMax: 10, fixedTypical: 0 }],
|
|
1007
|
+
accuracyRanges: [{ rangeMin: 0, rangeMax: 2 ** 62 /* , fixedMin: 10, fixedMax: 10, fixedTypical: 0 */ }],
|
|
1404
1008
|
},
|
|
1405
1009
|
],
|
|
1406
1010
|
voltage: voltage,
|
|
@@ -1408,44 +1012,6 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1408
1012
|
activePower: power,
|
|
1409
1013
|
}, {}, {});
|
|
1410
1014
|
}
|
|
1411
|
-
/**
|
|
1412
|
-
* @deprecated This method is deprecated and will be removed in a future version.
|
|
1413
|
-
* Get a default Electrical Measurement Cluster Server.
|
|
1414
|
-
*
|
|
1415
|
-
* @param voltage - The RMS voltage value.
|
|
1416
|
-
* @param current - The RMS current value.
|
|
1417
|
-
* @param power - The active power value.
|
|
1418
|
-
* @param consumption - The total active power consumption value.
|
|
1419
|
-
*/
|
|
1420
|
-
/*
|
|
1421
|
-
getDefaultElectricalMeasurementClusterServer(voltage = 0, current = 0, power = 0, consumption = 0) {
|
|
1422
|
-
return ClusterServer(
|
|
1423
|
-
ElectricalMeasurementCluster,
|
|
1424
|
-
{
|
|
1425
|
-
rmsVoltage: voltage,
|
|
1426
|
-
rmsCurrent: current,
|
|
1427
|
-
activePower: power,
|
|
1428
|
-
totalActivePower: consumption,
|
|
1429
|
-
},
|
|
1430
|
-
{},
|
|
1431
|
-
{},
|
|
1432
|
-
);
|
|
1433
|
-
}
|
|
1434
|
-
*/
|
|
1435
|
-
/**
|
|
1436
|
-
* @deprecated This method is deprecated and will be removed in a future version.
|
|
1437
|
-
* Creates a default Electrical Measurement Cluster Server.
|
|
1438
|
-
*
|
|
1439
|
-
* @param voltage - The RMS voltage value.
|
|
1440
|
-
* @param current - The RMS current value.
|
|
1441
|
-
* @param power - The active power value.
|
|
1442
|
-
* @param consumption - The total active power consumption value.
|
|
1443
|
-
*/
|
|
1444
|
-
/*
|
|
1445
|
-
createDefaultElectricalMeasurementClusterServer(voltage = 0, current = 0, power = 0, consumption = 0) {
|
|
1446
|
-
this.addClusterServer(this.getDefaultElectricalMeasurementClusterServer(voltage, current, power, consumption));
|
|
1447
|
-
}
|
|
1448
|
-
*/
|
|
1449
1015
|
/**
|
|
1450
1016
|
* Creates a default Dummy Thread Network Diagnostics Cluster server.
|
|
1451
1017
|
* @deprecated This method is deprecated and is only used for testing.
|
|
@@ -1474,7 +1040,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1474
1040
|
channelPage0Mask: null,
|
|
1475
1041
|
operationalDatasetComponents: null,
|
|
1476
1042
|
overrunCount: 0,
|
|
1477
|
-
|
|
1043
|
+
activeNetworkFaultsList: [],
|
|
1478
1044
|
}, {
|
|
1479
1045
|
resetCounts: async (data) => {
|
|
1480
1046
|
this.log.debug('Matter command: resetCounts');
|
|
@@ -1749,25 +1315,25 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1749
1315
|
* @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
|
|
1750
1316
|
* @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
|
|
1751
1317
|
*/
|
|
1752
|
-
getDefaultCompleteColorControlClusterServer(currentX = 0, currentY = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
1318
|
+
getDefaultCompleteColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
1753
1319
|
return ClusterServer(ColorControlCluster.with(ColorControl.Feature.Xy, ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
|
|
1754
1320
|
colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
|
|
1321
|
+
enhancedColorMode: ColorControl.EnhancedColorMode.CurrentHueAndCurrentSaturation,
|
|
1322
|
+
colorCapabilities: { xy: true, hueSaturation: true, colorLoop: false, enhancedHue: false, colorTemperature: true },
|
|
1755
1323
|
options: {
|
|
1756
1324
|
executeIfOff: false,
|
|
1757
1325
|
},
|
|
1758
1326
|
numberOfPrimaries: null,
|
|
1759
|
-
enhancedColorMode: ColorControl.EnhancedColorMode.CurrentHueAndCurrentSaturation,
|
|
1760
|
-
colorCapabilities: { xy: true, hueSaturation: true, colorLoop: false, enhancedHue: false, colorTemperature: true },
|
|
1761
|
-
currentHue: 0,
|
|
1762
|
-
currentSaturation: 0,
|
|
1763
1327
|
currentX,
|
|
1764
1328
|
currentY,
|
|
1329
|
+
currentHue,
|
|
1330
|
+
currentSaturation,
|
|
1765
1331
|
colorTemperatureMireds,
|
|
1766
1332
|
colorTempPhysicalMinMireds,
|
|
1767
1333
|
colorTempPhysicalMaxMireds,
|
|
1768
1334
|
}, {
|
|
1769
1335
|
moveToColor: async (data) => {
|
|
1770
|
-
this.log.debug('Matter command: moveToColor request:', data.request, 'attributes.
|
|
1336
|
+
this.log.debug('Matter command: moveToColor request:', data.request, 'attributes.currentX:', data.attributes.currentX.getLocal(), 'attributes.currentY:', data.attributes.currentY.getLocal());
|
|
1771
1337
|
this.commandHandler.executeHandler('moveToColor', data);
|
|
1772
1338
|
},
|
|
1773
1339
|
moveColor: async () => {
|
|
@@ -1826,8 +1392,8 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
1826
1392
|
* @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
|
|
1827
1393
|
* @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
|
|
1828
1394
|
*/
|
|
1829
|
-
createDefaultCompleteColorControlClusterServer(currentX = 0, currentY = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
1830
|
-
this.addClusterServer(this.getDefaultCompleteColorControlClusterServer(currentX, currentY, colorTemperatureMireds, colorTempPhysicalMinMireds, colorTempPhysicalMaxMireds));
|
|
1395
|
+
createDefaultCompleteColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
1396
|
+
this.addClusterServer(this.getDefaultCompleteColorControlClusterServer(currentX, currentY, currentHue, currentSaturation, colorTemperatureMireds, colorTempPhysicalMinMireds, colorTempPhysicalMaxMireds));
|
|
1831
1397
|
}
|
|
1832
1398
|
/**
|
|
1833
1399
|
* Configures the color control cluster for a device.
|
|
@@ -2010,7 +1576,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2010
1576
|
* This method adds a cluster server for a door lock cluster with default settings.
|
|
2011
1577
|
*
|
|
2012
1578
|
*/
|
|
2013
|
-
getDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.
|
|
1579
|
+
getDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
|
|
2014
1580
|
return ClusterServer(DoorLockCluster, {
|
|
2015
1581
|
operatingMode: DoorLock.OperatingMode.Normal,
|
|
2016
1582
|
lockState,
|
|
@@ -2039,7 +1605,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2039
1605
|
* This method adds a cluster server for a door lock cluster with default settings.
|
|
2040
1606
|
*
|
|
2041
1607
|
*/
|
|
2042
|
-
createDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.
|
|
1608
|
+
createDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
|
|
2043
1609
|
this.addClusterServer(this.getDefaultDoorLockClusterServer(lockState, lockType));
|
|
2044
1610
|
}
|
|
2045
1611
|
/**
|
|
@@ -2101,7 +1667,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2101
1667
|
/**
|
|
2102
1668
|
* Triggers a switch event on the specified endpoint.
|
|
2103
1669
|
*
|
|
2104
|
-
* @param {string} event - The type of event to trigger. Possible values are 'Single', 'Double', 'Long'
|
|
1670
|
+
* @param {string} event - The type of event to trigger. Possible values are 'Single', 'Double', 'Long' for momentarySwitch and 'Press', 'Release' for latchingSwitch.
|
|
2105
1671
|
* @param {Endpoint} endpoint - The endpoint on which to trigger the event (default the device endpoint).
|
|
2106
1672
|
* @returns {void}
|
|
2107
1673
|
*/
|
|
@@ -2420,6 +1986,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2420
1986
|
activeBatFaults: undefined,
|
|
2421
1987
|
batReplacementDescription,
|
|
2422
1988
|
batQuantity,
|
|
1989
|
+
endpointList: [],
|
|
2423
1990
|
}, {}, {});
|
|
2424
1991
|
}
|
|
2425
1992
|
/**
|
|
@@ -2455,6 +2022,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2455
2022
|
activeBatFaults: undefined,
|
|
2456
2023
|
batChargeState: PowerSource.BatChargeState.IsNotCharging,
|
|
2457
2024
|
batFunctionalWhileCharging: true,
|
|
2025
|
+
endpointList: [],
|
|
2458
2026
|
}, {}, {});
|
|
2459
2027
|
}
|
|
2460
2028
|
/**
|
|
@@ -2478,6 +2046,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2478
2046
|
description: wiredCurrentType === PowerSource.WiredCurrentType.Ac ? 'AC Power' : 'DC Power',
|
|
2479
2047
|
status: PowerSource.PowerSourceStatus.Active,
|
|
2480
2048
|
order: 0,
|
|
2049
|
+
endpointList: [],
|
|
2481
2050
|
}, {}, {});
|
|
2482
2051
|
}
|
|
2483
2052
|
/**
|
|
@@ -2501,8 +2070,8 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2501
2070
|
*
|
|
2502
2071
|
* @param airQuality The air quality type. Defaults to `AirQuality.AirQualityType.Unknown`.
|
|
2503
2072
|
*/
|
|
2504
|
-
getDefaultAirQualityClusterServer(airQuality = AirQuality.
|
|
2505
|
-
return ClusterServer(AirQualityCluster.with(AirQuality.Feature.
|
|
2073
|
+
getDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
|
|
2074
|
+
return ClusterServer(AirQualityCluster.with(AirQuality.Feature.Fair, AirQuality.Feature.Moderate, AirQuality.Feature.VeryPoor, AirQuality.Feature.ExtremelyPoor), {
|
|
2506
2075
|
airQuality,
|
|
2507
2076
|
}, {}, {});
|
|
2508
2077
|
}
|
|
@@ -2511,7 +2080,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2511
2080
|
*
|
|
2512
2081
|
* @param airQuality The air quality type. Defaults to `AirQuality.AirQualityType.Unknown`.
|
|
2513
2082
|
*/
|
|
2514
|
-
createDefaultAirQualityClusterServer(airQuality = AirQuality.
|
|
2083
|
+
createDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
|
|
2515
2084
|
this.addClusterServer(this.getDefaultAirQualityClusterServer(airQuality));
|
|
2516
2085
|
}
|
|
2517
2086
|
/**
|
|
@@ -2519,11 +2088,14 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2519
2088
|
*
|
|
2520
2089
|
* @param measuredValue - The measured value for TVOC.
|
|
2521
2090
|
*/
|
|
2522
|
-
getDefaultTvocMeasurementClusterServer(measuredValue = 0) {
|
|
2523
|
-
return ClusterServer(
|
|
2091
|
+
getDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
2092
|
+
return ClusterServer(TotalVolatileOrganicCompoundsConcentrationMeasurementCluster.with('NumericMeasurement'), {
|
|
2524
2093
|
measuredValue,
|
|
2525
2094
|
minMeasuredValue: null,
|
|
2526
2095
|
maxMeasuredValue: null,
|
|
2096
|
+
uncertainty: 0,
|
|
2097
|
+
measurementUnit,
|
|
2098
|
+
measurementMedium,
|
|
2527
2099
|
}, {}, {});
|
|
2528
2100
|
}
|
|
2529
2101
|
/**
|
|
@@ -2531,8 +2103,8 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2531
2103
|
*
|
|
2532
2104
|
* @param measuredValue - The measured value for TVOC.
|
|
2533
2105
|
*/
|
|
2534
|
-
createDefaultTvocMeasurementClusterServer(measuredValue = 0) {
|
|
2535
|
-
this.addClusterServer(this.getDefaultTvocMeasurementClusterServer(measuredValue));
|
|
2106
|
+
createDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
2107
|
+
this.addClusterServer(this.getDefaultTvocMeasurementClusterServer(measuredValue, measurementUnit, measurementMedium));
|
|
2536
2108
|
}
|
|
2537
2109
|
/**
|
|
2538
2110
|
* Get a default thermostat cluster server with the specified parameters.
|
|
@@ -2581,15 +2153,25 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2581
2153
|
* Get a default dummy time sync cluster server. Only needed to create a thermostat.
|
|
2582
2154
|
*/
|
|
2583
2155
|
getDefaultTimeSyncClusterServer() {
|
|
2584
|
-
return ClusterServer(
|
|
2156
|
+
return ClusterServer(TimeSynchronizationCluster.with(TimeSynchronization.Feature.TimeZone), {
|
|
2585
2157
|
utcTime: null,
|
|
2586
|
-
granularity:
|
|
2158
|
+
granularity: TimeSynchronization.Granularity.NoTimeGranularity,
|
|
2587
2159
|
timeZone: [{ offset: 0, validAt: 0 }],
|
|
2588
|
-
trustedTimeNodeId: null,
|
|
2589
2160
|
dstOffset: [],
|
|
2590
2161
|
localTime: null,
|
|
2591
|
-
timeZoneDatabase:
|
|
2162
|
+
timeZoneDatabase: TimeSynchronization.TimeZoneDatabase.None,
|
|
2163
|
+
timeZoneListMaxSize: 1,
|
|
2164
|
+
dstOffsetListMaxSize: 1,
|
|
2592
2165
|
}, {
|
|
2166
|
+
setTimeZone: async ({ request, attributes }) => {
|
|
2167
|
+
this.log.debug('Matter command: setTimeZone', request);
|
|
2168
|
+
await this.commandHandler.executeHandler('setTimeZone', { request, attributes });
|
|
2169
|
+
return { dstOffsetsRequired: false };
|
|
2170
|
+
},
|
|
2171
|
+
setDstOffset: async ({ request, attributes }) => {
|
|
2172
|
+
this.log.debug('Matter command: setDstOffset', request);
|
|
2173
|
+
await this.commandHandler.executeHandler('setDstOffset', { request, attributes });
|
|
2174
|
+
},
|
|
2593
2175
|
setUtcTime: async ({ request, attributes }) => {
|
|
2594
2176
|
this.log.debug('Matter command: setUtcTime', request);
|
|
2595
2177
|
await this.commandHandler.executeHandler('setUtcTime', { request, attributes });
|
|
@@ -2598,6 +2180,7 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2598
2180
|
dstTableEmpty: true,
|
|
2599
2181
|
dstStatus: true,
|
|
2600
2182
|
timeZoneStatus: true,
|
|
2183
|
+
timeFailure: true,
|
|
2601
2184
|
});
|
|
2602
2185
|
}
|
|
2603
2186
|
/**
|
|
@@ -2966,13 +2549,18 @@ export class MatterbridgeDevice extends extendPublicHandlerMethods(Device) {
|
|
|
2966
2549
|
// NOTE Support of Device Energy Management Mode Cluster is provisional.
|
|
2967
2550
|
getDefaultDeviceEnergyManagementModeClusterServer() {
|
|
2968
2551
|
return ClusterServer(DeviceEnergyManagementModeCluster, {
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
}, {
|
|
2552
|
+
supportedModes: [
|
|
2553
|
+
{ label: 'Normal', mode: 1, modeTags: [{ value: 1 }] },
|
|
2554
|
+
{ label: 'Eco', mode: 2, modeTags: [{ value: 2 }] },
|
|
2555
|
+
],
|
|
2556
|
+
currentMode: 1,
|
|
2557
|
+
startUpMode: 1,
|
|
2558
|
+
}, {
|
|
2559
|
+
changeToMode: async ({ request, attributes }) => {
|
|
2560
|
+
this.log.debug('Matter command: DeviceEnergyManagementMode.changeToMode', request);
|
|
2561
|
+
await this.commandHandler.executeHandler('changeToMode', { request, attributes });
|
|
2562
|
+
},
|
|
2563
|
+
}, {});
|
|
2976
2564
|
}
|
|
2977
2565
|
}
|
|
2978
2566
|
//# sourceMappingURL=matterbridgeDevice.js.map
|