matterbridge-example-dynamic-platform 2.0.11 → 2.0.12

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 CHANGED
@@ -26,6 +26,27 @@ If you like this project and find it useful, please consider giving it a star on
26
26
 
27
27
  <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="120"></a>
28
28
 
29
+ ## [2.0.12] - 2026-02-27
30
+
31
+ ### Added
32
+
33
+ - [devContainer]: Add the new [dev container setup](https://matterbridge.io/reflector/MatterbridgeDevContainer.html).
34
+ - [devContainer]: Add the new [reflector dev container setup](https://matterbridge.io/reflector/Reflector.html).
35
+
36
+ ### Changed
37
+
38
+ - [package]: Update dependencies.
39
+ - [package]: Bump package to `automator` v.3.1.0.
40
+ - [package]: Bump `eslint` to v.10.0.2.
41
+ - [package]: Bump `typescript-eslint` to v.8.56.1.
42
+ - [package]: Replace `eslint-plugin-import` with `eslint-plugin-simple-import-sort`.
43
+
44
+ ### Fixed
45
+
46
+ - [matter]: Fix a few matter 1.4.2 conformance issues raised by chip tests.
47
+
48
+ <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
49
+
29
50
  ## [2.0.11] - 2026-02-18
30
51
 
31
52
  ### Changed
package/dist/module.js CHANGED
@@ -1,9 +1,9 @@
1
- import { MatterbridgeEndpoint, MatterbridgeDynamicPlatform, airQualitySensor, bridgedNode, colorTemperatureLight, coverDevice, dimmableLight, doorLockDevice, fanDevice, flowSensor, humiditySensor, onOffLight, onOffOutlet, onOffSwitch, powerSource, rainSensor, smokeCoAlarm, temperatureSensor, thermostatDevice, waterFreezeDetector, waterLeakDetector, airPurifier, pumpDevice, waterValve, genericSwitch, onOffMountedSwitch, dimmableMountedSwitch, extendedColorLight, pressureSensor, contactSensor, occupancySensor, lightSensor, modeSelect, electricalSensor, dimmableOutlet, } from 'matterbridge';
2
- import { RoboticVacuumCleaner, LaundryWasher, WaterHeater, Evse, SolarPower, BatteryStorage, LaundryDryer, HeatPump, Dishwasher, ExtractorHood, MicrowaveOven, Oven, Cooktop, Refrigerator, AirConditioner, Speaker, BasicVideoPlayer, } from 'matterbridge/devices';
3
- import { isValidBoolean, isValidNumber, isValidObject, isValidString } from 'matterbridge/utils';
1
+ import { airPurifier, airQualitySensor, bridgedNode, colorTemperatureLight, contactSensor, coverDevice, dimmableLight, dimmableMountedSwitch, dimmableOutlet, doorLockDevice, electricalSensor, extendedColorLight, fanDevice, flowSensor, genericSwitch, humiditySensor, lightSensor, MatterbridgeDynamicPlatform, MatterbridgeEndpoint, modeSelect, occupancySensor, onOffLight, onOffMountedSwitch, onOffOutlet, onOffSwitch, powerSource, pressureSensor, pumpDevice, rainSensor, smokeCoAlarm, temperatureSensor, thermostatDevice, waterFreezeDetector, waterLeakDetector, waterValve, } from 'matterbridge';
2
+ import { AirConditioner, BasicVideoPlayer, BatteryStorage, Cooktop, Dishwasher, Evse, ExtractorHood, HeatPump, LaundryDryer, LaundryWasher, MicrowaveOven, Oven, Refrigerator, RoboticVacuumCleaner, SolarPower, Speaker, WaterHeater, } from 'matterbridge/devices';
4
3
  import { debugStringify } from 'matterbridge/logger';
5
4
  import { AreaNamespaceTag, LocationTag, NumberTag, PositionTag, RefrigeratorTag, SwitchesTag, UINT16_MAX, UINT32_MAX } from 'matterbridge/matter';
6
- import { PowerSource, BooleanState, OnOff, LevelControl, AirQuality, CarbonDioxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurement, FlowMeasurement, ColorControl, DoorLock, FanControl, FormaldehydeConcentrationMeasurement, NitrogenDioxideConcentrationMeasurement, OzoneConcentrationMeasurement, Pm10ConcentrationMeasurement, Pm1ConcentrationMeasurement, Pm25ConcentrationMeasurement, RadonConcentrationMeasurement, RelativeHumidityMeasurement, RelativeHumidityMeasurementCluster, SmokeCoAlarm, TemperatureMeasurement, Thermostat, ThermostatCluster, TotalVolatileOrganicCompoundsConcentrationMeasurement, WindowCovering, EnergyEvseMode, EnergyEvse, RvcRunMode, RvcCleanMode, Descriptor, BridgedDeviceBasicInformation, OvenMode, OperationalState, OccupancySensing, IlluminanceMeasurement, PressureMeasurement, RefrigeratorAndTemperatureControlledCabinetMode, RvcOperationalState, DeviceEnergyManagement, ElectricalEnergyMeasurement, ElectricalPowerMeasurement, OnOffCluster, } from 'matterbridge/matter/clusters';
5
+ import { AirQuality, BooleanState, BridgedDeviceBasicInformation, CarbonDioxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurement, ColorControl, Descriptor, DeviceEnergyManagement, DoorLock, ElectricalEnergyMeasurement, ElectricalPowerMeasurement, EnergyEvse, EnergyEvseMode, FanControl, FlowMeasurement, FormaldehydeConcentrationMeasurement, IlluminanceMeasurement, LevelControl, NitrogenDioxideConcentrationMeasurement, OccupancySensing, OnOff, OnOffCluster, OperationalState, OvenMode, OzoneConcentrationMeasurement, Pm1ConcentrationMeasurement, Pm10ConcentrationMeasurement, Pm25ConcentrationMeasurement, PowerSource, PressureMeasurement, RadonConcentrationMeasurement, RefrigeratorAndTemperatureControlledCabinetMode, RelativeHumidityMeasurement, RelativeHumidityMeasurementCluster, RvcCleanMode, RvcOperationalState, RvcRunMode, SmokeCoAlarm, TemperatureMeasurement, Thermostat, ThermostatCluster, TotalVolatileOrganicCompoundsConcentrationMeasurement, WindowCovering, } from 'matterbridge/matter/clusters';
6
+ import { isValidBoolean, isValidNumber, isValidObject, isValidString } from 'matterbridge/utils';
7
7
  function luxToMatter(lux) {
8
8
  if (!Number.isFinite(lux) || lux <= 0)
9
9
  return 0;
@@ -180,7 +180,6 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
180
180
  });
181
181
  this.switch = new MatterbridgeEndpoint([onOffSwitch, bridgedNode, powerSource], { id: 'Switch' }, this.config.debug)
182
182
  .createDefaultIdentifyClusterServer()
183
- .createDefaultGroupsClusterServer()
184
183
  .createDefaultBridgedDeviceBasicInformationClusterServer('Switch', 'SWI00010', 0xfff1, 'Matterbridge', 'Matterbridge Switch')
185
184
  .createDefaultOnOffClusterServer()
186
185
  .createDefaultPowerSourceWiredClusterServer();
@@ -196,10 +195,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
196
195
  });
