matterbridge 1.2.19 → 1.2.21

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
@@ -2,6 +2,32 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.2.21] - 2024-06-04
6
+
7
+ ### Changed
8
+ - [matterbridge]: Updated dependencies
9
+
10
+ ### Fixed
11
+ - [matterbridge]: Removed error stack from log error for npm get versions
12
+ - [matterbridge]: Fixed the error that caused -add plugin to fail at the first run of matterbridge
13
+
14
+ <a href="https://www.buymeacoffee.com/luligugithub">
15
+ <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
16
+ </a>
17
+
18
+ ## [1.2.20] - 2024-06-03
19
+
20
+ ### Changed
21
+ - [matter.js]: Update to @project-chip/matter-node.js v. 0.9.1
22
+ - [matterbridge]: Updated dependencies
23
+
24
+ ### Fixed
25
+ - [matterbridge]: Log level of Plugin already configured is now info
26
+
27
+ <a href="https://www.buymeacoffee.com/luligugithub">
28
+ <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
29
+ </a>
30
+
5
31
  ## [1.2.19] - 2024-06-01
6
32
 
7
33
  ### Breaking change on Matterbridge start!
package/README.md CHANGED
@@ -473,6 +473,36 @@ docker logs matterbridge
473
473
  docker logs --tail 1000 -f matterbridge
