matterbridge 3.4.0 → 3.4.1-dev-20251127-826b2bf
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 +128 -112
- package/README-DEV.md +2 -2
- package/README-DOCKER.md +1 -1
- package/README-MACOS-PLIST.md +1 -1
- package/README-NGINX.md +1 -1
- package/README-PODMAN.md +1 -1
- package/README-SERVICE-LOCAL.md +1 -1
- package/README-SERVICE-OPT.md +6 -1
- package/README-SERVICE.md +1 -1
- package/README.md +57 -49
- package/dist/broadcastServer.js +1 -93
- package/dist/broadcastServerTypes.js +0 -24
- package/dist/cli.js +1 -97
- package/dist/cliEmitter.js +0 -37
- package/dist/cliHistory.js +0 -38
- package/dist/clusters/export.js +0 -2
- package/dist/defaultConfigSchema.js +0 -24
- package/dist/deviceManager.js +1 -113
- package/dist/devices/airConditioner.js +0 -57
- package/dist/devices/batteryStorage.js +1 -48
- package/dist/devices/cooktop.js +0 -56
- package/dist/devices/dishwasher.js +0 -57
- package/dist/devices/evse.js +10 -74
- package/dist/devices/export.js +0 -5
- package/dist/devices/extractorHood.js +0 -43
- package/dist/devices/heatPump.js +2 -50
- package/dist/devices/laundryDryer.js +3 -62
- package/dist/devices/laundryWasher.js +4 -70
- package/dist/devices/microwaveOven.js +5 -88
- package/dist/devices/oven.js +0 -85
- package/dist/devices/refrigerator.js +0 -102
- package/dist/devices/roboticVacuumCleaner.js +9 -100
- package/dist/devices/solarPower.js +0 -38
- package/dist/devices/speaker.js +0 -84
- package/dist/devices/temperatureControl.js +3 -24
- package/dist/devices/waterHeater.js +2 -82
- package/dist/dgram/coap.js +13 -126
- package/dist/dgram/dgram.js +2 -114
- package/dist/dgram/mb_coap.js +3 -41
- package/dist/dgram/mb_mdns.js +15 -80
- package/dist/dgram/mdns.js +137 -299
- package/dist/dgram/multicast.js +1 -62
- package/dist/dgram/unicast.js +0 -54
- package/dist/frontend.js +35 -455
- package/dist/frontendTypes.js +0 -45
- package/dist/helpers.js +0 -53
- package/dist/index.js +0 -25
- package/dist/jestutils/export.js +0 -1
- package/dist/jestutils/jestHelpers.js +13 -352
- package/dist/logger/export.js +0 -1
- package/dist/matter/behaviors.js +0 -2
- package/dist/matter/clusters.js +0 -2
- package/dist/matter/devices.js +0 -2
- package/dist/matter/endpoints.js +0 -2
- package/dist/matter/export.js +0 -3
- package/dist/matter/types.js +0 -3
- package/dist/matterNode.js +8 -369
- package/dist/matterbridge.js +74 -788
- package/dist/matterbridgeAccessoryPlatform.js +0 -38
- package/dist/matterbridgeBehaviors.js +5 -68
- package/dist/matterbridgeDeviceTypes.js +14 -635
- package/dist/matterbridgeDynamicPlatform.js +0 -38
- package/dist/matterbridgeEndpoint.js +53 -1444
- package/dist/matterbridgeEndpointHelpers.js +20 -483
- package/dist/matterbridgeEndpointTypes.js +0 -25
- package/dist/matterbridgePlatform.js +2 -460
- package/dist/matterbridgeTypes.js +0 -26
- package/dist/pluginManager.js +5 -340
- package/dist/shelly.js +7 -168
- package/dist/storage/export.js +0 -1
- package/dist/update.js +0 -69
- package/dist/utils/colorUtils.js +2 -97
- package/dist/utils/commandLine.js +0 -60
- package/dist/utils/copyDirectory.js +0 -37
- package/dist/utils/createDirectory.js +0 -33
- package/dist/utils/createZip.js +2 -47
- package/dist/utils/deepCopy.js +0 -39
- package/dist/utils/deepEqual.js +1 -72
- package/dist/utils/error.js +0 -41
- package/dist/utils/export.js +0 -1
- package/dist/utils/format.js +0 -49
- package/dist/utils/hex.js +0 -124
- package/dist/utils/inspector.js +1 -69
- package/dist/utils/isvalid.js +0 -101
- package/dist/utils/network.js +5 -96
- package/dist/utils/spawn.js +1 -71
- package/dist/utils/tracker.js +1 -64
- package/dist/utils/wait.js +8 -60
- package/frontend/build/assets/index.js +4 -4
- package/frontend/build/assets/vendor_mui.js +1 -1
- package/frontend/build/assets/vendor_node_modules.js +19 -83
- package/frontend/build/assets/vendor_qrcode.js +1 -9
- package/frontend/build/assets/vendor_rjsf.js +1 -9
- package/frontend/package-lock.json +229 -439
- package/frontend/package.json +15 -15
- package/marked.ps1 +15 -0
- package/npm-shrinkwrap.json +165 -231
- package/package.json +2 -3
- package/dist/broadcastServer.d.ts +0 -115
- package/dist/broadcastServer.d.ts.map +0 -1
- package/dist/broadcastServer.js.map +0 -1
- package/dist/broadcastServerTypes.d.ts +0 -838
- package/dist/broadcastServerTypes.d.ts.map +0 -1
- package/dist/broadcastServerTypes.js.map +0 -1
- package/dist/cli.d.ts +0 -30
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cliEmitter.d.ts +0 -50
- package/dist/cliEmitter.d.ts.map +0 -1
- package/dist/cliEmitter.js.map +0 -1
- package/dist/cliHistory.d.ts +0 -48
- package/dist/cliHistory.d.ts.map +0 -1
- package/dist/cliHistory.js.map +0 -1
- package/dist/clusters/export.d.ts +0 -2
- package/dist/clusters/export.d.ts.map +0 -1
- package/dist/clusters/export.js.map +0 -1
- package/dist/defaultConfigSchema.d.ts +0 -28
- package/dist/defaultConfigSchema.d.ts.map +0 -1
- package/dist/defaultConfigSchema.js.map +0 -1
- package/dist/deviceManager.d.ts +0 -135
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.js.map +0 -1
- package/dist/devices/airConditioner.d.ts +0 -98
- package/dist/devices/airConditioner.d.ts.map +0 -1
- package/dist/devices/airConditioner.js.map +0 -1
- package/dist/devices/batteryStorage.d.ts +0 -48
- package/dist/devices/batteryStorage.d.ts.map +0 -1
- package/dist/devices/batteryStorage.js.map +0 -1
- package/dist/devices/cooktop.d.ts +0 -61
- package/dist/devices/cooktop.d.ts.map +0 -1
- package/dist/devices/cooktop.js.map +0 -1
- package/dist/devices/dishwasher.d.ts +0 -71
- package/dist/devices/dishwasher.d.ts.map +0 -1
- package/dist/devices/dishwasher.js.map +0 -1
- package/dist/devices/evse.d.ts +0 -76
- package/dist/devices/evse.d.ts.map +0 -1
- package/dist/devices/evse.js.map +0 -1
- package/dist/devices/export.d.ts +0 -17
- package/dist/devices/export.d.ts.map +0 -1
- package/dist/devices/export.js.map +0 -1
- package/dist/devices/extractorHood.d.ts +0 -46
- package/dist/devices/extractorHood.d.ts.map +0 -1
- package/dist/devices/extractorHood.js.map +0 -1
- package/dist/devices/heatPump.d.ts +0 -47
- package/dist/devices/heatPump.d.ts.map +0 -1
- package/dist/devices/heatPump.js.map +0 -1
- package/dist/devices/laundryDryer.d.ts +0 -67
- package/dist/devices/laundryDryer.d.ts.map +0 -1
- package/dist/devices/laundryDryer.js.map +0 -1
- package/dist/devices/laundryWasher.d.ts +0 -81
- package/dist/devices/laundryWasher.d.ts.map +0 -1
- package/dist/devices/laundryWasher.js.map +0 -1
- package/dist/devices/microwaveOven.d.ts +0 -168
- package/dist/devices/microwaveOven.d.ts.map +0 -1
- package/dist/devices/microwaveOven.js.map +0 -1
- package/dist/devices/oven.d.ts +0 -105
- package/dist/devices/oven.d.ts.map +0 -1
- package/dist/devices/oven.js.map +0 -1
- package/dist/devices/refrigerator.d.ts +0 -118
- package/dist/devices/refrigerator.d.ts.map +0 -1
- package/dist/devices/refrigerator.js.map +0 -1
- package/dist/devices/roboticVacuumCleaner.d.ts +0 -112
- package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
- package/dist/devices/roboticVacuumCleaner.js.map +0 -1
- package/dist/devices/solarPower.d.ts +0 -40
- package/dist/devices/solarPower.d.ts.map +0 -1
- package/dist/devices/solarPower.js.map +0 -1
- package/dist/devices/speaker.d.ts +0 -87
- package/dist/devices/speaker.d.ts.map +0 -1
- package/dist/devices/speaker.js.map +0 -1
- package/dist/devices/temperatureControl.d.ts +0 -166
- package/dist/devices/temperatureControl.d.ts.map +0 -1
- package/dist/devices/temperatureControl.js.map +0 -1
- package/dist/devices/waterHeater.d.ts +0 -111
- package/dist/devices/waterHeater.d.ts.map +0 -1
- package/dist/devices/waterHeater.js.map +0 -1
- package/dist/dgram/coap.d.ts +0 -205
- package/dist/dgram/coap.d.ts.map +0 -1
- package/dist/dgram/coap.js.map +0 -1
- package/dist/dgram/dgram.d.ts +0 -141
- package/dist/dgram/dgram.d.ts.map +0 -1
- package/dist/dgram/dgram.js.map +0 -1
- package/dist/dgram/mb_coap.d.ts +0 -24
- package/dist/dgram/mb_coap.d.ts.map +0 -1
- package/dist/dgram/mb_coap.js.map +0 -1
- package/dist/dgram/mb_mdns.d.ts +0 -24
- package/dist/dgram/mb_mdns.d.ts.map +0 -1
- package/dist/dgram/mb_mdns.js.map +0 -1
- package/dist/dgram/mdns.d.ts +0 -290
- package/dist/dgram/mdns.d.ts.map +0 -1
- package/dist/dgram/mdns.js.map +0 -1
- package/dist/dgram/multicast.d.ts +0 -67
- package/dist/dgram/multicast.d.ts.map +0 -1
- package/dist/dgram/multicast.js.map +0 -1
- package/dist/dgram/unicast.d.ts +0 -56
- package/dist/dgram/unicast.d.ts.map +0 -1
- package/dist/dgram/unicast.js.map +0 -1
- package/dist/frontend.d.ts +0 -238
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js.map +0 -1
- package/dist/frontendTypes.d.ts +0 -529
- package/dist/frontendTypes.d.ts.map +0 -1
- package/dist/frontendTypes.js.map +0 -1
- package/dist/helpers.d.ts +0 -48
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/index.d.ts +0 -34
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jestutils/export.d.ts +0 -2
- package/dist/jestutils/export.d.ts.map +0 -1
- package/dist/jestutils/export.js.map +0 -1
- package/dist/jestutils/jestHelpers.d.ts +0 -303
- package/dist/jestutils/jestHelpers.d.ts.map +0 -1
- package/dist/jestutils/jestHelpers.js.map +0 -1
- package/dist/logger/export.d.ts +0 -2
- package/dist/logger/export.d.ts.map +0 -1
- package/dist/logger/export.js.map +0 -1
- package/dist/matter/behaviors.d.ts +0 -2
- package/dist/matter/behaviors.d.ts.map +0 -1
- package/dist/matter/behaviors.js.map +0 -1
- package/dist/matter/clusters.d.ts +0 -2
- package/dist/matter/clusters.d.ts.map +0 -1
- package/dist/matter/clusters.js.map +0 -1
- package/dist/matter/devices.d.ts +0 -2
- package/dist/matter/devices.d.ts.map +0 -1
- package/dist/matter/devices.js.map +0 -1
- package/dist/matter/endpoints.d.ts +0 -2
- package/dist/matter/endpoints.d.ts.map +0 -1
- package/dist/matter/endpoints.js.map +0 -1
- package/dist/matter/export.d.ts +0 -5
- package/dist/matter/export.d.ts.map +0 -1
- package/dist/matter/export.js.map +0 -1
- package/dist/matter/types.d.ts +0 -3
- package/dist/matter/types.d.ts.map +0 -1
- package/dist/matter/types.js.map +0 -1
- package/dist/matterNode.d.ts +0 -342
- package/dist/matterNode.d.ts.map +0 -1
- package/dist/matterNode.js.map +0 -1
- package/dist/matterbridge.d.ts +0 -473
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -41
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -2404
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -698
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -41
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -1507
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +0 -787
- package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
- package/dist/matterbridgeEndpointHelpers.js.map +0 -1
- package/dist/matterbridgeEndpointTypes.d.ts +0 -166
- package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
- package/dist/matterbridgeEndpointTypes.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -524
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -251
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -371
- package/dist/pluginManager.d.ts.map +0 -1
- package/dist/pluginManager.js.map +0 -1
- package/dist/shelly.d.ts +0 -174
- package/dist/shelly.d.ts.map +0 -1
- package/dist/shelly.js.map +0 -1
- package/dist/storage/export.d.ts +0 -2
- package/dist/storage/export.d.ts.map +0 -1
- package/dist/storage/export.js.map +0 -1
- package/dist/update.d.ts +0 -75
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -101
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/commandLine.d.ts +0 -66
- package/dist/utils/commandLine.d.ts.map +0 -1
- package/dist/utils/commandLine.js.map +0 -1
- package/dist/utils/copyDirectory.d.ts +0 -35
- package/dist/utils/copyDirectory.d.ts.map +0 -1
- package/dist/utils/copyDirectory.js.map +0 -1
- package/dist/utils/createDirectory.d.ts +0 -34
- package/dist/utils/createDirectory.d.ts.map +0 -1
- package/dist/utils/createDirectory.js.map +0 -1
- package/dist/utils/createZip.d.ts +0 -39
- package/dist/utils/createZip.d.ts.map +0 -1
- package/dist/utils/createZip.js.map +0 -1
- package/dist/utils/deepCopy.d.ts +0 -32
- package/dist/utils/deepCopy.d.ts.map +0 -1
- package/dist/utils/deepCopy.js.map +0 -1
- package/dist/utils/deepEqual.d.ts +0 -54
- package/dist/utils/deepEqual.d.ts.map +0 -1
- package/dist/utils/deepEqual.js.map +0 -1
- package/dist/utils/error.d.ts +0 -44
- package/dist/utils/error.d.ts.map +0 -1
- package/dist/utils/error.js.map +0 -1
- package/dist/utils/export.d.ts +0 -13
- package/dist/utils/export.d.ts.map +0 -1
- package/dist/utils/export.js.map +0 -1
- package/dist/utils/format.d.ts +0 -53
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/hex.d.ts +0 -89
- package/dist/utils/hex.d.ts.map +0 -1
- package/dist/utils/hex.js.map +0 -1
- package/dist/utils/inspector.d.ts +0 -87
- package/dist/utils/inspector.d.ts.map +0 -1
- package/dist/utils/inspector.js.map +0 -1
- package/dist/utils/isvalid.d.ts +0 -103
- package/dist/utils/isvalid.d.ts.map +0 -1
- package/dist/utils/isvalid.js.map +0 -1
- package/dist/utils/network.d.ts +0 -111
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/spawn.d.ts +0 -33
- package/dist/utils/spawn.d.ts.map +0 -1
- package/dist/utils/spawn.js.map +0 -1
- package/dist/utils/tracker.d.ts +0 -108
- package/dist/utils/tracker.d.ts.map +0 -1
- package/dist/utils/tracker.js.map +0 -1
- package/dist/utils/wait.d.ts +0 -54
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,33 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the CLI entry point of Matterbridge.
|
|
3
|
-
*
|
|
4
|
-
* @file cli.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2023-12-29
|
|
7
|
-
* @version 3.0.0
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2023, 2024, 2025 Luca Liguori.
|
|
11
|
-
*
|
|
12
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
* you may not use this file except in compliance with the License.
|
|
14
|
-
* You may obtain a copy of the License at
|
|
15
|
-
*
|
|
16
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
*
|
|
18
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
* See the License for the specific language governing permissions and
|
|
22
|
-
* limitations under the License.
|
|
23
|
-
*/
|
|
24
|
-
/* eslint-disable no-console */
|
|
25
|
-
/* eslint-disable n/no-process-exit */
|
|
26
1
|
if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
27
2
|
console.log('\u001B[32mCli loaded.\u001B[40;0m');
|
|
28
|
-
// AnsiLogger module
|
|
29
3
|
import { AnsiLogger } from 'node-ansi-logger';
|
|
30
|
-
// Cli
|
|
31
4
|
import { cliEmitter } from './cliEmitter.js';
|
|
32
5
|
import { hasParameter, hasAnyParameter } from './utils/commandLine.js';
|
|
33
6
|
import { inspectError } from './utils/error.js';
|
|
@@ -37,10 +10,7 @@ import { formatBytes, formatUptime } from './utils/format.js';
|
|
|
37
10
|
export let instance;
|
|
38
11
|
export const tracker = new Tracker('Cli', false, false);
|
|
39
12
|
export const inspector = new Inspector('Cli', false, false);
|
|
40
|
-
const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4
|
|
41
|
-
/**
|
|
42
|
-
* Starts the CPU and memory tracker.
|
|
43
|
-
*/
|
|
13
|
+
const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
|
|
44
14
|
function startCpuMemoryCheck() {
|
|
45
15
|
log.debug(`Cpu memory check starting...`);
|
|
46
16
|
tracker.start();
|
|
@@ -53,50 +23,26 @@ function startCpuMemoryCheck() {
|
|
|
53
23
|
});
|
|
54
24
|
log.debug(`Cpu memory check started`);
|
|
55
25
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Stops the CPU and memory tracker.
|
|
58
|
-
*/
|
|
59
26
|
function stopCpuMemoryCheck() {
|
|
60
27
|
log.debug(`Cpu memory check stopping...`);
|
|
61
28
|
tracker.stop();
|
|
62
29
|
tracker.removeAllListeners();
|
|
63
30
|
log.debug(`Cpu memory check stopped`);
|
|
64
31
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Starts the inspector for heap sampling.
|
|
67
|
-
* This function is called when the -inspect parameter is passed.
|
|
68
|
-
*/
|
|
69
32
|
async function startInspector() {
|
|
70
33
|
await inspector.start();
|
|
71
34
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Stops the heap sampling and saves the profile.
|
|
74
|
-
* This function is called when the -inspect parameter is passed.
|
|
75
|
-
*/
|
|
76
35
|
async function stopInspector() {
|
|
77
36
|
await inspector.stop();
|
|
78
37
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Takes a heap snapshot
|
|
81
|
-
*/
|
|
82
38
|
async function takeHeapSnapshot() {
|
|
83
39
|
await inspector.takeHeapSnapshot();
|
|
84
40
|
}
|
|
85
|
-
/**
|
|
86
|
-
* Triggers a manual garbage collection.
|
|
87
|
-
* This function is working only if the node process is started with --expose_gc.
|
|
88
|
-
*
|
|
89
|
-
* @remarks To check the effect of the garbage collection, add also --trace_gc or --trace_gc_verbose.
|
|
90
|
-
*/
|
|
91
41
|
function triggerGarbageCollection() {
|
|
92
42
|
inspector.runGarbageCollector();
|
|
93
43
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Registers event handlers for the Matterbridge instance.
|
|
96
|
-
*/
|
|
97
44
|
function registerHandlers() {
|
|
98
45
|
log.debug('Registering event handlers...');
|
|
99
|
-
// istanbul ignore next cause registerHandlers is called only if instance is defined
|
|
100
46
|
if (!instance)
|
|
101
47
|
return;
|
|
102
48
|
instance.on('shutdown', () => shutdown());
|
|
@@ -110,9 +56,6 @@ function registerHandlers() {
|
|
|
110
56
|
instance.on('triggergarbagecollection', () => triggerGarbageCollection());
|
|
111
57
|
log.debug('Registered event handlers');
|
|
112
58
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Shuts down the Matterbridge instance and exits the process.
|
|
115
|
-
*/
|
|
116
59
|
async function shutdown() {
|
|
117
60
|
log.debug('Received shutdown event, exiting...');
|
|
118
61
|
if (hasParameter('inspect'))
|
|
@@ -121,56 +64,26 @@ async function shutdown() {
|
|
|
121
64
|
cliEmitter.emit('shutdown');
|
|
122
65
|
process.exit(0);
|
|
123
66
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Restarts the Matterbridge instance.
|
|
126
|
-
*/
|
|
127
67
|
async function restart() {
|
|
128
68
|
log.debug('Received restart event, loading...');
|
|
129
69
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
130
70
|
instance = await Matterbridge.loadInstance(true);
|
|
131
71
|
registerHandlers();
|
|
132
72
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Updates the Matterbridge instance.
|
|
135
|
-
*/
|
|
136
73
|
async function update() {
|
|
137
74
|
log.debug('Received update event, updating...');
|
|
138
|
-
// TODO: Implement update logic outside of matterbridge
|
|
139
75
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
140
76
|
instance = await Matterbridge.loadInstance(true);
|
|
141
77
|
registerHandlers();
|
|
142
78
|
}
|
|
143
|
-
/**
|
|
144
|
-
* Starts the CPU and memory check when the -startmemorycheck parameter is passed.
|
|
145
|
-
*/
|
|
146
79
|
function start() {
|
|
147
80
|
log.debug('Received start memory check event');
|
|
148
81
|
startCpuMemoryCheck();
|
|
149
82
|
}
|
|
150
|
-
/**
|
|
151
|
-
* Stops the CPU and memory check when the -stopmemorycheck parameter is passed.
|
|
152
|
-
*/
|
|
153
83
|
function stop() {
|
|
154
84
|
log.debug('Received stop memory check event');
|
|
155
85
|
stopCpuMemoryCheck();
|
|
156
86
|
}
|
|
157
|
-
/**
|
|
158
|
-
* Main function that initializes the Matterbridge instance and starts the CLI.
|
|
159
|
-
*
|
|
160
|
-
* @remarks
|
|
161
|
-
*
|
|
162
|
-
* Debug parameters:
|
|
163
|
-
*
|
|
164
|
-
* --debug enables debug logging.
|
|
165
|
-
*
|
|
166
|
-
* --verbose enables verbose logging.
|
|
167
|
-
*
|
|
168
|
-
* --loader enables loader logging.
|
|
169
|
-
*
|
|
170
|
-
* --inspect enables the inspector for heap sampling.
|
|
171
|
-
*
|
|
172
|
-
* --snapshotinterval <milliseconds> can be used to set the heap snapshot interval. Default is undefined. Minimum is 30000 ms.
|
|
173
|
-
*/
|
|
174
87
|
async function main() {
|
|
175
88
|
log.debug(`Cli main() started`);
|
|
176
89
|
startCpuMemoryCheck();
|
|
@@ -180,7 +93,6 @@ async function main() {
|
|
|
180
93
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
181
94
|
instance = await Matterbridge.loadInstance(true);
|
|
182
95
|
log.debug(`***Matterbridge.loadInstance(true) exited`);
|
|
183
|
-
// Check if the instance needs to shut down from parseCommandLine()
|
|
184
96
|
if (!instance || instance.shutdown) {
|
|
185
97
|
shutdown();
|
|
186
98
|
}
|
|
@@ -198,18 +110,11 @@ main().catch((error) => {
|
|
|
198
110
|
inspectError(log, 'Matterbridge.loadInstance() failed with error', error);
|
|
199
111
|
shutdown();
|
|
200
112
|
});
|
|
201
|
-
/**
|
|
202
|
-
* Displays the version.
|
|
203
|
-
*/
|
|
204
113
|
async function version() {
|
|
205
|
-
// Dynamic JSON import (Node >= 20) with import attributes
|
|
206
114
|
const { default: pkg } = await import('../package.json', { with: { type: 'json' } });
|
|
207
115
|
console.log(`Matterbridge version ${pkg.version}`);
|
|
208
116
|
process.exit(0);
|
|
209
117
|
}
|
|
210
|
-
/**
|
|
211
|
-
* Displays the help.
|
|
212
|
-
*/
|
|
213
118
|
function help() {
|
|
214
119
|
console.log(`
|
|
215
120
|
Usage: matterbridge [options] [command]
|
|
@@ -263,4 +168,3 @@ function help() {
|
|
|
263
168
|
`);
|
|
264
169
|
process.exit(0);
|
|
265
170
|
}
|
|
266
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cliEmitter.js
CHANGED
|
@@ -1,49 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the CLI emitter.
|
|
3
|
-
*
|
|
4
|
-
* @file cliEmitter.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2025-07-04
|
|
7
|
-
* @version 1.0.2
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
11
|
-
*
|
|
12
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
* you may not use this file except in compliance with the License.
|
|
14
|
-
* You may obtain a copy of the License at
|
|
15
|
-
*
|
|
16
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
*
|
|
18
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
* See the License for the specific language governing permissions and
|
|
22
|
-
* limitations under the License.
|
|
23
|
-
*/
|
|
24
|
-
// eslint-disable-next-line no-console
|
|
25
1
|
if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
26
2
|
console.log('\u001B[32mCli emitter loaded.\u001B[40;0m');
|
|
27
3
|
import { EventEmitter } from 'node:events';
|
|
28
4
|
export const cliEmitter = new EventEmitter();
|
|
29
5
|
export let lastOsCpuUsage = 0;
|
|
30
6
|
export let lastProcessCpuUsage = 0;
|
|
31
|
-
/**
|
|
32
|
-
* Sets the last os CPU usage.
|
|
33
|
-
*
|
|
34
|
-
* @param {number} val - The os CPU usage percentage to set.
|
|
35
|
-
* @returns {void}
|
|
36
|
-
*/
|
|
37
7
|
export function setLastOsCpuUsage(val) {
|
|
38
8
|
lastOsCpuUsage = val;
|
|
39
9
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Sets the last process CPU usage.
|
|
42
|
-
*
|
|
43
|
-
* @param {number} val - The process CPU usage percentage to set.
|
|
44
|
-
* @returns {void}
|
|
45
|
-
*/
|
|
46
10
|
export function setLastProcessCpuUsage(val) {
|
|
47
11
|
lastProcessCpuUsage = val;
|
|
48
12
|
}
|
|
49
|
-
//# sourceMappingURL=cliEmitter.js.map
|
package/dist/cliHistory.js
CHANGED
|
@@ -1,40 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the CLI history page generator.
|
|
3
|
-
*
|
|
4
|
-
* @file cliHistory.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2025-10-09
|
|
7
|
-
* @version 1.0.1
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
11
|
-
*
|
|
12
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
* you may not use this file except in compliance with the License.
|
|
14
|
-
* You may obtain a copy of the License at
|
|
15
|
-
*
|
|
16
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
*
|
|
18
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
* See the License for the specific language governing permissions and
|
|
22
|
-
* limitations under the License.
|
|
23
|
-
*/
|
|
24
|
-
// eslint-disable-next-line no-console
|
|
25
1
|
if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
26
2
|
console.log('\u001B[32mCli history loaded.\u001B[40;0m');
|
|
27
3
|
import { writeFileSync } from 'node:fs';
|
|
28
4
|
import path from 'node:path';
|
|
29
5
|
import os from 'node:os';
|
|
30
6
|
import { Tracker } from './utils/tracker.js';
|
|
31
|
-
/**
|
|
32
|
-
* Generates a static HTML dashboard displaying CPU and memory history.
|
|
33
|
-
*
|
|
34
|
-
* @param {GenerateHistoryPageOptions} [options] - Optional configuration for output path, page title, and refresh interval.
|
|
35
|
-
*
|
|
36
|
-
* @returns {string | undefined} The absolute path to the generated HTML file, or undefined if no samples exist.
|
|
37
|
-
*/
|
|
38
7
|
export function generateHistoryPage(options = {}) {
|
|
39
8
|
const pageTitle = options.pageTitle ?? 'Matterbridge CPU & Memory History';
|
|
40
9
|
const hostname = options.hostname ?? os.hostname();
|
|
@@ -814,13 +783,6 @@ export function generateHistoryPage(options = {}) {
|
|
|
814
783
|
writeFileSync(outputPath, html, { encoding: 'utf-8' });
|
|
815
784
|
return outputPath;
|
|
816
785
|
}
|
|
817
|
-
/**
|
|
818
|
-
* Escapes HTML special characters to prevent breaking embedded markup.
|
|
819
|
-
*
|
|
820
|
-
* @param {string} input - The string to escape.
|
|
821
|
-
* @returns {string} The escaped string safe for HTML contexts.
|
|
822
|
-
*/
|
|
823
786
|
function escapeHtml(input) {
|
|
824
787
|
return input.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
825
788
|
}
|
|
826
|
-
//# sourceMappingURL=cliHistory.js.map
|
package/dist/clusters/export.js
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the default config for the plugins.
|
|
3
|
-
*
|
|
4
|
-
* @file defaultConfigSchema.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2024-05-07
|
|
7
|
-
* @version 1.0.1
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
11
|
-
*
|
|
12
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
* you may not use this file except in compliance with the License.
|
|
14
|
-
* You may obtain a copy of the License at
|
|
15
|
-
*
|
|
16
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
*
|
|
18
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
* See the License for the specific language governing permissions and
|
|
22
|
-
* limitations under the License.
|
|
23
|
-
*/
|
|
24
1
|
export const zigbee2mqtt_config = {
|
|
25
2
|
name: 'matterbridge-zigbee2mqtt',
|
|
26
3
|
type: 'DynamicPlatform',
|
|
@@ -82,4 +59,3 @@ export const shelly_config = {
|
|
|
82
59
|
debugWs: false,
|
|
83
60
|
unregisterOnShutdown: false,
|
|
84
61
|
};
|
|
85
|
-
//# sourceMappingURL=defaultConfigSchema.js.map
|
package/dist/deviceManager.js
CHANGED
|
@@ -1,40 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the DeviceManager class.
|
|
3
|
-
*
|
|
4
|
-
* @file devices.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2024-07-26
|
|
7
|
-
* @version 1.1.1
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
11
|
-
*
|
|
12
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
* you may not use this file except in compliance with the License.
|
|
14
|
-
* You may obtain a copy of the License at
|
|
15
|
-
*
|
|
16
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
*
|
|
18
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
* See the License for the specific language governing permissions and
|
|
22
|
-
* limitations under the License.
|
|
23
|
-
*/
|
|
24
|
-
// AnsiLogger module
|
|
25
1
|
import { AnsiLogger, BLUE, CYAN, db, debugStringify, er } from 'node-ansi-logger';
|
|
26
2
|
import { dev } from './matterbridgeTypes.js';
|
|
27
3
|
import { BroadcastServer } from './broadcastServer.js';
|
|
28
4
|
import { hasParameter } from './utils/commandLine.js';
|
|
29
|
-
/**
|
|
30
|
-
* Converts a MatterbridgeEndpoint to a BaseDevice.
|
|
31
|
-
*
|
|
32
|
-
* @param {MatterbridgeEndpoint} device The MatterbridgeEndpoint to convert.
|
|
33
|
-
* @returns {BaseDevice} The converted BaseDevice.
|
|
34
|
-
*/
|
|
35
5
|
export function toBaseDevice(device) {
|
|
36
6
|
return {
|
|
37
|
-
// MatterbridgeEndpoint properties
|
|
38
7
|
mode: device.mode,
|
|
39
8
|
plugin: device.plugin,
|
|
40
9
|
configUrl: device.configUrl,
|
|
@@ -54,25 +23,18 @@ export function toBaseDevice(device) {
|
|
|
54
23
|
originalId: device.originalId,
|
|
55
24
|
name: device.name,
|
|
56
25
|
deviceType: device.deviceType,
|
|
57
|
-
// Endpoint properties
|
|
58
26
|
number: device.number,
|
|
59
27
|
id: device.id,
|
|
60
28
|
};
|
|
61
29
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Manages Matterbridge devices.
|
|
64
|
-
*/
|
|
65
30
|
export class DeviceManager {
|
|
66
31
|
_devices = new Map();
|
|
67
32
|
log;
|
|
68
33
|
server;
|
|
69
34
|
debug = hasParameter('debug') || hasParameter('verbose');
|
|
70
35
|
verbose = hasParameter('verbose');
|
|
71
|
-
/**
|
|
72
|
-
* Creates an instance of DeviceManager.
|
|
73
|
-
*/
|
|
74
36
|
constructor() {
|
|
75
|
-
this.log = new AnsiLogger({ logName: 'DeviceManager', logTimestampFormat: 4
|
|
37
|
+
this.log = new AnsiLogger({ logName: 'DeviceManager', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
|
|
76
38
|
this.log.debug('Matterbridge device manager starting...');
|
|
77
39
|
this.server = new BroadcastServer('devices', this.log);
|
|
78
40
|
this.server.on('broadcast_message', this.msgHandler.bind(this));
|
|
@@ -127,47 +89,18 @@ export class DeviceManager {
|
|
|
127
89
|
}
|
|
128
90
|
}
|
|
129
91
|
}
|
|
130
|
-
/**
|
|
131
|
-
* Gets the number of devices.
|
|
132
|
-
*
|
|
133
|
-
* @returns {number} The number of devices.
|
|
134
|
-
*/
|
|
135
92
|
get length() {
|
|
136
93
|
return this._devices.size;
|
|
137
94
|
}
|
|
138
|
-
/**
|
|
139
|
-
* Gets the number of devices.
|
|
140
|
-
*
|
|
141
|
-
* @returns {number} The number of devices.
|
|
142
|
-
*/
|
|
143
95
|
get size() {
|
|
144
96
|
return this._devices.size;
|
|
145
97
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Checks if a device with the specified unique ID exists.
|
|
148
|
-
*
|
|
149
|
-
* @param {string} uniqueId - The unique ID of the device.
|
|
150
|
-
* @returns {boolean} True if the device exists, false otherwise.
|
|
151
|
-
*/
|
|
152
98
|
has(uniqueId) {
|
|
153
99
|
return this._devices.has(uniqueId);
|
|
154
100
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Gets a device by its unique ID.
|
|
157
|
-
*
|
|
158
|
-
* @param {string} uniqueId - The unique ID of the device.
|
|
159
|
-
* @returns {MatterbridgeEndpoint | undefined} The device, or undefined if not found.
|
|
160
|
-
*/
|
|
161
101
|
get(uniqueId) {
|
|
162
102
|
return this._devices.get(uniqueId);
|
|
163
103
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Adds a device to the manager.
|
|
166
|
-
*
|
|
167
|
-
* @param {MatterbridgeEndpoint} device - The device to add.
|
|
168
|
-
* @returns {MatterbridgeEndpoint} The added device.
|
|
169
|
-
* @throws {Error} If the device does not have a unique ID.
|
|
170
|
-
*/
|
|
171
104
|
set(device) {
|
|
172
105
|
if (!device.uniqueId)
|
|
173
106
|
throw new Error(`The device ${dev}${device.deviceName}${er} has not been initialized: uniqueId is required`);
|
|
@@ -176,13 +109,6 @@ export class DeviceManager {
|
|
|
176
109
|
this._devices.set(device.uniqueId, device);
|
|
177
110
|
return device;
|
|
178
111
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Removes a device from the manager.
|
|
181
|
-
*
|
|
182
|
-
* @param {MatterbridgeEndpoint} device - The device to remove.
|
|
183
|
-
* @returns {boolean} True if the device was removed, false otherwise.
|
|
184
|
-
* @throws {Error} If the device does not have a unique ID.
|
|
185
|
-
*/
|
|
186
112
|
remove(device) {
|
|
187
113
|
if (!device.uniqueId)
|
|
188
114
|
throw new Error(`The device ${dev}${device.deviceName}${er} has not been initialized: uniqueId is required`);
|
|
@@ -190,59 +116,27 @@ export class DeviceManager {
|
|
|
190
116
|
this.log.error(`The device ${dev}${device.deviceName}${er} with uniqueId ${BLUE}${device.uniqueId}${er} serialNumber ${BLUE}${device.serialNumber}${er} is not registered in the device manager`);
|
|
191
117
|
return this._devices.delete(device.uniqueId);
|
|
192
118
|
}
|
|
193
|
-
/**
|
|
194
|
-
* Clears all devices from the manager.
|
|
195
|
-
*/
|
|
196
119
|
clear() {
|
|
197
120
|
this._devices.clear();
|
|
198
121
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Converts a MatterbridgeEndpoint to a BaseDevice.
|
|
201
|
-
*
|
|
202
|
-
* @param {MatterbridgeEndpoint} device The MatterbridgeEndpoint to convert.
|
|
203
|
-
* @returns {BaseDevice} The converted BaseDevice.
|
|
204
|
-
*/
|
|
205
122
|
toBaseDevice(device) {
|
|
206
123
|
return toBaseDevice(device);
|
|
207
124
|
}
|
|
208
|
-
/**
|
|
209
|
-
* Gets an array of all devices.
|
|
210
|
-
*
|
|
211
|
-
* @returns {MatterbridgeEndpoint[]} An array of all devices.
|
|
212
|
-
*/
|
|
213
125
|
array() {
|
|
214
126
|
return Array.from(this._devices.values());
|
|
215
127
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Gets a base array of all devices suitable for serialization.
|
|
218
|
-
*
|
|
219
|
-
* @param {string} [pluginName] - Optional plugin name to filter devices.
|
|
220
|
-
* @returns {ApiDevices[]} A base array of all devices.
|
|
221
|
-
*/
|
|
222
128
|
baseArray(pluginName) {
|
|
223
129
|
const devices = [];
|
|
224
130
|
for (const device of Array.from(this._devices.values())) {
|
|
225
|
-
// Filter by pluginName if provided
|
|
226
131
|
if (pluginName && pluginName !== device.plugin)
|
|
227
132
|
continue;
|
|
228
133
|
devices.push(this.toBaseDevice(device));
|
|
229
134
|
}
|
|
230
135
|
return devices;
|
|
231
136
|
}
|
|
232
|
-
/**
|
|
233
|
-
* Iterates over all devices.
|
|
234
|
-
*
|
|
235
|
-
* @returns {IterableIterator<MatterbridgeEndpoint>} An iterator for the devices.
|
|
236
|
-
*/
|
|
237
137
|
[Symbol.iterator]() {
|
|
238
138
|
return this._devices.values();
|
|
239
139
|
}
|
|
240
|
-
/**
|
|
241
|
-
* Asynchronously iterates over each device and calls the provided callback function.
|
|
242
|
-
*
|
|
243
|
-
* @param {(device: MatterbridgeEndpoint) => Promise<void>} callback - The callback function to call with each device.
|
|
244
|
-
* @returns {Promise<void>} A promise that resolves when all callbacks have been called.
|
|
245
|
-
*/
|
|
246
140
|
async forEach(callback) {
|
|
247
141
|
if (this.size === 0)
|
|
248
142
|
return;
|
|
@@ -256,13 +150,7 @@ export class DeviceManager {
|
|
|
256
150
|
});
|
|
257
151
|
await Promise.all(tasks);
|
|
258
152
|
}
|
|
259
|
-
/**
|
|
260
|
-
* Sets the log level.
|
|
261
|
-
*
|
|
262
|
-
* @param {LogLevel} logLevel - The log level to set.
|
|
263
|
-
*/
|
|
264
153
|
set logLevel(logLevel) {
|
|
265
154
|
this.log.logLevel = logLevel;
|
|
266
155
|
}
|
|
267
156
|
}
|
|
268
|
-
//# sourceMappingURL=deviceManager.js.map
|
|
@@ -1,64 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description This file contains the AirConditioner class.
|
|
3
|
-
* @file src/devices/airConditioner.ts
|
|
4
|
-
* @author Luca Liguori
|
|
5
|
-
* @created 2025-09-04
|
|
6
|
-
* @version 1.0.0
|
|
7
|
-
* @license Apache-2.0
|
|
8
|
-
*
|
|
9
|
-
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
// Imports from @matter
|
|
24
1
|
import { ThermostatUserInterfaceConfiguration } from '@matter/types/clusters/thermostat-user-interface-configuration';
|
|
25
2
|
import { FanControl } from '@matter/types/clusters/fan-control';
|
|
26
|
-
// Matterbridge
|
|
27
3
|
import { airConditioner, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
28
4
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
29
5
|
export class AirConditioner extends MatterbridgeEndpoint {
|
|
30
|
-
/**
|
|
31
|
-
* Creates an instance of the AirConditioner class.
|
|
32
|
-
*
|
|
33
|
-
* A Room Air Conditioner is a device which at a minimum is capable of being turned on and off and of controlling the temperature in the living space.
|
|
34
|
-
* A Room Air Conditioner MAY also support additional capabilities via endpoint composition.
|
|
35
|
-
* The DF (Dead Front) feature is required for the On/Off cluster in this device type.
|
|
36
|
-
*
|
|
37
|
-
* @param {string} name - The name of the air conditioner.
|
|
38
|
-
* @param {string} serial - The serial number of the air conditioner.
|
|
39
|
-
* @param {AirConditionerOptions} [options] - Optional configuration values. Missing fields use defaults.
|
|
40
|
-
*
|
|
41
|
-
* Options defaults:
|
|
42
|
-
* - localTemperature: 23
|
|
43
|
-
* - occupiedHeatingSetpoint: 21
|
|
44
|
-
* - occupiedCoolingSetpoint: 25
|
|
45
|
-
* - minSetpointDeadBand: 1
|
|
46
|
-
* - minHeatSetpointLimit: 0
|
|
47
|
-
* - maxHeatSetpointLimit: 50
|
|
48
|
-
* - minCoolSetpointLimit: 0
|
|
49
|
-
* - maxCoolSetpointLimit: 50
|
|
50
|
-
* - temperatureDisplayMode: Celsius
|
|
51
|
-
* - keypadLockout: NoLockout
|
|
52
|
-
* - scheduleProgrammingVisibility: ScheduleProgrammingPermitted
|
|
53
|
-
* - fanMode: Off
|
|
54
|
-
* - fanModeSequence: OffLowMedHighAuto
|
|
55
|
-
* - percentSetting: 0
|
|
56
|
-
* - percentCurrent: 0
|
|
57
|
-
*
|
|
58
|
-
* @returns {AirConditioner} The AirConditioner instance.
|
|
59
|
-
*
|
|
60
|
-
* @remarks Not supported by Google Home.
|
|
61
|
-
*/
|
|
62
6
|
constructor(name, serial, options = {}) {
|
|
63
7
|
const { localTemperature = 23, occupiedHeatingSetpoint = 21, occupiedCoolingSetpoint = 25, minSetpointDeadBand = 1, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50, temperatureDisplayMode = ThermostatUserInterfaceConfiguration.TemperatureDisplayMode.Celsius, keypadLockout = ThermostatUserInterfaceConfiguration.KeypadLockout.NoLockout, scheduleProgrammingVisibility = ThermostatUserInterfaceConfiguration.ScheduleProgrammingVisibility.ScheduleProgrammingPermitted, fanMode = FanControl.FanMode.Off, fanModeSequence = FanControl.FanModeSequence.OffLowMedHighAuto, percentSetting = 0, percentCurrent = 0, } = options;
|
|
64
8
|
super([airConditioner, powerSource], { id: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` });
|
|
@@ -71,4 +15,3 @@ export class AirConditioner extends MatterbridgeEndpoint {
|
|
|
71
15
|
this.createDefaultFanControlClusterServer(fanMode, fanModeSequence, percentSetting, percentCurrent);
|
|
72
16
|
}
|
|
73
17
|
}
|
|
74
|
-
//# sourceMappingURL=airConditioner.js.map
|
|
@@ -1,53 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description This file contains the BatteryStorage class.
|
|
3
|
-
* @file src/devices/batteryStorage.ts
|
|
4
|
-
* @author Luca Liguori
|
|
5
|
-
* @contributor Ludovic BOUÉ
|
|
6
|
-
* @created 2025-06-20
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
* @license Apache-2.0
|
|
9
|
-
*
|
|
10
|
-
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
11
|
-
*
|
|
12
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
* you may not use this file except in compliance with the License.
|
|
14
|
-
* You may obtain a copy of the License at
|
|
15
|
-
*
|
|
16
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
*
|
|
18
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
* See the License for the specific language governing permissions and
|
|
22
|
-
* limitations under the License.
|
|
23
|
-
*/
|
|
24
|
-
// @matter
|
|
25
1
|
import { PowerSourceTag } from '@matter/node';
|
|
26
2
|
import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
|
|
27
3
|
import { PowerSource } from '@matter/types/clusters/power-source';
|
|
28
|
-
// Matterbridge
|
|
29
4
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
30
5
|
import { deviceEnergyManagement, electricalSensor, batteryStorage, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
31
6
|
export class BatteryStorage extends MatterbridgeEndpoint {
|
|
32
|
-
/**
|
|
33
|
-
* Creates an instance of the BatteryStorage class.
|
|
34
|
-
*
|
|
35
|
-
* @param {string} name - The name of the BatteryStorage.
|
|
36
|
-
* @param {string} serial - The serial number of the BatteryStorage.
|
|
37
|
-
* @param {number} [batPercentRemaining] - The percentage of battery remaining, defaults to `100` if not provided.
|
|
38
|
-
* @param {PowerSource.BatChargeLevel} [batChargeLevel] - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
|
|
39
|
-
* @param {number} voltage - The voltage value in millivolts.
|
|
40
|
-
* @param {number} current - The current value in milliamperes.
|
|
41
|
-
* @param {number} power - The power value in milliwatts.
|
|
42
|
-
* @param {number} energyImported - The total production value in mW/h.
|
|
43
|
-
* @param {number} energyExported - The total production value in mW/h.
|
|
44
|
-
* @param {number} [absMinPower] - Indicate the minimum electrical power in mw that the ESA can consume when switched on. Defaults to `0` if not provided.
|
|
45
|
-
* @param {number} [absMaxPower] - Indicate the maximum electrical power in mw that the ESA can consume when switched on. Defaults to `0` if not provided.
|
|
46
|
-
*
|
|
47
|
-
* @remarks
|
|
48
|
-
* - A battery storage inverter that can charge its battery at a maximum power of 2000W and can
|
|
49
|
-
* discharge the battery at a maximum power of 3000W, would have a absMinPower: -3000W, absMaxPower: 2000W.
|
|
50
|
-
*/
|
|
51
7
|
constructor(name, serial, batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, voltage = null, current = null, power = null, energyImported = null, energyExported = null, absMinPower = 0, absMaxPower = 0) {
|
|
52
8
|
super([batteryStorage, electricalSensor, deviceEnergyManagement], { id: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` });
|
|
53
9
|
this.createDefaultIdentifyClusterServer()
|
|
@@ -58,12 +14,10 @@ export class BatteryStorage extends MatterbridgeEndpoint {
|
|
|
58
14
|
.createDefaultDeviceEnergyManagementClusterServer(DeviceEnergyManagement.EsaType.BatteryStorage, true, DeviceEnergyManagement.EsaState.Online, absMinPower, absMaxPower)
|
|
59
15
|
.createDefaultDeviceEnergyManagementModeClusterServer()
|
|
60
16
|
.addRequiredClusterServers();
|
|
61
|
-
// Add separate PowerSource child devices cause in matter.js the PowerSource cluster is not supported with both features Wired and Battery.
|
|
62
|
-
// Probably this is also an error in the specification...
|
|
63
17
|
this.addChildDeviceType('BatteryPowerSource', powerSource, {
|
|
64
18
|
tagList: [{ mfgCode: null, namespaceId: PowerSourceTag.Battery.namespaceId, tag: PowerSourceTag.Battery.tag, label: null }],
|
|
65
19
|
})
|
|
66
|
-
.createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining, batChargeLevel, 24_000)
|
|
20
|
+
.createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining, batChargeLevel, 24_000)
|
|
67
21
|
.addRequiredClusterServers();
|
|
68
22
|
this.addChildDeviceType('GridPowerSource', powerSource, {
|
|
69
23
|
tagList: [{ mfgCode: null, namespaceId: PowerSourceTag.Grid.namespaceId, tag: PowerSourceTag.Grid.tag, label: null }],
|
|
@@ -72,4 +26,3 @@ export class BatteryStorage extends MatterbridgeEndpoint {
|
|
|
72
26
|
.addRequiredClusterServers();
|
|
73
27
|
}
|
|
74
28
|
}
|
|
75
|
-
//# sourceMappingURL=batteryStorage.js.map
|