197
196
  this.mountedOnOffSwitch = new MatterbridgeEndpoint([onOffMountedSwitch, onOffOutlet, bridgedNode, powerSource], { id: 'OnOffMountedSwitch' }, this.config.debug)
198
197
  .createDefaultIdentifyClusterServer()
199
- .createDefaultGroupsClusterServer()
200
198
  .createDefaultBridgedDeviceBasicInformationClusterServer('OnOff Mounted Switch', 'OMS00011', 0xfff1, 'Matterbridge', 'Matterbridge OnOff Mounted Switch')
201
199
  .createDefaultOnOffClusterServer()
202
- .createDefaultPowerSourceWiredClusterServer();
200
+ .createDefaultPowerSourceWiredClusterServer()
201
+ .addRequiredClusterServers();
203
202
  this.mountedOnOffSwitch = await this.addDevice(this.mountedOnOffSwitch);
204
203
  this.mountedOnOffSwitch?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
205
204
  this.mountedOnOffSwitch?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -212,7 +211,6 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
212
211
  });
213
212
  this.mountedDimmerSwitch = new MatterbridgeEndpoint([dimmableMountedSwitch, dimmableOutlet, bridgedNode, powerSource], { id: 'DimmerMountedSwitch' }, this.config.debug)
214
213
  .createDefaultIdentifyClusterServer()
