matterbridge 3.3.4-dev-20251020-4d2dd49 → 3.3.4-dev-20251020-df40d12

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
@@ -37,6 +37,7 @@ Advantages:
37
37
  ### Changed
38
38
 
39
39
  - [package]: Updated dependencies.
40
+ - [package]: Optimized @matter imports.
40
41
  - [matter]: Bumped `matter.js` version to 0.15.6. Thanks matter.js!
41
42
  - [frontend]: Bumped `frontend` version to 3.2.3.
42
43
 
package/dist/cli.js CHANGED
@@ -1,24 +1,25 @@
1
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
2
- console.log('\u001B[32mCLI loaded.\u001B[40;0m');
2
+ console.log('\u001B[32mCli loaded.\u001B[40;0m');
3
3
  import { AnsiLogger } from 'node-ansi-logger';
4
4
  import { cliEmitter } from './cliEmitter.js';
5
- import { hasParameter, hasAnyParameter } from './utils/commandLine.js';
6
5
  import { Matterbridge } from './matterbridge.js';
6
+ import { hasParameter, hasAnyParameter } from './utils/commandLine.js';
7
7
  import { inspectError } from './utils/error.js';
8
8
  import { Tracker } from './utils/tracker.js';
9
9
  import { Inspector } from './utils/inspector.js';
10
+ import { formatBytes, formatUptime } from './utils/format.js';
10
11
  export let instance;
11
- export const tracker = new Tracker('Cli', true, true);
12
- export const inspector = new Inspector('Cli', true, true);
12
+ export const tracker = new Tracker('Cli', false, false);
13
+ export const inspector = new Inspector('Cli', false, false);
13
14
  const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
