matterbridge 2.2.8-dev.1 → 3.0.0-edge.2

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.
@@ -10,7 +10,6 @@ import { DoorLock } from '@matter/main/clusters/door-lock';
10
10
  import { ElectricalEnergyMeasurement } from '@matter/main/clusters/electrical-energy-measurement';
11
11
  import { ElectricalPowerMeasurement } from '@matter/main/clusters/electrical-power-measurement';
12
12
  import { FanControl } from '@matter/main/clusters/fan-control';
13
- import { FixedLabel } from '@matter/main/clusters/fixed-label';
14
13
  import { FlowMeasurement } from '@matter/main/clusters/flow-measurement';
15
14
  import { FormaldehydeConcentrationMeasurement } from '@matter/main/clusters/formaldehyde-concentration-measurement';
16
15
  import { Groups } from '@matter/main/clusters/groups';
@@ -32,10 +31,9 @@ import { PumpConfigurationAndControl } from '@matter/main/clusters/pump-configur
32
31
  import { RadonConcentrationMeasurement } from '@matter/main/clusters/radon-concentration-measurement';
33
32
  import { RelativeHumidityMeasurement } from '@matter/main/clusters/relative-humidity-measurement';
34
33
  import { SmokeCoAlarm } from '@matter/main/clusters/smoke-co-alarm';
35
- import { SwitchCluster } from '@matter/main/clusters/switch';
34
+ import { Switch } from '@matter/main/clusters/switch';
36
35
  import { TemperatureMeasurement } from '@matter/main/clusters/temperature-measurement';
37
36
  import { Thermostat } from '@matter/main/clusters/thermostat';
38
- import { TimeSynchronization } from '@matter/main/clusters/time-synchronization';
39
37
  import { TotalVolatileOrganicCompoundsConcentrationMeasurement } from '@matter/main/clusters/total-volatile-organic-compounds-concentration-measurement';
40
38
  import { ValveConfigurationAndControl } from '@matter/main/clusters/valve-configuration-and-control';
41
39
  import { WindowCovering } from '@matter/main/clusters/window-covering';
@@ -50,6 +48,11 @@ import { ScenesManagement } from '@matter/main/clusters/scenes-management';
50
48
  import { HepaFilterMonitoring } from '@matter/main/clusters/hepa-filter-monitoring';
51
49
  import { ActivatedCarbonFilterMonitoring } from '@matter/main/clusters/activated-carbon-filter-monitoring';
52
50
  import { DeviceEnergyManagementMode } from '@matter/main/clusters/device-energy-management-mode';
51
+ import { AdministratorCommissioning } from '@matter/main/clusters/administrator-commissioning';
52
+ import { EcosystemInformation } from '@matter/main/clusters/ecosystem-information';
53
+ import { AccessControl } from '@matter/main/clusters/access-control';
54
+ import { CommissionerControl } from '@matter/main/clusters/commissioner-control';
55
+ import { ServiceArea } from '@matter/main/clusters';
53
56
  export var DeviceClasses;
