matterbridge 2.0.0-edge.4 → 2.0.0-edge.5

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
@@ -21,7 +21,7 @@ The legacy old api have been completely removed.
21
21
  The frontend has a new dark and light mode. The dark mode is now the default mode.
22
22
  It is possible to change the mode (Classic, Dark or Light) in Settings, Matterbridge settings.
23
23
 
24
- ## [2.0.0-edge.4] - 2025-01-17
24
+ ## [2.0.0-edge.5] - 2025-01-18
25
25
 
26
26
  ### Added
27
27
 
@@ -39,6 +39,7 @@ It is possible to change the mode (Classic, Dark or Light) in Settings, Matterbr
39
39
  - [frontend]: WebSocketProvider added a startTimeout of 300 sec. to start ping.
40
40
  - [frontend]: WebSocketProvider changed pingIntervalSeconds to 60 sec. and offlineTimeoutSeconds to 50 sec.
41
41
  - [frontend]: Search on select is no more case sensitive.
42
+ - [matterbridge]: Deferred memory intensive tasks after initialization.
42
43
  - [package]: Optimized all imports from matter.js.
43
44
  - [package]: Update dependencies.
44
45
 
@@ -545,7 +545,6 @@ export class Matterbridge extends EventEmitter {
545
545
  plugin.error = true;
546
546
  continue;
547
547
  }
548
- this.getPluginLatestVersion(plugin);
549
548
  if (!plugin.enabled) {
550
549
  this.log.info(`Plugin ${plg}${plugin.name}${nf} not enabled`);
551
550
  continue;
@@ -680,18 +679,8 @@ export class Matterbridge extends EventEmitter {
680
679
  this.log.error(`Error getting global node_modules directory: ${error}`);
681
680
  }
682
681
  }
683
- else {
684
- this.getGlobalNodeModules()
685
- .then(async (globalModulesDirectory) => {
686
- this.globalModulesDirectory = globalModulesDirectory;
687
- this.matterbridgeInformation.globalModulesDirectory = this.globalModulesDirectory;
688
- this.log.debug(`Global node_modules Directory: ${this.globalModulesDirectory}`);
689
- await this.nodeContext?.set('globalModulesDirectory', this.globalModulesDirectory);
690
- })
691
- .catch((error) => {
692
- this.log.error(`Error getting global node_modules directory: ${error}`);
693
- });
694
- }
682
+ else
683
+ this.log.debug(`Global node_modules Directory: ${this.globalModulesDirectory}`);
695
684
  this.matterbridgeDirectory = path.join(this.homeDirectory, '.matterbridge');
696
685
  this.matterbridgeInformation.matterbridgeDirectory = this.matterbridgeDirectory;
697
686
  try {
@@ -739,13 +728,12 @@ export class Matterbridge extends EventEmitter {
739
728
  }
740
729
  this.log.debug(`Matterbridge Plugin Directory: ${this.matterbridgePluginDirectory}`);
741
730
  const packageJson = JSON.parse(await fs.readFile(path.join(this.rootDirectory, 'package.json'), 'utf-8'));
742
- this.matterbridgeVersion = packageJson.version;
743
- this.matterbridgeInformation.matterbridgeVersion = this.matterbridgeVersion;
731
+ this.matterbridgeVersion = this.matterbridgeLatestVersion = packageJson.version;
732
+ this.matterbridgeInformation.matterbridgeVersion = this.matterbridgeInformation.matterbridgeLatestVersion = this.matterbridgeVersion;
744
733
  this.log.debug(`Matterbridge Version: ${this.matterbridgeVersion}`);
745
734
  if (this.nodeContext)
746
- this.matterbridgeLatestVersion = await this.nodeContext.get('matterbridgeLatestVersion', '');
735
+ this.matterbridgeLatestVersion = await this.nodeContext.get('matterbridgeLatestVersion', this.matterbridgeVersion);
747
736
  this.log.debug(`Matterbridge Latest Version: ${this.matterbridgeLatestVersion}`);
748
- this.getMatterbridgeLatestVersion();
749
737
  const currentDir = process.cwd();
750
738
  this.log.debug(`Current Working Directory: ${currentDir}`);
751
739
  const cmdArgs = process.argv.slice(2).join(' ');
@@ -479,12 +479,12 @@ export class MatterbridgeEndpoint extends Endpoint {
479
479
  return clusterServer;
480
480
  }
481
481
  }
