matterbridge 1.5.10 → 1.6.1

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.
Files changed (69) hide show
  1. package/CHANGELOG.md +42 -4
  2. package/README-SERVICE.md +1 -1
  3. package/README.md +11 -7
  4. package/dist/cli.d.ts +1 -1
  5. package/dist/cli.js +3 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/cluster/export.js +1 -1
  8. package/dist/cluster/export.js.map +1 -1
  9. package/dist/defaultConfigSchema.d.ts +1 -1
  10. package/dist/defaultConfigSchema.d.ts.map +1 -1
  11. package/dist/defaultConfigSchema.js +10 -2
  12. package/dist/defaultConfigSchema.js.map +1 -1
  13. package/dist/deviceManager.d.ts +1 -1
  14. package/dist/deviceManager.js +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/matterbridge.d.ts +92 -56
  18. package/dist/matterbridge.d.ts.map +1 -1
  19. package/dist/matterbridge.js +290 -155
  20. package/dist/matterbridge.js.map +1 -1
  21. package/dist/matterbridgeAccessoryPlatform.d.ts +1 -1
  22. package/dist/matterbridgeAccessoryPlatform.js +1 -1
  23. package/dist/matterbridgeController.d.ts +1 -1
  24. package/dist/matterbridgeController.js +1 -1
  25. package/dist/matterbridgeDevice.d.ts +137 -1029
  26. package/dist/matterbridgeDevice.d.ts.map +1 -1
  27. package/dist/matterbridgeDevice.js +55 -361
  28. package/dist/matterbridgeDevice.js.map +1 -1
  29. package/dist/matterbridgeDynamicPlatform.d.ts +1 -1
  30. package/dist/matterbridgeDynamicPlatform.js +1 -1
  31. package/dist/matterbridgeEdge.d.ts +90 -0
  32. package/dist/matterbridgeEdge.d.ts.map +1 -0
  33. package/dist/matterbridgeEdge.js +555 -0
  34. package/dist/matterbridgeEdge.js.map +1 -0
  35. package/dist/matterbridgeEndpoint.d.ts +5164 -0
  36. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  37. package/dist/matterbridgeEndpoint.js +2196 -0
  38. package/dist/matterbridgeEndpoint.js.map +1 -0
  39. package/dist/matterbridgePlatform.d.ts +1 -1
  40. package/dist/matterbridgePlatform.js +1 -1
  41. package/dist/matterbridgeTypes.d.ts +5 -0
  42. package/dist/matterbridgeTypes.d.ts.map +1 -1
  43. package/dist/matterbridgeTypes.js.map +1 -1
  44. package/dist/matterbridgeWebsocket.d.ts +49 -0
  45. package/dist/matterbridgeWebsocket.d.ts.map +1 -0
  46. package/dist/matterbridgeWebsocket.js +181 -0
  47. package/dist/matterbridgeWebsocket.js.map +1 -0
  48. package/dist/pluginManager.d.ts +135 -2
  49. package/dist/pluginManager.d.ts.map +1 -1
  50. package/dist/pluginManager.js +146 -13
  51. package/dist/pluginManager.js.map +1 -1
  52. package/dist/utils/colorUtils.d.ts +1 -1
  53. package/dist/utils/colorUtils.js +1 -1
  54. package/dist/utils/utils.d.ts +21 -1
  55. package/dist/utils/utils.d.ts.map +1 -1
  56. package/dist/utils/utils.js +57 -1
  57. package/dist/utils/utils.js.map +1 -1
  58. package/frontend/build/asset-manifest.json +3 -3
  59. package/frontend/build/index.html +1 -1
  60. package/frontend/build/static/js/{main.96d6324b.js → main.045d08f7.js} +3 -3
  61. package/frontend/build/static/js/main.045d08f7.js.map +1 -0
  62. package/npm-shrinkwrap.json +816 -6210
  63. package/package.json +2 -78
  64. package/dist/history/export.d.ts +0 -2
  65. package/dist/history/export.d.ts.map +0 -1
  66. package/dist/history/export.js +0 -2
  67. package/dist/history/export.js.map +0 -1
  68. package/frontend/build/static/js/main.96d6324b.js.map +0 -1
  69. /package/frontend/build/static/js/{main.96d6324b.js.LICENSE.txt → main.045d08f7.js.LICENSE.txt} +0 -0
package/CHANGELOG.md CHANGED
@@ -8,17 +8,55 @@ If you like this project and find it useful, please consider giving it a star on
8
8
 