215
- .createDefaultGroupsClusterServer()
216
214
  .createDefaultBridgedDeviceBasicInformationClusterServer('Dimmer Mounted Switch', 'DMS00012', 0xfff1, 'Matterbridge', 'Matterbridge Dimmer Mounted Switch')
217
215
  .createDefaultOnOffClusterServer()
218
216
  .createDefaultLevelControlClusterServer()
@@ -236,10 +234,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
236
234
  });
237
235
  this.lightOnOff = new MatterbridgeEndpoint([onOffLight, bridgedNode, powerSource], { id: 'Light (on/off)' }, this.config.debug)
238
236
  .createDefaultIdentifyClusterServer()
239
- .createDefaultGroupsClusterServer()
240
237
  .createDefaultBridgedDeviceBasicInformationClusterServer('Light (on/off)', 'LON00013', 0xfff1, 'Matterbridge', 'Matterbridge Light on/off')
241
238
  .createDefaultOnOffClusterServer()
242
- .createDefaultPowerSourceWiredClusterServer();
239
+ .createDefaultPowerSourceWiredClusterServer()
240
+ .addRequiredClusterServers();
243
241
  this.lightOnOff = await this.addDevice(this.lightOnOff);
244
242
  this.lightOnOff?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
245
243
  this.lightOnOff?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -252,11 +250,11 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
252
250
  });
253
251
  this.dimmer = new MatterbridgeEndpoint([dimmableLight, bridgedNode, powerSource], { id: 'Dimmer' }, this.config.debug)
254
252
  .createDefaultIdentifyClusterServer()
255
- .createDefaultGroupsClusterServer()
256
253
  .createDefaultBridgedDeviceBasicInformationClusterServer('Dimmer', 'DMR00014', 0xfff1, 'Matterbridge', 'Matterbridge Dimmer')
257
254
  .createDefaultOnOffClusterServer()
258
255
  .createDefaultLevelControlClusterServer()
259
- .createDefaultPowerSourceWiredClusterServer();
256
+ .createDefaultPowerSourceWiredClusterServer()
257
+ .addRequiredClusterServers();
260
258
  this.dimmer = await this.addDevice(this.dimmer);
261
259
  this.dimmer?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
262
260
  this.dimmer?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -275,12 +273,12 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
275
273
  });
276
274
  this.light = new MatterbridgeEndpoint([extendedColorLight, bridgedNode, powerSource], { id: 'Light (XY, HS, CT)' }, this.config.debug)
277
275
  .createDefaultIdentifyClusterServer()
278
- .createDefaultGroupsClusterServer()
279
276
  .createDefaultBridgedDeviceBasicInformationClusterServer('Light (XY, HS, CT)', 'LXC00015', 0xfff1, 'Matterbridge', 'Matterbridge Light')
280
277
  .createDefaultOnOffClusterServer()
281
278
  .createDefaultLevelControlClusterServer()
282
279
  .createDefaultColorControlClusterServer()
283
- .createDefaultPowerSourceWiredClusterServer();
280
+ .createDefaultPowerSourceWiredClusterServer()
281
+ .addRequiredClusterServers();
284
282
  this.light = await this.addDevice(this.light);
285
283
  this.light?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
286
284
  this.light?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -314,12 +312,12 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
314
312
  });
315
313
  this.lightHS = new MatterbridgeEndpoint([colorTemperatureLight, bridgedNode, powerSource], { id: 'Light (HS, CT)' }, this.config.debug)
316
314
  .createDefaultIdentifyClusterServer()
317
- .createDefaultGroupsClusterServer()
318
315
  .createDefaultBridgedDeviceBasicInformationClusterServer('Light (HS, CT)', 'LHC00016', 0xfff1, 'Matterbridge', 'Matterbridge Light')
319
316
  .createDefaultOnOffClusterServer()
320
317
  .createDefaultLevelControlClusterServer()
321
318
  .createHsColorControlClusterServer()
