matterbridge-example-dynamic-platform 1.2.3-rc.1 → 1.2.4-dev-20250612-b04ef65

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
@@ -8,15 +8,28 @@ If you like this project and find it useful, please consider giving it a star on
8
8
  <img src="bmc-button.svg" alt="Buy me a coffee" width="120">
9
9
  </a>
10
10
 
11
+ ## [1.2.4] - 2025-06-11
12
+
13
+ ### Changed
14
+
15
+ - [package]: Require matterbridge 3.0.6.
16
+ - [package]: Updated package.
17
+ - [package]: Updated dependencies.
18
+
19
+ <a href="https://www.buymeacoffee.com/luligugithub">
20
+ <img src="bmc-button.svg" alt="Buy me a coffee" width="80">
21
+ </a>
22
+
11
23
  ## [1.2.3] - 2025-05-25
12
24
 
13
25
  ### Added
14
26
 
15
27
  - [platform]: Added a cover device with both lift and tilt (supported by the Home app).
28
+ - [platform]: Added evse (EV charger) device type (not supported by the Home app).
16
29
 
17
30
  ### Changed
18
31
 
19
- - [package]: Require matterbridge 3.0.4.
32
+ - [package]: Require matterbridge 3.0.5.
20
33
  - [package]: Updated package.
21
34
  - [package]: Updated dependencies.
22
35
 
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  Matterbridge dynamic platform example plugin is a template to develop your own plugin using the dynamic platform.
18
18
 
19
- It exposes 40 virtual devices:
19
+ It exposes 41 virtual devices:
20
20
 
21
21
  - a switch with onOff cluster
22
22
  - a light with onOff
@@ -59,6 +59,7 @@ It exposes 40 virtual devices:
59
59
  - an extractor Hood device (supported by SmartThings, Alexa and Home Assistant)
60
60
  - a cooktop device (supported by SmartThings, Alexa and Home Assistant)
61
61
  - a water heater device (supported by SmartThings and Home Assistant)
62
+ - a car charger device (supported by Home Assistant)
62
63
 
63
64
  All these devices continuously change state and position. The plugin also shows how to use all the command handlers (you can control all the devices), how to subscribe to attributes and how to trigger events.
64
65
 
