matterbridge-example-dynamic-platform 2.0.13-dev-20260302-2a66e51 → 2.0.13-dev-20260303-224d0bf

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
@@ -35,9 +35,11 @@ If you like this project and find it useful, please consider giving it a star on
35
35
 
36
36
  ### Added
37
37
 
38
- - [BridgedOutlet]: Add a bridged outlet with four individually controllable plugs that expose their names.
38
+ - [BridgedOutlet]: Add a bridged outlet with four individually named plugs.
39
39
  - [onOffMountedLegacy]: Add an onOff Mounted Switch legacy device.
40
40
  - [dimmerMountedLegacy]: Add a dimmer Mounted Switch legacy device.
41
+ - [solarPower]: Add four panels to the Solar Power.
42
+ - [soilSensor]: Add a Soil Sensor (Matter 1.5.0).
41
43
 
42
44
  ### Changed
43
45
 
package/README.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  Matterbridge dynamic platform example plugin is a template to develop your own plugin using the dynamic platform.
26
26
 
27
- It exposes 66 virtual devices:
27
+ It exposes 67 virtual devices:
28
28
 
29
29
  - a door contact sensor
30
30
  - a motion sensor
@@ -33,6 +33,7 @@ It exposes 66 virtual devices:
33
33
  - a humidity sensor
34
34
  - a pressure sensor
35
35
  - a flow sensor
36
+ - a soil sensor
36
37
  - a climate sensor with temperature, humidity and pressure
37
38
  - a mode select device
38
39
  - a switch with onOff cluster
package/dist/module.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { aggregator, 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';
2
+ import { AirConditioner, BasicVideoPlayer, BatteryStorage, Cooktop, Dishwasher, Evse, ExtractorHood, HeatPump, LaundryDryer, LaundryWasher, MicrowaveOven, Oven, Refrigerator, RoboticVacuumCleaner, SoilSensor, SolarPower, Speaker, WaterHeater, } from 'matterbridge/devices';
3
3
  import { debugStringify } from 'matterbridge/logger';
4
4
  import { AreaNamespaceTag, LocationTag, NumberTag, PositionTag, RefrigeratorTag, SwitchesTag, UINT16_MAX, UINT32_MAX } from 'matterbridge/matter';
5
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, RelativeHumidityMeasurement, RelativeHumidityMeasurementCluster, RvcCleanMode, RvcOperationalState, RvcRunMode, SmokeCoAlarm, TemperatureMeasurement, Thermostat, ThermostatCluster, TotalVolatileOrganicCompoundsConcentrationMeasurement, WindowCovering, } from 'matterbridge/matter/clusters';
@@ -31,6 +31,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
31
31
  humidity;
32
32
  pressure;
33
33
  flow;
34
+ soil;
34
35
  select;
35
36
  climate;
36
37
  switch;
@@ -160,6 +161,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
160
161
  .createDefaultPowerSourceReplaceableBatteryClusterServer(80, PowerSource.BatChargeLevel.Ok, 3050, 'AA', 1, PowerSource.BatReplaceability.UserReplaceable)
161
162
  .addRequiredClusterServers();
162
163
  this.flow = await this.addDevice(this.flow);
164
+ this.soil = new SoilSensor('Soil Sensor', 'SOI000067', { soilMoistureMeasuredValue: 45 });
165
+ this.soil = await this.addDevice(this.soil);
163
166
  this.climate = new MatterbridgeEndpoint([bridgedNode, powerSource], { id: 'Climate' }, this.config.debug)
164
167
  .createDefaultBridgedDeviceBasicInformationClusterServer('Climate', 'CLI00008', 0xfff1, 'Matterbridge', 'Matterbridge Climate')
165
168
  .createDefaultPowerSourceReplaceableBatteryClusterServer(90, PowerSource.BatChargeLevel.Ok, 2990, '2 x AA', 2, PowerSource.BatReplaceability.UserReplaceable)
@@ -530,25 +533,25 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
530
533
  .addRequiredClusterServers();
531
534
  this.smartOutlet = await this.addDevice(this.smartOutlet);
532
535
  this.smartBridgedOutlet = new MatterbridgeEndpoint([aggregator, bridgedNode, powerSource], { id: 'BridgedOutlet' }, this.config.debug)