322
- .createDefaultPowerSourceWiredClusterServer();
319
+ .createDefaultPowerSourceWiredClusterServer()
320
+ .addRequiredClusterServers();
323
321
  this.lightHS = await this.addDevice(this.lightHS);
324
322
  this.lightHS?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
325
323
  this.lightHS?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -350,12 +348,12 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
350
348
  });
351
349
  this.lightXY = new MatterbridgeEndpoint([extendedColorLight, bridgedNode, powerSource], { id: 'Light (XY, CT)' }, this.config.debug)
352
350
  .createDefaultIdentifyClusterServer()
353
- .createDefaultGroupsClusterServer()
354
351
  .createDefaultBridgedDeviceBasicInformationClusterServer('Light (XY, CT)', 'LXT00017', 0xfff1, 'Matterbridge', 'Matterbridge Light')
355
352
  .createDefaultOnOffClusterServer()
356
353
  .createDefaultLevelControlClusterServer()
357
354
  .createXyColorControlClusterServer()
358
- .createDefaultPowerSourceWiredClusterServer();
355
+ .createDefaultPowerSourceWiredClusterServer()
356
+ .addRequiredClusterServers();
359
357
  this.lightXY = await this.addDevice(this.lightXY);
360
358
  this.lightXY?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
361
359
  this.lightXY?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -380,12 +378,12 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
380
378
  });
381
379
  this.lightCT = new MatterbridgeEndpoint([colorTemperatureLight, bridgedNode, powerSource], { id: 'Light (CT)' }, this.config.debug)
382
380
  .createDefaultIdentifyClusterServer()
383
- .createDefaultGroupsClusterServer()
384
381
  .createDefaultBridgedDeviceBasicInformationClusterServer('Light (CT)', 'LCT00018', 0xfff1, 'Matterbridge', 'Matterbridge Light')
385
382
  .createDefaultOnOffClusterServer()
386
383
  .createDefaultLevelControlClusterServer()
387
384
  .createCtColorControlClusterServer()
388
- .createDefaultPowerSourceWiredClusterServer();
385
+ .createDefaultPowerSourceWiredClusterServer()
386
+ .addRequiredClusterServers();
389
387
  this.lightCT = await this.addDevice(this.lightCT);
390
388
  this.lightCT?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
391
389
  this.lightCT?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -407,10 +405,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
407
405
  });
408
406
  this.outlet = new MatterbridgeEndpoint([onOffOutlet, bridgedNode, powerSource], { id: 'Outlet' }, this.config.debug)
409
407
  .createDefaultIdentifyClusterServer()
410
- .createDefaultGroupsClusterServer()
411
408
  .createDefaultBridgedDeviceBasicInformationClusterServer('Outlet', 'OUT00019', 0xfff1, 'Matterbridge', 'Matterbridge Outlet')
412
409
  .createDefaultOnOffClusterServer()
413
- .createDefaultPowerSourceWiredClusterServer();
410
+ .createDefaultPowerSourceWiredClusterServer()
411
+ .addRequiredClusterServers();
414
412
  this.outlet = await this.addDevice(this.outlet);
415
413
  this.outlet?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
416
414
  this.outlet?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -457,7 +455,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
457
455
  this.outletEnergyApparent?.addCommandHandler('off', async () => {
458
456
  this.outletEnergyApparent?.log.info('Command off called');
459
457
  });
460
- this.smartOutlet = new MatterbridgeEndpoint([bridgedNode, powerSource, electricalSensor], { id: 'SmartOutlet' }, this.config.debug)
458
+ this.smartOutlet = new MatterbridgeEndpoint([electricalSensor, bridgedNode, powerSource], { id: 'SmartOutlet' }, this.config.debug)
461
459
  .createDefaultBridgedDeviceBasicInformationClusterServer('Smart outlet', 'SOU00063', 0xfff1, 'Matterbridge', 'Matterbridge Smart Outlet')
462
460
  .createDefaultPowerSourceWiredClusterServer()
463
461
  .createDefaultElectricalEnergyMeasurementClusterServer(0, 0)
@@ -490,10 +488,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
490
488
  this.smartOutlet = await this.addDevice(this.smartOutlet);
491
489
  this.coverLift = new MatterbridgeEndpoint([coverDevice, bridgedNode, powerSource], { id: 'CoverLift' }, this.config.debug)
