matterbridge 2.2.8-dev.1 → 2.2.9-dev.1

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
@@ -29,17 +29,37 @@ Features:
29
29
  - It is possible to choose the method: GET or POST.
30
30
  - The webhook can be tested directly in the frontend.
31
31
 
32
- ## [2.2.8] - 2025-04-09
32
+ ## [2.2.9] - 2025-04-17
33
33
 
34
34
  ### Added
35
35
 
36
- - [platform]: Added stack to errors messages.
36
+ ### Changed
37
+
38
+ - [package]: Update dependencies.
39
+
40
+ ### Fixed
41
+
42
+ - [QRCode]: Fixed update when the server node is no more advertising.
43
+ - [frontend]: Fixed wrong notification when the server node has been paired.
44
+
45
+ <a href="https://www.buymeacoffee.com/luligugithub">
46
+ <img src="bmc-button.svg" alt="Buy me a coffee" width="80">
47
+ </a>
48
+
49
+ ## [2.2.8] - 2025-04-10
50
+
51
+ ### Added
52
+
53
+ - [platform]: Added stack to error messages.
54
+ - [endpoint]: Added createLevelControlClusterServer()
37
55
  - [endpoint]: Added createLevelTvocMeasurementClusterServer()
56
+ - [frontend]: Added a restart button on the QRCode panel when the advertising for a not paired node is expired.
38
57
 
39
58
  ### Changed
40
59
 
41
60
  - [package]: Update dependencies.
42
61
  - [package]: Use node:https.
62
+ - [endpoint]: Modified createOnOffClusterServer().
43
63
 
44
64
  ### Fixed
45
65
 
@@ -1492,6 +1492,8 @@ export class Matterbridge extends EventEmitter {
1492
1492
  }
1493
1493
  }
1494
1494
  setTimeout(() => {
1495
+ if (serverNode.lifecycle.isCommissioned)
1496
+ return;
1495
1497
  if (this.bridgeMode === 'bridge') {
1496
1498
  this.matterbridgeQrPairingCode = undefined;
1497
1499
  this.matterbridgeManualPairingCode = undefined;
@@ -1505,6 +1507,9 @@ export class Matterbridge extends EventEmitter {
1505
1507
  }
1506
1508
  }
1507
1509
  this.frontend.wssSendRefreshRequired('settings');
1510
+ this.frontend.wssSendRefreshRequired('plugins');
1511
+ this.frontend.wssSendRefreshRequired('fabrics');
1512
+ this.frontend.wssSendRefreshRequired('sessions');
1508
1513
  this.frontend.wssSendSnackbarMessage(`Advertising on server node for ${storeId} stopped. Restart to commission.`, 0);
1509
1514
  this.log.notice(`Advertising on server node for ${storeId} stopped. Restart to commission.`);
1510
1515
  }, 15 * 60 * 1000).unref();
@@ -4,7 +4,7 @@ import { isValidNumber, isValidObject } from './utils/export.js';
4
4
  import { MatterbridgeBehavior, MatterbridgeBehaviorDevice, MatterbridgeIdentifyServer, MatterbridgeOnOffServer, MatterbridgeLevelControlServer, MatterbridgeColorControlServer, MatterbridgeWindowCoveringServer, MatterbridgeThermostatServer, MatterbridgeFanControlServer, MatterbridgeDoorLockServer, MatterbridgeModeSelectServer, MatterbridgeValveConfigurationAndControlServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeSwitchServer, } 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
- import { ClusterType, getClusterNameById, MeasurementType } from '@matter/main/types';
7
+ import { getClusterNameById, MeasurementType } from '@matter/main/types';
8
8
  import { Descriptor } from '@matter/main/clusters/descriptor';
9
9
  import { PowerSource } from '@matter/main/clusters/power-source';
10
10
  import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
@@ -518,7 +518,7 @@ export class MatterbridgeEndpoint extends Endpoint {
518
518
  return this;
519
519
  }
520
520
  createOnOffClusterServer(onOff = false) {
521
- this.behaviors.require(MatterbridgeOnOffServer.for(ClusterType(OnOff.Base)), {
521
+ this.behaviors.require(MatterbridgeOnOffServer, {
522
522
  onOff,
523
523
  });
524
524
  return this;
@@ -544,6 +544,17 @@ export class MatterbridgeEndpoint extends Endpoint {
544
544
  });
545
545
  return this;
546
546
  }
547
+ createLevelControlClusterServer(currentLevel = 254, onLevel = null) {
548
+ this.behaviors.require(MatterbridgeLevelControlServer, {
549
+ currentLevel,
550
+ onLevel,
551
+ options: {
552
+ executeIfOff: false,
553
+ coupleColorTempToLevel: false,
554
+ },
555
+ });
556
+ return this;
557
+ }
547
558
  createDefaultColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
548
559
  this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.Xy, ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
549
560
  colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "./static/css/main.ea7910e9.css",
4
- "main.js": "./static/js/main.eb2f3e01.js",
4
+ "main.js": "./static/js/main.ff47208e.js",
5
5
  "static/js/453.d855a71b.chunk.js": "./static/js/453.d855a71b.chunk.js",
6
6
  "static/media/roboto-latin-700-normal.woff2": "./static/media/roboto-latin-700-normal.c4d6cab43bec89049809.woff2",
7
7
  "static/media/roboto-latin-500-normal.woff2": "./static/media/roboto-latin-500-normal.599f66a60bdf974e578e.woff2",
@@ -77,11 +77,11 @@
77
77
  "static/media/roboto-greek-ext-300-normal.woff": "./static/media/roboto-greek-ext-300-normal.60729cafbded24073dfb.woff",
78
78
  "index.html": "./index.html",
79
79
  "main.ea7910e9.css.map": "./static/css/main.ea7910e9.css.map",
80
- "main.eb2f3e01.js.map": "./static/js/main.eb2f3e01.js.map",
80
+ "main.ff47208e.js.map": "./static/js/main.ff47208e.js.map",
81
81
  "453.d855a71b.chunk.js.map": "./static/js/453.d855a71b.chunk.js.map"
82
82
  },
83
83
  "entrypoints": [
84
84
  "static/css/main.ea7910e9.css",
85
- "static/js/main.eb2f3e01.js"
85
+ "static/js/main.ff47208e.js"
86
86
  ]
87
87
  }
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><base href="./"><link rel="icon" href="./matterbridge 32x32.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Matterbridge</title><link rel="manifest" href="./manifest.json"/><script defer="defer" src="./static/js/main.eb2f3e01.js"></script><link href="./static/css/main.ea7910e9.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><base href="./"><link rel="icon" href="./matterbridge 32x32.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Matterbridge</title><link rel="manifest" href="./manifest.json"/><script defer="defer" src="./static/js/main.ff47208e.js"></script><link href="./static/css/main.ea7910e9.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>