14
15
  function startCpuMemoryCheck() {
15
16
  log.debug(`Cpu memory check starting...`);
16
17
  tracker.start();
17
18
  tracker.on('uptime', (os, process) => {
18
- cliEmitter.emit('uptime', tracker.formatOsUpTime(Math.floor(os)), tracker.formatOsUpTime(Math.floor(process)));
19
+ cliEmitter.emit('uptime', formatUptime(Math.floor(os)), formatUptime(Math.floor(process)));
19
20
  });
20
21
  tracker.on('snapshot', (snapshot) => {
21
- cliEmitter.emit('memory', tracker.formatBytes(snapshot.totalMemory), tracker.formatBytes(snapshot.freeMemory), tracker.formatBytes(snapshot.rss), tracker.formatBytes(snapshot.heapTotal), tracker.formatBytes(snapshot.heapUsed), tracker.formatBytes(snapshot.external), tracker.formatBytes(snapshot.arrayBuffers));
22
+ cliEmitter.emit('memory', formatBytes(snapshot.totalMemory), formatBytes(snapshot.freeMemory), formatBytes(snapshot.rss), formatBytes(snapshot.heapTotal), formatBytes(snapshot.heapUsed), formatBytes(snapshot.external), formatBytes(snapshot.arrayBuffers));
22
23
  cliEmitter.emit('cpu', snapshot.osCpu, snapshot.processCpu);
23
24
  });
24
25
  log.debug(`Cpu memory check started`);
@@ -1,5 +1,5 @@
1
- import { ThermostatUserInterfaceConfiguration } from '@matter/main/clusters/thermostat-user-interface-configuration';
2
- import { FanControl } from '@matter/main/clusters/fan-control';
1
+ import { ThermostatUserInterfaceConfiguration } from '@matter/types/clusters/thermostat-user-interface-configuration';
2
+ import { FanControl } from '@matter/types/clusters/fan-control';
3
3
  import { airConditioner, powerSource } from '../matterbridgeDeviceTypes.js';
4
4
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
5
5
  export class AirConditioner extends MatterbridgeEndpoint {
@@ -1,6 +1,6 @@
1
- import { PowerSourceTag } from '@matter/main';
2
- import { DeviceEnergyManagement } from '@matter/main/clusters/device-energy-management';
3
- import { PowerSource } from '@matter/main/clusters/power-source';
1
+ import { PowerSourceTag } from '@matter/node';
2
+ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
3
+ import { PowerSource } from '@matter/types/clusters/power-source';
4
4
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
5
5
  import { deviceEnergyManagement, electricalSensor, batteryStorage, powerSource } from '../matterbridgeDeviceTypes.js';
6
6
  export class BatteryStorage extends MatterbridgeEndpoint {
@@ -1,7 +1,7 @@
1
- import { ModeBase } from '@matter/main/clusters/mode-base';
2
- import { DishwasherModeServer } from '@matter/main/behaviors/dishwasher-mode';
3
- import { DishwasherAlarmServer } from '@matter/main/behaviors/dishwasher-alarm';
4
- import { DishwasherMode } from '@matter/main/clusters/dishwasher-mode';
1
+ import { ModeBase } from '@matter/types/clusters/mode-base';
2
+ import { DishwasherMode } from '@matter/types/clusters/dishwasher-mode';
3
+ import { DishwasherModeServer } from '@matter/node/behaviors/dishwasher-mode';
4
+ import { DishwasherAlarmServer } from '@matter/node/behaviors/dishwasher-alarm';
5
5
  import { dishwasher, powerSource } from '../matterbridgeDeviceTypes.js';
6
6
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
7
7
  import { MatterbridgeOnOffServer, MatterbridgeServer } from '../matterbridgeBehaviors.js';
@@ -1,8 +1,9 @@
1
- import { EnergyEvseServer } from '@matter/main/behaviors/energy-evse';
2
- import { EnergyEvseModeServer } from '@matter/main/behaviors/energy-evse-mode';
3
- import { EnergyEvse, EnergyEvseMode } from '@matter/main/clusters';
4
- import { DeviceEnergyManagement } from '@matter/main/clusters/device-energy-management';
5
- import { ModeBase } from '@matter/main/clusters/mode-base';
1
+ import { EnergyEvseMode } from '@matter/types/clusters/energy-evse-mode';
2
+ import { EnergyEvse } from '@matter/types/clusters/energy-evse';
3
+ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
4
+ import { ModeBase } from '@matter/types/clusters/mode-base';
5
+ import { EnergyEvseServer } from '@matter/node/behaviors/energy-evse';
6
+ import { EnergyEvseModeServer } from '@matter/node/behaviors/energy-evse-mode';
6
7
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
7
8
  import { MatterbridgeServer } from '../matterbridgeBehaviors.js';
8
9
  import { deviceEnergyManagement, electricalSensor, evse, powerSource } from '../matterbridgeDeviceTypes.js';
@@ -1,4 +1,4 @@
1
- import { ResourceMonitoring } from '@matter/main/clusters/resource-monitoring';
1
+ import { ResourceMonitoring } from '@matter/types/clusters/resource-monitoring';
2
2
  import { extractorHood, powerSource } from '../matterbridgeDeviceTypes.js';
3
3
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
4
  export class ExtractorHood extends MatterbridgeEndpoint {
@@ -1,5 +1,5 @@
1
- import { NumberTag, PowerSourceTag } from '@matter/main';
2
- import { DeviceEnergyManagement } from '@matter/main/clusters/device-energy-management';
1
+ import { NumberTag, PowerSourceTag } from '@matter/node';
2
+ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
3
3
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
4
  import { deviceEnergyManagement, electricalSensor, powerSource, heatPump, temperatureSensor, thermostatDevice } from '../matterbridgeDeviceTypes.js';
5
5
  export class HeatPump extends MatterbridgeEndpoint {
@@ -1,6 +1,6 @@
1
- import { LaundryWasherMode } from '@matter/main/clusters/laundry-washer-mode';
2
- import { LaundryDryerControls } from '@matter/main/clusters/laundry-dryer-controls';
3
- import { LaundryDryerControlsServer } from '@matter/main/behaviors/laundry-dryer-controls';
1
+ import { LaundryWasherMode } from '@matter/types/clusters/laundry-washer-mode';
2
+ import { LaundryDryerControls } from '@matter/types/clusters/laundry-dryer-controls';
3
+ import { LaundryDryerControlsServer } from '@matter/node/behaviors/laundry-dryer-controls';
4
4
  import { laundryDryer, powerSource } from '../matterbridgeDeviceTypes.js';
5
5
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
6
6
  import { MatterbridgeLaundryWasherModeServer } from './laundryWasher.js';
@@ -1,8 +1,8 @@
1
- import { LaundryWasherControls } from '@matter/main/clusters/laundry-washer-controls';
2
- import { LaundryWasherMode } from '@matter/main/clusters/laundry-washer-mode';
3
- import { ModeBase } from '@matter/main/clusters/mode-base';
4
- import { LaundryWasherModeServer } from '@matter/main/behaviors/laundry-washer-mode';
5
- import { LaundryWasherControlsServer } from '@matter/main/behaviors/laundry-washer-controls';
1
+ import { LaundryWasherControls } from '@matter/types/clusters/laundry-washer-controls';
2
+ import { LaundryWasherMode } from '@matter/types/clusters/laundry-washer-mode';
3
+ import { ModeBase } from '@matter/types/clusters/mode-base';
4
+ import { LaundryWasherModeServer } from '@matter/node/behaviors/laundry-washer-mode';
5
+ import { LaundryWasherControlsServer } from '@matter/node/behaviors/laundry-washer-controls';
6
6
  import { laundryWasher, powerSource } from '../matterbridgeDeviceTypes.js';
7
7
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
8
8
  import { MatterbridgeOnOffServer, MatterbridgeServer } from '../matterbridgeBehaviors.js';
@@ -1,8 +1,8 @@
1
- import { OperationalState } from '@matter/main/clusters/operational-state';
2
- import { MicrowaveOvenMode } from '@matter/main/clusters/microwave-oven-mode';
3
- import { MicrowaveOvenControl } from '@matter/main/clusters/microwave-oven-control';
4
- import { MicrowaveOvenControlServer } from '@matter/main/behaviors/microwave-oven-control';
5
- import { MicrowaveOvenModeServer } from '@matter/main/behaviors/microwave-oven-mode';
1
+ import { OperationalState } from '@matter/types/clusters/operational-state';
2
+ import { MicrowaveOvenMode } from '@matter/types/clusters/microwave-oven-mode';
3
+ import { MicrowaveOvenControl } from '@matter/types/clusters/microwave-oven-control';
4
+ import { MicrowaveOvenControlServer } from '@matter/node/behaviors/microwave-oven-control';
5
+ import { MicrowaveOvenModeServer } from '@matter/node/behaviors/microwave-oven-mode';
6
6
  import { microwaveOven, powerSource } from '../matterbridgeDeviceTypes.js';
7
7
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
8
8
  import { MatterbridgeServer, MatterbridgeOperationalStateServer } from '../matterbridgeBehaviors.js';
@@ -1,8 +1,8 @@
1
- import { ModeBase } from '@matter/main/clusters/mode-base';
2
- import { OvenMode } from '@matter/main/clusters/oven-mode';
3
- import { OperationalState } from '@matter/main/clusters/operational-state';
4
- import { OvenModeServer } from '@matter/main/behaviors/oven-mode';
5
- import { OvenCavityOperationalStateServer } from '@matter/main/behaviors/oven-cavity-operational-state';
1
+ import { ModeBase } from '@matter/types/clusters/mode-base';
2
+ import { OvenMode } from '@matter/types/clusters/oven-mode';
3
+ import { OperationalState } from '@matter/types/clusters/operational-state';
4
+ import { OvenModeServer } from '@matter/node/behaviors/oven-mode';
5
+ import { OvenCavityOperationalStateServer } from '@matter/node/behaviors/oven-cavity-operational-state';
6
6
  import { oven, powerSource, temperatureControlledCabinetHeater } from '../matterbridgeDeviceTypes.js';
7
7
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
8
8
  import { MatterbridgeServer } from '../matterbridgeBehaviors.js';
@@ -1,7 +1,7 @@
1
- import { ModeBase } from '@matter/main/clusters/mode-base';
2
- import { RefrigeratorAndTemperatureControlledCabinetMode } from '@matter/main/clusters/refrigerator-and-temperature-controlled-cabinet-mode';
3
- import { RefrigeratorAndTemperatureControlledCabinetModeServer } from '@matter/main/behaviors/refrigerator-and-temperature-controlled-cabinet-mode';
4
- import { RefrigeratorAlarmServer } from '@matter/main/behaviors/refrigerator-alarm';
1
+ import { ModeBase } from '@matter/types/clusters/mode-base';
2
+ import { RefrigeratorAndTemperatureControlledCabinetMode } from '@matter/types/clusters/refrigerator-and-temperature-controlled-cabinet-mode';
3
+ import { RefrigeratorAndTemperatureControlledCabinetModeServer } from '@matter/node/behaviors/refrigerator-and-temperature-controlled-cabinet-mode';
4
+ import { RefrigeratorAlarmServer } from '@matter/node/behaviors/refrigerator-alarm';
5
5
  import { powerSource, refrigerator, temperatureControlledCabinetCooler } from '../matterbridgeDeviceTypes.js';
6
6
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
7
7
  import { MatterbridgeServer } from '../matterbridgeBehaviors.js';
@@ -1,14 +1,14 @@
1
- import { AreaNamespaceTag } from '@matter/main';
2
- import { RvcRunModeServer } from '@matter/main/behaviors/rvc-run-mode';
3
- import { RvcOperationalStateServer } from '@matter/main/behaviors/rvc-operational-state';
4
- import { RvcCleanModeServer } from '@matter/main/behaviors/rvc-clean-mode';
5
- import { PowerSource } from '@matter/main/clusters/power-source';
6
- import { RvcRunMode } from '@matter/main/clusters/rvc-run-mode';
7
- import { RvcCleanMode } from '@matter/main/clusters/rvc-clean-mode';
8
- import { RvcOperationalState } from '@matter/main/clusters/rvc-operational-state';
9
- import { ServiceArea } from '@matter/main/clusters/service-area';
10
- import { ModeBase } from '@matter/main/clusters/mode-base';
11
- import { OperationalState } from '@matter/main/clusters/operational-state';
1
+ import { AreaNamespaceTag } from '@matter/node';
2
+ import { PowerSource } from '@matter/types/clusters/power-source';
3
+ import { RvcRunMode } from '@matter/types/clusters/rvc-run-mode';
4
+ import { RvcCleanMode } from '@matter/types/clusters/rvc-clean-mode';
5
+ import { RvcOperationalState } from '@matter/types/clusters/rvc-operational-state';
6
+ import { ServiceArea } from '@matter/types/clusters/service-area';
7
+ import { ModeBase } from '@matter/types/clusters/mode-base';
8
+ import { OperationalState } from '@matter/types/clusters/operational-state';
9
+ import { RvcRunModeServer } from '@matter/node/behaviors/rvc-run-mode';
10
+ import { RvcOperationalStateServer } from '@matter/node/behaviors/rvc-operational-state';
11
+ import { RvcCleanModeServer } from '@matter/node/behaviors/rvc-clean-mode';
12
12
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
13
13
  import { powerSource, roboticVacuumCleaner } from '../matterbridgeDeviceTypes.js';
14
14
  import { MatterbridgeServer, MatterbridgeServiceAreaServer } from '../matterbridgeBehaviors.js';
@@ -1,5 +1,5 @@
1
- import { PowerSourceTag } from '@matter/main';
2
- import { DeviceEnergyManagement } from '@matter/main/clusters/device-energy-management';
1
+ import { PowerSourceTag } from '@matter/node';
2
+ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
3
3
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
4
  import { deviceEnergyManagement, electricalSensor, solarPower, powerSource } from '../matterbridgeDeviceTypes.js';
5
5
  export class SolarPower extends MatterbridgeEndpoint {
@@ -1,4 +1,5 @@
1
- import { OnOff, LevelControl } from '@matter/main/clusters';
1
+ import { OnOff } from '@matter/types/clusters/on-off';
2
+ import { LevelControl } from '@matter/types/clusters/level-control';
2
3
  import { speakerDevice } from '../matterbridgeDeviceTypes.js';
3
4
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
5
  export class Speaker extends MatterbridgeEndpoint {
@@ -1,5 +1,5 @@
1
- import { TemperatureControl } from '@matter/main/clusters/temperature-control';
2
- import { TemperatureControlServer } from '@matter/main/behaviors/temperature-control';
1
+ import { TemperatureControl } from '@matter/types/clusters/temperature-control';
2
+ import { TemperatureControlServer } from '@matter/node/behaviors/temperature-control';
3
3
  import { MatterbridgeServer } from '../matterbridgeBehaviors.js';
4
4
  export function createLevelTemperatureControlClusterServer(endpoint, selectedTemperatureLevel = 1, supportedTemperatureLevels = ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']) {
5
5
  endpoint.behaviors.require(MatterbridgeLevelTemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel), {
@@ -1,9 +1,9 @@
1
- import { ModeBase } from '@matter/main/clusters/mode-base';
2
- import { WaterHeaterManagement } from '@matter/main/clusters/water-heater-management';
3
- import { WaterHeaterMode } from '@matter/main/clusters/water-heater-mode';
4
- import { DeviceEnergyManagement } from '@matter/main/clusters/device-energy-management';
5
- import { WaterHeaterManagementServer } from '@matter/main/behaviors/water-heater-management';
6
- import { WaterHeaterModeServer } from '@matter/main/behaviors/water-heater-mode';
1
+ import { ModeBase } from '@matter/types/clusters/mode-base';
2
+ import { WaterHeaterManagement } from '@matter/types/clusters/water-heater-management';
3
+ import { WaterHeaterMode } from '@matter/types/clusters/water-heater-mode';
4
+ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
5
+ import { WaterHeaterManagementServer } from '@matter/node/behaviors/water-heater-management';
6
+ import { WaterHeaterModeServer } from '@matter/node/behaviors/water-heater-mode';
7
7
  import { MatterbridgeServer } from '../matterbridgeBehaviors.js';
8
8
  import { electricalSensor, powerSource, waterHeater } from '../matterbridgeDeviceTypes.js';
9
9
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
package/dist/frontend.js CHANGED
@@ -4,18 +4,19 @@ import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import EventEmitter from 'node:events';
6
6
  import { AnsiLogger, stringify, debugStringify, CYAN, db, er, nf, rs, UNDERLINE, UNDERLINEOFF, YELLOW, nt, wr } from 'node-ansi-logger';
7
- import { Logger, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, Lifecycle, LogDestination, Diagnostic, Time, FabricIndex } from '@matter/main';
8
- import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
9
- import { PowerSource } from '@matter/main/clusters/power-source';
10
- import { DeviceAdvertiser, DeviceCommissioner, FabricManager } from '@matter/main/protocol';
11
- import { CommissioningOptions } from '@matter/main/types';
7
+ import { Logger, Diagnostic, LogDestination, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, Lifecycle } from '@matter/general';
8
+ import { DeviceAdvertiser, DeviceCommissioner, FabricManager } from '@matter/protocol';
9
+ import { FabricIndex } from '@matter/types/datatype';
10
+ import { CommissioningOptions } from '@matter/types/commissioning';
11
+ import { BridgedDeviceBasicInformation } from '@matter/types/clusters/bridged-device-basic-information';
12
+ import { PowerSource } from '@matter/types/clusters/power-source';
12
13
  import { MATTER_LOGGER_FILE, MATTER_STORAGE_NAME, MATTERBRIDGE_DIAGNOSTIC_FILE, MATTERBRIDGE_HISTORY_FILE, MATTERBRIDGE_LOGGER_FILE, NODE_STORAGE_DIR, plg } from './matterbridgeTypes.js';
13
14
  import { isValidArray, isValidNumber, isValidObject, isValidString, isValidBoolean } from './utils/isvalid.js';
14
15
  import { createZip } from './utils/createZip.js';
15
16
  import { hasParameter } from './utils/commandLine.js';
16
17
  import { withTimeout, wait } from './utils/wait.js';
17
18
  import { inspectError } from './utils/error.js';
18
- import { formatMemoryUsage, formatOsUpTime } from './utils/network.js';
19
+ import { formatBytes, formatUptime, formatPercent } from './utils/format.js';
19
20
  import { capitalizeFirstLetter, getAttribute } from './matterbridgeEndpointHelpers.js';
20
21
  import { cliEmitter, lastOsCpuUsage, lastProcessCpuUsage } from './cliEmitter.js';
21
22
  import { generateHistoryPage } from './cliHistory.js';
@@ -337,22 +338,22 @@ export class Frontend extends EventEmitter {
337
338
  this.log.debug('Express received /memory');
338
339
  const memoryUsageRaw = process.memoryUsage();
339
340
  const memoryUsage = {
340
- rss: formatMemoryUsage(memoryUsageRaw.rss),
341
- heapTotal: formatMemoryUsage(memoryUsageRaw.heapTotal),
342
- heapUsed: formatMemoryUsage(memoryUsageRaw.heapUsed),
343
- external: formatMemoryUsage(memoryUsageRaw.external),
344
- arrayBuffers: formatMemoryUsage(memoryUsageRaw.arrayBuffers),
341
+ rss: formatBytes(memoryUsageRaw.rss),
342
+ heapTotal: formatBytes(memoryUsageRaw.heapTotal),
343
+ heapUsed: formatBytes(memoryUsageRaw.heapUsed),
344
+ external: formatBytes(memoryUsageRaw.external),
345
+ arrayBuffers: formatBytes(memoryUsageRaw.arrayBuffers),
345
346
  };
346
347
  const { default: v8 } = await import('node:v8');
347
348
  const heapStatsRaw = v8.getHeapStatistics();
348
349
  const heapSpacesRaw = v8.getHeapSpaceStatistics();
349
- const heapStats = Object.fromEntries(Object.entries(heapStatsRaw).map(([key, value]) => [key, formatMemoryUsage(value)]));
350
+ const heapStats = Object.fromEntries(Object.entries(heapStatsRaw).map(([key, value]) => [key, formatBytes(value)]));
350
351
  const heapSpaces = heapSpacesRaw.map((space) => ({
351
352
  ...space,
352
- space_size: formatMemoryUsage(space.space_size),
353
- space_used_size: formatMemoryUsage(space.space_used_size),
354
- space_available_size: formatMemoryUsage(space.space_available_size),
355
- physical_space_size: formatMemoryUsage(space.physical_space_size),
353
+ space_size: formatBytes(space.space_size),
354
+ space_used_size: formatBytes(space.space_used_size),
355
+ space_available_size: formatBytes(space.space_available_size),
356
+ physical_space_size: formatBytes(space.physical_space_size),
356
357
  }));
357
358
  const { createRequire } = await import('node:module');
358
359
  const require = createRequire(import.meta.url);
@@ -684,15 +685,15 @@ export class Frontend extends EventEmitter {
684
685
  this.log.debug('Frontend stopped successfully');
685
686
  }
686
687
  async getApiSettings() {
687
- this.matterbridge.systemInformation.totalMemory = formatMemoryUsage(os.totalmem());
688
- this.matterbridge.systemInformation.freeMemory = formatMemoryUsage(os.freemem());
689
- this.matterbridge.systemInformation.systemUptime = formatOsUpTime(os.uptime());
690
- this.matterbridge.systemInformation.processUptime = formatOsUpTime(Math.floor(process.uptime()));
691
- this.matterbridge.systemInformation.cpuUsage = lastOsCpuUsage.toFixed(2) + ' %';
692
- this.matterbridge.systemInformation.processCpuUsage = lastProcessCpuUsage.toFixed(2) + ' %';
693
- this.matterbridge.systemInformation.rss = formatMemoryUsage(process.memoryUsage().rss);
694
- this.matterbridge.systemInformation.heapTotal = formatMemoryUsage(process.memoryUsage().heapTotal);
695
- this.matterbridge.systemInformation.heapUsed = formatMemoryUsage(process.memoryUsage().heapUsed);
688
+ this.matterbridge.systemInformation.totalMemory = formatBytes(os.totalmem());
689
+ this.matterbridge.systemInformation.freeMemory = formatBytes(os.freemem());
690
+ this.matterbridge.systemInformation.systemUptime = formatUptime(os.uptime());
691
+ this.matterbridge.systemInformation.processUptime = formatUptime(Math.floor(process.uptime()));
692
+ this.matterbridge.systemInformation.cpuUsage = formatPercent(lastOsCpuUsage);
693
+ this.matterbridge.systemInformation.processCpuUsage = formatPercent(lastProcessCpuUsage);
694
+ this.matterbridge.systemInformation.rss = formatBytes(process.memoryUsage().rss);
695
+ this.matterbridge.systemInformation.heapTotal = formatBytes(process.memoryUsage().heapTotal);
696
+ this.matterbridge.systemInformation.heapUsed = formatBytes(process.memoryUsage().heapUsed);
696
697
  const info = {
697
698
  homeDirectory: this.matterbridge.homeDirectory,
698
699
  rootDirectory: this.matterbridge.rootDirectory,
@@ -1034,7 +1035,7 @@ export class Frontend extends EventEmitter {
1034
1035
  diagnosticDestination.context = Diagnostic.Context();
1035
1036
  }
1036
1037
  diagnosticDestination.context.run(() => diagnosticDestination.add(Diagnostic.message({
1037
- now: Time.now(),
1038
+ now: new Date(),
1038
1039
  facility: 'Server nodes:',
1039
1040
  level: MatterLogLevel.INFO,
1040
1041
  prefix: Logger.nestingLevel ? '⎸'.padEnd(Logger.nestingLevel * 2) : '',
package/dist/helpers.js CHANGED
@@ -1,4 +1,4 @@
1
- import { OnOff } from '@matter/main/clusters/on-off';
1
+ import { OnOff } from '@matter/types/clusters/on-off';
2
2
  import { Endpoint } from '@matter/node';
3
3
  import { BridgedDeviceBasicInformationServer } from '@matter/node/behaviors/bridged-device-basic-information';
4
4
  import { OnOffBaseServer } from '@matter/node/behaviors/on-off';
@@ -7,15 +7,18 @@ import EventEmitter from 'node:events';
7
7
  import { inspect } from 'node:util';
8
8
  import { AnsiLogger, UNDERLINE, UNDERLINEOFF, db, debugStringify, BRIGHT, RESET, er, nf, rs, wr, RED, GREEN, zb, CYAN, nt, BLUE, or } from 'node-ansi-logger';
9
9
  import { NodeStorageManager } from 'node-persist-manager';
10
- import { DeviceTypeId, Endpoint, Logger, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, VendorId, StorageService, Environment, ServerNode, UINT32_MAX, UINT16_MAX, Crypto, } from '@matter/main';
11
- import { FabricAction, PaseClient } from '@matter/main/protocol';
12
- import { AggregatorEndpoint } from '@matter/main/endpoints';
13
- import { BasicInformationServer } from '@matter/main/behaviors/basic-information';
10
+ import '@matter/nodejs';
11
+ import { Endpoint, ServerNode } from '@matter/node';
12
+ import { Logger, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, UINT32_MAX, UINT16_MAX, Crypto, Environment, StorageService } from '@matter/general';
13
+ import { DeviceTypeId, VendorId } from '@matter/types';
14
+ import { FabricAction, PaseClient } from '@matter/protocol';
15
+ import { AggregatorEndpoint } from '@matter/node/endpoints';
16
+ import { BasicInformationServer } from '@matter/node/behaviors/basic-information';
14
17
  import { getParameter, getIntParameter, hasParameter } from './utils/commandLine.js';
15
18
  import { copyDirectory } from './utils/copyDirectory.js';
16
19
  import { createDirectory } from './utils/createDirectory.js';
17
20
  import { isValidString, parseVersionString, isValidNumber, isValidObject } from './utils/isvalid.js';
18
- import { formatMemoryUsage, formatOsUpTime } from './utils/network.js';
21
+ import { formatBytes, formatPercent, formatUptime } from './utils/format.js';
19
22
  import { withTimeout, waiter, wait } from './utils/wait.js';
20
23
  import { dev, MATTER_LOGGER_FILE, MATTER_STORAGE_NAME, MATTERBRIDGE_LOGGER_FILE, NODE_STORAGE_DIR, plg, typ } from './matterbridgeTypes.js';
21
24
  import { PluginManager } from './pluginManager.js';
@@ -721,14 +724,15 @@ export class Matterbridge extends EventEmitter {
721
724
  this.systemInformation.osRelease = os.release();
722
725
  this.systemInformation.osPlatform = os.platform();
723
726
  this.systemInformation.osArch = os.arch();
724
- this.systemInformation.totalMemory = formatMemoryUsage(os.totalmem());
725
- this.systemInformation.freeMemory = formatMemoryUsage(os.freemem());
726
- this.systemInformation.systemUptime = formatOsUpTime(os.uptime());
727
- this.systemInformation.processUptime = formatOsUpTime(Math.floor(process.uptime()));
728
- this.systemInformation.cpuUsage = '0.00 %';
729
- this.systemInformation.rss = formatMemoryUsage(process.memoryUsage().rss);
730
- this.systemInformation.heapTotal = formatMemoryUsage(process.memoryUsage().heapTotal);
731
- this.systemInformation.heapUsed = formatMemoryUsage(process.memoryUsage().heapUsed);
727
+ this.systemInformation.totalMemory = formatBytes(os.totalmem());
728
+ this.systemInformation.freeMemory = formatBytes(os.freemem());
729
+ this.systemInformation.systemUptime = formatUptime(os.uptime());
730
+ this.systemInformation.processUptime = formatUptime(process.uptime());
731
+ this.systemInformation.cpuUsage = formatPercent(0);
732
+ this.systemInformation.processCpuUsage = formatPercent(0);
733
+ this.systemInformation.rss = formatBytes(process.memoryUsage().rss);
734
+ this.systemInformation.heapTotal = formatBytes(process.memoryUsage().heapTotal);
735
+ this.systemInformation.heapUsed = formatBytes(process.memoryUsage().heapUsed);
732
736
  this.log.debug('Host System Information:');
733
737
  this.log.debug(`- Hostname: ${this.systemInformation.hostname}`);
734
738
  this.log.debug(`- User: ${this.systemInformation.user}`);
@@ -1,3 +1,5 @@
1
+ if (process.argv.includes('--loader') || process.argv.includes('-loader'))
2
+ console.log('\u001B[32mMatterbridgeAccessoryPlatform loaded.\u001B[40;0m');
1
3
  import { MatterbridgePlatform } from './matterbridgePlatform.js';
2
4
  export class MatterbridgeAccessoryPlatform extends MatterbridgePlatform {
3
5
  constructor(matterbridge, log, config) {
@@ -1,4 +1,4 @@
1
- import { Behavior } from '@matter/main';
1
+ import { Behavior } from '@matter/node';
2
2
  import { BooleanStateConfiguration } from '@matter/types/clusters/boolean-state-configuration';
3
3
  import { ColorControl } from '@matter/types/clusters/color-control';
4
4
  import { FanControl } from '@matter/types/clusters/fan-control';
@@ -12,25 +12,25 @@ import { ServiceArea } from '@matter/types/clusters/service-area';
12
12
  import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
13
13
  import { ResourceMonitoring } from '@matter/types/clusters/resource-monitoring';
14
14
  import { DeviceEnergyManagementMode } from '@matter/types/clusters/device-energy-management-mode';
15
- import { IdentifyServer } from '@matter/main/behaviors/identify';
16
- import { OnOffServer } from '@matter/main/behaviors/on-off';
17
- import { LevelControlServer } from '@matter/main/behaviors/level-control';
18
- import { ColorControlServer } from '@matter/main/behaviors/color-control';
19
- import { WindowCoveringServer } from '@matter/main/behaviors/window-covering';
20
- import { BooleanStateConfigurationServer } from '@matter/main/behaviors/boolean-state-configuration';
21
- import { DoorLockServer } from '@matter/main/behaviors/door-lock';
22
- import { FanControlServer } from '@matter/main/behaviors/fan-control';
23
- import { ThermostatServer } from '@matter/main/behaviors/thermostat';
24
- import { ValveConfigurationAndControlServer } from '@matter/main/behaviors/valve-configuration-and-control';
25
- import { ModeSelectServer } from '@matter/main/behaviors/mode-select';
26
- import { SmokeCoAlarmServer } from '@matter/main/behaviors/smoke-co-alarm';
27
- import { SwitchServer } from '@matter/main/behaviors/switch';
28
- import { OperationalStateServer } from '@matter/main/behaviors/operational-state';
29
- import { ServiceAreaServer } from '@matter/main/behaviors/service-area';
30
- import { DeviceEnergyManagementServer } from '@matter/main/behaviors/device-energy-management';
31
- import { DeviceEnergyManagementModeServer } from '@matter/main/behaviors/device-energy-management-mode';
32
- import { HepaFilterMonitoringServer } from '@matter/main/behaviors/hepa-filter-monitoring';
33
- import { ActivatedCarbonFilterMonitoringServer } from '@matter/main/behaviors/activated-carbon-filter-monitoring';
15
+ import { IdentifyServer } from '@matter/node/behaviors/identify';
16
+ import { OnOffServer } from '@matter/node/behaviors/on-off';
17
+ import { LevelControlServer } from '@matter/node/behaviors/level-control';
18
+ import { ColorControlServer } from '@matter/node/behaviors/color-control';
19
+ import { WindowCoveringServer } from '@matter/node/behaviors/window-covering';
20
+ import { BooleanStateConfigurationServer } from '@matter/node/behaviors/boolean-state-configuration';
21
+ import { DoorLockServer } from '@matter/node/behaviors/door-lock';
22
+ import { FanControlServer } from '@matter/node/behaviors/fan-control';
23
+ import { ThermostatServer } from '@matter/node/behaviors/thermostat';
24
+ import { ValveConfigurationAndControlServer } from '@matter/node/behaviors/valve-configuration-and-control';
25
+ import { ModeSelectServer } from '@matter/node/behaviors/mode-select';
26
+ import { SmokeCoAlarmServer } from '@matter/node/behaviors/smoke-co-alarm';
27
+ import { SwitchServer } from '@matter/node/behaviors/switch';
28
+ import { OperationalStateServer } from '@matter/node/behaviors/operational-state';
29
+ import { ServiceAreaServer } from '@matter/node/behaviors/service-area';
30
+ import { DeviceEnergyManagementServer } from '@matter/node/behaviors/device-energy-management';
31
+ import { DeviceEnergyManagementModeServer } from '@matter/node/behaviors/device-energy-management-mode';
32
+ import { HepaFilterMonitoringServer } from '@matter/node/behaviors/hepa-filter-monitoring';
33
+ import { ActivatedCarbonFilterMonitoringServer } from '@matter/node/behaviors/activated-carbon-filter-monitoring';
34
34
  export class MatterbridgeServer extends Behavior {
35
35
  static id = 'matterbridge';
36
36
  initialize() {