492
490
  .createDefaultIdentifyClusterServer()
493
- .createDefaultGroupsClusterServer()
494
491
  .createDefaultBridgedDeviceBasicInformationClusterServer('Cover lift', 'COV00020', 0xfff1, 'Matterbridge', 'Matterbridge Cover')
495
492
  .createDefaultWindowCoveringClusterServer()
496
- .createDefaultPowerSourceWiredClusterServer();
493
+ .createDefaultPowerSourceWiredClusterServer()
494
+ .addRequiredClusterServers();
497
495
  this.coverLift = await this.addDevice(this.coverLift);
498
496
  this.coverLift?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
499
497
  this.coverLift?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -516,10 +514,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
516
514
  });
517
515
  this.coverLiftTilt = new MatterbridgeEndpoint([coverDevice, bridgedNode, powerSource], { id: 'CoverLiftTilt' }, this.config.debug)
518
516
  .createDefaultIdentifyClusterServer()
519
- .createDefaultGroupsClusterServer()
520
517
  .createDefaultBridgedDeviceBasicInformationClusterServer('Cover lift and tilt', 'CLT00021', 0xfff1, 'Matterbridge', 'Matterbridge Cover')
521
518
  .createDefaultLiftTiltWindowCoveringClusterServer()
522
- .createDefaultPowerSourceWiredClusterServer();
519
+ .createDefaultPowerSourceWiredClusterServer()
520
+ .addRequiredClusterServers();
523
521
  this.coverLiftTilt = await this.addDevice(this.coverLiftTilt);
524
522
  this.coverLiftTilt?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
525
523
  this.coverLiftTilt?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -549,7 +547,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
549
547
  .createDefaultIdentifyClusterServer()
550
548
  .createDefaultBridgedDeviceBasicInformationClusterServer('Lock', 'LOC00022', 0xfff1, 'Matterbridge', 'Matterbridge Lock')
551
549
  .createDefaultDoorLockClusterServer()
552
- .createDefaultPowerSourceRechargeableBatteryClusterServer(30);
550
+ .createDefaultPowerSourceRechargeableBatteryClusterServer(30)
551
+ .addRequiredClusterServers();
553
552
  this.lock = await this.addDevice(this.lock);
554
553
  this.lock?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
555
554
  this.lock?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -569,10 +568,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
569
568
  }, this.lock.log);
570
569
  this.thermoAuto = new MatterbridgeEndpoint([thermostatDevice, bridgedNode, powerSource], { id: 'Thermostat (AutoMode)' }, this.config.debug)
571
570
  .createDefaultIdentifyClusterServer()
572
- .createDefaultGroupsClusterServer()
573
571
  .createDefaultBridgedDeviceBasicInformationClusterServer('Thermostat (Auto)', 'TAU00023', 0xfff1, 'Matterbridge', 'Matterbridge Thermostat')
574
572
  .createDefaultThermostatClusterServer(20, 18, 22)
575
- .createDefaultPowerSourceRechargeableBatteryClusterServer(70, PowerSource.BatChargeLevel.Ok, 4700);
573
+ .createDefaultPowerSourceRechargeableBatteryClusterServer(70, PowerSource.BatChargeLevel.Ok, 4700)
574
+ .addRequiredClusterServers();
576
575
  this.thermoAuto
577
576
  .addChildDeviceType('Flow', flowSensor)
578
577
  .createDefaultFlowMeasurementClusterServer(1 * 10)
@@ -608,10 +607,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
608
607
  }, this.thermoAuto.log);
609
608
  this.thermoAutoOccupancy = new MatterbridgeEndpoint([thermostatDevice, bridgedNode, powerSource], { id: 'Thermostat (AutoModeOccupancy)' }, this.config.debug)
610
609
  .createDefaultIdentifyClusterServer()
611
- .createDefaultGroupsClusterServer()
612
610
  .createDefaultBridgedDeviceBasicInformationClusterServer('Thermostat (AutoOccupancy)', 'TAO00058', 0xfff1, 'Matterbridge', 'Matterbridge Thermostat Presets')
613
611
  .createDefaultThermostatClusterServer(20, 18, 22, 1, 0, 35, 15, 50, 10, 30, false, 20.5)