@@ -276,12 +276,12 @@ export class Appliances extends MatterbridgeEndpoint {
276
276
  class MatterbridgeLevelTemperatureControlServer extends TemperatureControlBehavior.with(TemperatureControl.Feature.TemperatureLevel) {
277
277
  initialize() {
278
278
  if (this.state.supportedTemperatureLevels.length >= 2) {
279
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
279
+ const device = this.endpoint.stateOf(MatterbridgeServer);
280
280
  device.log.info('MatterbridgeLevelTemperatureControlServer initialized');
281
281
  }
282
282
  }
283
283
  setTemperature(request) {
284
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
284
+ const device = this.endpoint.stateOf(MatterbridgeServer);
285
285
  if (request.targetTemperatureLevel !== undefined && request.targetTemperatureLevel >= 0 && request.targetTemperatureLevel < this.state.supportedTemperatureLevels.length) {
286
286
  device.log.info(`MatterbridgeLevelTemperatureControlServer: setTemperature called setting selectedTemperatureLevel to ${request.targetTemperatureLevel}: ${this.state.supportedTemperatureLevels[request.targetTemperatureLevel]}`);
287
287
  this.state.selectedTemperatureLevel = request.targetTemperatureLevel;
@@ -293,11 +293,11 @@ class MatterbridgeLevelTemperatureControlServer extends TemperatureControlBehavi
293
293
  }
294
294
  class MatterbridgeNumberTemperatureControlServer extends TemperatureControlBehavior.with(TemperatureControl.Feature.TemperatureNumber) {
295
295
  initialize() {
296
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
296
+ const device = this.endpoint.stateOf(MatterbridgeServer);
297
297
  device.log.info('MatterbridgeNumberTemperatureControlServer initialized');
298
298
  }
299
299
  setTemperature(request) {
300
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
300
+ const device = this.endpoint.stateOf(MatterbridgeServer);
301
301
  if (request.targetTemperature !== undefined && request.targetTemperature >= this.state.minTemperature && request.targetTemperature <= this.state.maxTemperature) {
302
302
  device.log.info(`MatterbridgeNumberTemperatureControlServer: setTemperature called setting temperatureSetpoint to ${request.targetTemperature}`);
303
303
  this.state.temperatureSetpoint = request.targetTemperature;
@@ -309,11 +309,11 @@ class MatterbridgeNumberTemperatureControlServer extends TemperatureControlBehav
309
309
  }
310
310
  class MatterbridgeMicrowaveOvenControlServer extends MicrowaveOvenControlBehavior.with(MicrowaveOvenControl.Feature.PowerInWatts) {
311
311
  initialize() {
312
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
312
+ const device = this.endpoint.stateOf(MatterbridgeServer);
313
313
  device.log.info('MatterbridgeMicrowaveOvenControlServer initialized');
314
314
  }
315
315
  setCookingParameters(request) {
316
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
316
+ const device = this.endpoint.stateOf(MatterbridgeServer);
317
317
  if (request.cookMode !== undefined) {
318
318
  device.log.info(`MatterbridgeMicrowaveOvenControlServer: setCookingParameters called setting cookMode to ${request.cookMode}`);
319
319
  this.endpoint.setStateOf(MicrowaveOvenModeServer, { currentMode: request.cookMode });
@@ -340,7 +340,7 @@ class MatterbridgeMicrowaveOvenControlServer extends MicrowaveOvenControlBehavio
340
340
  }
341
341
  }
342
342
  addMoreTime(request) {
343
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
343
+ const device = this.endpoint.stateOf(MatterbridgeServer);
344
344
  if (request.timeToAdd !== undefined && request.timeToAdd >= 0) {
345
345
  device.log.info(`MatterbridgeMicrowaveOvenControlServer: addMoreTime called setting cookTime to ${this.state.cookTime + request.timeToAdd}`);
346
346
  this.state.cookTime += request.timeToAdd;
@@ -352,13 +352,13 @@ class MatterbridgeMicrowaveOvenControlServer extends MicrowaveOvenControlBehavio
352
352
  }
353
353
  export class MatterbridgeOvenCavityOperationalStateServer extends OvenCavityOperationalStateBehavior {
354
354
  initialize() {
355
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
355
+ const device = this.endpoint.stateOf(MatterbridgeServer);
356
356
  device.log.info('OvenCavityOperationalStateServer initialized: setting operational state to Stopped and operational error to No error');
357
357
  this.state.operationalState = OperationalState.OperationalStateEnum.Stopped;
358
358
  this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateLabel: 'No error', errorStateDetails: 'Fully operational' };
359
359
  }
360
360
  stop() {
361
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
361
+ const device = this.endpoint.stateOf(MatterbridgeServer);
362
362
  device.log.info('OvenCavityOperationalStateServer: stop called setting operational state to Stopped and operational error to No error');
363
363
  this.state.operationalState = OperationalState.OperationalStateEnum.Stopped;
364
364
  this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateLabel: 'No error', errorStateDetails: 'Fully operational' };
@@ -367,7 +367,7 @@ export class MatterbridgeOvenCavityOperationalStateServer extends OvenCavityOper
367
367
  };
368
368
  }
369
369
  start() {
370
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
370
+ const device = this.endpoint.stateOf(MatterbridgeServer);
371
371
  device.log.info('OvenCavityOperationalStateServer: start called setting operational state to Running and operational error to No error');
372
372
  this.state.operationalState = OperationalState.OperationalStateEnum.Running;
373
373
  this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateLabel: 'No error', errorStateDetails: 'Fully operational' };
@@ -378,12 +378,12 @@ export class MatterbridgeOvenCavityOperationalStateServer extends OvenCavityOper
378
378
  }
379
379
  class MatterbridgeRefrigeratorAndTemperatureControlledCabinetModeServer extends RefrigeratorAndTemperatureControlledCabinetModeBehavior {
380
380
  initialize() {
381
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
381
+ const device = this.endpoint.stateOf(MatterbridgeServer);
382
382
  device.log.info('MatterbridgeRefrigeratorAndTemperatureControlledCabinetModeServer initialized: setting currentMode to 1');
383
383
  this.state.currentMode = 1;
384
384
  }
385
385
  changeToMode(request) {
386
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
386
+ const device = this.endpoint.stateOf(MatterbridgeServer);
387
387
  const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
388
388
  if (supportedMode) {
389
389
  device.log.info(`MatterbridgeRefrigeratorAndTemperatureControlledCabinetModeServer: changeToMode called with mode ${supportedMode.mode} = ${supportedMode.label}`);
@@ -398,12 +398,12 @@ class MatterbridgeRefrigeratorAndTemperatureControlledCabinetModeServer extends
398
398
  }
399
399
  class MatterbridgeOvenModeServer extends OvenModeBehavior {
400
400
  initialize() {
401
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
401
+ const device = this.endpoint.stateOf(MatterbridgeServer);
402
402
  device.log.info('OvenModeServer initialized: setting currentMode to 3');
403
403
  this.state.currentMode = 3;
404
404
  }
405
405
  changeToMode(request) {
406
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
406
+ const device = this.endpoint.stateOf(MatterbridgeServer);
407
407
  const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
408
408
  if (supportedMode) {
409
409
  device.log.info(`OvenModeServer: changeToMode called with mode ${supportedMode.mode} = ${supportedMode.label}`);
@@ -418,20 +418,20 @@ class MatterbridgeOvenModeServer extends OvenModeBehavior {
418
418
  }
419
419
  class MatterbridgeDishwasherModeServer extends DishwasherModeBehavior {
420
420
  initialize() {
421
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
421
+ const device = this.endpoint.stateOf(MatterbridgeServer);
422
422
  device.log.info('DishwasherModeServer initialized: setting currentMode to 3');
423
423
  this.state.currentMode = 2;
424
424
  this.reactTo(this.agent.get(MatterbridgeOnOffServer).events.onOff$Changed, this.handleOnOffChange);
425
425
  }
426
426
  handleOnOffChange(onOff) {
427
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
427
+ const device = this.endpoint.stateOf(MatterbridgeServer);
428
428
  if (onOff === false) {
429
429
  device.log.info('***OnOffServer changed to OFF: setting Dead Front state to Manufacturer Specific');
430
430
  this.state.currentMode = 2;
431
431
  }
432
432
  }
433
433
  changeToMode(request) {
434
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
434
+ const device = this.endpoint.stateOf(MatterbridgeServer);
435
435
  const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
436
436
  if (supportedMode) {
437
437
  device.log.info(`DishwasherModeServer: changeToMode called with mode ${supportedMode.mode} = ${supportedMode.label}`);
@@ -446,20 +446,20 @@ class MatterbridgeDishwasherModeServer extends DishwasherModeBehavior {
446
446
  }
447
447
  class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeBehavior {
448
448
  initialize() {
449
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
449
+ const device = this.endpoint.stateOf(MatterbridgeServer);
450
450
  device.log.info('LaundryWasherModeServer initialized: setting currentMode to 3');
451
451
  this.state.currentMode = 2;
452
452
  this.reactTo(this.agent.get(MatterbridgeOnOffServer).events.onOff$Changed, this.handleOnOffChange);
453
453
  }
454
454
  handleOnOffChange(onOff) {
455
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
455
+ const device = this.endpoint.stateOf(MatterbridgeServer);
456
456
  if (onOff === false) {
457
457
  device.log.notice('OnOffServer changed to OFF: setting Dead Front state to Manufacturer Specific');
458
458
  this.state.currentMode = 2;
459
459
  }
460
460
  }
461
461
  changeToMode(request) {
462
- const device = this.endpoint.stateOf(MatterbridgeServer).deviceCommand;
462
+ const device = this.endpoint.stateOf(MatterbridgeServer);
463
463
  const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
464
464
  if (supportedMode) {
465
465
  device.log.info(`LaundryWasherModeServer: changeToMode called with mode ${supportedMode.mode} = ${supportedMode.label}`);
package/dist/platform.js CHANGED
@@ -1,7 +1,7 @@
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, airConditioner, laundryWasher, cooktop, extractorHood, microwaveOven, oven, refrigerator, dishwasher, laundryDryer, onOffMountedSwitch, dimmableMountedSwitch, extendedColorLight, RoboticVacuumCleaner, WaterHeater, } from 'matterbridge';
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, airConditioner, laundryWasher, cooktop, extractorHood, microwaveOven, oven, refrigerator, dishwasher, laundryDryer, onOffMountedSwitch, dimmableMountedSwitch, extendedColorLight, RoboticVacuumCleaner, WaterHeater, Evse, } from 'matterbridge';
2
2
  import { isValidBoolean, isValidNumber } from 'matterbridge/utils';
3
3
  import { LocationTag } from 'matterbridge/matter';
4
- 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, } from 'matterbridge/matter/clusters';
4
+ 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, } from 'matterbridge/matter/clusters';
5
5
  import { Appliances } from './appliances.js';
6
6
  export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
7
7
  switch;
@@ -35,7 +35,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
35
35
  momentarySwitch;
36
36
  latchingSwitch;
37
37
  vacuum;
38
- heater;
38
+ waterHeater;
39
+ evse;
39
40
  switchInterval;
40
41
  lightInterval;
41
42
  outletInterval;
@@ -58,8 +59,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
58
59
  fanModeLookup = ['Off', 'Low', 'Medium', 'High', 'On', 'Auto', 'Smart'];
59
60
  constructor(matterbridge, log, config) {
60
61
  super(matterbridge, log, config);
61
- if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('3.0.4')) {
62
- throw new Error(`This plugin requires Matterbridge version >= "3.0.4". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend.`);
62
+ if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('3.0.6')) {
63
+ throw new Error(`This plugin requires Matterbridge version >= "3.0.6". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend.`);
63
64
  }
64
65
  this.log.info('Initializing platform:', this.config.name);
65
66
  if (config.whiteList === undefined)
@@ -672,6 +673,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
672
673
  });
673
674
  await this.airPurifier?.subscribeAttribute(FanControl.Cluster.id, 'fanMode', (newValue, oldValue, context) => {
674
675
  this.airPurifier?.log.info(`Fan mode changed from ${this.fanModeLookup[oldValue]} to ${this.fanModeLookup[newValue]} context: ${context.offline === true ? 'offline' : 'online'}`);
676
+ if (context.offline === true)
677
+ return;
675
678
  if (newValue === FanControl.FanMode.Off) {
676
679
  this.airPurifier?.setAttribute(FanControl.Cluster.id, 'percentCurrent', 0, this.airPurifier?.log);
677
680
  }
@@ -690,6 +693,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
690
693
  }, this.airPurifier.log);
691
694
  await this.airPurifier?.subscribeAttribute(FanControl.Cluster.id, 'percentSetting', (newValue, oldValue, context) => {
692
695
  this.airPurifier?.log.info(`Percent setting changed from ${oldValue} to ${newValue} context: ${context.offline === true ? 'offline' : 'online'}`);
696
+ if (context.offline === true)
697
+ return;
693
698
  if (isValidNumber(newValue, 0, 100))
694
699
  this.airPurifier?.setAttribute(FanControl.Cluster.id, 'percentCurrent', newValue, this.airPurifier?.log);
695
700
  }, this.airPurifier.log);
@@ -791,6 +796,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
791
796
  }
792
797
  await this.fan?.subscribeAttribute(FanControl.Cluster.id, 'fanMode', (newValue, oldValue, context) => {
793
798
  this.fan?.log.info(`Fan mode changed from ${this.fanModeLookup[oldValue]} to ${this.fanModeLookup[newValue]} context: ${context.offline === true ? 'offline' : 'online'}`);
799
+ if (context.offline === true)
800
+ return;
794
801
  if (newValue === FanControl.FanMode.Off) {
795
802
  this.fan?.setAttribute(FanControl.Cluster.id, 'percentSetting', 0, this.fan?.log);
796
803
  this.fan?.setAttribute(FanControl.Cluster.id, 'percentCurrent', 0, this.fan?.log);
@@ -818,11 +825,15 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
818
825
  }, this.fan.log);
819
826
  await this.fan?.subscribeAttribute(FanControl.Cluster.id, 'percentSetting', (newValue, oldValue, context) => {
820
827
  this.fan?.log.info(`Percent setting changed from ${oldValue} to ${newValue} context: ${context.offline === true ? 'offline' : 'online'}`);
828
+ if (context.offline === true)
829
+ return;
821
830
  if (isValidNumber(newValue, 0, 100))
822
831
  this.fan?.setAttribute(FanControl.Cluster.id, 'percentCurrent', newValue, this.fan?.log);
823
832
  }, this.fan.log);
824
833
  await this.fan?.subscribeAttribute(FanControl.Cluster.id, 'speedSetting', (newValue, oldValue, context) => {
825
834
  this.fan?.log.info(`Speed setting changed from ${oldValue} to ${newValue} context: ${context.offline === true ? 'offline' : 'online'}`);
835
+ if (context.offline === true)
836
+ return;
826
837
  if (isValidNumber(newValue, 0, 100))
827
838
  this.fan?.setAttribute(FanControl.Cluster.id, 'speedCurrent', newValue, this.fan?.log);
828
839
  }, this.fan.log);
@@ -966,11 +977,22 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
966
977
  this.bridgedDevices.set(robot.deviceName ?? '', robot);
967
978
  }
968
979
  }
969
- const heater = new WaterHeater('Water Heater', '3456177820');
970
- this.setSelectDevice(heater.serialNumber ?? '', heater.deviceName ?? '', undefined, 'hub');
971
- if (this.validateDevice(heater.deviceName ?? '')) {
972
- await this.registerDevice(heater);
973
- this.bridgedDevices.set(heater.deviceName ?? '', heater);
980
+ this.waterHeater = new WaterHeater('Water Heater', '3456177820');
981
+ this.setSelectDevice(this.waterHeater.serialNumber ?? '', this.waterHeater.deviceName ?? '', undefined, 'hub');
982
+ if (this.validateDevice(this.waterHeater.deviceName ?? '')) {
983
+ await this.registerDevice(this.waterHeater);
984
+ this.bridgedDevices.set(this.waterHeater.deviceName ?? '', this.waterHeater);
985
+ }
986
+ this.evse = new Evse('Evse', '3456127820', 1, [
987
+ { label: 'On demand', mode: 1, modeTags: [{ value: EnergyEvseMode.ModeTag.Manual }] },
988
+ { label: 'Scheduled', mode: 2, modeTags: [{ value: EnergyEvseMode.ModeTag.TimeOfUse }] },
989
+ { label: 'Solar Charging', mode: 3, modeTags: [{ value: EnergyEvseMode.ModeTag.SolarCharging }] },
990
+ { label: 'Solar Charging Scheduled', mode: 4, modeTags: [{ value: EnergyEvseMode.ModeTag.SolarCharging }, { value: EnergyEvseMode.ModeTag.TimeOfUse }] },
991
+ ]);
992
+ this.setSelectDevice(this.evse.serialNumber ?? '', this.evse.deviceName ?? '', undefined, 'hub');
993
+ if (this.validateDevice(this.evse.deviceName ?? '')) {
994
+ await this.registerDevice(this.evse);
995
+ this.bridgedDevices.set(this.evse.deviceName ?? '', this.evse);
974
996
  }
975
997
  const laundryWasherDevice = new Appliances(laundryWasher, 'Laundry Washer', '1234567890');
976
998
  this.setSelectDevice(laundryWasherDevice.serialNumber ?? '', laundryWasherDevice.deviceName ?? '', undefined, 'hub');
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "1.2.3-rc.1",
3
+ "version": "1.2.4-dev-20250612-b04ef65",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-example-dynamic-platform",
9
- "version": "1.2.3-rc.1",
9
+ "version": "1.2.4-dev-20250612-b04ef65",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "node-ansi-logger": "3.0.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "1.2.3-rc.1",
3
+ "version": "1.2.4-dev-20250612-b04ef65",
4
4
  "description": "Matterbridge dynamic plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "MIT",