533
- .createDefaultBridgedDeviceBasicInformationClusterServer('Bridged outlet', 'SOU00064', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
536
+ .createDefaultBridgedDeviceBasicInformationClusterServer('Bridged outlet', 'BOU00064', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
534
537
  .createDefaultPowerSourceWiredClusterServer()
535
538
  .addRequiredClusterServers();
536
539
  this.smartBridgedOutlet.addFixedLabel('composed', 'Bridged device');
537
540
  this.smartBridgedOutlet
538
541
  .addChildDeviceTypeWithClusterServer('Plug 1', [onOffOutlet, bridgedNode], [OnOffCluster.id])
539
- .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 1', 'SOU00064-1', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
542
+ .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 1', 'BOU00064-1', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
540
543
  .addRequiredClusterServers();
541
544
  this.smartBridgedOutlet
542
545
  .addChildDeviceTypeWithClusterServer('Plug 2', [onOffOutlet, bridgedNode], [OnOffCluster.id])
543
- .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 2', 'SOU00064-2', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
546
+ .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 2', 'BOU00064-2', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
544
547
  .addRequiredClusterServers();
545
548
  this.smartBridgedOutlet
546
549
  .addChildDeviceTypeWithClusterServer('Plug 3', [onOffOutlet, bridgedNode], [OnOffCluster.id])
547
- .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 3', 'SOU00064-3', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
550
+ .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 3', 'BOU00064-3', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
548
551
  .addRequiredClusterServers();
549
552
  this.smartBridgedOutlet
550
553
  .addChildDeviceTypeWithClusterServer('Plug 4', [onOffOutlet, bridgedNode], [OnOffCluster.id])
551
- .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 4', 'SOU00064-4', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
554
+ .createDefaultBridgedDeviceBasicInformationClusterServer('Plug 4', 'BOU00064-4', 0xfff1, 'Matterbridge', 'Matterbridge Bridged Outlet')
552
555
  .addRequiredClusterServers();
553
556
  this.smartBridgedOutlet = await this.addDevice(this.smartBridgedOutlet);
554
557
  this.coverLift = new MatterbridgeEndpoint([coverDevice, bridgedNode, powerSource], { id: 'CoverLift' }, this.config.debug)
@@ -1365,8 +1368,12 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
1365
1368
  { label: 'Solar Charging Scheduled', mode: 4, modeTags: [{ value: EnergyEvseMode.ModeTag.SolarCharging }, { value: EnergyEvseMode.ModeTag.TimeOfUse }] },
1366
1369
  ], EnergyEvse.State.PluggedInCharging, EnergyEvse.SupplyState.ChargingEnabled, EnergyEvse.FaultState.NoError, 220_000, 10_000, 2_200_000, 1_000_000, 500_000, 32_000_000);
1367
1370
  this.evse = await this.addDevice(this.evse);
1368
- this.solarPower = new SolarPower('Solar Power', 'SOL00046', 220_000, 10_000, 2200_000, 2_200_000, -10_000_000, 500_000);
1369
- this.solarPower = await this.addDevice(this.solarPower);
1371
+ this.solarPower = new SolarPower('Solar Power', 'SOL00046', 220_000, 10_000, 2200_000, 2_200_000, 0, 500_000);
1372
+ this.solarPower.addPanel('Panel 1', NumberTag.One);
1373
+ this.solarPower.addPanel('Panel 2', NumberTag.Two);
1374
+ this.solarPower.addPanel('Panel 3', NumberTag.Three);
1375
+ this.solarPower.addPanel('Panel 4', NumberTag.Four);
1376
+ this.solarPower = (await this.addDevice(this.solarPower));
1370
1377
  this.batteryStorage = new BatteryStorage('Battery Storage', 'BST00047', 75, PowerSource.BatChargeLevel.Ok, 220_000, 10_000, 2_200_000, 1_000_000, 2_000_000, -2_000_000, 3_000_000);
1371
1378
  this.batteryStorage = await this.addDevice(this.batteryStorage);
1372
1379
  this.heatPump = new HeatPump('Heat Pump', 'HPU00048', 220_000, 10_000, 2_200_000, 1_000_000, 500_000, 3_000_000);
@@ -17,6 +17,7 @@
17
17
  "ui:widget": "hidden"
18
18
  },
19
19
  "whiteList": {
20
+ "title": "White List",
20
21
  "description": "Only the devices in the list will be exposed. If the list is empty, all the devices will be exposed.",
21
22
  "type": "array",
22
23
  "items": {
@@ -26,6 +27,7 @@
26
27
  "selectFrom": "name"
27
28
  },
28
29
  "blackList": {
30
+ "title": "Black List",
29
31
  "description": "The devices in the list will not be exposed. If the list is empty, no devices will be excluded.",
30
32
  "type": "array",
31
33
  "items": {
@@ -35,21 +37,25 @@
35
37
  "selectFrom": "name"
36
38
  },
37
39
  "useInterval": {
40
+ "title": "Use Interval",
38
41
  "description": "Use interval to refresh the devices",
39
42
  "type": "boolean",
40
43
  "default": true
41
44
  },
42
45
  "enableServerRvc": {
46
+ "title": "Enable Server RVC",
43
47
  "description": "Enable the Robot Vacuum Cleaner in server mode (Apple Home will crash unless you use this mode!)",
44
48
  "type": "boolean",
45
49
  "default": true
46
50
  },
47
51
  "debug": {
52
+ "title": "Debug",
48
53
  "description": "Enable the debug for the plugin (development only)",
49
54
  "type": "boolean",
50
55
  "default": false
51
56
  },
52
57
  "unregisterOnShutdown": {
58
+ "title": "Unregister on Shutdown",
53
59
  "description": "Unregister all devices on shutdown (development only)",
54
60
  "type": "boolean",
55
61
  "default": false
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "2.0.13-dev-20260302-2a66e51",
3
+ "version": "2.0.13-dev-20260303-224d0bf",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-example-dynamic-platform",
9
- "version": "2.0.13-dev-20260302-2a66e51",
9
+ "version": "2.0.13-dev-20260303-224d0bf",
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.13-dev-20260302-2a66e51",
3
+ "version": "2.0.13-dev-20260303-224d0bf",
4
4
  "description": "Matterbridge dynamic plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",