614
- .createDefaultPowerSourceWiredClusterServer();
612
+ .createDefaultPowerSourceWiredClusterServer()
613
+ .addRequiredClusterServers();
615
614
  this.thermoAutoOccupancy = await this.addDevice(this.thermoAutoOccupancy);
616
615
  await this.thermoAutoOccupancy?.subscribeAttribute(ThermostatCluster.id, 'systemMode', (value) => {
617
616
  const lookupSystemMode = ['Off', 'Auto', '', 'Cool', 'Heat', 'EmergencyHeat', 'Precooling', 'FanOnly', 'Dry', 'Sleep'];
@@ -731,10 +730,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
731
730
  ];
732
731
  this.thermoAutoPresets = new MatterbridgeEndpoint([thermostatDevice, bridgedNode, powerSource], { id: 'Thermostat (AutoModePresets)' }, this.config.debug)
733
732
  .createDefaultIdentifyClusterServer()
734
- .createDefaultGroupsClusterServer()
735
733
  .createDefaultBridgedDeviceBasicInformationClusterServer('Thermostat (AutoModePresets)', 'TAP00058', 0xfff1, 'Matterbridge', 'Matterbridge Thermostat With Presets')
736
734
  .createDefaultPresetsThermostatClusterServer(20, 18, 22, 1, 0, 35, 15, 50, 10, 30, false, 20.5, undefined, presets_List, presetTypeDefinitions)
737
- .createDefaultPowerSourceWiredClusterServer();
735
+ .createDefaultPowerSourceWiredClusterServer()
736
+ .addRequiredClusterServers();
738
737
  if (this.thermoAutoPresets) {
739
738
  this.thermoAutoPresets
740
739
  .addChildDeviceType('Temperature', temperatureSensor)
@@ -790,10 +789,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
790
789
  }, this.thermoAutoPresets.log);
791
790
  this.thermoHeat = new MatterbridgeEndpoint([thermostatDevice, bridgedNode, powerSource], { id: 'Thermostat (Heat)' }, this.config.debug)
792
791
  .createDefaultIdentifyClusterServer()
793
- .createDefaultGroupsClusterServer()
794
792
  .createDefaultBridgedDeviceBasicInformationClusterServer('Thermostat (Heat)', 'THE00024', 0xfff1, 'Matterbridge', 'Matterbridge Thermostat')
795
793
  .createDefaultHeatingThermostatClusterServer(20, 18, 5, 35)
796
- .createDefaultPowerSourceReplaceableBatteryClusterServer(70, PowerSource.BatChargeLevel.Ok, 6010, 'AA 1.5V', 4);
794
+ .createDefaultPowerSourceReplaceableBatteryClusterServer(70, PowerSource.BatChargeLevel.Ok, 6010, 'AA 1.5V', 4)
795
+ .addRequiredClusterServers();
797
796
  this.thermoHeat
