matterbridge 3.0.7 → 3.0.8-dev-20250622-9a6255a
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 +25 -0
- package/bin/matterbridge +2 -0
- package/dist/cli.js +5 -66
- package/dist/clusters/export.js +0 -2
- package/dist/defaultConfigSchema.js +0 -23
- package/dist/deviceManager.js +2 -95
- package/dist/devices/export.js +0 -2
- package/dist/evse.js +9 -65
- package/dist/frontend.js +47 -383
- package/dist/globalMatterbridge.js +0 -20
- package/dist/helpers.js +4 -52
- package/dist/index.js +2 -29
- package/dist/laundryWasher.js +7 -92
- 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 -2
- package/dist/matter/types.js +0 -2
- package/dist/matterbridge.js +53 -755
- package/dist/matterbridgeAccessoryPlatform.js +0 -34
- package/dist/matterbridgeBehaviors.js +1 -54
- package/dist/matterbridgeDeviceTypes.js +15 -578
- package/dist/matterbridgeDynamicPlatform.js +0 -34
- package/dist/matterbridgeEndpoint.js +45 -1000
- package/dist/matterbridgeEndpointHelpers.js +12 -206
- package/dist/matterbridgePlatform.js +13 -225
- package/dist/matterbridgeTypes.js +0 -24
- package/dist/pluginManager.js +4 -270
- package/dist/roboticVacuumCleaner.js +9 -84
- package/dist/shelly.js +9 -156
- package/dist/storage/export.js +0 -1
- package/dist/update.js +0 -53
- package/dist/utils/colorUtils.js +2 -205
- package/dist/utils/commandLine.js +0 -53
- package/dist/utils/copyDirectory.js +1 -37
- package/dist/utils/createDirectory.js +0 -31
- package/dist/utils/createZip.js +2 -42
- package/dist/utils/deepCopy.js +0 -38
- package/dist/utils/deepEqual.js +1 -71
- package/dist/utils/export.js +0 -1
- package/dist/utils/hex.js +0 -57
- package/dist/utils/isvalid.js +0 -100
- package/dist/utils/network.js +6 -77
- package/dist/utils/spawn.js +0 -16
- package/dist/utils/wait.js +10 -58
- package/dist/waterHeater.js +5 -65
- package/frontend/build/matterbridge 1250x1250.png +0 -0
- package/frontend/build/matterbridge 624x624.png +0 -0
- package/frontend/package-lock.json +19176 -0
- package/frontend/package.json +79 -0
- package/frontend/public/Shelly.svg +1 -0
- package/frontend/public/bmc-button.svg +22 -0
- package/frontend/public/discord.svg +5 -0
- package/frontend/public/favicon.ico +0 -0
- package/frontend/public/index.html +19 -0
- package/frontend/public/manifest.json +15 -0
- package/frontend/public/matter.png +0 -0
- package/frontend/public/matterbridge 1250x1250.png +0 -0
- package/frontend/public/matterbridge 32x32.png +0 -0
- package/frontend/public/matterbridge 624x624.png +0 -0
- package/frontend/public/matterbridge 64x64.png +0 -0
- package/frontend/public/matterbridge.svg +50 -0
- package/frontend/public/robots.txt +3 -0
- package/npm-shrinkwrap.json +33 -42
- package/package.json +3 -4
- package/dist/cli.d.ts +0 -29
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.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 -27
- package/dist/defaultConfigSchema.d.ts.map +0 -1
- package/dist/defaultConfigSchema.js.map +0 -1
- package/dist/deviceManager.d.ts +0 -114
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.js.map +0 -1
- package/dist/devices/export.d.ts +0 -5
- package/dist/devices/export.d.ts.map +0 -1
- package/dist/devices/export.js.map +0 -1
- package/dist/evse.d.ts +0 -67
- package/dist/evse.d.ts.map +0 -1
- package/dist/evse.js.map +0 -1
- package/dist/frontend.d.ts +0 -256
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js.map +0 -1
- package/dist/globalMatterbridge.d.ts +0 -32
- package/dist/globalMatterbridge.d.ts.map +0 -1
- package/dist/globalMatterbridge.js.map +0 -1
- package/dist/helpers.d.ts +0 -47
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/index.d.ts +0 -37
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/laundryWasher.d.ts +0 -243
- package/dist/laundryWasher.d.ts.map +0 -1
- package/dist/laundryWasher.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/matterbridge.d.ts +0 -445
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -40
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -1333
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -644
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -40
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -1145
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +0 -3083
- package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
- package/dist/matterbridgeEndpointHelpers.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -290
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -196
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -273
- package/dist/pluginManager.d.ts.map +0 -1
- package/dist/pluginManager.js.map +0 -1
- package/dist/roboticVacuumCleaner.d.ts +0 -102
- package/dist/roboticVacuumCleaner.d.ts.map +0 -1
- package/dist/roboticVacuumCleaner.js.map +0 -1
- package/dist/shelly.d.ts +0 -161
- 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 -58
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -61
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/commandLine.d.ts +0 -58
- package/dist/utils/commandLine.d.ts.map +0 -1
- package/dist/utils/commandLine.js.map +0 -1
- package/dist/utils/copyDirectory.d.ts +0 -32
- package/dist/utils/copyDirectory.d.ts.map +0 -1
- package/dist/utils/copyDirectory.js.map +0 -1
- package/dist/utils/createDirectory.d.ts +0 -32
- package/dist/utils/createDirectory.d.ts.map +0 -1
- package/dist/utils/createDirectory.js.map +0 -1
- package/dist/utils/createZip.d.ts +0 -38
- package/dist/utils/createZip.d.ts.map +0 -1
- package/dist/utils/createZip.js.map +0 -1
- package/dist/utils/deepCopy.d.ts +0 -31
- package/dist/utils/deepCopy.d.ts.map +0 -1
- package/dist/utils/deepCopy.js.map +0 -1
- package/dist/utils/deepEqual.d.ts +0 -53
- package/dist/utils/deepEqual.d.ts.map +0 -1
- package/dist/utils/deepEqual.js.map +0 -1
- package/dist/utils/export.d.ts +0 -12
- package/dist/utils/export.d.ts.map +0 -1
- package/dist/utils/export.js.map +0 -1
- package/dist/utils/hex.d.ts +0 -48
- package/dist/utils/hex.d.ts.map +0 -1
- package/dist/utils/hex.js.map +0 -1
- package/dist/utils/isvalid.d.ts +0 -102
- package/dist/utils/isvalid.d.ts.map +0 -1
- package/dist/utils/isvalid.js.map +0 -1
- package/dist/utils/network.d.ts +0 -69
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/spawn.d.ts +0 -12
- package/dist/utils/spawn.d.ts.map +0 -1
- package/dist/utils/spawn.js.map +0 -1
- package/dist/utils/wait.d.ts +0 -52
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js.map +0 -1
- package/dist/waterHeater.d.ts +0 -90
- package/dist/waterHeater.d.ts.map +0 -1
- package/dist/waterHeater.js.map +0 -1
- package/tsconfig.jest.json +0 -8
- package/tsconfig.production.json +0 -13
|
@@ -1,43 +1,23 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Store the Matterbridge instance globally for later retrieval.
|
|
3
|
-
* @param {Matterbridge} matterbridge An initialized Matterbridge instance
|
|
4
|
-
*/
|
|
5
1
|
export function setGlobalMatterbridge(matterbridge) {
|
|
6
2
|
globalThis.__matterbridge__ = matterbridge;
|
|
7
3
|
globalThis.__frontend__ = matterbridge.frontend;
|
|
8
4
|
globalThis.__log__ = matterbridge.log;
|
|
9
5
|
}
|
|
10
|
-
/**
|
|
11
|
-
* Retrieve the globally stored Matterbridge instance.
|
|
12
|
-
* @returns {Matterbridge} The Matterbridge instance.
|
|
13
|
-
* @throws {Error} If the Matterbridge instance is not set.
|
|
14
|
-
*/
|
|
15
6
|
export function getGlobalMatterbridge() {
|
|
16
7
|
if (!globalThis.__matterbridge__) {
|
|
17
8
|
throw new Error('Global Matterbridge instance is not set.');
|
|
18
9
|
}
|
|
19
10
|
return globalThis.__matterbridge__;
|
|
20
11
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Retrieve the globally stored Frontend instance.
|
|
23
|
-
* @returns {Frontend} The Frontend instance.
|
|
24
|
-
* @throws {Error} If the Frontend instance is not set.
|
|
25
|
-
*/
|
|
26
12
|
export function getGlobalFrontend() {
|
|
27
13
|
if (!globalThis.__frontend__) {
|
|
28
14
|
throw new Error('Global Frontend instance is not set.');
|
|
29
15
|
}
|
|
30
16
|
return globalThis.__frontend__;
|
|
31
17
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Retrieve the globally stored Logger instance.
|
|
34
|
-
* @returns {AnsiLogger} The AnsiLogger instance.
|
|
35
|
-
* @throws {Error} If the Logger instance is not set.
|
|
36
|
-
*/
|
|
37
18
|
export function getGlobalLog() {
|
|
38
19
|
if (!globalThis.__log__) {
|
|
39
20
|
throw new Error('Global Logger instance is not set.');
|
|
40
21
|
}
|
|
41
22
|
return globalThis.__log__;
|
|
42
23
|
}
|
|
43
|
-
//# sourceMappingURL=globalMatterbridge.js.map
|
package/dist/helpers.js
CHANGED
|
@@ -1,51 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the helpers functions of Matterbridge.
|
|
3
|
-
*
|
|
4
|
-
* @file helpers.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @date 2025-05-12
|
|
7
|
-
* @version 1.0.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
|
-
// @matter module
|
|
24
1
|
import { OnOff } from '@matter/main/clusters/on-off';
|
|
25
2
|
import { Endpoint } from '@matter/node';
|
|
26
3
|
import { BridgedDeviceBasicInformationServer } from '@matter/node/behaviors/bridged-device-basic-information';
|
|
27
4
|
import { OnOffBaseServer } from '@matter/node/behaviors/on-off';
|
|
28
5
|
import { OnOffPlugInUnitDevice } from '@matter/node/devices/on-off-plug-in-unit';
|
|
29
|
-
import { hasParameter } from './utils/commandLine.js';
|
|
30
6
|
import { MountedOnOffControlDevice } from '@matter/node/devices/mounted-on-off-control';
|
|
31
7
|
import { OnOffLightDevice } from '@matter/node/devices/on-off-light';
|
|
32
8
|
import { OnOffLightSwitchDevice } from '@matter/node/devices/on-off-light-switch';
|
|
33
|
-
|
|
34
|
-
* Adds a virtual device to the provided endpoint, sets up an event listener for device state changes,
|
|
35
|
-
* and ensures the device is initialized in the off state.
|
|
36
|
-
*
|
|
37
|
-
* @param {Endpoint<AggregatorEndpoint>} aggregatorEndpoint - The aggragator endpoint to which the virtual device will be added.
|
|
38
|
-
* @param {string} name - The name of the virtual device. Spaces in the name are removed to form the device ID.
|
|
39
|
-
* @param {'light' | 'outlet' | 'switch' | 'mounted_switch'} type - The type of the virtual device. Can be 'light', 'outlet', 'switch', or 'mounted_switch'.
|
|
40
|
-
* @param {() => Promise<void>} callback - A callback function that gets executed when the device's on/off state changes to true.
|
|
41
|
-
* @returns {Promise<Endpoint>} A promise that resolves with the created virtual device.
|
|
42
|
-
* @remark The virtual device is created as an instance of `Endpoint` with the `OnOffPlugInUnitDevice` device type.
|
|
43
|
-
* The onOff state always reverts to false when the device is turned on.
|
|
44
|
-
*/
|
|
9
|
+
import { hasParameter } from './utils/commandLine.js';
|
|
45
10
|
export async function addVirtualDevice(aggregatorEndpoint, name, type, callback) {
|
|
46
|
-
// Create a new virtual device by instantiating `Endpoint` with device information.
|
|
47
|
-
// The device ID is created by replacing all spaces in the name with an empty string.
|
|
48
|
-
// The node label of the bridged device basic information is set to the given name.
|
|
49
11
|
let deviceType;
|
|
50
12
|
switch (type) {
|
|
51
13
|
case 'light':
|
|
@@ -66,9 +28,7 @@ export async function addVirtualDevice(aggregatorEndpoint, name, type, callback)
|
|
|
66
28
|
bridgedDeviceBasicInformation: { nodeLabel: name.slice(0, 32) },
|
|
67
29
|
onOff: { onOff: false, startUpOnOff: OnOff.StartUpOnOff.Off },
|
|
68
30
|
});
|
|
69
|
-
// Set up an event listener for when the `onOff` state changes.
|
|
70
31
|
device.events.onOff.onOff$Changed.on((value) => {
|
|
71
|
-
// If the `onOff` state becomes true, turn off the virtual device and execute the callback.
|
|
72
32
|
if (value) {
|
|
73
33
|
callback();
|
|
74
34
|
process.nextTick(async () => {
|
|
@@ -76,24 +36,14 @@ export async function addVirtualDevice(aggregatorEndpoint, name, type, callback)
|
|
|
76
36
|
await device.setStateOf(OnOffBaseServer, { onOff: false });
|
|
77
37
|
}
|
|
78
38
|
catch (_error) {
|
|
79
|
-
// Not necessary to handle the error
|
|
80
39
|
}
|
|
81
40
|
});
|
|
82
41
|
}
|
|
83
42
|
});
|
|
84
|
-
// Add the created device to the given endpoint.
|
|
85
43
|
await aggregatorEndpoint.add(device);
|
|
86
|
-
// Initially set the state of the virtual device's `OnOffBaseServer` to false (off).
|
|
87
44
|
await device.setStateOf(OnOffBaseServer, { onOff: false });
|
|
88
45
|
return device;
|
|
89
46
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Creates and add the virtual devices to the aggregator.
|
|
92
|
-
*
|
|
93
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
94
|
-
* @param {Endpoint<AggregatorEndpoint>} aggregatorEndpoint - The aggregator node to add the virtual devices to.
|
|
95
|
-
* @returns {Promise<void>} A promise that resolves when the virtual devices are added.
|
|
96
|
-
*/
|
|
97
47
|
export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
|
|
98
48
|
if (matterbridge.matterbridgeInformation.virtualMode !== 'disabled' && matterbridge.bridgeMode === 'bridge' && aggregatorEndpoint) {
|
|
99
49
|
matterbridge.log.notice(`Creating virtual devices for Matterbridge server node...`);
|
|
@@ -109,6 +59,7 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
|
|
|
109
59
|
getShelly('/api/updates/sys/perform', 10 * 1000)
|
|
110
60
|
.then(() => {
|
|
111
61
|
matterbridge.log.notice('Shelly system updated successfully');
|
|
62
|
+
return;
|
|
112
63
|
})
|
|
113
64
|
.catch((error) => {
|
|
114
65
|
matterbridge.log.error(`Error updating shelly system: ${error}`);
|
|
@@ -116,6 +67,7 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
|
|
|
116
67
|
getShelly('/api/updates/main/perform', 10 * 1000)
|
|
117
68
|
.then(() => {
|
|
118
69
|
matterbridge.log.notice('Shelly software updated successfully');
|
|
70
|
+
return;
|
|
119
71
|
})
|
|
120
72
|
.catch((error) => {
|
|
121
73
|
matterbridge.log.error(`Error updating shelly software: ${error}`);
|
|
@@ -131,6 +83,7 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
|
|
|
131
83
|
postShelly('/api/system/reboot', {}, 60 * 1000)
|
|
132
84
|
.then(() => {
|
|
133
85
|
matterbridge.log.notice('Rebooting shelly board...');
|
|
86
|
+
return;
|
|
134
87
|
})
|
|
135
88
|
.catch((error) => {
|
|
136
89
|
matterbridge.log.error(`Error rebooting shelly board: ${error}`);
|
|
@@ -139,4 +92,3 @@ export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
|
|
|
139
92
|
}
|
|
140
93
|
}
|
|
141
94
|
}
|
|
142
|
-
//# sourceMappingURL=helpers.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* This file contains the entry point of Matterbridge.
|
|
3
|
-
*
|
|
4
|
-
* @file index.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @date 2023-12-29
|
|
7
|
-
* @version 1.0.7
|
|
8
|
-
*
|
|
9
|
-
* Copyright 2023, 2024, 2025 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
|
-
// Matterbridge
|
|
1
|
+
import { AnsiLogger } from 'node-ansi-logger';
|
|
24
2
|
import { Matterbridge } from './matterbridge.js';
|
|
25
3
|
import { hasParameter } from './utils/export.js';
|
|
26
|
-
// AnsiLogger module
|
|
27
|
-
import { AnsiLogger } from './logger/export.js';
|
|
28
|
-
// Matterbridge
|
|
29
4
|
export * from './matterbridge.js';
|
|
30
5
|
export * from './matterbridgeTypes.js';
|
|
31
6
|
export * from './matterbridgeEndpoint.js';
|
|
@@ -36,12 +11,11 @@ export * from './matterbridgePlatform.js';
|
|
|
36
11
|
export * from './matterbridgeAccessoryPlatform.js';
|
|
37
12
|
export * from './matterbridgeDynamicPlatform.js';
|
|
38
13
|
export { addVirtualDevice } from './helpers.js';
|
|
39
|
-
// Single class device types (these exports will be removed in the next release)
|
|
40
14
|
export * from './roboticVacuumCleaner.js';
|
|
41
15
|
export * from './laundryWasher.js';
|
|
42
16
|
export * from './waterHeater.js';
|
|
43
17
|
export * from './evse.js';
|
|
44
|
-
const log = new AnsiLogger({ logName: 'Main', logTimestampFormat: 4
|
|
18
|
+
const log = new AnsiLogger({ logName: 'Main', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
|
|
45
19
|
async function main() {
|
|
46
20
|
log.debug('***Matterbridge.loadInstance() called');
|
|
47
21
|
await Matterbridge.loadInstance();
|
|
@@ -50,4 +24,3 @@ async function main() {
|
|
|
50
24
|
main().catch((error) => {
|
|
51
25
|
log.error(`Matterbridge.loadInstance() failed with error: ${error instanceof Error ? error.message : error}`);
|
|
52
26
|
});
|
|
53
|
-
//# sourceMappingURL=index.js.map
|
package/dist/laundryWasher.js
CHANGED
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the LaundryWasher class.
|
|
3
|
-
*
|
|
4
|
-
* @file laundryWasher.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @date 2025-05-25
|
|
7
|
-
* @version 1.1.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
1
|
import { LaundryWasherControls } from '@matter/main/clusters/laundry-washer-controls';
|
|
24
2
|
import { LaundryWasherMode } from '@matter/main/clusters/laundry-washer-mode';
|
|
25
3
|
import { TemperatureControl } from '@matter/main/clusters/temperature-control';
|
|
@@ -27,35 +5,10 @@ import { ModeBase } from '@matter/main/clusters/mode-base';
|
|
|
27
5
|
import { TemperatureControlServer } from '@matter/main/behaviors/temperature-control';
|
|
28
6
|
import { LaundryWasherModeServer } from '@matter/main/behaviors/laundry-washer-mode';
|
|
29
7
|
import { LaundryWasherControlsServer } from '@matter/main/behaviors/laundry-washer-controls';
|
|
30
|
-
// Matterbridge
|
|
31
8
|
import { laundryWasher } from './matterbridgeDeviceTypes.js';
|
|
32
9
|
import { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
|
|
33
10
|
import { MatterbridgeOnOffServer, MatterbridgeServer } from './matterbridgeBehaviors.js';
|
|
34
11
|
export class LaundryWasher extends MatterbridgeEndpoint {
|
|
35
|
-
/**
|
|
36
|
-
* Creates an instance of the LaundryWasher class.
|
|
37
|
-
*
|
|
38
|
-
* @param {string} name - The name of the laundry washer.
|
|
39
|
-
* @param {string} serial - The serial number of the laundry washer.
|
|
40
|
-
* @param {number} [currentMode=2] - The current mode of the laundry washer. Defaults to 2 (Normal mode). Dead Front OnOff Cluster will set this to 2 when turned off. Persistent attribute.
|
|
41
|
-
* @param {LaundryWasherMode.ModeOption[]} [supportedModes] - The supported modes of the laundry washer. Defaults to a set of common modes (which include Delicate, Normal, Heavy, and Whites). Fixed attribute.
|
|
42
|
-
* @param {number} [spinSpeedCurrent=2] - The current spin speed as index of the spinSpeeds array. Defaults to 2 (which corresponds to '1200').
|
|
43
|
-
* @param {string[]} [spinSpeeds] - The supported spin speeds. Defaults to ['400', '800', '1200', '1600'].
|
|
44
|
-
* @param {LaundryWasherControls.NumberOfRinses} [numberOfRinses=LaundryWasherControls.NumberOfRinses.Normal] - The number of rinses. Defaults to LaundryWasherControls.NumberOfRinses.Normal (which corresponds to 1 rinse).
|
|
45
|
-
* @param {LaundryWasherControls.NumberOfRinses[]} [supportedRinses] - The supported rinses. Defaults to [NumberOfRinses.None, NumberOfRinses.Normal, NumberOfRinses.Max, NumberOfRinses.Extra].
|
|
46
|
-
* @param {number} [selectedTemperatureLevel=1] - The selected temperature level as an index of the supportedTemperatureLevels array. Defaults to 1 (which corresponds to 'Warm').
|
|
47
|
-
* @param {string[]} [supportedTemperatureLevels] - The supported temperature levels. Defaults to ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']. Fixed attribute.
|
|
48
|
-
* @param {number} [temperatureSetpoint] - The temperature setpoint * 100. Defaults to 40 * 100 (which corresponds to 40°C).
|
|
49
|
-
* @param {number} [minTemperature=30 * 100] - The minimum temperature * 100. Defaults to 30 * 100 (which corresponds to 30°C). Fixed attribute.
|
|
50
|
-
* @param {number} [maxTemperature=60 * 100] - The maximum temperature * 100. Defaults to 60 * 100 (which corresponds to 60°C). Fixed attribute.
|
|
51
|
-
* @param {number} [step=10 * 100] - The step size for temperature changes. Defaults to 10 * 100 (which corresponds to 10°C). Fixed attribute.
|
|
52
|
-
* @param {OperationalState.OperationalStateEnum} [operationalState=OperationalState.OperationalStateEnum.Off] - The operational state of the laundry washer. Defaults to OperationalState.OperationalStateEnum.Off.
|
|
53
|
-
*
|
|
54
|
-
* @remarks
|
|
55
|
-
* - If `temperatureSetpoint` is provided, the `createNumberTemperatureControlClusterServer` method will be used to create the TemperatureControl Cluster Server with features TemperatureNumber and TemperatureStep.
|
|
56
|
-
* - If `temperatureSetpoint` is not provided, the `createLevelTemperatureControlClusterServer` method will be used to create the TemperatureControl Cluster Server with feature TemperatureLevel.
|
|
57
|
-
*
|
|
58
|
-
*/
|
|
59
12
|
constructor(name, serial, currentMode, supportedModes, spinSpeedCurrent, spinSpeeds, numberOfRinses, supportedRinses, selectedTemperatureLevel, supportedTemperatureLevels, temperatureSetpoint, minTemperature, maxTemperature, step, operationalState) {
|
|
60
13
|
super(laundryWasher, { uniqueStorageKey: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` }, true);
|
|
61
14
|
this.createDefaultIdentifyClusterServer();
|
|
@@ -70,14 +23,6 @@ export class LaundryWasher extends MatterbridgeEndpoint {
|
|
|
70
23
|
this.createLevelTemperatureControlClusterServer(selectedTemperatureLevel, supportedTemperatureLevels);
|
|
71
24
|
this.createDefaultOperationalStateClusterServer(operationalState);
|
|
72
25
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Creates a default Laundry Washer Mode Cluster Server.
|
|
75
|
-
*
|
|
76
|
-
* @param {number} currentMode - The current mode of the laundry washer. Defaults to 2 (Normal mode). Dead Front OnOff Cluster will set this to 2 when turned off. Persistent attribute.
|
|
77
|
-
* @param {LaundryWasherMode.ModeOption[]} supportedModes - The supported modes of the laundry washer. Defaults to a set of common modes (which include Delicate, Normal, Heavy, and Whites). Fixed attribute.
|
|
78
|
-
*
|
|
79
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
80
|
-
*/
|
|
81
26
|
createDefaultLaundryWasherModeClusterServer(currentMode = 2, supportedModes = [
|
|
82
27
|
{ label: 'Delicate', mode: 1, modeTags: [{ value: LaundryWasherMode.ModeTag.Delicate }] },
|
|
83
28
|
{ label: 'Normal', mode: 2, modeTags: [{ value: LaundryWasherMode.ModeTag.Normal }] },
|
|
@@ -85,38 +30,20 @@ export class LaundryWasher extends MatterbridgeEndpoint {
|
|
|
85
30
|
{ label: 'Whites', mode: 4, modeTags: [{ value: LaundryWasherMode.ModeTag.Whites }] },
|
|
86
31
|
]) {
|
|
87
32
|
this.behaviors.require(MatterbridgeLaundryWasherModeServer, {
|
|
88
|
-
supportedModes,
|
|
89
|
-
currentMode,
|
|
33
|
+
supportedModes,
|
|
34
|
+
currentMode,
|
|
90
35
|
});
|
|
91
36
|
return this;
|
|
92
37
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Creates a Laundry Washer Controls Cluster Server with feature Spin for selecting the spin speed and feature Rinse for selecting the number of rinses.
|
|
95
|
-
*
|
|
96
|
-
* @param {number} spinSpeedCurrent - The current spin speed as index of the spinSpeeds array. Default to 2 (which corresponds to '1200').
|
|
97
|
-
* @param {string[]} spinSpeeds - The supported spin speeds. Default to ['400', '800', '1200', '1600'].
|
|
98
|
-
* @param {LaundryWasherControls.NumberOfRinses} numberOfRinses - The number of rinses. Default to LaundryWasherControls.NumberOfRinses.Normal (which corresponds to 1 rinse).
|
|
99
|
-
* @param {LaundryWasherControls.NumberOfRinses[]} supportedRinses - The supported rinses. Default to [NumberOfRinses.None, NumberOfRinses.Normal, NumberOfRinses.Max, NumberOfRinses.Extra].
|
|
100
|
-
*
|
|
101
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
102
|
-
*/
|
|
103
38
|
createDefaultLaundryWasherControlsClusterServer(spinSpeedCurrent = 2, spinSpeeds = ['400', '800', '1200', '1600'], numberOfRinses = LaundryWasherControls.NumberOfRinses.Normal, supportedRinses = [LaundryWasherControls.NumberOfRinses.None, LaundryWasherControls.NumberOfRinses.Normal, LaundryWasherControls.NumberOfRinses.Max, LaundryWasherControls.NumberOfRinses.Extra]) {
|
|
104
39
|
this.behaviors.require(LaundryWasherControlsServer.with(LaundryWasherControls.Feature.Spin, LaundryWasherControls.Feature.Rinse), {
|
|
105
40
|
spinSpeeds,
|
|
106
|
-
spinSpeedCurrent,
|
|
41
|
+
spinSpeedCurrent,
|
|
107
42
|
supportedRinses,
|
|
108
|
-
numberOfRinses,
|
|
43
|
+
numberOfRinses,
|
|
109
44
|
});
|
|
110
45
|
return this;
|
|
111
46
|
}
|
|
112
|
-
/**
|
|
113
|
-
* Creates a TemperatureControl Cluster Server with feature TemperatureLevel.
|
|
114
|
-
*
|
|
115
|
-
* @param {number} selectedTemperatureLevel - The selected temperature level as an index of the supportedTemperatureLevels array. Defaults to 1 (which corresponds to 'Warm').
|
|
116
|
-
* @param {string[]} supportedTemperatureLevels - The supported temperature levels. Defaults to ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']. Fixed attribute.
|
|
117
|
-
*
|
|
118
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
119
|
-
*/
|
|
120
47
|
createLevelTemperatureControlClusterServer(selectedTemperatureLevel = 1, supportedTemperatureLevels = ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']) {
|
|
121
48
|
this.behaviors.require(MatterbridgeLevelTemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel), {
|
|
122
49
|
selectedTemperatureLevel,
|
|
@@ -124,22 +51,12 @@ export class LaundryWasher extends MatterbridgeEndpoint {
|
|
|
124
51
|
});
|
|
125
52
|
return this;
|
|
126
53
|
}
|
|
127
|
-
/**
|
|
128
|
-
* Creates a TemperatureControl Cluster Server with features TemperatureNumber and TemperatureStep.
|
|
129
|
-
*
|
|
130
|
-
* @param {number} temperatureSetpoint - The temperature setpoint * 100. Defaults to 40 * 100 (which corresponds to 40°C).
|
|
131
|
-
* @param {number} minTemperature - The minimum temperature * 100. Defaults to 30 * 100 (which corresponds to 30°C). Fixed attribute.
|
|
132
|
-
* @param {number} maxTemperature - The maximum temperature * 100. Defaults to 60 * 100 (which corresponds to 60°C). Fixed attribute.
|
|
133
|
-
* @param {number} [step=1] - The step size for temperature changes. Defaults to 10 * 100 (which corresponds to 10°C). Fixed attribute.
|
|
134
|
-
*
|
|
135
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
136
|
-
*/
|
|
137
54
|
createNumberTemperatureControlClusterServer(temperatureSetpoint = 40 * 100, minTemperature = 30 * 100, maxTemperature = 60 * 100, step = 10 * 100) {
|
|
138
55
|
this.behaviors.require(MatterbridgeNumberTemperatureControlServer.with(TemperatureControl.Feature.TemperatureNumber, TemperatureControl.Feature.TemperatureStep), {
|
|
139
56
|
temperatureSetpoint,
|
|
140
|
-
minTemperature,
|
|
141
|
-
maxTemperature,
|
|
142
|
-
step,
|
|
57
|
+
minTemperature,
|
|
58
|
+
maxTemperature,
|
|
59
|
+
step,
|
|
143
60
|
});
|
|
144
61
|
return this;
|
|
145
62
|
}
|
|
@@ -188,7 +105,6 @@ export class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer
|
|
|
188
105
|
device.log.info(`MatterbridgeLaundryWasherModeServer initialized: currentMode is ${this.state.currentMode}`);
|
|
189
106
|
this.reactTo(this.agent.get(MatterbridgeOnOffServer).events.onOff$Changed, this.handleOnOffChange);
|
|
190
107
|
}
|
|
191
|
-
// Dead Front OnOff Cluster
|
|
192
108
|
handleOnOffChange(onOff) {
|
|
193
109
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
194
110
|
device.log.info(`HandleOnOffChange (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
@@ -213,4 +129,3 @@ export class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer
|
|
|
213
129
|
}
|
|
214
130
|
}
|
|
215
131
|
}
|
|
216
|
-
//# sourceMappingURL=laundryWasher.js.map
|
package/dist/logger/export.js
CHANGED
package/dist/matter/behaviors.js
CHANGED
package/dist/matter/clusters.js
CHANGED
package/dist/matter/devices.js
CHANGED
package/dist/matter/endpoints.js
CHANGED
package/dist/matter/export.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
// @matter
|
|
2
1
|
export * from '@matter/main';
|
|
3
2
|
export { SemanticNamespace, ClosureTag, CompassDirectionTag, CompassLocationTag, DirectionTag, ElectricalMeasurementTag, LaundryTag, LevelTag, LocationTag, NumberTag, PositionTag, PowerSourceTag, RefrigeratorTag, RoomAirConditionerTag, SwitchesTag, } from '@matter/main';
|
|
4
3
|
export { AttributeElement, ClusterElement, ClusterModel, CommandElement, EventElement, FieldElement } from '@matter/main/model';
|
|
5
4
|
export { MdnsService, Val } from '@matter/main/protocol';
|
|
6
|
-
//# sourceMappingURL=export.js.map
|
package/dist/matter/types.js
CHANGED