matterbridge-example-dynamic-platform 1.3.7-dev-20250801-c8f0e36 → 1.3.7-dev-20250801-09a1219

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
@@ -23,7 +23,7 @@ If you like this project and find it useful, please consider giving it a star on
23
23
  <img src="bmc-button.svg" alt="Buy me a coffee" width="120">
24
24
  </a>
25
25
 
26
- ## [1.3.7] - 2025-07-??
26
+ ## [1.3.7] - 2025-08-01
27
27
 
28
28
  ### Added
29
29
 
@@ -33,6 +33,11 @@ If you like this project and find it useful, please consider giving it a star on
33
33
 
34
34
  - [package]: Updated dependencies.
35
35
 
36
+ ### Fixed
37
+
38
+ - [platform]: Fixed missed softwareVersion and hardwareVersion. Thanks Tamer.
39
+ - [platform]: Fixed missed BridgedDeviceBasicInformation cluster for single class devices. Thanks Tamer.
40
+
36
41
  <a href="https://www.buymeacoffee.com/luligugithub">
37
42
  <img src="bmc-button.svg" alt="Buy me a coffee" width="80">
38
43
  </a>
package/dist/platform.js CHANGED
@@ -1,9 +1,9 @@
1
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, cooktop, microwaveOven, oven, refrigerator, onOffMountedSwitch, dimmableMountedSwitch, extendedColorLight, } from 'matterbridge';
2
2
  import { RoboticVacuumCleaner, LaundryWasher, WaterHeater, Evse, SolarPower, BatteryStorage, LaundryDryer, HeatPump, Dishwasher, ExtractorHood } from 'matterbridge/devices';
3
- import { isValidBoolean, isValidNumber } from 'matterbridge/utils';
3
+ import { isValidBoolean, isValidNumber, isValidString } from 'matterbridge/utils';
4
4
  import { debugStringify } from 'matterbridge/logger';
5
- import { AreaNamespaceTag, LocationTag, NumberTag, PositionTag, SwitchesTag } 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, ConcentrationMeasurement, } from 'matterbridge/matter/clusters';
5
+ import { AreaNamespaceTag, LocationTag, NumberTag, PositionTag, 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, ConcentrationMeasurement, Descriptor, BridgedDeviceBasicInformation, } from 'matterbridge/matter/clusters';
7
7
  import { Appliances } from './appliances.js';
8
8
  export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
9
9
  switch;
@@ -1424,6 +1424,28 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
1424
1424
  device.softwareVersionString = this.version === '' ? 'Unknown' : this.version;
1425
1425
  device.hardwareVersion = parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, ''));
1426
1426
  device.hardwareVersionString = this.matterbridge.matterbridgeVersion;
1427
+ device.softwareVersion = isValidNumber(device.softwareVersion, 0, UINT32_MAX) ? device.softwareVersion : undefined;
1428
+ device.softwareVersionString = isValidString(device.softwareVersionString) ? device.softwareVersionString.slice(0, 64) : undefined;
1429
+ device.hardwareVersion = isValidNumber(device.hardwareVersion, 0, UINT16_MAX) ? device.hardwareVersion : undefined;
1430
+ device.hardwareVersionString = isValidString(device.hardwareVersionString) ? device.hardwareVersionString.slice(0, 64) : undefined;
1431
+ const options = device.getClusterServerOptions(BridgedDeviceBasicInformation.Cluster.id);
1432
+ if (options) {
1433
+ options.softwareVersion = device.softwareVersion || 1;
1434
+ options.softwareVersionString = device.softwareVersionString || '1.0.0';
1435
+ options.hardwareVersion = device.hardwareVersion || 1;
1436
+ options.hardwareVersionString = device.hardwareVersionString || '1.0.0';
1437
+ }
1438
+ if (device.mode === undefined && !device.deviceTypes.has(bridgedNode.code)) {
1439
+ device.deviceTypes.set(bridgedNode.code, bridgedNode);
1440
+ const options = device.getClusterServerOptions(Descriptor.Cluster.id);
1441
+ if (options) {
1442
+ const deviceTypeList = options.deviceTypeList;
1443
+ if (!deviceTypeList.find((dt) => dt.deviceType === bridgedNode.code)) {
1444
+ deviceTypeList.push({ deviceType: bridgedNode.code, revision: bridgedNode.revision });
1445
+ }
1446
+ }
1447
+ device.createDefaultBridgedDeviceBasicInformationClusterServer(device.deviceName, device.serialNumber, device.vendorId, device.vendorName, device.productName, device.softwareVersion, device.softwareVersionString, device.hardwareVersion, device.hardwareVersionString);
1448
+ }
1427
1449
  await this.registerDevice(device);
1428
1450
  this.bridgedDevices.set(device.deviceName, device);
1429
1451
  return device;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "1.3.7-dev-20250801-c8f0e36",
3
+ "version": "1.3.7-dev-20250801-09a1219",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-example-dynamic-platform",
9
- "version": "1.3.7-dev-20250801-c8f0e36",
9
+ "version": "1.3.7-dev-20250801-09a1219",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "node-ansi-logger": "3.1.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "1.3.7-dev-20250801-c8f0e36",
3
+ "version": "1.3.7-dev-20250801-09a1219",
4
4
  "description": "Matterbridge dynamic plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",