798
797
  .addChildDeviceType('TemperatureIN', [temperatureSensor], {
799
798
  tagList: [
@@ -828,10 +827,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
828
827
  }, this.thermoHeat.log);
829
828
  this.thermoCool = new MatterbridgeEndpoint([thermostatDevice, bridgedNode, powerSource], { id: 'Thermostat (Cool)' }, this.config.debug)
830
829
  .createDefaultIdentifyClusterServer()
831
- .createDefaultGroupsClusterServer()
832
830
  .createDefaultBridgedDeviceBasicInformationClusterServer('Thermostat (Cool)', 'TCO00025', 0xfff1, 'Matterbridge', 'Matterbridge Thermostat')
833
831
  .createDefaultCoolingThermostatClusterServer(20, 18, 5, 35)
834
- .createDefaultPowerSourceReplaceableBatteryClusterServer(40, PowerSource.BatChargeLevel.Ok, 5080, 'AA 1.5V', 4);
832
+ .createDefaultPowerSourceReplaceableBatteryClusterServer(40, PowerSource.BatChargeLevel.Ok, 5080, 'AA 1.5V', 4)
833
+ .addRequiredClusterServers();
835
834
  this.thermoCool = await this.addDevice(this.thermoCool);
836
835
  this.thermoCool?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
837
836
  this.thermoCool?.log.info(`Command identify called identifyTime ${identifyTime}`);
@@ -854,7 +853,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
854
853
  .createDefaultRelativeHumidityMeasurementClusterServer(50 * 100)
855
854
  .createDefaultPowerSourceWiredClusterServer()
856
855
  .createDefaultActivatedCarbonFilterMonitoringClusterServer()
857
- .createDefaultHepaFilterMonitoringClusterServer();
856
+ .createDefaultHepaFilterMonitoringClusterServer()
857
+ .addRequiredClusterServers();
858
858
  this.airPurifier = await this.addDevice(this.airPurifier);
859
859
  this.airPurifier?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
860
860
  this.airPurifier?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -893,7 +893,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
893
893
  .createOnOffClusterServer()
894
894
  .createLevelControlClusterServer()
895
895
  .createDefaultPumpConfigurationAndControlClusterServer()
896
- .createDefaultPowerSourceWiredClusterServer();
896
+ .createDefaultPowerSourceWiredClusterServer()
897
+ .addRequiredClusterServers();
897
898
  this.pump = await this.addDevice(this.pump);
898
899
  this.pump?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
899
900
  this.pump?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -914,7 +915,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
914
915
  .createDefaultBridgedDeviceBasicInformationClusterServer('Water valve', 'WAV00029', 0xfff1, 'Matterbridge', 'Matterbridge Water valve')
915
916
  .createDefaultIdentifyClusterServer()
916
917
  .createDefaultValveConfigurationAndControlClusterServer()
917
- .createDefaultPowerSourceWiredClusterServer();
918
+ .createDefaultPowerSourceWiredClusterServer()
919
+ .addRequiredClusterServers();
918
920
  this.valve = await this.addDevice(this.valve);
919
921
  this.valve?.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
920
922
  this.valve?.log.info(`Command identify called identifyTime:${identifyTime}`);
@@ -1103,7 +1105,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
1103
1105
  .createDefaultPowerSourceRechargeableBatteryClusterServer()
1104
1106
  .createDefaultIdentifyClusterServer()
1105
1107
  .createDefaultBooleanStateClusterServer(false)
1106
- .createDefaultBooleanStateConfigurationClusterServer();
1108
+ .createDefaultBooleanStateConfigurationClusterServer()
1109
+ .addRequiredClusterServers();
1107
1110
  this.rain = await this.addDevice(this.rain);
1108
1111
  this.smokeCo = new MatterbridgeEndpoint([smokeCoAlarm, bridgedNode, powerSource], { id: 'SmokeCo alarm sensor' }, this.config.debug)
1109
1112
  .createDefaultBridgedDeviceBasicInformationClusterServer('SmokeCo alarm sensor', 'SCA00037', 0xfff1, 'Matterbridge', 'Matterbridge SmokeCo Sensor')
@@ -1144,7 +1147,6 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
1144
1147
  this.airQuality = await this.addDevice(this.airQuality);
1145
1148
  this.momentarySwitch = new MatterbridgeEndpoint([bridgedNode, powerSource], { id: 'Momentary switch composed' }, this.config.debug)
1146
1149
  .createDefaultBridgedDeviceBasicInformationClusterServer('Momentary switch', 'MOS00041', 0xfff1, 'Matterbridge', 'Matterbridge MomentarySwitch')
1147
- .createDefaultIdentifyClusterServer()
1148
1150
  .createDefaultPowerSourceReplaceableBatteryClusterServer(50, PowerSource.BatChargeLevel.Ok, 2900, 'CR2450', 1);
1149
1151
  this.momentarySwitch
1150
1152
  .addChildDeviceType('Momentary switch 1', [genericSwitch], {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-example-dynamic-platform",
9
- "version": "2.0.11",
9
+ "version": "2.0.12",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "node-ansi-logger": "3.2.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
4
4
  "description": "Matterbridge dynamic plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",
@@ -71,7 +71,7 @@
71
71
  "node-persist-manager": "2.0.1"
72
72
  },
73
73
  "overrides": {
74
- "eslint": "10.0.0",
74
+ "eslint": "10.0.2",
75
75
  "@eslint/js": "10.0.1"
76
76
  }
77
77
  }