482
- getAllClusterServers() {
483
- return [...this.clusterServers.values()];
484
- }
485
482
  getClusterServerById(clusterId) {
486
483
  return this.clusterServers.get(clusterId);
487
484
  }
485
+ getAllClusterServers() {
486
+ return [...this.clusterServers.values()];
487
+ }
488
488
  addTagList(endpoint, mfgCode, namespaceId, tag, label) {
489
489
  }
490
490
  addClusterServer(cluster) {
@@ -2,11 +2,13 @@ import { Endpoint, MutableEndpoint, SupportedBehaviors } from '@matter/main';
2
2
  import { Descriptor } from '@matter/main/clusters/descriptor';
3
3
  import { Identify } from '@matter/main/clusters/identify';
4
4
  import { OnOff } from '@matter/main/clusters/on-off';
5
+ import { LevelControl } from '@matter/main/clusters/level-control';
5
6
  import { DescriptorServer } from '@matter/node/behaviors/descriptor';
6
7
  import { IdentifyServer } from '@matter/node/behaviors/identify';
7
8
  import { GroupsServer } from '@matter/node/behaviors/groups';
8
9
  import { ScenesManagementServer } from '@matter/node/behaviors/scenes-management';
9
10
  import { OnOffServer } from '@matter/main/behaviors/on-off';
11
+ import { LevelControlServer } from '@matter/main/behaviors/level-control';
10
12
  class MatterbridgeEndpoint extends Endpoint {
11
13
  constructor(definition, options = {}, debug = false) {
12
14
  let deviceTypeList = [];
@@ -84,4 +86,19 @@ class MatterbridgeEndpoint extends Endpoint {
84
86
  });
85
87
  return this;
86
88
  }
89
+ createDefaultLevelControlClusterServer(currentLevel = 254, minLevel = 1, maxLevel = 254, onLevel = null, startUpCurrentLevel = null) {
90
+ this.behaviors.require(LevelControlServer.with(LevelControl.Feature.OnOff, LevelControl.Feature.Lighting), {
91
+ currentLevel,
92
+ minLevel,
93
+ maxLevel,
94
+ onLevel,
95
+ remainingTime: 0,
96
+ startUpCurrentLevel,
97
+ options: {
98
+ executeIfOff: false,
99
+ coupleColorTempToLevel: false,
100
+ },
101
+ });
102
+ return this;
103
+ }
87
104
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge",
3
- "version": "2.0.0-edge.4",
3
+ "version": "2.0.0-edge.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge",
9
- "version": "2.0.0-edge.4",
9
+ "version": "2.0.0-edge.5",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@matter/main": "0.11.9",
@@ -137,12 +137,12 @@
137
137
  }
138
138
  },
139
139
  "node_modules/@noble/curves": {
140
- "version": "1.8.0",
141
- "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.0.tgz",
142
- "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==",
140
+ "version": "1.8.1",
141
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz",
142
+ "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==",
143
143
  "license": "MIT",
144
144
  "dependencies": {
145
- "@noble/hashes": "1.7.0"
145
+ "@noble/hashes": "1.7.1"
146
146
  },
147
147
  "engines": {
148
148
  "node": "^14.21.3 || >=16"
@@ -152,9 +152,9 @@
152
152
  }
153
153
  },
154
154
  "node_modules/@noble/hashes": {
155
- "version": "1.7.0",
156
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz",
157
- "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==",
155
+ "version": "1.7.1",
156
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz",
157
+ "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==",
158
158
  "license": "MIT",
159
159
  "engines": {
160
160
  "node": "^14.21.3 || >=16"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge",
3
- "version": "2.0.0-edge.4",
3
+ "version": "2.0.0-edge.5",
4
4
  "description": "Matterbridge plugin manager for Matter",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",