9
9
  The Home Assistant Community Add-ons and plugins are not verified to work with Matterbridge. I strongly advise against using them. If you do use them and encounter an issue (which is likely because some do not meet the Matterbridge guidelines), please do not open an issue in the Matterbridge repository.
10
10
 
11
- If you want to run Matterbridge in Home Assistant please use the official add-on https://github.com/Luligu/matterbridge-home-assistant-addon.
11
+ If you want to run Matterbridge in Home Assistant please use the official add-on https://github.com/Luligu/matterbridge-home-assistant-addon that also has Ingress and side panel.
12
12
 
13
- ### New Apple firmware v. 18.0
13
+ ### New Apple firmware v. 18.x
14
14
 
15
15
  Please read this: https://github.com/Luligu/matterbridge/discussions/135
16
16
 
17
17
  ### Discord
18
18
 
19
- Tamer (https://github.com/tammeryousef1006) has created the Matterbridge Discord group: https://discord.gg/raWywpD4.
19
+ Tamer (https://github.com/tammeryousef1006) has created the Matterbridge Discord group: https://discord.gg/QX58CDe6hd.
20
20
 
21
- Feel free to join!
21
+ Feel free to join (the link is now permanent)!
22
+
23
+ ## [1.6.1] - 2024-11-02
24
+
25
+ ### Added
26
+
27
+ - [matterbridge]: Added automatic recovery for matterbridge node storage when it gets corrupted for a power outage or hardware failure. Unattended setups can automatically recover restoring the previous automatic backup.
28
+ - [matterbridge]: Added automatic recovery for matter storage when it gets corrupted for a power outage or hardware failure. Unattended setups can automatically recover restoring the previous automatic backup.
29
+ - [matterbridge]: Added parameter "-norestore" to avoid to restore automatically. In this case you need to manually restore the storages from a full backup made from the frontend.
30
+
31
+ ### Changed
32
+
33
+ - [loggers]: Logging on file keeps the logger level of the logger (matterbridge and matter logs).
34
+ - [matterbridge]: Added more api to WebSocket for the Matterbridge cockpit dashboard (Shelly gateway).
35
+ - [package]: Update dependencies.
36
+
37
+ <a href="https://www.buymeacoffee.com/luligugithub">
38
+ <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
39
+ </a>
40
+
41
+ ## [1.6.0] - 2024-10-28
42
+
43
+ ### Added
44
+
45
+ - [matterbridge]: Added WebSocket for the Matetrbridge cockpit dashboard (Shelly gateway).
46
+
47
+ ### Changed
48
+
49
+ - [discord]: Discord group link: https://discord.gg/QX58CDe6hd.
50
+ - [matterbridge]: Completed phase 1 of transition to edge (matter.js new API).
51
+ - [matterbridgeDevice]: Refactor Thermostat cluster method to accept minHeatSetpointLimit, maxHeatSetpointLimit, minCoolSetpointLimit and maxCoolSetpointLimit.
52
+ - [config]: The plugins config is rewritten only after onStart and no more after onConfigure (after the plugin starts is possible to change the plugins config and it will not be rewritten after the plugin configuration).
53
+ - [matterbridgeDevice]: Removed deprecated methods of ColorControl cluster.
54
+ - [package]: Removed EveHistory (it will be used only by single plugins).
55
+ - [package]: Update dependencies.
56
+
57
+ <a href="https://www.buymeacoffee.com/luligugithub">
58
+ <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
59
+ </a>
22
60
 
23
61
  ## [1.5.10] - 2024-10-01
24
62
 
package/README-SERVICE.md CHANGED
@@ -100,7 +100,7 @@ sudo systemctl disable matterbridge.service
100
100
  ### View the log of Matterbridge in real time (this will show the log with colors)
101
101
 
102
102
  ```
103
- sudo journalctl -u matterbridge.service -f --output cat
103
+ sudo journalctl -u matterbridge.service -n 1000 -f --output cat
104
104
  ```
105
105
 
106
106
  ### Delete the logs older then 3 days (all of them not only the ones of Matterbridge!)
package/README.md CHANGED
@@ -51,13 +51,13 @@ To run Matterbridge, you need either a [Node.js](https://nodejs.org/en/download/
51
51
  Follow these steps to install Matterbridge:
52
52
 
53
53
  ```
54
- npm install -g matterbridge
54
+ npm install -g matterbridge --omit=dev
55
55
  ```
56
56
 
57
57
  on Linux you may need the necessary permissions:
58
58
 
59
59
  ```
60
- sudo npm install -g matterbridge
60
+ sudo npm install -g matterbridge --omit=dev
61
61
  ```
62
62
 
63
63
  Test the installation with:
@@ -68,7 +68,7 @@ matterbridge
68
68
 
69
69
  Now it is possible to open the frontend at the link provided in the log (e.g. http://MATTERBIDGE-IPV4-ADDRESS:8283).
70
70
 
71
- You can then change the bridge mode from the frontend.
71
+ You can then change the bridge mode and other parameters from the frontend.
72
72
 
73
73
  ## Usage
74
74
 
@@ -128,19 +128,19 @@ Config editor:
128
128
 
129
129
  ### Run matterbridge as a daemon with systemctl (Linux only)
130
130
 
131
- [Advanced configurations](https://github.com/Luligu/matterbridge/blob/main/README-SERVICE.md)
131
+ [Service configurations](https://github.com/Luligu/matterbridge/blob/main/README-SERVICE.md)
132
132
 
133
133
  ### Run matterbridge with docker and docker compose
134
134
 
135
- [Advanced configurations](https://github.com/Luligu/matterbridge/blob/main/README-DOCKER.md)
135
+ [Docker configurations](https://github.com/Luligu/matterbridge/blob/main/README-DOCKER.md)
136
136
 
137
137
  ### Run matterbridge with podman
138
138
 
139
- [Advanced configurations](https://github.com/Luligu/matterbridge/blob/main/README-PODMAN.md)
139
+ [Podman configurations](https://github.com/Luligu/matterbridge/blob/main/README-PODMAN.md)
140
140
 
141
141
  ### Run matterbridge as an home assistant add-on with the official add-on
142
142
 
143
- [Advanced configurations](https://github.com/Luligu/matterbridge-home-assistant-addon)
143
+ [Home assistant add-on configurations](https://github.com/Luligu/matterbridge-home-assistant-addon)
144
144
 
145
145
  ### Other Home Assistant Community Add-ons
146
146
 
@@ -380,6 +380,8 @@ The HomePods, being a WiFi devices, sometimes pruduce message trasmission errors
380
380
 
381
381
  All issues have been solved from the version 17.5 of the HomePod/AppleTV. Now they are stable.
382
382
 
383
+ If you have more then one Apple TV or Home Pod, you can herve better results setting to disabled "Automatic Selection" in "Home Setting", "Home Hubs & Bridges". When "Automatic selection" is disabled, select your Apple Tv if you have one or any of your Home Pod. In this way you should not have anymore more then one session for fabric.
384
+
383
385
  ## Home Assistant
384
386
 
385
387
  So far is the only controller supporting some Matter 1.2 and 1.3 device type:
@@ -409,6 +411,8 @@ Other supported cluster:
409
411
 
410
412
  If you face a problem pairing to Google Home from Ios app the solution is there https://github.com/Luligu/matterbridge/issues/61.
411
413
 
414
+ If you face a problem changing the brightness check this for the explanation: https://github.com/Luligu/matterbridge-zigbee2mqtt/issues/80
415
+
412
416
  No other issues reported so far.
413
417
 
414
418
  ## Alexa
package/dist/cli.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  * @date 2023-12-29
8
8
  * @version 1.0.11
9
9
  *
10
- * Copyright 2023, 2024 Luca Liguori.
10
+ * Copyright 2023, 2024, 2025 Luca Liguori.
11
11
  *
12
12
  * Licensed under the Apache License, Version 2.0 (the "License");
13
13
  * you may not use this file except in compliance with the License.
package/dist/cli.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * @date 2023-12-29
8
8
  * @version 1.0.11
9
9
  *
10
- * Copyright 2023, 2024 Luca Liguori.
10
+ * Copyright 2023, 2024, 2025 Luca Liguori.
11
11
  *
12
12
  * Licensed under the Apache License, Version 2.0 (the "License");
13
13
  * you may not use this file except in compliance with the License.
@@ -59,10 +59,12 @@ async function restart() {
59
59
  async function update() {
60
60
  if (process.argv.includes('-debug'))
61
61
  console.log(cli + 'CLI: received update event, updating...' + rs);
62
+ // TODO: Implement update logic outside of matterbridge
62
63
  instance = await Matterbridge.loadInstance(true);
63
64
  registerHandlers();
64
65
  }
65
66
  process.title = 'matterbridge';
67
+ // Run the main function
66
68
  main().catch((error) => {
67
69
  console.error(er + `CLI: Matterbridge.loadInstance() failed with error: ${error}` + rs);
68
70
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,+BAA+B;AAC/B,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,IAAI,QAAkC,CAAC;AACvC,MAAM,GAAG,GAAG,YAAY,CAAC;AACzB,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAC5B,MAAM,EAAE,GAAG,cAAc,CAAC;AAE1B,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;IACvG,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC;IACnB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;AACzG,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,QAAQ;QAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ;QAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,IAAI,QAAQ;QAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,0CAA0C,GAAG,EAAE,CAAC,CAAC;IACxG,cAAc;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;IACvG,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;IACvG,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC;AAE/B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,uDAAuD,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1F,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,+BAA+B;AAC/B,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,IAAI,QAAkC,CAAC;AACvC,MAAM,GAAG,GAAG,YAAY,CAAC;AACzB,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAC5B,MAAM,EAAE,GAAG,cAAc,CAAC;AAE1B,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;IACvG,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC;IACnB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;AACzG,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,QAAQ;QAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ;QAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,IAAI,QAAQ;QAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,0CAA0C,GAAG,EAAE,CAAC,CAAC;IACxG,cAAc;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;IACvG,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,yCAAyC,GAAG,EAAE,CAAC,CAAC;IACvG,uDAAuD;IACvD,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC;AAE/B,wBAAwB;AACxB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,uDAAuD,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1F,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export {};
2
- // Nothing to export
2
+ // Nothing to export right now
3
3
  //# sourceMappingURL=export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/cluster/export.ts"],"names":[],"mappings":";AAAA,oBAAoB"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/cluster/export.ts"],"names":[],"mappings":";AAAA,8BAA8B"}
@@ -6,7 +6,7 @@
6
6
  * @date 2024-05-07
7
7
  * @version 1.0.1
8
8
  *
9
- * Copyright 2024 Luca Liguori.
9
+ * Copyright 2024, 2025, 2026 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfigSchema.d.ts","sourceRoot":"","sources":["../src/defaultConfigSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,cAiBhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAWhC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAwB3B,CAAC"}
1
+ {"version":3,"file":"defaultConfigSchema.d.ts","sourceRoot":"","sources":["../src/defaultConfigSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,cAiBhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAWhC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAgC3B,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * @date 2024-05-07
7
7
  * @version 1.0.1
8
8
  *
9
- * Copyright 2024 Luca Liguori.
9
+ * Copyright 2024, 2025, 2026 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
@@ -56,11 +56,19 @@ export const shelly_config = {
56
56
  username: '',
57
57
  password: '',
58
58
  exposeSwitch: 'switch',
59
+ switchList: [],
60
+ lightList: [],
61
+ outletList: [],
59
62
  exposeInput: 'momentary',
63
+ inputContactList: [],
64
+ inputMomentaryList: [],
65
+ inputLatchingList: [],
60
66
  exposeInputEvent: 'momentary',
61
- exposePowerMeter: 'disabled',
67
+ inputEventList: [],
68
+ exposePowerMeter: 'matter13',
62
69
  blackList: [],
63
70
  whiteList: [],
71
+ nocacheList: [],
64
72
  deviceIp: {},
65
73
  enableMdnsDiscover: true,
66
74
  enableStorageDiscover: true,
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfigSchema.js","sourceRoot":"","sources":["../src/defaultConfigSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,EAAE;IAC1B,KAAK,EAAE,KAAK;IACZ,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE,EAAE;IACpB,KAAK,EAAE,KAAK;IACZ,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,WAAW;IACxB,gBAAgB,EAAE,WAAW;IAC7B,gBAAgB,EAAE,UAAU;IAC5B,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;IACZ,kBAAkB,EAAE,IAAI;IACxB,qBAAqB,EAAE,IAAI;IAC3B,oBAAoB,EAAE,KAAK;IAC3B,oBAAoB,EAAE,KAAK;IAC3B,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
1
+ {"version":3,"file":"defaultConfigSchema.js","sourceRoot":"","sources":["../src/defaultConfigSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,EAAE;IAC1B,KAAK,EAAE,KAAK;IACZ,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE,EAAE;IACpB,KAAK,EAAE,KAAK;IACZ,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,WAAW;IACxB,gBAAgB,EAAE,EAAE;IACpB,kBAAkB,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE;IACrB,gBAAgB,EAAE,WAAW;IAC7B,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,UAAU;IAC5B,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,EAAE;IACZ,kBAAkB,EAAE,IAAI;IACxB,qBAAqB,EAAE,IAAI;IAC3B,oBAAoB,EAAE,KAAK;IAC3B,oBAAoB,EAAE,KAAK;IAC3B,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * @date 2024-07-26
7
7
  * @version 1.0.8
8
8
  *
9
- * Copyright 2024, 2025 Luca Liguori.
9
+ * Copyright 2024, 2025, 2026 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
@@ -6,7 +6,7 @@
6
6
  * @date 2024-07-26
7
7
  * @version 1.0.8
8
8
  *
9
- * Copyright 2024, 2025 Luca Liguori.
9
+ * Copyright 2024, 2025, 2026 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * @date 2023-12-29
7
7
  * @version 1.0.6
8
8
  *
9
- * Copyright 2023, 2024 Luca Liguori.
9
+ * Copyright 2023, 2024, 2025 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * @date 2023-12-29
7
7
  * @version 1.0.6
8
8
  *
9
- * Copyright 2023, 2024 Luca Liguori.
9
+ * Copyright 2023, 2024, 2025 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
@@ -21,9 +21,17 @@
21
21
  * limitations under the License. *
22
22
  */
23
23
  import EventEmitter from 'events';
24
+ import WebSocket from 'ws';
25
+ import { NodeStorageManager, NodeStorage } from 'node-persist-manager';
24
26
  import { AnsiLogger } from 'node-ansi-logger';
25
27
  import { MatterbridgeDevice } from './matterbridgeDevice.js';
26
- import { MatterbridgeInformation, SanitizedExposedFabricInformation, SanitizedSessionInformation, SystemInformation } from './matterbridgeTypes.js';
28
+ import { BaseRegisteredPlugin, MatterbridgeInformation, SanitizedExposedFabricInformation, SanitizedSessionInformation, SystemInformation } from './matterbridgeTypes.js';
29
+ import { PluginManager } from './pluginManager.js';
30
+ import { DeviceManager } from './deviceManager.js';
31
+ import { CommissioningController, CommissioningServer, MatterServer } from '@project-chip/matter-node.js';
32
+ import { DeviceTypeId, VendorId } from '@project-chip/matter-node.js/datatype';
33
+ import { Aggregator } from '@project-chip/matter-node.js/device';
34
+ import { StorageContext, StorageManager } from '@project-chip/matter-node.js/storage';
27
35
  /**
28
36
  * Represents the Matterbridge application.
29
37
  */
@@ -47,44 +55,47 @@ export declare class Matterbridge extends EventEmitter {
47
55
  restartMode: 'service' | 'docker' | '';
48
56
  profile: string | undefined;
49
57
  log: AnsiLogger;
50
- private matterbrideLoggerFile;
51
- private matterLoggerFile;
52
- private plugins;
53
- private devices;
54
- private nodeStorage;
55
- private nodeContext;
56
- private matterStorageName;
57
- private nodeStorageName;
58
+ protected matterbrideLoggerFile: string;
59
+ protected matterLoggerFile: string;
60
+ protected plugins: PluginManager;
61
+ protected devices: DeviceManager;
62
+ protected nodeStorage: NodeStorageManager | undefined;
63
+ protected nodeContext: NodeStorage | undefined;
64
+ protected matterStorageName: string;
65
+ protected nodeStorageName: string;
58
66
  private hasCleanupStarted;
59
67
  private initialized;
60
68
  private execRunningCount;
61
69
  private startMatterInterval;
62
- private cleanupTimeout1;
63
- private cleanupTimeout2;
64
70
  private checkUpdateInterval;
65
71
  private configureTimeout;
66
72
  private reachabilityTimeout;
67
73
  private sigintHandler;
68
74
  private sigtermHandler;
75
+ private exceptionHandler;
76
+ private rejectionHandler;
69
77
  private expressApp;
70
78
  private httpServer;
71
79
  private httpsServer;
72
80
  private webSocketServer;
73
- private mdnsInterface;
74
- private ipv4address;
75
- private ipv6address;
76
- private port;
77
- private passcode?;
78
- private discriminator?;
79
- private storageManager;
80
- private matterbridgeContext;
81
- private mattercontrollerContext;
82
- private matterServer;
83
- private matterAggregator;
84
- private commissioningServer;
85
- private commissioningController;
86
- private static instance;
87
- private constructor();
81
+ protected mdnsInterface: string | undefined;
82
+ protected ipv4address: string | undefined;
83
+ protected ipv6address: string | undefined;
84
+ protected port: number;
85
+ protected passcode?: number;
86
+ protected discriminator?: number;
87
+ protected storageManager: StorageManager | undefined;
88
+ protected matterbridgeContext: StorageContext | undefined;
89
+ protected mattercontrollerContext: StorageContext | undefined;
90
+ protected matterServer: MatterServer | undefined;
91
+ protected matterAggregator: Aggregator | undefined;
92
+ protected commissioningServer: CommissioningServer | undefined;
93
+ protected commissioningController: CommissioningController | undefined;
94
+ protected aggregatorVendorId: VendorId;
95
+ protected aggregatorProductId: number;
96
+ protected static instance: Matterbridge | undefined;
97
+ protected constructor();
98
+ matterbridgeMessageHandler: (client: WebSocket, message: WebSocket.RawData) => Promise<void>;
88
99
  /** ***********************************************************************************************************************************/
89
100
  /** loadInstance() and cleanup() methods */
90
101
  /** ***********************************************************************************************************************************/
@@ -120,14 +131,23 @@ export declare class Matterbridge extends EventEmitter {
120
131
  */
121
132
  private parseCommandLine;
122
133
  /**
123
- * Registers the signal handlers for SIGINT and SIGTERM.
134
+ * Asynchronously loads and starts the registered plugins.
135
+ *
136
+ * This method is responsible for initializing and staarting all enabled plugins.
137
+ * It ensures that each plugin is properly loaded and started before the ridge starts.
138
+ *
139
+ * @returns {Promise<void>} A promise that resolves when all plugins have been loaded and started.
140
+ */
141
+ private startPlugins;
142
+ /**
143
+ * Registers the process handlers for uncaughtException, unhandledRejection, SIGINT and SIGTERM.
124
144
  * When either of these signals are received, the cleanup method is called with an appropriate message.
125
145
  */
126
- private registerSignalHandlers;
146
+ private registerProcessHandlers;
127
147
  /**
128
- * Deregisters the SIGINT and SIGTERM signal handlers.
148
+ * Deregisters the process uncaughtException, unhandledRejection, SIGINT and SIGTERM signal handlers.
129
149
  */
130
- private deregisterSignalHandlers;
150
+ private deregisterProcesslHandlers;
131
151
  /**
132
152
  * Logs the node and system information.
133
153
  */
@@ -177,15 +197,15 @@ export declare class Matterbridge extends EventEmitter {
177
197
  /**
178
198
  * Update matterbridge and cleanup.
179
199
  */
180
- private updateProcess;
200
+ protected updateProcess(): Promise<void>;
181
201
  /**
182
202
  * Restarts the process by spawning a new process and exiting the current process.
183
203
  */
184
- private restartProcess;
204
+ protected restartProcess(): Promise<void>;
185
205
  /**
186
206
  * Shut down the process by exiting the current process.
187
207
  */
188
- private shutdownProcess;
208
+ protected shutdownProcess(): Promise<void>;
189
209
  /**
190
210
  * Shut down the process and reset.
191
211
  */
@@ -204,7 +224,7 @@ export declare class Matterbridge extends EventEmitter {
204
224
  * @param restart - Indicates whether to restart the instance after cleanup. Default is `false`.
205
225
  * @returns A promise that resolves when the cleanup is completed.
206
226
  */
207
- private cleanup;
227
+ protected cleanup(message: string, restart?: boolean): Promise<void>;
208
228
  /**
209
229
  * Adds a bridged device to the Matterbridge.
210
230
  * @param pluginName - The name of the plugin.
@@ -226,25 +246,24 @@ export declare class Matterbridge extends EventEmitter {
226
246
  * @returns A promise that resolves when all devices have been removed.
227
247
  */
228
248
  removeAllBridgedDevices(pluginName: string): Promise<void>;
229
- private startTest;
230
249
  /**
231
250
  * Starts the Matterbridge in bridge mode.
232
251
  * @private
233
252
  * @returns {Promise<void>} A promise that resolves when the Matterbridge is started.
234
253
  */
235
- private startBridge;
254
+ protected startBridge(): Promise<void>;
236
255
  /**
237
256
  * Starts the Matterbridge in childbridge mode.
238
257
  * @private
239
258
  * @returns {Promise<void>} A promise that resolves when the Matterbridge is started.
240
259
  */
241
- private startChildbridge;
260
+ protected startChildbridge(): Promise<void>;
242
261
  /**
243
262
  * Starts the Matterbridge controller.
244
263
  * @private
245
264
  * @returns {Promise<void>} A promise that resolves when the Matterbridge is started.
246
265
  */
247
- private startController;
266
+ protected startController(): Promise<void>;
248
267
  /** ***********************************************************************************************************************************/
249
268
  /** Matter.js methods */
250
269
  /** ***********************************************************************************************************************************/
@@ -254,40 +273,47 @@ export declare class Matterbridge extends EventEmitter {
254
273
  * @param {string} storageName - The name of the storage file.
255
274
  * @returns {Promise<void>} - A promise that resolves when the storage process is started.
256
275
  */
257
- private startMatterStorage;
276
+ protected startMatterStorage(storageType: string, storageName: string): Promise<void>;
258
277
  /**
259
278
  * Makes a backup copy of the specified matter JSON storage file.
260
279
  *
261
280
  * @param storageName - The name of the JSON storage file to be backed up.
262
281
  * @param backupName - The name of the backup file to be created.
263
282
  */
264
- private backupJsonMatterStorage;
283
+ protected backupMatterStorage(storageName: string, backupName: string): Promise<void>;
284
+ /**
285
+ * Restore the specified matter JSON storage file.
286
+ *
287
+ * @param backupName - The name of the backup file to restore from.
288
+ * @param storageName - The name of the JSON storage file to restored.
289
+ */
290
+ protected restoreMatterStorage(backupName: string, storageName: string): Promise<void>;
265
291
  /**
266
292
  * Stops the matter storage.
267
293
  * @returns {Promise<void>} A promise that resolves when the storage is stopped.
268
294
  */
269
- private stopMatterStorage;
295
+ protected stopMatterStorage(): Promise<void>;
270
296
  /**
271
297
  * Creates a Matter server using the provided storage manager and the provided mdnsInterface.
272
298
  * @param storageManager The storage manager to be used by the Matter server.
273
299
  *
274
300
  */
275
- private createMatterServer;
301
+ protected createMatterServer(storageManager: StorageManager): MatterServer;
276
302
  /**
277
303
  * Starts the Matter server.
278
304
  * If the Matter server is not initialized, it logs an error and performs cleanup.
279
305
  */
280
- private startMatterServer;
306
+ protected startMatterServer(): Promise<void>;
281
307
  /**
282
308
  * Stops the Matter server, commissioningServer and commissioningController.
283
309
  */
284
- private stopMatterServer;
310
+ protected stopMatterServer(): Promise<void>;
285
311
  /**
286
312
  * Creates a Matter Aggregator.
287
313
  * @param {StorageContext} context - The storage context.
288
314
  * @returns {Aggregator} - The created Matter Aggregator.
289
315
  */
290
- private createMatterAggregator;
316
+ protected createMatterAggregator(context: StorageContext, pluginName: string): Promise<Aggregator>;
291
317
  /**
292
318
  * Creates a matter commissioning server.
293
319
  *
@@ -295,7 +321,7 @@ export declare class Matterbridge extends EventEmitter {
295
321
  * @param {string} pluginName - The name of the commissioning server.
296
322
  * @returns {CommissioningServer} The created commissioning server.
297
323
  */
298
- private createCommisioningServer;
324
+ protected createCommisioningServer(context: StorageContext, pluginName: string): Promise<CommissioningServer>;
299
325
  /**
300
326
  * Creates a commissioning server storage context.
301
327
  *
@@ -314,7 +340,7 @@ export declare class Matterbridge extends EventEmitter {
314
340
  * @param hardwareVersionString - The hardware version string of the device (optional).
315
341
  * @returns The storage context for the commissioning server.
316
342
  */
317
- private createCommissioningServerContext;
343
+ protected createCommissioningServerContext(pluginName: string, deviceName: string, deviceType: DeviceTypeId, vendorId: number, vendorName: string, productId: number, productName: string): Promise<StorageContext>;
318
344
  /**
319
345
  * Imports the commissioning server context for a specific plugin and device.
320
346
  * @param pluginName - The name of the plugin.
@@ -322,7 +348,7 @@ export declare class Matterbridge extends EventEmitter {
322
348
  * @returns The commissioning server context.
323
349
  * @throws Error if the BasicInformationCluster is not found.
324
350
  */
325
- private importCommissioningServerContext;
351
+ protected importCommissioningServerContext(pluginName: string, device: MatterbridgeDevice): Promise<StorageContext>;
326
352
  /**
327
353
  * Shows the commissioning server QR code for a given plugin.
328
354
  * @param {CommissioningServer} commissioningServer - The commissioning server instance.
@@ -331,7 +357,7 @@ export declare class Matterbridge extends EventEmitter {
331
357
  * @param {string} pluginName - The name of the plugin of Matterbridge in bridge mode.
332
358
  * @returns {Promise<void>} - A promise that resolves when the QR code is shown.
333
359
  */
334
- private showCommissioningQRCode;
360
+ protected showCommissioningQRCode(commissioningServer: CommissioningServer | undefined, storageContext: StorageContext | undefined, nodeContext: NodeStorage | undefined, pluginName: string): Promise<void>;
335
361
  /**
336
362
  * Sanitizes the fabric information by converting bigint properties to string cause res.json doesn't know bigint.
337
363
  *
@@ -352,33 +378,33 @@ export declare class Matterbridge extends EventEmitter {
352
378
  * @param {CommissioningServer} commissioningServer - The commissioning server to set the reachability for.
353
379
  * @param {boolean} reachable - The new reachability status.
354
380
  */
355
- private setCommissioningServerReachability;
381
+ protected setCommissioningServerReachability(commissioningServer: CommissioningServer, reachable: boolean): void;
356
382
  /**
357
383
  * Sets the reachability of the specified matter aggregator and its bridged devices and trigger.
358
384
  * @param {Aggregator} matterAggregator - The matter aggregator to set the reachability for.
359
385
  * @param {boolean} reachable - A boolean indicating the reachability status to set.
360
386
  */
361
- private setAggregatorReachability;
387
+ protected setAggregatorReachability(matterAggregator: Aggregator, reachable: boolean): void;
362
388
  /**
363
389
  * Sets the reachability of a device and trigger.
364
390
  *
365
391
  * @param {MatterbridgeDevice} device - The device to set the reachability for.
366
392
  * @param {boolean} reachable - The new reachability status of the device.
367
393
  */
368
- private setDeviceReachability;
394
+ protected setDeviceReachability(device: MatterbridgeDevice, reachable: boolean): void;
369
395
  private getVendorIdName;
370
396
  /**
371
397
  * Retrieves the base registered plugins sanitized for res.json().
372
398
  * @returns {BaseRegisteredPlugin[]} A promise that resolves to an array of BaseRegisteredPlugin objects.
373
399
  */
374
- private getBaseRegisteredPlugins;
400
+ protected getBaseRegisteredPlugins(): Promise<BaseRegisteredPlugin[]>;
375
401
  /**
376
402
  * Spawns a child process with the given command and arguments.
377
403
  * @param {string} command - The command to execute.
378
404
  * @param {string[]} args - The arguments to pass to the command (default: []).
379
- * @returns {Promise<void>} A promise that resolves when the child process exits successfully, or rejects if there is an error.
405
+ * @returns {Promise<boolean>} A promise that resolves when the child process exits successfully, or rejects if there is an error.
380
406
  */
381
- private spawnCommand;
407
+ protected spawnCommand(command: string, args?: string[]): Promise<boolean>;
382
408
  /**
383
409
  * Sends a WebSocket message to all connected clients.
384
410
  *
@@ -388,6 +414,16 @@ export declare class Matterbridge extends EventEmitter {
388
414
  * @param {string} message - The content of the message.
389
415
  */
390
416
  private wssSendMessage;
417
+ /**
418
+ * Sends a need to refresh WebSocket message to all connected clients.
419
+ *
420
+ */
421
+ private wssSendRefreshRequired;
422
+ /**
423
+ * Sends a need to restart WebSocket message to all connected clients.
424
+ *
425
+ */
426
+ private wssSendRestartRequired;
391
427
  /**
392
428
  * Initializes the frontend of Matterbridge.
393
429
  *
@@ -399,7 +435,7 @@ export declare class Matterbridge extends EventEmitter {
399
435
  * @param {MatterbridgeDevice} device - The MatterbridgeDevice object.
400
436
  * @returns {string} The attributes description of the cluster servers in the device.
401
437
  */
402
- private getClusterTextFromDevice;
438
+ protected getClusterTextFromDevice(device: MatterbridgeDevice): string;
403
439
  /**
404
440
  * Initializes the Matterbridge instance as extension for zigbee2mqtt.
405
441
  * @deprecated This method is deprecated and will be removed in a future version.