matterbridge 3.4.1-dev-20251126-9e86094 → 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/README-DEV.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge development
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge development
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
@@ -22,7 +22,7 @@ The easiest way is to clone the [Matterbridge Plugin Template](https://github.co
22
22
 
23
23
  After you clone it locally, change the name (keep always matterbridge- at the beginning of the name), version, description, author, homepage, repository, bugs and funding in the package.json.
24
24
 
25
- It is also possible to add two custom properties to the package.json: **help** and **changelog** with a url that will be used in the frontend instead of the default (/blob/main/README.md and /blob/main/CHANGELOG.md).
25
+ It is also possible to add two custom properties to the package.json: **help** and **changelog** with a url that will be used in the frontend instead of the default (/blob/main/README and /blob/main/CHANGELOG).
26
26
 
27
27
  Add your plugin logic in module.ts.
28
28
 
package/README-DOCKER.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge docker configuration
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge docker configuration
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge launchctl configuration (macOS)
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge launchctl configuration (macOS)
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
package/README-NGINX.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge NGINX configuration
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge NGINX configuration
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
package/README-PODMAN.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge Podman configuration
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge Podman configuration
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge systemd configuration with local global node_modules
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge systemd configuration with local global node_modules
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge systemd configuration with private global node_modules
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge systemd configuration with private global node_modules
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
@@ -22,8 +22,12 @@ The advantage of this setup is that the global node_modules are private for matt
22
22
 
23
23
  The service runs with group and user matterbridge and the system has full protection.
24
24
 
25
+ ### Important
26
+
25
27
  The storage position is **not compatible** with the traditional setup (~/Matterbridge ~/.matterbridge ~/.mattercert).
26
28
 
29
+ Also various script don't work if you choose this configuration.
30
+
27
31
  ### 1 - Create the matterbridge user and group
28
32
 
29
33
  ```bash
@@ -72,6 +76,7 @@ matterbridge --version
72
76
  The storage position is **not compatible** with the traditional setup (~/Matterbridge ~/.matterbridge ~/.mattercert).
73
77
 
74
78
  If you are migrating from the traditional service setup, before removing the old diretories, you may want to copy the contents of ~/Matterbridge ~/.matterbridge ~/.mattercert to the new directories /opt/matterbridge/Matterbridge /opt/matterbridge/.matterbridge /opt/matterbridge/.mattercert.
79
+ This will save all the plugin configs and the fabrics but you need to remove all plugins and readd them cause the path will be different.
75
80
 
76
81
  Copy the old diretories content
77
82
 
package/README-SERVICE.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge systemd configuration
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge systemd configuration
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="frontend/public/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge
1
+ # <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
@@ -36,21 +36,21 @@ Matterbridge is lightweight and also runs on slow Linux machines with as little
36
36
 
37
37
  It runs perfectly on Linux, macOS and Windows.
38
38
 
39
- If you like this project and find it useful, please consider giving it a star on GitHub at https://github.com/Luligu/matterbridge and sponsoring it.
39
+ If you like this project and find it useful, please consider giving it a star on [GitHub](https://github.com/Luligu/matterbridge) and sponsoring it.
40
40
 
41
41
  <a href="https://www.buymeacoffee.com/luligugithub">
42
- <img src="bmc-button.svg" alt="Buy me a coffee" width="120">
42
+ <img src="https://matterbridge.io/bmc-button.svg" alt="Buy me a coffee" width="120">
43
43
  </a>
44
44
 
45
45
  ## Acknowledgements
46
46
 
47
- The project is build on top of https://github.com/project-chip/matter.js.
47
+ The project is build on top of [matter.js](https://github.com/project-chip/matter.js).
48
48
 
49
49
  A special thanks to Apollon77 for his incredible work.
50
50
 
51
51
  ## Discord
52
52
 
53
- Join us in the Matterbridge Discord group https://discord.gg/QX58CDe6hd created by Tamer (https://github.com/tammeryousef1006).
53
+ Join us in the Matterbridge [Discord group](https://discord.gg/QX58CDe6hd) created by [Tamer](https://github.com/tammeryousef1006).
54
54
 
55
55
  ## Videos
56
56
 
@@ -75,7 +75,7 @@ The supported versions of node are 20 and 22. Please install Node.js 22 LTS. Don
75
75
  Node.js 23, like all odd-numbered versions, is not supported.
76
76
  Nvm is not a good choice and should not be used for production.
77
77
 
78
- If you don't have Docker already install, please use this method to install it on a debian device: https://docs.docker.com/desktop/setup/install/linux/debian/.
78
+ If you don't have Docker already install, please use this method to install it on a debian device: https://docs.docker.com/engine/install.
79
79
  After follow the guidelines for the [Docker configurations](README-DOCKER.md).
80
80
 
81
81
  I suggest using Docker for its simplicity.
@@ -108,7 +108,7 @@ Test the installation with:
108
108
  matterbridge
109
109
  ```
110
110
 
111
- Now it is possible to open the frontend at the link provided in the log (e.g. http://MATTERBRIDGE-IPV4-ADDRESS:8283).
111
+ Now it is possible to open the frontend at the link provided in the log (e.g. `http://MATTERBRIDGE-IPV4-ADDRESS:8283`).
112
112
 
113
113
  You can then change the bridge mode and other parameters from the frontend.
114
114
 
@@ -117,7 +117,7 @@ You can then change the bridge mode and other parameters from the frontend.
117
117
  ### mode bridge
118
118
 
119
119
  ```bash
120
- matterbridge -bridge
120
+ matterbridge --bridge
121
121
  ```
122
122
 
123
123
  This force Matterbridge to load in bridge mode.
@@ -127,46 +127,50 @@ Matterbridge only exposes itself, and you have to pair it scanning the QR code s
127
127
  ### mode childbridge
128
128
 
129
129
  ```bash
130
- matterbridge -childbridge
130
+ matterbridge --childbridge
131
131
  ```
132
132
 
133
133
  This force Matterbridge to load in childbridge mode.
134
134
 
135
135
  Matterbridge exposes each registered plugins, and you have to pair each one by scanning the QR code shown in the frontend or in the console.
136
136
 
137
- ### Use matterbridge -help to see the command line syntax
137
+ ### Use matterbridge --help to see the command line syntax
138
138
 
139
139
  ```bash
140
- matterbridge -help
140
+ matterbridge --help
141
+ ```
142
+
143
+ ### Use matterbridge --version to see the current version
144
+
145
+ ```bash
146
+ matterbridge --version
141
147
  ```
142
148
 
143
149
  ## Frontend
144
150
 
145
- Matterbridge has a frontend available on http://MATTERBIDGE-IPV4-ADDRESS:8283 and http://[MATTERBIDGE-IPV6-ADDRESS]:8283
151
+ Matterbridge has a frontend available on IPv4 `http://localhost:8283` or `http://MATTERBIDGE-IPV4-ADDRESS:8283` and IPv6 `http://[::1]:8283` or `http://[MATTERBIDGE-IPV6-ADDRESS]:8283`.
146
152
 
147
153
  You can change the default port by adding the frontend parameter when you run it.
148
154
 
149
155
  Here's how to specify a different port number:
150
156
 
151
157
  ```bash
152
- matterbridge -frontend [port number]
158
+ matterbridge --frontend [port number]
153
159
  ```
154
160
 
155
161
  To use the frontend with ssl see below.
156
162
 
157
163
  From the frontend you can do all operations in an easy way.
158
164
 
159
- Home page:
160
- ![See the screenshot here](screenshot/Screenshot%20home.jpg)
165
+ Home page
161
166
 
162
- Devices page:
163
- [See the screenshot here](screenshot/Screenshot%20devices.jpg)
167
+ ![Home page](./screenshot/Screenshot%20home.jpg)
164
168
 
165
- Logs page:
166
- [See the screenshot here](screenshot/Screenshot%20logs.jpg)
169
+ [Devices page](./screenshot/Screenshot%20devices.jpg)
167
170
 
168
- Config editor:
169
- [See the screenshot here](screenshot/Screenshot%20config%20editor.jpg)
171
+ [Logs page](./screenshot/Screenshot%20logs.jpg)
172
+
173
+ [Config editor](./screenshot/Screenshot%20config%20editor.jpg)
170
174
 
171
175
  ## Advanced configurations
172
176
 
@@ -180,6 +184,10 @@ or with local global node_modules (no sudo required)
180
184
 
181
185
  [Service configurations with local global node_modules](README-SERVICE-LOCAL.md)
182
186
 
187
+ or with user matterbridge and with private global node_modules (no sudo required)
188
+
189
+ [Service configurations with user matterbridge and private global node_modules](README-SERVICE-OPT.md)
190
+
183
191
  ### Run matterbridge as a system service with launchctl (macOS only)
184
192
 
185
193
  [Launchctl configurations](README-MACOS-PLIST.md)
@@ -213,7 +221,7 @@ The other Home Assistant Community Add-ons and plugins are not verified to work
213
221
  ### Shelly
214
222
 
215
223
  <a href="https://github.com/Luligu/matterbridge-shelly">
216
- <img src="screenshot/Shelly.svg" alt="Shelly plugin logo" width="100" />
224
+ <img src="./screenshot/Shelly.svg" alt="Shelly plugin logo" width="100" />
217
225
  </a>
218
226
 
219
227
  Matterbridge shelly plugin allows you to expose all Shelly Gen 1, Gen 2, Gen 3 and Gen 4 and BLU devices to Matter.
@@ -242,7 +250,7 @@ Features:
242
250
  ### Zigbee2MQTT
243
251
 
244
252
  <a href="https://github.com/Luligu/matterbridge-zigbee2mqtt">
245
- <img src="screenshot/Zigbee2MQTT.svg" alt="Zigbee2MQTT plugin logo" width="100" />
253
+ <img src="./screenshot/Zigbee2MQTT.svg" alt="Zigbee2MQTT plugin logo" width="100" />
246
254
  </a>
247
255
 
248
256
  Matterbridge zigbee2mqtt is a matterbridge production-level plugin that expose all zigbee2mqtt devices and groups to Matter.
@@ -252,7 +260,7 @@ No hub or dedicated hardware needed.
252
260
  ### Somfy tahoma
253
261
 
254
262
  <a href="https://github.com/Luligu/matterbridge-somfy-tahoma">
255
- <img src="screenshot/Somfy.svg" alt="Somfy plugin logo" width="100" />
263
+ <img src="./screenshot/Somfy.svg" alt="Somfy plugin logo" width="100" />
256
264
  </a>
257
265
 
258
266
  Matterbridge Somfy Tahoma is a matterbridge production-level plugin that expose the Somfy Tahoma screen devices to Matter.
@@ -260,17 +268,17 @@ Matterbridge Somfy Tahoma is a matterbridge production-level plugin that expose
260
268
  ### Home Assistant
261
269
 
262
270
  <a href="https://github.com/Luligu/matterbridge-hass">
263
- <img src="screenshot/HomeAssistant.svg" alt="Hass logo" width="100" />
271
+ <img src="./screenshot/HomeAssistant.svg" alt="Hass logo" width="100" />
264
272
  </a>
265
273
 
266
274
  Matterbridge Home Assistant plugin allows you to expose the Home Assistant devices and entities to Matter.
267
275
 
268
- It is the ideal companion of the official [Matterbridge Home Assistant Add-on](https://github.com/Luligu/matterbridge-home-assistant-addon/blob/main/README.md).
276
+ It is the ideal companion of the official [Matterbridge Home Assistant Add-on](https://github.com/Luligu/matterbridge-home-assistant-addon).
269
277
 
270
278
  ### Webhooks
271
279
 
272
280
  <a href="https://github.com/Luligu/matterbridge-webhooks">
273
- <img src="frontend/public/matterbridge.svg" alt="Matterbridge logo" width="100" />
281
+ <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge logo" width="100" />
274
282
  </a>
275
283
 
276
284
  Matterbridge Webhooks plugin allows you to expose any webhooks to Matter.
@@ -278,7 +286,7 @@ Matterbridge Webhooks plugin allows you to expose any webhooks to Matter.
278
286
  ### BTHome
279
287
 
280
288
  <a href="https://github.com/Luligu/matterbridge-webhooks">
281
- <img src="frontend/public/matterbridge.svg" alt="Matterbridge logo" width="100" />
289
+ <img src="https://matterbridge.io/matterbridge.svg" alt="Matterbridge logo" width="100" />
282
290
  </a>
283
291
 
284
292
  Matterbridge BTHome allows you to expose any BTHome device to Matter using the native bluetooth of the host machine.
@@ -370,58 +378,58 @@ On windows:
370
378
 
371
379
  ```powershell
372
380
  cd $HOME\Matterbridge
373
- npm install -g matterbridge-zigbee2mqtt
374
- matterbridge -add matterbridge-zigbee2mqtt
381
+ npm install -g matterbridge-zigbee2mqtt --omit=dev
382
+ matterbridge --add matterbridge-zigbee2mqtt
375
383
  ```
376
384
 
377
385
  On linux or macOS:
378
386
 
379
387
  ```bash
380
388
  cd ~/Matterbridge
381
- sudo npm install -g matterbridge-zigbee2mqtt
382
- matterbridge -add matterbridge-zigbee2mqtt
389
+ sudo npm install -g matterbridge-zigbee2mqtt --omit=dev
390
+ matterbridge --add matterbridge-zigbee2mqtt
383
391
  ```
384
392
 
385
393
  ## How to add a plugin to Matterbridge from a terminal
386
394
 
387
395
  ```bash
388
- matterbridge -add [plugin path or plugin name]
396
+ matterbridge --add [plugin path or plugin name]
389
397
  ```
390
398
 
391
399
  ## How to remove a plugin from Matterbridge from a terminal
392
400
 
393
401
  ```bash
394
- matterbridge -remove [plugin path or plugin name]
402
+ matterbridge --remove [plugin path or plugin name]
395
403
  ```
396
404
 
397
405
  ## How to disable a registered plugin from a terminal
398
406
 
399
407
  ```bash
400
- matterbridge -disable [plugin path or plugin name]
408
+ matterbridge --disable [plugin path or plugin name]
401
409
  ```
402
410
 
403
411
  ## How to enable a registered plugin from a terminal
404
412
 
405
413
  ```bash
406
- matterbridge -enable [plugin path or plugin name]
414
+ matterbridge --enable [plugin path or plugin name]
407
415
  ```
408
416
 
409
417
  ## How to remove the commissioning information for Matterbridge so you can pair it again (bridge mode). Shutdown Matterbridge before!
410
418
 
411
419
  ```bash
412
- matterbridge -reset
420
+ matterbridge --reset
413
421
  ```
414
422
 
415
423
  ## How to remove the commissioning information for a registered plugin so you can pair it again (childbridge mode). Shutdown Matterbridge before!
416
424
 
417
425
  ```bash
418
- matterbridge -reset [plugin path or plugin name]
426
+ matterbridge --reset [plugin path or plugin name]
419
427
  ```
420
428
 
421
429
  ## How to factory reset Matterbridge. Shutdown Matterbridge before!
422
430
 
423
431
  ```bash
424
- matterbridge -factoryreset
432
+ matterbridge --factoryreset
425
433
  ```
426
434
 
427
435
  This will reset the internal storages. All commissioning informations will be lost. All plugins will be unregistered.
@@ -438,7 +446,7 @@ Place your own certificates in the `.matterbridge/cert` directory:
438
446
  - `key.pem`
439
447
  - `ca.pem` (optional)
440
448
 
441
- ![image](screenshot/Screenshot%20Certificates.png)
449
+ ![image](./screenshot/Screenshot%20Certificates.png)
442
450
 
443
451
  Matterbridge looks first for .p12 certificate and if it is not found it looks for cert.pem and key.pem.
444
452
 
@@ -453,27 +461,27 @@ Matterbridge looks first for .p12 certificate and if it is not found it looks fo
453
461
 
454
462
  ### Change the command line
455
463
 
456
- Add the **-ssl** parameter to the command line.
464
+ Add the **--ssl** parameter to the command line.
457
465
 
458
466
  If desired, you can also change the frontend port with **-frontend 443**.
459
467
 
460
468
  ```bash
461
- matterbridge -ssl -frontend 443
469
+ matterbridge --ssl --frontend 443
462
470
  ```
463
471
 
464
- Add the **-mtls** parameter to the command line if you want Matterbridge to request the client (your browser) to authenticate itself (this is the most secure connection possible).
472
+ Add the **--mtls** parameter to the command line if you want Matterbridge to request the client (your browser) to authenticate itself (this is the most secure connection possible).
465
473
 
466
474
  The browser must provide the client certificate: on Windows you need to import it in Current User → Personal → Certificates with certmgr.msc.
467
475
 
468
476
  ```bash
469
- matterbridge -ssl -mtls -frontend 443
477
+ matterbridge --ssl --mtls --frontend 443
470
478
  ```
471
479
 
472
480
  ### Restart
473
481
 
474
482
  If the certificate are correctly configured, you will be able to connect with https to the frontend.
475
483
 
476
- ![image](screenshot/Screenshot%20Browser%20Secured.png)
484
+ ![image](./screenshot/Screenshot%20Browser%20Secured.png)
477
485
 
478
486
  ## How to send the debug log files
479
487
 
@@ -481,9 +489,9 @@ If the certificate are correctly configured, you will be able to connect with ht
481
489
 
482
490
  In the frontend, go to settings and enable debug mode as shown below:
483
491
 
484
- ![Debug Matterbridge Settings](screenshot/Screenshot%20Matterbridge%20Logger%20Debug.png)
492
+ ![Debug Matterbridge Settings](./screenshot/Screenshot%20Matterbridge%20Logger%20Debug.png)
485
493
 
486
- ![Debug Matter Settings](screenshot/Screenshot%20Matter%20Logger%20Debug.png)
494
+ ![Debug Matter Settings](./screenshot/Screenshot%20Matter%20Logger%20Debug.png)
487
495
 
488
496
  ### Restart
489
497
 
@@ -491,7 +499,7 @@ Wait a few minutes to allow the logs to to accumulate.
491
499
 
492
500
  Then, from the dots menu in the frontend, download the `matterbridge.log` and `matter.log` files.
493
501
 
494
- ![image](screenshot/Screenshot%20Debug%20Download%20Logs.png)
502
+ ![image](./screenshot/Screenshot%20Debug%20Download%20Logs.png)
495
503
 
496
504
  Don't forget to unselect the debug mode when is no more needed. The network traffic and cpu usage is very high in debug mode.
497
505
 
@@ -586,7 +594,7 @@ On my side I sponsor the packages that I use in this project. It would be nice t
586
594
  Click on the badge below to get started:
587
595
 
588
596
  <a href="https://www.buymeacoffee.com/luligugithub">
589
- <img src="bmc-button.svg" alt="Buy me a coffee" width="120">
597
+ <img src="https://matterbridge.io/bmc-button.svg" alt="Buy me a coffee" width="120">
590
598
  </a>
591
599
 
592
600
  Thank you for your support!
@@ -26,7 +26,7 @@ import { DeviceManager } from './deviceManager.js';
26
26
  import { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
27
27
  import { bridge } from './matterbridgeDeviceTypes.js';
28
28
  import { Frontend } from './frontend.js';
29
- import { addVirtualDevices } from './helpers.js';
29
+ import { addVirtualDevice, addVirtualDevices } from './helpers.js';
30
30
  import { BroadcastServer } from './broadcastServer.js';
31
31
  export class Matterbridge extends EventEmitter {
32
32
  systemInformation = {
@@ -1695,6 +1695,33 @@ export class Matterbridge extends EventEmitter {
1695
1695
  if (delay > 0)
1696
1696
  await wait(2000);
1697
1697
  }
1698
+ async addVirtualEndpoint(pluginName, name, type, callback) {
1699
+ const plugin = this.plugins.get(pluginName);
1700
+ if (!plugin) {
1701
+ this.log.error(`Error adding virtual endpoint ${dev}${name}${er} for plugin ${plg}${pluginName}${er}: plugin not found`);
1702
+ return false;
1703
+ }
1704
+ let aggregator;
1705
+ if (this.bridgeMode === 'bridge') {
1706
+ aggregator = this.aggregatorNode;
1707
+ }
1708
+ else if (this.bridgeMode === 'childbridge' && plugin.type === 'DynamicPlatform') {
1709
+ aggregator = plugin.aggregatorNode;
1710
+ }
1711
+ if (aggregator) {
1712
+ if (aggregator.parts.has(name.replaceAll(' ', '') + ':' + type)) {
1713
+ this.log.error(`Virtual endpoint ${dev}${name}${er} already registered for plugin ${plg}${pluginName}${er}. Please use a different name.`);
1714
+ return false;
1715
+ }
1716
+ else {
1717
+ await addVirtualDevice(aggregator, name.slice(0, 32), type, callback);
1718
+ this.log.info(`Created virtual endpoint ${dev}${name}${nf} for plugin ${plg}${pluginName}${nf}`);
1719
+ return true;
1720
+ }
1721
+ }
1722
+ this.log.error(`Virtual endpoint ${dev}${name}${er} for plugin ${plg}${pluginName}${er} not created. Virtual endpoints are only supported in bridge mode and childbridge mode with a DynamicPlatform.`);
1723
+ return false;
1724
+ }
1698
1725
  async subscribeAttributeChanged(plugin, device) {
1699
1726
  if (!plugin || !device || !device.plugin || !device.serialNumber || !device.uniqueId || !device.maybeNumber)
1700
1727
  return;
@@ -8,7 +8,6 @@ import { BridgedDeviceBasicInformation } from '@matter/types/clusters/bridged-de
8
8
  import { checkNotLatinCharacters } from './matterbridgeEndpointHelpers.js';
9
9
  import { bridgedNode } from './matterbridgeDeviceTypes.js';
10
10
  import { isValidArray, isValidObject, isValidString } from './utils/isvalid.js';
11
- import { addVirtualDevice } from './helpers.js';
12
11
  import { hasParameter } from './utils/commandLine.js';
13
12
  import { BroadcastServer } from './broadcastServer.js';
14
13
  export class MatterbridgePlatform {
@@ -167,26 +166,7 @@ export class MatterbridgePlatform {
167
166
  return this.#registeredEndpoints.has(deviceUniqueId);
168
167
  }
169
168
  async registerVirtualDevice(name, type, callback) {
170
- let aggregator;
171
- if (this.matterbridge.bridgeMode === 'bridge') {
172
- aggregator = this.matterbridge.aggregatorNode;
173
- }
174
- else if (this.matterbridge.bridgeMode === 'childbridge' && this.type === 'DynamicPlatform') {
175
- aggregator = this.matterbridge.plugins.get(this.name)?.aggregatorNode;
176
- }
177
- if (aggregator) {
178
- if (aggregator.parts.has(name.replaceAll(' ', '') + ':' + type)) {
179
- this.log.warn(`Virtual device ${name} already registered. Please use a different name.`);
180
- return false;
181
- }
182
- else {
183
- await addVirtualDevice(aggregator, name.slice(0, 32), type, callback);
184
- this.log.info(`Virtual device ${name} created.`);
185
- return true;
186
- }
187
- }
188
- this.log.warn(`Virtual device ${name} not created. Virtual devices are only supported in bridge mode and childbridge mode with a DynamicPlatform.`);
189
- return false;
169
+ return await this.matterbridge.addVirtualEndpoint(this.name, name, type, callback);
190
170
  }
191
171
  async registerDevice(device) {
192
172
  device.plugin = this.name;
package/marked.ps1 CHANGED
@@ -8,3 +8,18 @@
8
8
  (Get-Content .\docs\markedHeader.html) + (marked .\README-SERVICE.md) + (Get-Content .\docs\markedFooter.html) | Out-File .\docs\README-SERVICE.html -Encoding utf8
9
9
  (Get-Content .\docs\markedHeader.html) + (marked .\README.md) + (Get-Content .\docs\markedFooter.html) | Out-File .\docs\README.html -Encoding utf8
10
10
  (Get-Content .\docs\markedHeader.html) + (marked .\CHANGELOG.md) + (Get-Content .\docs\markedFooter.html) | Out-File .\docs\CHANGELOG.html -Encoding utf8
11
+
12
+ # Replace links from .md to .html in generated files
13
+ Get-ChildItem -Path docs -Filter *.html -Recurse |
14
+ Where-Object { $_.Name -notin @('index.html', 'markedHeader.html', 'markedFooter.html', '404.html', 'CHANGELOG.html') } |
15
+ ForEach-Object { (Get-Content $_.FullName -Raw) -replace '\.md', '.html' | Set-Content -Encoding UTF8 $_.FullName }
16
+
17
+ # Replace links from → to -> in generated files
18
+ Get-ChildItem -Path docs -Filter *.html -Recurse |
19
+ Where-Object { $_.Name -notin @('index.html', 'markedHeader.html', 'markedFooter.html', '404.html', 'CHANGELOG.html') } |
20
+ ForEach-Object { (Get-Content $_.FullName -Raw) -replace '→', '->' | Set-Content -Encoding UTF8 $_.FullName }
21
+
22
+ # Replace links from ✅ to '&#x2714;' in generated files
23
+ Get-ChildItem -Path docs -Filter *.html -Recurse |
24
+ Where-Object { $_.Name -notin @('index.html', 'markedHeader.html', 'markedFooter.html', '404.html', 'CHANGELOG.html') } |
25
+ ForEach-Object { (Get-Content $_.FullName -Raw) -replace '✅', '&#x2714;' | Set-Content -Encoding UTF8 $_.FullName }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge",
3
- "version": "3.4.1-dev-20251126-9e86094",
3
+ "version": "3.4.1-dev-20251127-826b2bf",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge",
9
- "version": "3.4.1-dev-20251126-9e86094",
9
+ "version": "3.4.1-dev-20251127-826b2bf",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@matter/main": "0.15.6",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge",
3
- "version": "3.4.1-dev-20251126-9e86094",
3
+ "version": "3.4.1-dev-20251127-826b2bf",
4
4
  "description": "Matterbridge plugin manager for Matter",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",