matterbridge 3.1.7 → 3.1.8-dev-20250725-5cc0474
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 +15 -0
- package/dist/cli.js +2 -91
- package/dist/cliEmitter.js +0 -30
- package/dist/clusters/export.js +0 -2
- package/dist/defaultConfigSchema.js +0 -24
- package/dist/deviceManager.js +1 -94
- package/dist/devices/batteryStorage.js +1 -48
- package/dist/devices/dishwasher.js +3 -78
- package/dist/devices/evse.js +10 -74
- package/dist/devices/export.js +0 -2
- package/dist/devices/extractorHood.js +0 -42
- package/dist/devices/heatPump.js +2 -50
- package/dist/devices/laundryDryer.js +6 -83
- package/dist/devices/laundryWasher.js +7 -91
- package/dist/devices/roboticVacuumCleaner.js +7 -93
- package/dist/devices/solarPower.js +0 -38
- package/dist/devices/waterHeater.js +2 -82
- package/dist/dgram/coap.js +13 -126
- package/dist/dgram/dgram.js +2 -113
- package/dist/dgram/mb_coap.js +3 -41
- package/dist/dgram/mb_mdns.js +13 -51
- package/dist/dgram/mdns.js +137 -298
- package/dist/dgram/multicast.js +1 -60
- package/dist/dgram/unicast.js +0 -54
- package/dist/frontend.js +21 -435
- package/dist/globalMatterbridge.js +0 -47
- package/dist/helpers.js +0 -53
- package/dist/index.js +1 -30
- 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/matterbridge.js +55 -811
- package/dist/matterbridgeAccessoryPlatform.js +0 -36
- package/dist/matterbridgeBehaviors.js +5 -65
- package/dist/matterbridgeDeviceTypes.js +15 -579
- package/dist/matterbridgeDynamicPlatform.js +0 -36
- package/dist/matterbridgeEndpoint.js +54 -1214
- package/dist/matterbridgeEndpointHelpers.js +12 -344
- package/dist/matterbridgePlatform.js +0 -233
- package/dist/matterbridgeTypes.js +0 -25
- package/dist/pluginManager.js +3 -249
- package/dist/shelly.js +7 -168
- package/dist/storage/export.js +0 -1
- package/dist/update.js +0 -54
- package/dist/utils/colorUtils.js +2 -263
- package/dist/utils/commandLine.js +0 -54
- package/dist/utils/copyDirectory.js +1 -38
- 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/hex.js +0 -58
- package/dist/utils/isvalid.js +0 -101
- package/dist/utils/network.js +5 -81
- package/dist/utils/spawn.js +0 -40
- package/dist/utils/wait.js +9 -62
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -2
- package/dist/cli.d.ts +0 -26
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cliEmitter.d.ts +0 -34
- package/dist/cliEmitter.d.ts.map +0 -1
- package/dist/cliEmitter.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 -112
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.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/dishwasher.d.ts +0 -91
- package/dist/devices/dishwasher.d.ts.map +0 -1
- package/dist/devices/dishwasher.js.map +0 -1
- package/dist/devices/evse.d.ts +0 -75
- package/dist/devices/evse.d.ts.map +0 -1
- package/dist/devices/evse.js.map +0 -1
- package/dist/devices/export.d.ts +0 -11
- 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 -87
- package/dist/devices/laundryDryer.d.ts.map +0 -1
- package/dist/devices/laundryDryer.js.map +0 -1
- package/dist/devices/laundryWasher.d.ts +0 -242
- package/dist/devices/laundryWasher.d.ts.map +0 -1
- package/dist/devices/laundryWasher.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/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 -140
- 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 -288
- package/dist/dgram/mdns.d.ts.map +0 -1
- package/dist/dgram/mdns.js.map +0 -1
- package/dist/dgram/multicast.d.ts +0 -65
- 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 -304
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js.map +0 -1
- package/dist/globalMatterbridge.d.ts +0 -59
- package/dist/globalMatterbridge.d.ts.map +0 -1
- package/dist/globalMatterbridge.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 -33
- package/dist/index.d.ts.map +0 -1
- package/dist/index.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 -463
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -42
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -1351
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -709
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -42
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -1348
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +0 -406
- package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
- package/dist/matterbridgeEndpointHelpers.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -310
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -195
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -270
- 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 -59
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -117
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/commandLine.d.ts +0 -59
- package/dist/utils/commandLine.d.ts.map +0 -1
- package/dist/utils/commandLine.js.map +0 -1
- package/dist/utils/copyDirectory.d.ts +0 -33
- 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 -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 -49
- package/dist/utils/hex.d.ts.map +0 -1
- package/dist/utils/hex.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 -74
- 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/wait.d.ts +0 -56
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js.map +0 -1
package/dist/shelly.js
CHANGED
|
@@ -1,54 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the shelly api functions.
|
|
3
|
-
*
|
|
4
|
-
* @file shelly.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2025-02-19
|
|
7
|
-
* @version 1.1.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
1
|
import { debugStringify } from 'node-ansi-logger';
|
|
25
2
|
import { WS_ID_SHELLY_MAIN_UPDATE, WS_ID_SHELLY_SYS_UPDATE } from './frontend.js';
|
|
26
3
|
let verifyIntervalSecs = 15;
|
|
27
4
|
let verifyTimeoutSecs = 600;
|
|
28
|
-
/**
|
|
29
|
-
* Sets the interval for verification in seconds.
|
|
30
|
-
*
|
|
31
|
-
* @param {number} seconds - The interval in seconds.
|
|
32
|
-
* @returns {void}
|
|
33
|
-
*/
|
|
34
5
|
export function setVerifyIntervalSecs(seconds) {
|
|
35
6
|
verifyIntervalSecs = seconds;
|
|
36
7
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Sets the timeout for verification in seconds.
|
|
39
|
-
*
|
|
40
|
-
* @param {number} seconds - The timeout in seconds.
|
|
41
|
-
* @returns {void}
|
|
42
|
-
*/
|
|
43
8
|
export function setVerifyTimeoutSecs(seconds) {
|
|
44
9
|
verifyTimeoutSecs = seconds;
|
|
45
10
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Fetches Shelly system updates. If available: logs the result, sends a snackbar message, and broadcasts the message.
|
|
48
|
-
*
|
|
49
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
50
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
51
|
-
*/
|
|
52
11
|
export async function getShellySysUpdate(matterbridge) {
|
|
53
12
|
try {
|
|
54
13
|
const updates = (await getShelly('/api/updates/sys/check'));
|
|
@@ -67,33 +26,19 @@ export async function getShellySysUpdate(matterbridge) {
|
|
|
67
26
|
matterbridge.log.error(`Error getting Shelly system updates: ${err instanceof Error ? err.message : String(err)}`);
|
|
68
27
|
}
|
|
69
28
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Triggers Shelly system updates.
|
|
72
|
-
*
|
|
73
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
74
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
75
|
-
*/
|
|
76
29
|
export async function triggerShellySysUpdate(matterbridge) {
|
|
77
30
|
try {
|
|
78
|
-
// Trigger the update request
|
|
79
31
|
await getShelly('/api/updates/sys/perform');
|
|
80
32
|
matterbridge.log.notice('Installing Shelly system update...');
|
|
81
33
|
matterbridge.matterbridgeInformation.shellySysUpdate = false;
|
|
82
34
|
matterbridge.frontend.wssSendSnackbarMessage('Installing Shelly system update...', 15);
|
|
83
35
|
matterbridge.frontend.wssBroadcastMessage(WS_ID_SHELLY_SYS_UPDATE, 'shelly-sys-update', { available: false });
|
|
84
|
-
// Begin polling update status
|
|
85
36
|
await verifyShellyUpdate(matterbridge, '/api/updates/sys/status', 'Shelly system update');
|
|
86
37
|
}
|
|
87
38
|
catch (err) {
|
|
88
39
|
matterbridge.log.error(`Error triggering Shelly system update: ${err instanceof Error ? err.message : String(err)}`);
|
|
89
40
|
}
|
|
90
41
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Fetches Shelly main updates. If available: logs the result, sends a snackbar message, and broadcasts the message.
|
|
93
|
-
*
|
|
94
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
95
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
96
|
-
*/
|
|
97
42
|
export async function getShellyMainUpdate(matterbridge) {
|
|
98
43
|
try {
|
|
99
44
|
const updates = (await getShelly('/api/updates/main/check'));
|
|
@@ -112,35 +57,19 @@ export async function getShellyMainUpdate(matterbridge) {
|
|
|
112
57
|
matterbridge.log.error(`Error getting Shelly main updates: ${err instanceof Error ? err.message : String(err)}`);
|
|
113
58
|
}
|
|
114
59
|
}
|
|
115
|
-
/**
|
|
116
|
-
* Triggers Shelly main updates.
|
|
117
|
-
*
|
|
118
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
119
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
120
|
-
*/
|
|
121
60
|
export async function triggerShellyMainUpdate(matterbridge) {
|
|
122
61
|
try {
|
|
123
|
-
// Trigger the perform-update request
|
|
124
62
|
await getShelly('/api/updates/main/perform');
|
|
125
63
|
matterbridge.log.notice('Installing Shelly software update...');
|
|
126
64
|
matterbridge.matterbridgeInformation.shellyMainUpdate = false;
|
|
127
65
|
matterbridge.frontend.wssSendSnackbarMessage('Installing Shelly software update...', 15);
|
|
128
66
|
matterbridge.frontend.wssBroadcastMessage(WS_ID_SHELLY_MAIN_UPDATE, 'shelly-main-update', { available: false });
|
|
129
|
-
// Begin polling the update status
|
|
130
67
|
await verifyShellyUpdate(matterbridge, '/api/updates/main/status', 'Shelly software update');
|
|
131
68
|
}
|
|
132
69
|
catch (err) {
|
|
133
70
|
matterbridge.log.error(`Error triggering Shelly main update: ${err instanceof Error ? err.message : String(err)}`);
|
|
134
71
|
}
|
|
135
72
|
}
|
|
136
|
-
/**
|
|
137
|
-
* Verifies Shelly update.
|
|
138
|
-
*
|
|
139
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
140
|
-
* @param {string} api - The api to call: /api/updates/sys/status or /api/updates/main/status
|
|
141
|
-
* @param {string} name - The name of the update.
|
|
142
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
143
|
-
*/
|
|
144
73
|
export async function verifyShellyUpdate(matterbridge, api, name) {
|
|
145
74
|
return new Promise((resolve) => {
|
|
146
75
|
const timeout = setTimeout(() => {
|
|
@@ -148,9 +77,9 @@ export async function verifyShellyUpdate(matterbridge, api, name) {
|
|
|
148
77
|
matterbridge.frontend.wssSendCloseSnackbarMessage(`${name} in progress...`);
|
|
149
78
|
clearInterval(interval);
|
|
150
79
|
resolve();
|
|
151
|
-
}, verifyTimeoutSecs * 1000);
|
|
80
|
+
}, verifyTimeoutSecs * 1000);
|
|
152
81
|
const interval = setInterval(() => {
|
|
153
|
-
getShelly(api, 10 * 1000)
|
|
82
|
+
getShelly(api, 10 * 1000)
|
|
154
83
|
.then(async (data) => {
|
|
155
84
|
if (data.updatingInProgress) {
|
|
156
85
|
matterbridge.log.debug(`${name} in progress...`);
|
|
@@ -173,21 +102,9 @@ export async function verifyShellyUpdate(matterbridge, api, name) {
|
|
|
173
102
|
clearTimeout(timeout);
|
|
174
103
|
resolve();
|
|
175
104
|
});
|
|
176
|
-
}, verifyIntervalSecs * 1000);
|
|
105
|
+
}, verifyIntervalSecs * 1000);
|
|
177
106
|
});
|
|
178
107
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Triggers Shelly change network configuration.
|
|
181
|
-
*
|
|
182
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
183
|
-
* @param {object} config - The network configuration.
|
|
184
|
-
* @param {string} config.type - The type of network configuration, either 'static' or 'dhcp'.
|
|
185
|
-
* @param {string} config.ip - The IP address to set (required for static configuration).
|
|
186
|
-
* @param {string} config.subnet - The subnet mask to set (required for static configuration).
|
|
187
|
-
* @param {string} config.gateway - The gateway to set (required for static configuration).
|
|
188
|
-
* @param {string} config.dns - The DNS server to set (required for static configuration).
|
|
189
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
190
|
-
*/
|
|
191
108
|
export async function triggerShellyChangeIp(matterbridge, config) {
|
|
192
109
|
const api = config.type === 'static' ? '/api/network/connection/static' : '/api/network/connection/dynamic';
|
|
193
110
|
const data = { interface: 'end0' };
|
|
@@ -210,12 +127,6 @@ export async function triggerShellyChangeIp(matterbridge, config) {
|
|
|
210
127
|
matterbridge.frontend.wssSendSnackbarMessage('Error changing Shelly network configuration', 10, 'error');
|
|
211
128
|
}
|
|
212
129
|
}
|
|
213
|
-
/**
|
|
214
|
-
* Triggers Shelly system reboot.
|
|
215
|
-
*
|
|
216
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
217
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
218
|
-
*/
|
|
219
130
|
export async function triggerShellyReboot(matterbridge) {
|
|
220
131
|
matterbridge.log.debug(`Triggering Shelly system reboot`);
|
|
221
132
|
try {
|
|
@@ -233,13 +144,6 @@ export async function triggerShellyReboot(matterbridge) {
|
|
|
233
144
|
matterbridge.frontend.wssSendSnackbarMessage('Error rebooting Shelly board', 10, 'error');
|
|
234
145
|
}
|
|
235
146
|
}
|
|
236
|
-
/**
|
|
237
|
-
* Triggers Shelly soft reset.
|
|
238
|
-
* It will replaces network config with the default one (edn0 on dhcp).
|
|
239
|
-
*
|
|
240
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
241
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
242
|
-
*/
|
|
243
147
|
export async function triggerShellySoftReset(matterbridge) {
|
|
244
148
|
matterbridge.log.debug(`Triggering Shelly soft reset`);
|
|
245
149
|
try {
|
|
@@ -257,13 +161,6 @@ export async function triggerShellySoftReset(matterbridge) {
|
|
|
257
161
|
matterbridge.frontend.wssSendSnackbarMessage('Error resetting the network parameters on Shelly board', 10, 'error');
|
|
258
162
|
}
|
|
259
163
|
}
|
|
260
|
-
/**
|
|
261
|
-
* Triggers Shelly hard reset.
|
|
262
|
-
* It will do a hard reset and will remove both directories .matterbridge Matterbridge.
|
|
263
|
-
*
|
|
264
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
265
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
266
|
-
*/
|
|
267
164
|
export async function triggerShellyHardReset(matterbridge) {
|
|
268
165
|
matterbridge.log.debug(`Triggering Shelly hard reset`);
|
|
269
166
|
try {
|
|
@@ -281,12 +178,6 @@ export async function triggerShellyHardReset(matterbridge) {
|
|
|
281
178
|
matterbridge.frontend.wssSendSnackbarMessage('Error while factory resetting the Shelly board', 10, 'error');
|
|
282
179
|
}
|
|
283
180
|
}
|
|
284
|
-
/**
|
|
285
|
-
* Fetches Shelly system log and write it to shelly.log.
|
|
286
|
-
*
|
|
287
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
288
|
-
* @returns {Promise<boolean>} A promise that resolves to true if the log was successfully downloaded, false otherwise.
|
|
289
|
-
*/
|
|
290
181
|
export async function createShellySystemLog(matterbridge) {
|
|
291
182
|
const { promises: fs } = await import('node:fs');
|
|
292
183
|
const path = await import('node:path');
|
|
@@ -303,28 +194,6 @@ export async function createShellySystemLog(matterbridge) {
|
|
|
303
194
|
return false;
|
|
304
195
|
}
|
|
305
196
|
}
|
|
306
|
-
/**
|
|
307
|
-
* Perform a GET to Shelly board apis.
|
|
308
|
-
*
|
|
309
|
-
* @param {string} api - The api to call:
|
|
310
|
-
*
|
|
311
|
-
* /api/updates/sys/check => [{name:string; ...}]
|
|
312
|
-
* /api/updates/sys/perform => {"updatingInProgress":true} or {"updatingInProgress":false}
|
|
313
|
-
* /api/updates/sys/status => {"updatingInProgress":true} or {"updatingInProgress":false}
|
|
314
|
-
* /api/updates/main/check => [{name:string; ...}]
|
|
315
|
-
* /api/updates/main/perform => {"updatingInProgress":true} or {"updatingInProgress":false}
|
|
316
|
-
* /api/updates/main/status => {"updatingInProgress":true} or {"updatingInProgress":false}
|
|
317
|
-
*
|
|
318
|
-
* /api/logs/system => text
|
|
319
|
-
*
|
|
320
|
-
* /api/reset/soft => "ok" Replaces network config with default one (edn0 on dhcp)
|
|
321
|
-
* /api/reset/hard => reboot on success Hard reset makes soft reset + removing both directories .matterbridge Matterbridge + reboot
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
* @param {number} [timeout] - The timeout duration in milliseconds (default is 60000ms).
|
|
325
|
-
* @returns {Promise<any>} A promise that resolves to the response.
|
|
326
|
-
* @throws {Error} If the request fails.
|
|
327
|
-
*/
|
|
328
197
|
export async function getShelly(api, timeout = 60000) {
|
|
329
198
|
const http = await import('node:http');
|
|
330
199
|
return new Promise((resolve, reject) => {
|
|
@@ -338,13 +207,12 @@ export async function getShelly(api, timeout = 60000) {
|
|
|
338
207
|
let data = '';
|
|
339
208
|
if (res.statusCode !== 200) {
|
|
340
209
|
clearTimeout(timeoutId);
|
|
341
|
-
res.resume();
|
|
342
|
-
req.destroy();
|
|
210
|
+
res.resume();
|
|
211
|
+
req.destroy();
|
|
343
212
|
reject(new Error(`Failed to fetch data. Status code: ${res.statusCode}`));
|
|
344
213
|
return;
|
|
345
214
|
}
|
|
346
215
|
res.on('data', (chunk) => {
|
|
347
|
-
// console.log(chunk);
|
|
348
216
|
data += chunk;
|
|
349
217
|
});
|
|
350
218
|
res.on('end', () => {
|
|
@@ -359,7 +227,6 @@ export async function getShelly(api, timeout = 60000) {
|
|
|
359
227
|
}
|
|
360
228
|
}
|
|
361
229
|
else {
|
|
362
|
-
// console.log(data);
|
|
363
230
|
resolve(data);
|
|
364
231
|
}
|
|
365
232
|
});
|
|
@@ -370,31 +237,6 @@ export async function getShelly(api, timeout = 60000) {
|
|
|
370
237
|
});
|
|
371
238
|
});
|
|
372
239
|
}
|
|
373
|
-
/**
|
|
374
|
-
* Perform a POST request to Shelly board apis.
|
|
375
|
-
*
|
|
376
|
-
* @param {string} api - The api to call:
|
|
377
|
-
*
|
|
378
|
-
* Set static ip
|
|
379
|
-
* /api/network/connection/static -d '{"interface": "end0", "addr": "10.11.12.101", "mask": "255.255.255.0", "gw": "10.11.12.1", "dns": "1.1.1.1"}' => {}
|
|
380
|
-
*
|
|
381
|
-
* Set dhcp
|
|
382
|
-
* /api/network/connection/dynamic -d '{"interface": "end0"}' => {}
|
|
383
|
-
*
|
|
384
|
-
* Reboot
|
|
385
|
-
* /api/system/reboot => {"success":true}
|
|
386
|
-
*
|
|
387
|
-
* curl -H "Content-Type: application/json" -X POST http://127.0.0.1:8101/api/network/connection/dynamic
|
|
388
|
-
* -d '{"interface": "end0"}'
|
|
389
|
-
*
|
|
390
|
-
* curl -H "Content-Type: application/json" -X POST http://127.0.0.1:8101/api/network/connection/static
|
|
391
|
-
* -d '{"interface": "end0", "addr": "192.168.1.64", "mask": "255.255.255.0", "gw": "192.168.1.1", "dns": "192.168.1.1"}'
|
|
392
|
-
*
|
|
393
|
-
* @param {any} data - The data to send in the POST request, typically a JSON object.
|
|
394
|
-
* @param {number} [timeout] - The timeout duration in milliseconds (default is 60000ms).
|
|
395
|
-
* @returns {Promise<any>} A promise that resolves to the response.
|
|
396
|
-
* @throws {Error} If the request fails.
|
|
397
|
-
*/
|
|
398
240
|
export async function postShelly(api, data, timeout = 60000) {
|
|
399
241
|
const http = await import('node:http');
|
|
400
242
|
return new Promise((resolve, reject) => {
|
|
@@ -415,11 +257,10 @@ export async function postShelly(api, data, timeout = 60000) {
|
|
|
415
257
|
};
|
|
416
258
|
const req = http.request(url, options, (res) => {
|
|
417
259
|
let responseData = '';
|
|
418
|
-
// Check for non-success status codes (e.g., 300+)
|
|
419
260
|
if (res.statusCode && res.statusCode >= 300) {
|
|
420
261
|
clearTimeout(timeoutId);
|
|
421
|
-
res.resume();
|
|
422
|
-
req.destroy();
|
|
262
|
+
res.resume();
|
|
263
|
+
req.destroy();
|
|
423
264
|
return reject(new Error(`Failed to post data. Status code: ${res.statusCode}`));
|
|
424
265
|
}
|
|
425
266
|
res.on('data', (chunk) => {
|
|
@@ -440,9 +281,7 @@ export async function postShelly(api, data, timeout = 60000) {
|
|
|
440
281
|
clearTimeout(timeoutId);
|
|
441
282
|
reject(new Error(`Request failed: ${error instanceof Error ? error.message : error}`));
|
|
442
283
|
});
|
|
443
|
-
// Send the JSON data
|
|
444
284
|
req.write(jsonData);
|
|
445
285
|
req.end();
|
|
446
286
|
});
|
|
447
287
|
}
|
|
448
|
-
//# sourceMappingURL=shelly.js.map
|
package/dist/storage/export.js
CHANGED
package/dist/update.js
CHANGED
|
@@ -1,36 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the check updates functions.
|
|
3
|
-
*
|
|
4
|
-
* @file update.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @created 2025-02-24
|
|
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
|
-
// AnsiLogger module
|
|
25
1
|
import { db, nt, wr } from 'node-ansi-logger';
|
|
26
2
|
import { plg } from './matterbridgeTypes.js';
|
|
27
|
-
/**
|
|
28
|
-
* Checks for updates for Matterbridge and its plugins.
|
|
29
|
-
* If the 'shelly' parameter is present, also checks for Shelly updates.
|
|
30
|
-
*
|
|
31
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
32
|
-
* @returns {Promise<void>} A promise that resolves when the update checks are complete.
|
|
33
|
-
*/
|
|
34
3
|
export async function checkUpdates(matterbridge) {
|
|
35
4
|
const { hasParameter } = await import('./utils/commandLine.js');
|
|
36
5
|
const latestVersion = getMatterbridgeLatestVersion(matterbridge);
|
|
@@ -50,13 +19,6 @@ export async function checkUpdates(matterbridge) {
|
|
|
50
19
|
}
|
|
51
20
|
await Promise.all([latestVersion, devVersion, ...pluginsVersions, ...shellyUpdates]);
|
|
52
21
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Retrieves the latest version of Matterbridge and updates the matterbridgeLatestVersion property.
|
|
55
|
-
* If there is an error retrieving the latest version, logs an error message.
|
|
56
|
-
*
|
|
57
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
58
|
-
* @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
|
|
59
|
-
*/
|
|
60
22
|
export async function getMatterbridgeLatestVersion(matterbridge) {
|
|
61
23
|
const { getNpmPackageVersion } = await import('./utils/network.js');
|
|
62
24
|
try {
|
|
@@ -78,13 +40,6 @@ export async function getMatterbridgeLatestVersion(matterbridge) {
|
|
|
78
40
|
matterbridge.log.warn(`Error getting Matterbridge latest version: ${error instanceof Error ? error.message : error}`);
|
|
79
41
|
}
|
|
80
42
|
}
|
|
81
|
-
/**
|
|
82
|
-
* Retrieves the latest dev version of Matterbridge and updates the matterbridgeDevVersion property.
|
|
83
|
-
* If there is an error retrieving the latest version, logs an error message.
|
|
84
|
-
*
|
|
85
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
86
|
-
* @returns {Promise<string | undefined>} A promise that resolves when the latest dev version is retrieved.
|
|
87
|
-
*/
|
|
88
43
|
export async function getMatterbridgeDevVersion(matterbridge) {
|
|
89
44
|
const { getNpmPackageVersion } = await import('./utils/network.js');
|
|
90
45
|
try {
|
|
@@ -106,14 +61,6 @@ export async function getMatterbridgeDevVersion(matterbridge) {
|
|
|
106
61
|
matterbridge.log.warn(`Error getting Matterbridge latest dev version: ${error instanceof Error ? error.message : error}`);
|
|
107
62
|
}
|
|
108
63
|
}
|
|
109
|
-
/**
|
|
110
|
-
* Retrieves the latest version of a plugin and updates the plugin's latestVersion property.
|
|
111
|
-
* If there is an error retrieving the latest version, logs an error message.
|
|
112
|
-
*
|
|
113
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
114
|
-
* @param {RegisteredPlugin} plugin - The plugin for which to retrieve the latest version.
|
|
115
|
-
* @returns {Promise<string | undefined>} A promise that resolves when the latest version is retrieved.
|
|
116
|
-
*/
|
|
117
64
|
export async function getPluginLatestVersion(matterbridge, plugin) {
|
|
118
65
|
const { getNpmPackageVersion } = await import('./utils/network.js');
|
|
119
66
|
try {
|
|
@@ -132,4 +79,3 @@ export async function getPluginLatestVersion(matterbridge, plugin) {
|
|
|
132
79
|
matterbridge.log.warn(`Error getting plugin ${plg}${plugin.name}${wr} latest version: ${error instanceof Error ? error.message : error}`);
|
|
133
80
|
}
|
|
134
81
|
}
|
|
135
|
-
//# sourceMappingURL=update.js.map
|