matterbridge 3.3.4-dev-20251022-681420c → 3.3.5-dev-20251025-26d5c31
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 +16 -1
- package/dist/broadcastServer.js +5 -5
- package/dist/deviceManager.js +2 -2
- package/dist/frontend.js +5 -5
- package/dist/matterbridge.js +6 -2
- package/dist/matterbridgeEndpoint.js +1 -1
- package/dist/pluginManager.js +1 -1
- package/dist/utils/error.js +2 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -26,8 +26,19 @@ Advantages:
|
|
|
26
26
|
- real concurrency outside the Node.js main loop;
|
|
27
27
|
- isolation between threads;
|
|
28
28
|
- individual plugin isolation in childbridge mode;
|
|
29
|
+
- ability to update the plugin in childbridge mode without restarting matterbridge;
|
|
29
30
|
|
|
30
|
-
## [3.3.
|
|
31
|
+
## [3.3.5] - 2025-10-??
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- [package]: Updated dependencies.
|
|
36
|
+
|
|
37
|
+
<a href="https://www.buymeacoffee.com/luligugithub">
|
|
38
|
+
<img src="bmc-button.svg" alt="Buy me a coffee" width="80">
|
|
39
|
+
</a>
|
|
40
|
+
|
|
41
|
+
## [3.3.4] - 2025-10-24
|
|
31
42
|
|
|
32
43
|
### Breaking Changes
|
|
33
44
|
|
|
@@ -50,6 +61,10 @@ Advantages:
|
|
|
50
61
|
- [frontend]: Bumped `frontend` version to 3.2.3.
|
|
51
62
|
- [thread]: Bumped `BroadcastServer` version to 1.0.1.
|
|
52
63
|
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- [thrmostat]: Fixed minSetpointDeadBand data type. Thanks Apollon!
|
|
67
|
+
|
|
53
68
|
<a href="https://www.buymeacoffee.com/luligugithub">
|
|
54
69
|
<img src="bmc-button.svg" alt="Buy me a coffee" width="80">
|
|
55
70
|
</a>
|
package/dist/broadcastServer.js
CHANGED
|
@@ -31,7 +31,7 @@ export class BroadcastServer extends EventEmitter {
|
|
|
31
31
|
}
|
|
32
32
|
broadcastMessageHandler(event) {
|
|
33
33
|
const data = event.data;
|
|
34
|
-
this.log.debug(
|
|
34
|
+
this.log.debug(`Received broadcast message: ${debugStringify(data)}`);
|
|
35
35
|
this.emit('broadcast_message', data);
|
|
36
36
|
}
|
|
37
37
|
broadcast(message) {
|
|
@@ -48,7 +48,7 @@ export class BroadcastServer extends EventEmitter {
|
|
|
48
48
|
this.log.error(`Invalid request message format for broadcast: ${debugStringify(message)}`);
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
-
this.log.debug(
|
|
51
|
+
this.log.debug(`Broadcasting request message: ${debugStringify(message)}`);
|
|
52
52
|
this.broadcastChannel.postMessage(message);
|
|
53
53
|
}
|
|
54
54
|
respond(message) {
|
|
@@ -59,7 +59,7 @@ export class BroadcastServer extends EventEmitter {
|
|
|
59
59
|
this.log.error(`Invalid response message format for broadcast: ${debugStringify(message)}`);
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
|
-
this.log.debug(
|
|
62
|
+
this.log.debug(`Broadcasting response message: ${debugStringify(message)}`);
|
|
63
63
|
this.broadcastChannel.postMessage(message);
|
|
64
64
|
}
|
|
65
65
|
async fetch(message) {
|
|
@@ -69,13 +69,13 @@ export class BroadcastServer extends EventEmitter {
|
|
|
69
69
|
if (message.timestamp === undefined) {
|
|
70
70
|
message.timestamp = Date.now();
|
|
71
71
|
}
|
|
72
|
-
this.log.debug(
|
|
72
|
+
this.log.debug(`Fetching message: ${debugStringify(message)}`);
|
|
73
73
|
return new Promise((resolve, reject) => {
|
|
74
74
|
const responseHandler = (msg) => {
|
|
75
75
|
if (this.isWorkerResponse(msg, message.type) && msg.id === message.id) {
|
|
76
76
|
clearTimeout(timeoutId);
|
|
77
77
|
this.off('broadcast_message', responseHandler);
|
|
78
|
-
this.log.debug(
|
|
78
|
+
this.log.debug(`Fetch response: ${debugStringify(msg)}`);
|
|
79
79
|
resolve(msg);
|
|
80
80
|
}
|
|
81
81
|
};
|
package/dist/deviceManager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnsiLogger, BLUE, CYAN, db, debugStringify, er
|
|
1
|
+
import { AnsiLogger, BLUE, CYAN, db, debugStringify, er } from 'node-ansi-logger';
|
|
2
2
|
import { dev } from './matterbridgeTypes.js';
|
|
3
3
|
import { BroadcastServer } from './broadcastServer.js';
|
|
4
4
|
import { hasParameter } from './utils/commandLine.js';
|
|
@@ -43,7 +43,7 @@ export class DeviceManager {
|
|
|
43
43
|
this.server.respond({ ...msg, response: { success: true } });
|
|
44
44
|
break;
|
|
45
45
|
default:
|
|
46
|
-
this.log.
|
|
46
|
+
this.log.debug(`Unknown broadcast message ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}
|
package/dist/frontend.js
CHANGED
|
@@ -3,7 +3,7 @@ if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import EventEmitter from 'node:events';
|
|
6
|
-
import { AnsiLogger, stringify, debugStringify, CYAN, db, er, nf, rs, UNDERLINE, UNDERLINEOFF, YELLOW, nt
|
|
6
|
+
import { AnsiLogger, stringify, debugStringify, CYAN, db, er, nf, rs, UNDERLINE, UNDERLINEOFF, YELLOW, nt } from 'node-ansi-logger';
|
|
7
7
|
import { Logger, Diagnostic, LogDestination, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, Lifecycle } from '@matter/general';
|
|
8
8
|
import { DeviceAdvertiser, DeviceCommissioner, FabricManager } from '@matter/protocol';
|
|
9
9
|
import { FabricIndex } from '@matter/types/datatype';
|
|
@@ -44,7 +44,7 @@ export class Frontend extends EventEmitter {
|
|
|
44
44
|
}
|
|
45
45
|
async msgHandler(msg) {
|
|
46
46
|
if (this.server.isWorkerRequest(msg, msg.type) && (msg.dst === 'all' || msg.dst === 'frontend')) {
|
|
47
|
-
this.log.debug(
|
|
47
|
+
this.log.debug(`Received broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
|
|
48
48
|
switch (msg.type) {
|
|
49
49
|
case 'frontend_start':
|
|
50
50
|
await this.start(msg.params.port);
|
|
@@ -55,11 +55,11 @@ export class Frontend extends EventEmitter {
|
|
|
55
55
|
this.server.respond({ ...msg, response: { success: true } });
|
|
56
56
|
break;
|
|
57
57
|
default:
|
|
58
|
-
this.log.
|
|
58
|
+
this.log.debug(`Unknown broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
if (this.server.isWorkerResponse(msg, msg.type)) {
|
|
62
|
-
this.log.debug(
|
|
62
|
+
this.log.debug(`Received broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
|
|
63
63
|
switch (msg.type) {
|
|
64
64
|
case 'plugins_install':
|
|
65
65
|
this.wssSendCloseSnackbarMessage(`Installing package ${msg.response.packageName}...`);
|
|
@@ -84,7 +84,7 @@ export class Frontend extends EventEmitter {
|
|
|
84
84
|
}
|
|
85
85
|
break;
|
|
86
86
|
default:
|
|
87
|
-
this.log.
|
|
87
|
+
this.log.debug(`Unknown broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
}
|
package/dist/matterbridge.js
CHANGED
|
@@ -125,6 +125,9 @@ export class Matterbridge extends EventEmitter {
|
|
|
125
125
|
this.server = new BroadcastServer('matterbridge', this.log);
|
|
126
126
|
this.server.on('broadcast_message', this.msgHandler.bind(this));
|
|
127
127
|
}
|
|
128
|
+
destroy() {
|
|
129
|
+
this.server.close();
|
|
130
|
+
}
|
|
128
131
|
async msgHandler(msg) {
|
|
129
132
|
if (this.server.isWorkerRequest(msg, msg.type) && (msg.dst === 'all' || msg.dst === 'matterbridge')) {
|
|
130
133
|
this.log.debug(`**Received broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
|
|
@@ -137,14 +140,14 @@ export class Matterbridge extends EventEmitter {
|
|
|
137
140
|
this.server.respond({ ...msg, response: { success: true, logLevel: this.log.logLevel } });
|
|
138
141
|
break;
|
|
139
142
|
default:
|
|
140
|
-
this.log.
|
|
143
|
+
this.log.debug(`Unknown broadcast request ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
146
|
if (this.server.isWorkerResponse(msg, msg.type)) {
|
|
144
147
|
this.log.debug(`**Received broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
|
|
145
148
|
switch (msg.type) {
|
|
146
149
|
default:
|
|
147
|
-
this.log.
|
|
150
|
+
this.log.debug(`Unknown broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
}
|
|
@@ -1096,6 +1099,7 @@ export class Matterbridge extends EventEmitter {
|
|
|
1096
1099
|
else {
|
|
1097
1100
|
if (!this.initialized) {
|
|
1098
1101
|
this.log.debug('Cleanup with instance not initialized...');
|
|
1102
|
+
this.destroy();
|
|
1099
1103
|
this.frontend.destroy();
|
|
1100
1104
|
this.plugins.destroy();
|
|
1101
1105
|
this.devices.destroy();
|
|
@@ -795,7 +795,7 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
795
795
|
maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
|
|
796
796
|
absMinCoolSetpointLimit: minCoolSetpointLimit * 100,
|
|
797
797
|
absMaxCoolSetpointLimit: maxCoolSetpointLimit * 100,
|
|
798
|
-
minSetpointDeadBand: minSetpointDeadBand *
|
|
798
|
+
minSetpointDeadBand: minSetpointDeadBand * 10,
|
|
799
799
|
thermostatRunningMode: Thermostat.ThermostatRunningMode.Off,
|
|
800
800
|
...(occupied !== undefined ? { unoccupiedHeatingSetpoint: unoccupiedHeatingSetpoint !== undefined ? unoccupiedHeatingSetpoint * 100 : 1900 } : {}),
|
|
801
801
|
...(occupied !== undefined ? { unoccupiedCoolingSetpoint: unoccupiedCoolingSetpoint !== undefined ? unoccupiedCoolingSetpoint * 100 : 2700 } : {}),
|
package/dist/pluginManager.js
CHANGED
|
@@ -49,7 +49,7 @@ export class PluginManager extends EventEmitter {
|
|
|
49
49
|
this.server.respond({ ...msg, response: { packageName: msg.params.packageName, success: await this.uninstall(msg.params.packageName) } });
|
|
50
50
|
break;
|
|
51
51
|
default:
|
|
52
|
-
this.log.
|
|
52
|
+
this.log.debug(`Unknown broadcast message ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}`);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
package/dist/utils/error.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { inspect } from 'node:util';
|
|
2
|
+
import { RESET } from 'node-ansi-logger';
|
|
2
3
|
export function logError(log, message, error) {
|
|
3
4
|
log.error(`${message}: ${error instanceof Error ? error.message + '\nStack:\n' + error.stack : error}`);
|
|
4
5
|
}
|
|
5
6
|
export function inspectError(log, message, error) {
|
|
6
7
|
const errorMessage = error instanceof Error ? `${error.message}\n` : '';
|
|
7
8
|
const inspectedError = inspect(error, { depth: 10, colors: true, showHidden: false });
|
|
8
|
-
log.error(`${message}: ${errorMessage}${inspectedError}`);
|
|
9
|
+
log.error(`${message}: ${errorMessage}${RESET}${inspectedError}`);
|
|
9
10
|
}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.5-dev-20251025-26d5c31",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge",
|
|
9
|
-
"version": "3.3.
|
|
9
|
+
"version": "3.3.5-dev-20251025-26d5c31",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@matter/main": "0.15.6",
|
package/package.json
CHANGED