54
57
  (function (DeviceClasses) {
55
58
  DeviceClasses["Node"] = "Node";
@@ -77,20 +80,6 @@ export const DeviceTypeDefinition = ({ name, code, deviceClass, superSet, revisi
77
80
  optionalClientClusters,
78
81
  unknown,
79
82
  });
80
- export const bridge = DeviceTypeDefinition({
81
- name: 'MA-aggregator',
82
- code: 0x000e,
83
- deviceClass: DeviceClasses.Dynamic,
84
- revision: 1,
85
- optionalServerClusters: [Identify.Cluster.id, Actions.Cluster.id],
86
- });
87
- export const aggregator = DeviceTypeDefinition({
88
- name: 'MA-aggregator',
89
- code: 0x000e,
90
- deviceClass: DeviceClasses.Dynamic,
91
- revision: 1,
92
- optionalServerClusters: [Identify.Cluster.id, Actions.Cluster.id],
93
- });
94
83
  export const powerSource = DeviceTypeDefinition({
95
84
  name: 'MA-powerSource',
96
85
  code: 0x0011,
@@ -103,17 +92,25 @@ export const bridgedNode = DeviceTypeDefinition({
103
92
  name: 'MA-bridgedNode',
104
93
  code: 0x0013,
105
94
  deviceClass: DeviceClasses.Utility,
106
- revision: 2,
95
+ revision: 3,
107
96
  requiredServerClusters: [BridgedDeviceBasicInformation.Cluster.id],
108
- optionalServerClusters: [PowerSource.Cluster.id],
97
+ optionalServerClusters: [PowerSource.Cluster.id, EcosystemInformation.Cluster.id, AdministratorCommissioning.Cluster.id],
109
98
  });
110
- export const genericSwitch = DeviceTypeDefinition({
111
- name: 'MA-genericswitch',
112
- code: 0x000f,
113
- deviceClass: DeviceClasses.Simple,
99
+ export const electricalSensor = DeviceTypeDefinition({
100
+ name: 'MA-electricalSensor',
101
+ code: 0x0510,
102
+ deviceClass: DeviceClasses.Utility,
114
103
  revision: 1,
115
- requiredServerClusters: [Identify.Cluster.id, SwitchCluster.id],
116
- optionalServerClusters: [FixedLabel.Cluster.id],
104
+ requiredServerClusters: [PowerTopology.Cluster.id],
105
+ optionalServerClusters: [ElectricalPowerMeasurement.Cluster.id, ElectricalEnergyMeasurement.Cluster.id],
106
+ });
107
+ export const deviceEnergyManagement = DeviceTypeDefinition({
108
+ name: 'MA-deviceEnergyManagement',
109
+ code: 0x050d,
110
+ deviceClass: DeviceClasses.Utility,
111
+ revision: 2,
112
+ requiredServerClusters: [DeviceEnergyManagement.Cluster.id, DeviceEnergyManagementMode.Cluster.id],
113
+ optionalServerClusters: [],
117
114
  });
118
115
  export const onOffLight = DeviceTypeDefinition({
119
116
  name: 'MA-onofflight',
@@ -121,7 +118,7 @@ export const onOffLight = DeviceTypeDefinition({
121
118
  deviceClass: DeviceClasses.Simple,
122
119
  revision: 3,
123
120
  requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
124
- optionalServerClusters: [LevelControl.Cluster.id, ColorControl.Cluster.id],
121
+ optionalServerClusters: [LevelControl.Cluster.id],
125
122
  });
126
123
  export const dimmableLight = DeviceTypeDefinition({
127
124
  name: 'MA-dimmablelight',
@@ -129,7 +126,7 @@ export const dimmableLight = DeviceTypeDefinition({
129
126
  deviceClass: DeviceClasses.Simple,
130
127
  revision: 3,
131
128
  requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
132
- optionalServerClusters: [ColorControl.Cluster.id],
129
+ optionalServerClusters: [],
133
130
  });
134
131
  export const colorTemperatureLight = DeviceTypeDefinition({
135
132
  name: 'MA-colortemperaturelight',
@@ -139,6 +136,14 @@ export const colorTemperatureLight = DeviceTypeDefinition({
139
136
  requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
140
137
  optionalServerClusters: [],
141
138
  });
139
+ export const extendedColorLight = DeviceTypeDefinition({
140
+ name: 'MA-extendedcolorlight',
141
+ code: 0x010d,
142
+ deviceClass: DeviceClasses.Simple,
143
+ revision: 4,
144
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
145
+ optionalServerClusters: [],
146
+ });
142
147
  export const onOffOutlet = DeviceTypeDefinition({
143
148
  name: 'MA-onoffpluginunit',
144
149
  code: 0x010a,
@@ -151,41 +156,73 @@ export const dimmableOutlet = DeviceTypeDefinition({
151
156
  name: 'MA-dimmablepluginunit',
152
157
  code: 0x010b,
153
158
  deviceClass: DeviceClasses.Simple,
154
- revision: 3,
159
+ revision: 4,
155
160
  requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
156
161
  optionalServerClusters: [],
157
162
  });
158
- export const doorLockDevice = DeviceTypeDefinition({
159
- name: 'MA-doorLock',
160
- code: 0xa,
163
+ export const onOffMountedSwitch = DeviceTypeDefinition({
164
+ name: 'MA-onoffswitch',
165
+ code: 0x010f,
166
+ deviceClass: DeviceClasses.Simple,
167
+ revision: 1,
168
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
169
+ optionalServerClusters: [LevelControl.Cluster.id],
170
+ });
171
+ export const dimmableMountedSwitch = DeviceTypeDefinition({
172
+ name: 'MA-dimmableswitch',
173
+ code: 0x0110,
174
+ deviceClass: DeviceClasses.Simple,
175
+ revision: 1,
176
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
177
+ optionalServerClusters: [],
178
+ });
179
+ export const pumpDevice = DeviceTypeDefinition({
180
+ name: 'MA-pump',
181
+ code: 0x303,
161
182
  deviceClass: DeviceClasses.Simple,
162
183
  revision: 3,
163
- requiredServerClusters: [Identify.Cluster.id, DoorLock.Cluster.id],
164
- optionalServerClusters: [Groups.Cluster.id],
184
+ requiredServerClusters: [OnOff.Cluster.id, PumpConfigurationAndControl.Cluster.id, Identify.Cluster.id],
185
+ optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
165
186
  });
166
- export const coverDevice = DeviceTypeDefinition({
167
- name: 'MA-windowCovering',
168
- code: 0x202,
187
+ export const waterValve = DeviceTypeDefinition({
188
+ name: 'MA-waterValve',
189
+ code: 0x42,
190
+ deviceClass: DeviceClasses.Simple,
191
+ revision: 1,
192
+ requiredServerClusters: [Identify.Cluster.id, ValveConfigurationAndControl.Cluster.id],
193
+ optionalServerClusters: [FlowMeasurement.Cluster.id],
194
+ });
195
+ export const onOffSwitch = DeviceTypeDefinition({
196
+ name: 'MA-onoffswitch',
197
+ code: 0x0103,
169
198
  deviceClass: DeviceClasses.Simple,
170
199
  revision: 3,
171
- requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
172
- optionalServerClusters: [Groups.Cluster.id],
200
+ requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id],
201
+ optionalServerClusters: [Groups.Cluster.id, ScenesManagement.Cluster.id],
173
202
  });
174
- export const fanDevice = DeviceTypeDefinition({
175
- name: 'MA-fan',
176
- code: 0x2b,
203
+ export const dimmableSwitch = DeviceTypeDefinition({
204
+ name: 'MA-dimmableswitch',
205
+ code: 0x0104,
177
206
  deviceClass: DeviceClasses.Simple,
178
- revision: 2,
179
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, FanControl.Cluster.id],
180
- optionalServerClusters: [],
207
+ revision: 3,
208
+ requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
209
+ optionalServerClusters: [Groups.Cluster.id, ScenesManagement.Cluster.id],
181
210
  });
182
- export const thermostatDevice = DeviceTypeDefinition({
183
- name: 'MA-thermostat',
184
- code: 0x301,
211
+ export const colorTemperatureSwitch = DeviceTypeDefinition({
212
+ name: 'MA-colortemperatureswitch',
213
+ code: 0x0105,
185
214
  deviceClass: DeviceClasses.Simple,
186
215
  revision: 3,
187
- requiredServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
188
- optionalServerClusters: [Groups.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, EnergyPreference.Cluster.id, TimeSynchronization.Cluster.id],
216
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
217
+ optionalServerClusters: [Groups.Cluster.id, ScenesManagement.Cluster.id],
218
+ });
219
+ export const genericSwitch = DeviceTypeDefinition({
220
+ name: 'MA-genericswitch',
221
+ code: 0x000f,
222
+ deviceClass: DeviceClasses.Simple,
223
+ revision: 3,
224
+ requiredServerClusters: [Identify.Cluster.id, Switch.Cluster.id],
225
+ optionalServerClusters: [],
189
226
  });
190
227
  export const contactSensor = DeviceTypeDefinition({
191
228
  name: 'MA-contactsensor',
@@ -193,6 +230,7 @@ export const contactSensor = DeviceTypeDefinition({
193
230
  deviceClass: DeviceClasses.Simple,
194
231
  revision: 2,
195
232
  requiredServerClusters: [Identify.Cluster.id, BooleanState.Cluster.id],
233
+ optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
196
234
  });
197
235
  export const lightSensor = DeviceTypeDefinition({
198
236
  name: 'MA-lightsensor',
@@ -205,8 +243,9 @@ export const occupancySensor = DeviceTypeDefinition({
205
243
  name: 'MA-occupancysensor',
206
244
  code: 0x0107,
207
245
  deviceClass: DeviceClasses.Simple,
208
- revision: 3,
246
+ revision: 4,
209
247
  requiredServerClusters: [Identify.Cluster.id, OccupancySensing.Cluster.id],
248
+ optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
210
249
  });
211
250
  export const temperatureSensor = DeviceTypeDefinition({
212
251
  name: 'MA-tempsensor',
@@ -236,44 +275,13 @@ export const humiditySensor = DeviceTypeDefinition({
236
275
  revision: 2,
237
276
  requiredServerClusters: [Identify.Cluster.id, RelativeHumidityMeasurement.Cluster.id],
238
277
  });
239
- export const modeSelect = DeviceTypeDefinition({
240
- name: 'MA-modeselect',
241
- code: 0x27,
278
+ export const smokeCoAlarm = DeviceTypeDefinition({
279
+ name: 'MA-smokeCoAlarm',
280
+ code: 0x0076,
242
281
  deviceClass: DeviceClasses.Simple,
243
282
  revision: 1,
244
- requiredServerClusters: [ModeSelect.Cluster.id],
245
- });
246
- export const roboticVacuumCleaner = DeviceTypeDefinition({
247
- name: 'MA-roboticvacuumcleaner',
248
- code: 0x74,
249
- deviceClass: DeviceClasses.Simple,
250
- revision: 2,
251
- requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
252
- optionalServerClusters: [RvcCleanMode.Cluster.id],
253
- });
254
- export const onOffSwitch = DeviceTypeDefinition({
255
- name: 'MA-onoffswitch',
256
- code: 0x0103,
257
- deviceClass: DeviceClasses.Simple,
258
- revision: 3,
259
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
260
- optionalServerClusters: [LevelControl.Cluster.id, ColorControl.Cluster.id],
261
- });
262
- export const dimmableSwitch = DeviceTypeDefinition({
263
- name: 'MA-dimmableswitch',
264
- code: 0x0104,
265
- deviceClass: DeviceClasses.Simple,
266
- revision: 3,
267
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
268
- optionalServerClusters: [ColorControl.Cluster.id],
269
- });
270
- export const colorTemperatureSwitch = DeviceTypeDefinition({
271
- name: 'MA-colortemperatureswitch',
272
- code: 0x0105,
273
- deviceClass: DeviceClasses.Simple,
274
- revision: 3,
275
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
276
- optionalServerClusters: [],
283
+ requiredServerClusters: [Identify.Cluster.id, SmokeCoAlarm.Cluster.id],
284
+ optionalServerClusters: [Groups.Cluster.id, TemperatureMeasurement.Cluster.id, RelativeHumidityMeasurement.Cluster.id, CarbonMonoxideConcentrationMeasurement.Cluster.id],
277
285
  });
278
286
  export const airQualitySensor = DeviceTypeDefinition({
279
287
  name: 'MA-airQualitySensor',
@@ -320,37 +328,69 @@ export const rainSensor = DeviceTypeDefinition({
320
328
  requiredServerClusters: [Identify.Cluster.id, BooleanState.Cluster.id],
321
329
  optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
322
330
  });
323
- export const smokeCoAlarm = DeviceTypeDefinition({
324
- name: 'MA-smokeCoAlarm',
325
- code: 0x0076,
331
+ export const doorLockDevice = DeviceTypeDefinition({
332
+ name: 'MA-doorLock',
333
+ code: 0xa,
326
334
  deviceClass: DeviceClasses.Simple,
327
- revision: 1,
328
- requiredServerClusters: [Identify.Cluster.id, SmokeCoAlarm.Cluster.id],
329
- optionalServerClusters: [Groups.Cluster.id, TemperatureMeasurement.Cluster.id, RelativeHumidityMeasurement.Cluster.id, CarbonMonoxideConcentrationMeasurement.Cluster.id],
335
+ revision: 3,
336
+ requiredServerClusters: [Identify.Cluster.id, DoorLock.Cluster.id, AccessControl.Cluster.id],
337
+ optionalServerClusters: [],
330
338
  });
331
- export const pumpDevice = DeviceTypeDefinition({
332
- name: 'MA-pump',
333
- code: 0x303,
339
+ export const coverDevice = DeviceTypeDefinition({
340
+ name: 'MA-windowCovering',
341
+ code: 0x202,
334
342
  deviceClass: DeviceClasses.Simple,
335
343
  revision: 3,
336
- requiredServerClusters: [OnOff.Cluster.id, PumpConfigurationAndControl.Cluster.id, Identify.Cluster.id],
337
- optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
344
+ requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
345
+ optionalServerClusters: [Groups.Cluster.id],
338
346
  });
339
- export const waterValve = DeviceTypeDefinition({
340
- name: 'MA-waterValve',
341
- code: 0x42,
347
+ export const thermostatDevice = DeviceTypeDefinition({
348
+ name: 'MA-thermostat',
349
+ code: 0x301,
342
350
  deviceClass: DeviceClasses.Simple,
343
- revision: 1,
344
- requiredServerClusters: [Identify.Cluster.id, ValveConfigurationAndControl.Cluster.id],
345
- optionalServerClusters: [FlowMeasurement.Cluster.id],
351
+ revision: 4,
352
+ requiredServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
353
+ optionalServerClusters: [Groups.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, EnergyPreference.Cluster.id],
354
+ });
355
+ export const fanDevice = DeviceTypeDefinition({
356
+ name: 'MA-fan',
357
+ code: 0x2b,
358
+ deviceClass: DeviceClasses.Simple,
359
+ revision: 3,
360
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, FanControl.Cluster.id],
361
+ optionalServerClusters: [OnOff.Cluster.id],
346
362
  });
347
363
  export const airPurifier = DeviceTypeDefinition({
348
364
  name: 'MA-airPurifier',
349
365
  code: 0x2d,
350
366
  deviceClass: DeviceClasses.Simple,
351
- revision: 1,
367
+ revision: 2,
352
368
  requiredServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
353
- optionalServerClusters: [Groups.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
369
+ optionalServerClusters: [Groups.Cluster.id, OnOff.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
370
+ });
371
+ export const modeSelect = DeviceTypeDefinition({
372
+ name: 'MA-modeselect',
373
+ code: 0x27,
374
+ deviceClass: DeviceClasses.Simple,
375
+ revision: 1,
376
+ requiredServerClusters: [ModeSelect.Cluster.id],
377
+ });
378
+ export const bridge = DeviceTypeDefinition({
379
+ name: 'MA-aggregator',
380
+ code: 0x000e,
381
+ deviceClass: DeviceClasses.Dynamic,
382
+ revision: 2,
383
+ requiredServerClusters: [],
384
+ optionalServerClusters: [Actions.Cluster.id, Identify.Cluster.id, CommissionerControl.Cluster.id],
385
+ });
386
+ export const aggregator = bridge;
387
+ export const roboticVacuumCleaner = DeviceTypeDefinition({
388
+ name: 'MA-roboticvacuumcleaner',
389
+ code: 0x74,
390
+ deviceClass: DeviceClasses.Simple,
391
+ revision: 3,
392
+ requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
393
+ optionalServerClusters: [RvcCleanMode.Cluster.id, ServiceArea.Cluster.id],
354
394
  });
355
395
  export const airConditioner = DeviceTypeDefinition({
356
396
  name: 'MA-airConditioner',
@@ -360,19 +400,3 @@ export const airConditioner = DeviceTypeDefinition({
360
400
  requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, Thermostat.Cluster.id],
361
401
  optionalServerClusters: [Groups.Cluster.id, ScenesManagement.Cluster.id, FanControl.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, TemperatureMeasurement.Cluster.id, RelativeHumidityMeasurement.Cluster.id],
362
402
  });
363
- export const electricalSensor = DeviceTypeDefinition({
364
- name: 'MA-electricalSensor',
365
- code: 0x0510,
366
- deviceClass: DeviceClasses.Utility,
367
- revision: 1,
368
- requiredServerClusters: [PowerTopology.Cluster.id],
369
- optionalServerClusters: [ElectricalPowerMeasurement.Cluster.id, ElectricalEnergyMeasurement.Cluster.id],
370
- });
371
- export const deviceEnergyManagement = DeviceTypeDefinition({
372
- name: 'MA-deviceEnergyManagement',
373
- code: 0x050d,
374
- deviceClass: DeviceClasses.Utility,
375
- revision: 1,
376
- requiredServerClusters: [DeviceEnergyManagement.Cluster.id, DeviceEnergyManagementMode.Cluster.id],
377
- optionalServerClusters: [],
378
- });
@@ -1,7 +1,7 @@
1
1
  import { AnsiLogger, BLUE, CYAN, YELLOW, db, debugStringify, er, hk, or, zb } from './logger/export.js';
2
2
  import { bridgedNode } from './matterbridgeDeviceTypes.js';
3
3
  import { isValidNumber, isValidObject } from './utils/export.js';
4
- import { MatterbridgeBehavior, MatterbridgeBehaviorDevice, MatterbridgeIdentifyServer, MatterbridgeOnOffServer, MatterbridgeLevelControlServer, MatterbridgeColorControlServer, MatterbridgeWindowCoveringServer, MatterbridgeThermostatServer, MatterbridgeFanControlServer, MatterbridgeDoorLockServer, MatterbridgeModeSelectServer, MatterbridgeValveConfigurationAndControlServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeSwitchServer, } from './matterbridgeBehaviors.js';
4
+ import { MatterbridgeBehavior, MatterbridgeBehaviorDevice, MatterbridgeIdentifyServer, MatterbridgeOnOffServer, MatterbridgeLevelControlServer, MatterbridgeColorControlServer, MatterbridgeWindowCoveringServer, MatterbridgeThermostatServer, MatterbridgeFanControlServer, MatterbridgeDoorLockServer, MatterbridgeModeSelectServer, MatterbridgeValveConfigurationAndControlServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeSwitchServer, MatterbridgeRvcRunModeServer, MatterbridgeRvcCleanModeServer, MatterbridgeRvcOperationalStateServer, } from './matterbridgeBehaviors.js';
5
5
  import { addClusterServers, addFixedLabel, addOptionalClusterServers, addRequiredClusterServers, addUserLabel, capitalizeFirstLetter, createUniqueId, getBehavior, getBehaviourTypesFromClusterClientIds, getBehaviourTypesFromClusterServerIds, getDefaultFlowMeasurementClusterServer, getDefaultIlluminanceMeasurementClusterServer, getDefaultPressureMeasurementClusterServer, getDefaultRelativeHumidityMeasurementClusterServer, getDefaultTemperatureMeasurementClusterServer, getDefaultOccupancySensingClusterServer, lowercaseFirstLetter, updateAttribute, getClusterId, getAttributeId, setAttribute, getAttribute, checkNotLatinCharacters, generateUniqueId, subscribeAttribute, } from './matterbridgeEndpointHelpers.js';
6
6
  import { Endpoint, Lifecycle, MutableEndpoint, NamedHandler, SupportedBehaviors, VendorId } from '@matter/main';
7
7
  import { ClusterType, getClusterNameById, MeasurementType } from '@matter/main/types';
@@ -26,6 +26,9 @@ import { ElectricalPowerMeasurement } from '@matter/main/clusters/electrical-pow
26
26
  import { ElectricalEnergyMeasurement } from '@matter/main/clusters/electrical-energy-measurement';
27
27
  import { AirQuality } from '@matter/main/clusters/air-quality';
28
28
  import { ConcentrationMeasurement } from '@matter/main/clusters/concentration-measurement';
29
+ import { RvcRunMode } from '@matter/main/clusters/rvc-run-mode';
30
+ import { RvcOperationalState } from '@matter/main/clusters/rvc-operational-state';
31
+ import { OccupancySensing } from '@matter/main/clusters/occupancy-sensing';
29
32
  import { DescriptorServer } from '@matter/main/behaviors/descriptor';
30
33
  import { PowerSourceServer } from '@matter/main/behaviors/power-source';
31
34
  import { BridgedDeviceBasicInformationServer } from '@matter/main/behaviors/bridged-device-basic-information';
@@ -54,6 +57,7 @@ import { Pm25ConcentrationMeasurementServer } from '@matter/main/behaviors/pm25-
54
57
  import { Pm10ConcentrationMeasurementServer } from '@matter/main/behaviors/pm10-concentration-measurement';
55
58
  import { RadonConcentrationMeasurementServer } from '@matter/main/behaviors/radon-concentration-measurement';
56
59
  import { TotalVolatileOrganicCompoundsConcentrationMeasurementServer } from '@matter/main/behaviors/total-volatile-organic-compounds-concentration-measurement';
60
+ import { RvcCleanMode } from '@matter/main/clusters/rvc-clean-mode';
57
61
  export class MatterbridgeEndpoint extends Endpoint {
58
62
  static bridgeMode = '';
59
63
  static logLevel = "info";
@@ -752,11 +756,12 @@ export class MatterbridgeEndpoint extends Endpoint {
752
756
  }
753
757
  createDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
754
758
  this.behaviors.require(MatterbridgeDoorLockServer.enable({ events: { doorLockAlarm: true, lockOperation: true, lockOperationError: true } }), {
755
- operatingMode: DoorLock.OperatingMode.Normal,
756
759
  lockState,
757
760
  lockType,
758
761
  actuatorEnabled: false,
759
- supportedOperatingModes: { normal: false, vacation: true, privacy: true, noRemoteLockUnlock: true, passage: true },
762
+ operatingMode: DoorLock.OperatingMode.Normal,
763
+ supportedOperatingModes: { normal: false, vacation: true, privacy: true, noRemoteLockUnlock: true, passage: true, alwaysSet: 2047 },
764
+ alarmMask: { lockJammed: false, lockFactoryReset: false, lockRadioPowerCycled: false, wrongCodeEntryLimit: false, frontEscutcheonRemoved: false, doorForcedOpen: false },
760
765
  });
761
766
  return this;
762
767
  }
@@ -779,6 +784,9 @@ export class MatterbridgeEndpoint extends Endpoint {
779
784
  openDuration: null,
780
785
  defaultOpenDuration: null,
781
786
  remainingDuration: null,
787
+ defaultOpenLevel: 100,
788
+ valveFault: { generalFault: false, blocked: false, leaking: false, notConnected: false, shortCircuit: false, currentExceeded: false },
789
+ levelStep: 1,
782
790
  });
783
791
  return this;
784
792
  }
@@ -999,28 +1007,28 @@ export class MatterbridgeEndpoint extends Endpoint {
999
1007
  });
1000
1008
  return this;
1001
1009
  }
1002
- createDefaultTemperatureMeasurementClusterServer(measuredValue = 0) {
1003
- this.behaviors.require(TemperatureMeasurementServer, getDefaultTemperatureMeasurementClusterServer(measuredValue));
1010
+ createDefaultTemperatureMeasurementClusterServer(measuredValue = null, minMeasuredValue = null, maxMeasuredValue = null) {
1011
+ this.behaviors.require(TemperatureMeasurementServer, getDefaultTemperatureMeasurementClusterServer(measuredValue, minMeasuredValue, maxMeasuredValue));
1004
1012
  return this;
1005
1013
  }
1006
- createDefaultRelativeHumidityMeasurementClusterServer(measuredValue = 0) {
1007
- this.behaviors.require(RelativeHumidityMeasurementServer, getDefaultRelativeHumidityMeasurementClusterServer(measuredValue));
1014
+ createDefaultRelativeHumidityMeasurementClusterServer(measuredValue = null, minMeasuredValue = null, maxMeasuredValue = null) {
1015
+ this.behaviors.require(RelativeHumidityMeasurementServer, getDefaultRelativeHumidityMeasurementClusterServer(measuredValue, minMeasuredValue, maxMeasuredValue));
1008
1016
  return this;
1009
1017
  }
1010
- createDefaultPressureMeasurementClusterServer(measuredValue = 1000) {
1011
- this.behaviors.require(PressureMeasurementServer, getDefaultPressureMeasurementClusterServer(measuredValue));
1018
+ createDefaultPressureMeasurementClusterServer(measuredValue = null, minMeasuredValue = null, maxMeasuredValue = null) {
1019
+ this.behaviors.require(PressureMeasurementServer, getDefaultPressureMeasurementClusterServer(measuredValue, minMeasuredValue, maxMeasuredValue));
1012
1020
  return this;
1013
1021
  }
1014
- createDefaultIlluminanceMeasurementClusterServer(measuredValue = 0) {
1015
- this.behaviors.require(IlluminanceMeasurementServer, getDefaultIlluminanceMeasurementClusterServer(measuredValue));
1022
+ createDefaultIlluminanceMeasurementClusterServer(measuredValue = null, minMeasuredValue = null, maxMeasuredValue = null) {
1023
+ this.behaviors.require(IlluminanceMeasurementServer, getDefaultIlluminanceMeasurementClusterServer(measuredValue, minMeasuredValue, maxMeasuredValue));
1016
1024
  return this;
1017
1025
  }
1018
- createDefaultFlowMeasurementClusterServer(measuredValue = 0) {
1019
- this.behaviors.require(FlowMeasurementServer, getDefaultFlowMeasurementClusterServer(measuredValue));
1026
+ createDefaultFlowMeasurementClusterServer(measuredValue = null, minMeasuredValue = null, maxMeasuredValue = null) {
1027
+ this.behaviors.require(FlowMeasurementServer, getDefaultFlowMeasurementClusterServer(measuredValue, minMeasuredValue, maxMeasuredValue));
1020
1028
  return this;
1021
1029
  }
1022
- createDefaultOccupancySensingClusterServer(occupied = false) {
1023
- this.behaviors.require(OccupancySensingServer, getDefaultOccupancySensingClusterServer(occupied));
1030
+ createDefaultOccupancySensingClusterServer(occupied = false, holdTime = 30, holdTimeMin = 1, holdTimeMax = 300) {
1031
+ this.behaviors.require(OccupancySensingServer.with(OccupancySensing.Feature.PassiveInfrared), getDefaultOccupancySensingClusterServer(occupied, holdTime, holdTimeMin, holdTimeMax));
1024
1032
  return this;
1025
1033
  }
1026
1034
  createDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
@@ -1029,7 +1037,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1029
1037
  });
1030
1038
  return this;
1031
1039
  }
1032
- createDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air, uncertainty) {
1040
+ createDefaultTvocMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air, uncertainty) {
1033
1041
  this.behaviors.require(TotalVolatileOrganicCompoundsConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1034
1042
  measuredValue,
1035
1043
  minMeasuredValue: null,
@@ -1047,7 +1055,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1047
1055
  });
1048
1056
  return this;
1049
1057
  }
1050
- createDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1058
+ createDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1051
1059
  this.behaviors.require(CarbonMonoxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1052
1060
  measuredValue,
1053
1061
  minMeasuredValue: null,
@@ -1058,7 +1066,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1058
1066
  });
1059
1067
  return this;
1060
1068
  }
1061
- createDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1069
+ createDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1062
1070
  this.behaviors.require(CarbonDioxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1063
1071
  measuredValue,
1064
1072
  minMeasuredValue: null,
@@ -1069,7 +1077,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1069
1077
  });
1070
1078
  return this;
1071
1079
  }
1072
- createDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1080
+ createDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1073
1081
  this.behaviors.require(FormaldehydeConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1074
1082
  measuredValue,
1075
1083
  minMeasuredValue: null,
@@ -1080,7 +1088,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1080
1088
  });
1081
1089
  return this;
1082
1090
  }
1083
- createDefaultPm1ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1091
+ createDefaultPm1ConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1084
1092
  this.behaviors.require(Pm1ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1085
1093
  measuredValue,
1086
1094
  minMeasuredValue: null,
@@ -1091,7 +1099,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1091
1099
  });
1092
1100
  return this;
1093
1101
  }
1094
- createDefaultPm25ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1102
+ createDefaultPm25ConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1095
1103
  this.behaviors.require(Pm25ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1096
1104
  measuredValue,
1097
1105
  minMeasuredValue: null,
@@ -1102,7 +1110,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1102
1110
  });
1103
1111
  return this;
1104
1112
  }
1105
- createDefaultPm10ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1113
+ createDefaultPm10ConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1106
1114
  this.behaviors.require(Pm10ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1107
1115
  measuredValue,
1108
1116
  minMeasuredValue: null,
@@ -1113,7 +1121,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1113
1121
  });
1114
1122
  return this;
1115
1123
  }
1116
- createDefaultOzoneConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1124
+ createDefaultOzoneConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1117
1125
  this.behaviors.require(OzoneConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1118
1126
  measuredValue,
1119
1127
  minMeasuredValue: null,
@@ -1124,7 +1132,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1124
1132
  });
1125
1133
  return this;
1126
1134
  }
1127
- createDefaultRadonConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1135
+ createDefaultRadonConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1128
1136
  this.behaviors.require(RadonConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1129
1137
  measuredValue,
1130
1138
  minMeasuredValue: null,
@@ -1135,7 +1143,7 @@ export class MatterbridgeEndpoint extends Endpoint {
1135
1143
  });
1136
1144
  return this;
1137
1145
  }
1138
- createDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1146
+ createDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue = null, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
1139
1147
  this.behaviors.require(NitrogenDioxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
1140
1148
  measuredValue,
1141
1149
  minMeasuredValue: null,
@@ -1146,4 +1154,48 @@ export class MatterbridgeEndpoint extends Endpoint {
1146
1154
  });
1147
1155
  return this;
1148
1156
  }
1157
+ createDefaultRvcRunModeClusterServer() {
1158
+ this.behaviors.require(MatterbridgeRvcRunModeServer.with(RvcRunMode.Feature.OnOff), {
1159
+ supportedModes: [
1160
+ { label: 'Idle', mode: 1, modeTags: [{ value: RvcRunMode.ModeTag.Idle }] },
1161
+ { label: 'Cleaning', mode: 2, modeTags: [{ value: RvcRunMode.ModeTag.Cleaning }] },
1162
+ { label: 'SpotCleaning', mode: 3, modeTags: [{ value: RvcRunMode.ModeTag.Cleaning }] },
1163
+ ],
1164
+ currentMode: 1,
1165
+ startUpMode: null,
1166
+ onMode: null,
1167
+ });
1168
+ return this;
1169
+ }
1170
+ createDefaultRvcCleanModeClusterServer() {
1171
+ this.behaviors.require(MatterbridgeRvcCleanModeServer.with(RvcCleanMode.Feature.OnOff), {
1172
+ supportedModes: [
1173
+ { label: 'Vacuum', mode: 1, modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }] },
1174
+ { label: 'Mop', mode: 2, modeTags: [{ value: RvcCleanMode.ModeTag.Mop }] },
1175
+ { label: 'Clean', mode: 3, modeTags: [{ value: RvcCleanMode.ModeTag.DeepClean }] },
1176
+ ],
1177
+ currentMode: 1,
1178
+ startUpMode: null,
1179
+ onMode: null,
1180
+ });
1181
+ return this;
1182
+ }
1183
+ createDefaultRvcOperationalStateClusterServer() {
1184
+ this.behaviors.require(MatterbridgeRvcOperationalStateServer, {
1185
+ phaseList: [],
1186
+ currentPhase: null,
1187
+ operationalStateList: [
1188
+ { operationalStateId: RvcOperationalState.OperationalState.Stopped, operationalStateLabel: 'Stopped' },
1189
+ { operationalStateId: RvcOperationalState.OperationalState.Running, operationalStateLabel: 'Running' },
1190
+ { operationalStateId: RvcOperationalState.OperationalState.Paused, operationalStateLabel: 'Paused' },
1191
+ { operationalStateId: RvcOperationalState.OperationalState.Error, operationalStateLabel: 'Error' },
1192
+ { operationalStateId: RvcOperationalState.OperationalState.SeekingCharger, operationalStateLabel: 'SeekingCharger' },
1193
+ { operationalStateId: RvcOperationalState.OperationalState.Charging, operationalStateLabel: 'Charging' },
1194
+ { operationalStateId: RvcOperationalState.OperationalState.Docked, operationalStateLabel: 'Docked' },
1195
+ ],
1196
+ operationalState: RvcOperationalState.OperationalState.Docked,
1197
+ operationalError: { errorStateId: RvcOperationalState.ErrorState.NoError, errorStateLabel: 'No Error', errorStateDetails: 'Fully operative' },
1198
+ });
1199
+ return this;
1200
+ }
1149
1201
  }