474
474
  ```
475
475
 
476
+ # Known issues
477
+
478
+ ## Apple Home issues
479
+
480
+ The HomePods, being a WiFi devices, sometimes pruduce message trasmission errors. The Apple TV with network cable is more reliable (but also more expensive).
481
+
482
+ Solved with the version 17.5 of the HomePod/AppleTV. Now they are stable.
483
+
484
+ ### DoorLock
485
+
486
+ The DoorLock cluster in the Home app takes a while to get online. The Home app shows no response for 1 or 2 seconds but then the accessory goes online. With the Eve app or the Controller app this issue is not present.
487
+
488
+ Solved with the version 17.5 of the HomePod/AppleTV.
489
+
490
+ ## Home Assistant issues (Matter Server for HA is still in Beta)
491
+
492
+ - if HA doesn't show all devices just reload the HA Matter Server or reboot HA
493
+ - it doesn't seem that HA reacts to removing a device from the aggregator: they remain like unavailable...
494
+ - in the Home Assistant Core log you can see sometimes error messages relating to unique id not found but it seems to be an issue related to missing some matter packet during the commissioning and subscription phase...
495
+
496
+ ## Google Home
497
+
498
+ ## Alexa
499
+
500
+ ## SmartThings
501
+
502
+ ## eWeLink
503
+
504
+ ## Tuya/Smart Life
505
+
476
506
 
477
507
  # Contribution Guidelines
478
508
 
@@ -23,6 +23,7 @@
23
23
  /// <reference types="node" resolution-mode="require"/>
24
24
  import { MatterbridgeDevice } from './matterbridgeDevice.js';
25
25
  import EventEmitter from 'events';
26
+ import { ExposedFabricInformation } from '@project-chip/matter-node.js/fabric';
26
27
  export type PlatformConfigValue = string | number | boolean | bigint | object | undefined | null;
27
28
  export type PlatformConfig = Record<string, PlatformConfigValue>;
28
29
  export type PlatformSchemaValue = string | number | boolean | bigint | object | undefined | null;
@@ -67,6 +68,9 @@ export declare class Matterbridge extends EventEmitter {
67
68
  globalModulesDirectory: string;
68
69
  matterbridgeVersion: string;
69
70
  matterbridgeLatestVersion: string;
71
+ matterbridgeFabricInfo: ExposedFabricInformation[];
72
+ matterbridgePaired: boolean;
73
+ matterbridgeConnected: boolean;
70
74
  private checkUpdateInterval?;
71
75
  bridgeMode: 'bridge' | 'childbridge' | 'controller' | '';
72
76
  restartMode: 'service' | 'docker' | '';
@@ -1 +1 @@
1
- {"version":3,"file":"matterbridge.d.ts","sourceRoot":"","sources":["../src/matterbridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matterbridge.d.ts","sourceRoot":"","sources":["../src/matterbridge.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,9 @@ export class Matterbridge extends EventEmitter {
84
84
  globalModulesDirectory = '';
85
85
  matterbridgeVersion = '';
86
86
  matterbridgeLatestVersion = '';
87
+ matterbridgeFabricInfo = [];
88
+ matterbridgePaired = false;
89
+ matterbridgeConnected = false;
87
90
  checkUpdateInterval; // = 24 * 60 * 60 * 1000; // 24 hours
88
91
  bridgeMode = '';
89
92
  restartMode = '';
@@ -858,7 +861,7 @@ export class Matterbridge extends EventEmitter {
858
861
  Matterbridge.instance = undefined;
859
862
  this.emit('shutdown');
860
863
  }
861
- }, 2 * 1000);
864
+ }, 2 * 1000); // From 2 to 5 seconds
862
865
  }, 3 * 1000);
863
866
  }
864
867
  }
@@ -1331,7 +1334,7 @@ export class Matterbridge extends EventEmitter {
1331
1334
  return Promise.reject(new Error(`Plugin ${plg}${plugin.name}${er} not loaded or not started or not platform`));
1332
1335
  }
1333
1336
  if (plugin.configured) {
1334
- this.log.error(`Plugin ${plg}${plugin.name}${er} already configured`);
1337
+ this.log.info(`Plugin ${plg}${plugin.name}${nf} already configured`);
1335
1338
  return Promise.resolve();
1336
1339
  }
1337
1340
  this.log.info(`Configuring plugin ${plg}${plugin.name}${db} type ${typ}${plugin.type}${db}`);
@@ -1884,9 +1887,14 @@ export class Matterbridge extends EventEmitter {
1884
1887
  fabricInfo?.forEach((info) => {
1885
1888
  this.log.info(`- fabric index ${zb}${info.fabricIndex}${nf} id ${zb}${info.fabricId}${nf} vendor ${zb}${info.rootVendorId}${nf} ${this.getVendorIdName(info.rootVendorId)} ${info.label}`);
1886
1889
  });
1890
+ if (pluginName === 'Matterbridge') {
1891
+ this.matterbridgeFabricInfo = fabricInfo;
1892
+ this.matterbridgePaired = true;
1893
+ }
1887
1894
  if (pluginName !== 'Matterbridge') {
1888
1895
  const plugin = this.findPlugin(pluginName);
1889
1896
  if (plugin) {
1897
+ plugin.fabricInfo = fabricInfo;
1890
1898
  plugin.paired = true;
1891
1899
  }
1892
1900
  }
@@ -2045,6 +2053,10 @@ export class Matterbridge extends EventEmitter {
2045
2053
  }
2046
2054
  });
2047
2055
  if (connected) {
2056
+ if (this.bridgeMode === 'bridge') {
2057
+ this.matterbridgePaired = true;
2058
+ this.matterbridgeConnected = true;
2059
+ }
2048
2060
  if (this.bridgeMode === 'childbridge') {
2049
2061
  const plugin = this.findPlugin(pluginName);
2050
2062
  if (plugin) {
@@ -2092,11 +2104,15 @@ export class Matterbridge extends EventEmitter {
2092
2104
  await commissioningServer.factoryReset();
2093
2105
  if (pluginName === 'Matterbridge') {
2094
2106
  await this.matterbridgeContext?.clearAll();
2107
+ this.matterbridgeFabricInfo = [];
2108
+ this.matterbridgePaired = false;
2109
+ this.matterbridgeConnected = false;
2095
2110
  }
2096
2111
  else {
2097
2112
  for (const plugin of this.registeredPlugins) {
2098
2113
  if (plugin.name === pluginName) {
2099
2114
  await plugin.platform?.onShutdown('Commissioning removed by the controller');
2115
+ plugin.fabricInfo = [];
2100
2116
  plugin.paired = false;
2101
2117
  plugin.connected = false;
2102
2118
  await plugin.storageContext?.clearAll();
@@ -2319,17 +2335,30 @@ export class Matterbridge extends EventEmitter {
2319
2335
  // Global node_modules directory
2320
2336
  if (this.nodeContext)
2321
2337
  this.globalModulesDirectory = await this.nodeContext.get('globalModulesDirectory', '');
2322
- this.log.debug(`Global node_modules Directory: ${this.globalModulesDirectory}`);
2323
- this.getGlobalNodeModules()
2324
- .then(async (globalModulesDirectory) => {
2325
- this.globalModulesDirectory = globalModulesDirectory;
2326
- this.matterbridgeInformation.globalModulesDirectory = this.globalModulesDirectory;
2327
- this.log.debug(`Global node_modules Directory: ${this.globalModulesDirectory}`);
2328
- await this.nodeContext?.set('globalModulesDirectory', this.globalModulesDirectory);
2329
- })
2330
- .catch((error) => {
2331
- this.log.error(`Error getting global node_modules directory: ${error}`);
2332
- });
2338
+ // First run of Matterbridge so the node storage is empty
2339
+ if (this.globalModulesDirectory === '') {
2340
+ try {
2341
+ this.globalModulesDirectory = await this.getGlobalNodeModules();
2342
+ this.matterbridgeInformation.globalModulesDirectory = this.globalModulesDirectory;
2343
+ this.log.debug(`Global node_modules Directory: ${this.globalModulesDirectory}`);
2344
+ await this.nodeContext?.set('globalModulesDirectory', this.globalModulesDirectory);
2345
+ }
2346
+ catch (error) {
2347
+ this.log.error(`Error getting global node_modules directory: ${error}`);
2348
+ }
2349
+ }
2350
+ else {
2351
+ this.getGlobalNodeModules()
2352
+ .then(async (globalModulesDirectory) => {
2353
+ this.globalModulesDirectory = globalModulesDirectory;
2354
+ this.matterbridgeInformation.globalModulesDirectory = this.globalModulesDirectory;
2355
+ this.log.debug(`Global node_modules Directory: ${this.globalModulesDirectory}`);
2356
+ await this.nodeContext?.set('globalModulesDirectory', this.globalModulesDirectory);
2357
+ })
2358
+ .catch((error) => {
2359
+ this.log.error(`Error getting global node_modules directory: ${error}`);
2360
+ });
2361
+ }
2333
2362
  // Create the data directory .matterbridge in the home directory
2334
2363
  this.matterbridgeDirectory = path.join(this.homeDirectory, '.matterbridge');
2335
2364
  this.matterbridgeInformation.matterbridgeDirectory = this.matterbridgeDirectory;
@@ -2354,7 +2383,7 @@ export class Matterbridge extends EventEmitter {
2354
2383
  }
2355
2384
  }
2356
2385
  this.log.debug(`Matterbridge Directory: ${this.matterbridgeDirectory}`);
2357
- // Create the data directory .matterbridge in the home directory
2386
+ // Create the plugin directory Matterbridge in the home directory
2358
2387
  this.matterbridgePluginDirectory = path.join(this.homeDirectory, 'Matterbridge');
2359
2388
  this.matterbridgeInformation.matterbridgePluginDirectory = this.matterbridgePluginDirectory;
2360
2389
  try {
@@ -2387,7 +2416,7 @@ export class Matterbridge extends EventEmitter {
2387
2416
  if (this.nodeContext)
2388
2417
  this.matterbridgeLatestVersion = await this.nodeContext.get('matterbridgeLatestVersion', '');
2389
2418
  this.log.debug(`Matterbridge Latest Version: ${this.matterbridgeLatestVersion}`);
2390
- await this.getMatterbridgeLatestVersion();
2419
+ this.getMatterbridgeLatestVersion();
2391
2420
  // Current working directory
2392
2421
  const currentDir = process.cwd();
2393
2422
  this.log.debug(`Current Working Directory: ${currentDir}`);
@@ -2413,7 +2442,7 @@ export class Matterbridge extends EventEmitter {
2413
2442
  })
2414
2443
  .catch((error) => {
2415
2444
  this.log.error(`Error getting Matterbridge latest version: ${error.message}`);
2416
- error.stack && this.log.debug(error.stack);
2445
+ // error.stack && this.log.debug(error.stack);
2417
2446
  });
2418
2447
  }
2419
2448
  /**
@@ -2438,7 +2467,7 @@ export class Matterbridge extends EventEmitter {
2438
2467
  })
2439
2468
  .catch((error) => {
2440
2469
  this.log.error(`Error getting ${plugin.name} latest version: ${error.message}`);
2441
- error.stack && this.log.debug(error.stack);
2470
+ // error.stack && this.log.debug(error.stack);
2442
2471
  });
2443
2472
  }
2444
2473
  /**
@@ -2490,6 +2519,7 @@ export class Matterbridge extends EventEmitter {
2490
2519
  started: plugin.started,
2491
2520
  paired: plugin.paired,
2492
2521
  connected: plugin.connected,
2522
+ fabricInfo: plugin.fabricInfo,
2493
2523
  registeredDevices: plugin.registeredDevices,
2494
2524
  }));
2495
2525
  return baseRegisteredPlugins;