matterbridge 3.0.0-edge.7 → 3.0.0

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 (163) hide show
  1. package/CHANGELOG.md +52 -9
  2. package/README-DEV.md +4 -0
  3. package/README-DOCKER.md +21 -12
  4. package/README-SERVICE.md +27 -21
  5. package/README.md +80 -2
  6. package/dist/cli.d.ts +29 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +41 -3
  9. package/dist/cli.js.map +1 -0
  10. package/dist/cluster/export.d.ts +2 -0
  11. package/dist/cluster/export.d.ts.map +1 -0
  12. package/dist/cluster/export.js +2 -0
  13. package/dist/cluster/export.js.map +1 -0
  14. package/dist/defaultConfigSchema.d.ts +27 -0
  15. package/dist/defaultConfigSchema.d.ts.map +1 -0
  16. package/dist/defaultConfigSchema.js +23 -0
  17. package/dist/defaultConfigSchema.js.map +1 -0
  18. package/dist/deviceManager.d.ts +114 -0
  19. package/dist/deviceManager.d.ts.map +1 -0
  20. package/dist/deviceManager.js +94 -1
  21. package/dist/deviceManager.js.map +1 -0
  22. package/dist/frontend.d.ts +222 -0
  23. package/dist/frontend.d.ts.map +1 -0
  24. package/dist/frontend.js +443 -35
  25. package/dist/frontend.js.map +1 -0
  26. package/dist/index.d.ts +35 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +28 -1
  29. package/dist/index.js.map +1 -0
  30. package/dist/logger/export.d.ts +2 -0
  31. package/dist/logger/export.d.ts.map +1 -0
  32. package/dist/logger/export.js +1 -0
  33. package/dist/logger/export.js.map +1 -0
  34. package/dist/matter/behaviors.d.ts +2 -0
  35. package/dist/matter/behaviors.d.ts.map +1 -0
  36. package/dist/matter/behaviors.js +2 -0
  37. package/dist/matter/behaviors.js.map +1 -0
  38. package/dist/matter/clusters.d.ts +2 -0
  39. package/dist/matter/clusters.d.ts.map +1 -0
  40. package/dist/matter/clusters.js +2 -0
  41. package/dist/matter/clusters.js.map +1 -0
  42. package/dist/matter/devices.d.ts +2 -0
  43. package/dist/matter/devices.d.ts.map +1 -0
  44. package/dist/matter/devices.js +2 -0
  45. package/dist/matter/devices.js.map +1 -0
  46. package/dist/matter/endpoints.d.ts +2 -0
  47. package/dist/matter/endpoints.d.ts.map +1 -0
  48. package/dist/matter/endpoints.js +2 -0
  49. package/dist/matter/endpoints.js.map +1 -0
  50. package/dist/matter/export.d.ts +5 -0
  51. package/dist/matter/export.d.ts.map +1 -0
  52. package/dist/matter/export.js +2 -0
  53. package/dist/matter/export.js.map +1 -0
  54. package/dist/matter/types.d.ts +3 -0
  55. package/dist/matter/types.d.ts.map +1 -0
  56. package/dist/matter/types.js +2 -0
  57. package/dist/matter/types.js.map +1 -0
  58. package/dist/matterbridge.d.ts +431 -0
  59. package/dist/matterbridge.d.ts.map +1 -0
  60. package/dist/matterbridge.js +800 -79
  61. package/dist/matterbridge.js.map +1 -0
  62. package/dist/matterbridgeAccessoryPlatform.d.ts +40 -0
  63. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  64. package/dist/matterbridgeAccessoryPlatform.js +34 -0
  65. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  66. package/dist/matterbridgeBehaviors.d.ts +1514 -0
  67. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  68. package/dist/matterbridgeBehaviors.js +33 -1
  69. package/dist/matterbridgeBehaviors.js.map +1 -0
  70. package/dist/matterbridgeDeviceTypes.d.ts +494 -0
  71. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  72. package/dist/matterbridgeDeviceTypes.js +431 -12
  73. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  74. package/dist/matterbridgeDynamicPlatform.d.ts +40 -0
  75. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  76. package/dist/matterbridgeDynamicPlatform.js +34 -0
  77. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  78. package/dist/matterbridgeEndpoint.d.ts +943 -0
  79. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  80. package/dist/matterbridgeEndpoint.js +806 -7
  81. package/dist/matterbridgeEndpoint.js.map +1 -0
  82. package/dist/matterbridgeEndpointHelpers.d.ts +2706 -0
  83. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  84. package/dist/matterbridgeEndpointHelpers.js +156 -9
  85. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  86. package/dist/matterbridgePlatform.d.ts +294 -0
  87. package/dist/matterbridgePlatform.d.ts.map +1 -0
  88. package/dist/matterbridgePlatform.js +227 -9
  89. package/dist/matterbridgePlatform.js.map +1 -0
  90. package/dist/matterbridgeTypes.d.ts +187 -0
  91. package/dist/matterbridgeTypes.d.ts.map +1 -0
  92. package/dist/matterbridgeTypes.js +24 -0
  93. package/dist/matterbridgeTypes.js.map +1 -0
  94. package/dist/pluginManager.d.ts +271 -0
  95. package/dist/pluginManager.d.ts.map +1 -0
  96. package/dist/pluginManager.js +262 -3
  97. package/dist/pluginManager.js.map +1 -0
  98. package/dist/shelly.d.ts +92 -0
  99. package/dist/shelly.d.ts.map +1 -0
  100. package/dist/shelly.js +146 -6
  101. package/dist/shelly.js.map +1 -0
  102. package/dist/storage/export.d.ts +2 -0
  103. package/dist/storage/export.d.ts.map +1 -0
  104. package/dist/storage/export.js +1 -0
  105. package/dist/storage/export.js.map +1 -0
  106. package/dist/update.d.ts +32 -0
  107. package/dist/update.d.ts.map +1 -0
  108. package/dist/update.js +70 -0
  109. package/dist/update.js.map +1 -0
  110. package/dist/utils/colorUtils.d.ts +61 -0
  111. package/dist/utils/colorUtils.d.ts.map +1 -0
  112. package/dist/utils/colorUtils.js +205 -2
  113. package/dist/utils/colorUtils.js.map +1 -0
  114. package/dist/utils/copyDirectory.d.ts +32 -0
  115. package/dist/utils/copyDirectory.d.ts.map +1 -0
  116. package/dist/utils/copyDirectory.js +37 -1
  117. package/dist/utils/copyDirectory.js.map +1 -0
  118. package/dist/utils/createZip.d.ts +38 -0
  119. package/dist/utils/createZip.d.ts.map +1 -0
  120. package/dist/utils/createZip.js +42 -2
  121. package/dist/utils/createZip.js.map +1 -0
  122. package/dist/utils/deepCopy.d.ts +31 -0
  123. package/dist/utils/deepCopy.d.ts.map +1 -0
  124. package/dist/utils/deepCopy.js +40 -0
  125. package/dist/utils/deepCopy.js.map +1 -0
  126. package/dist/utils/deepEqual.d.ts +53 -0
  127. package/dist/utils/deepEqual.d.ts.map +1 -0
  128. package/dist/utils/deepEqual.js +65 -1
  129. package/dist/utils/deepEqual.js.map +1 -0
  130. package/dist/utils/export.d.ts +10 -0
  131. package/dist/utils/export.d.ts.map +1 -0
  132. package/dist/utils/export.js +1 -0
  133. package/dist/utils/export.js.map +1 -0
  134. package/dist/utils/isvalid.d.ts +87 -0
  135. package/dist/utils/isvalid.d.ts.map +1 -0
  136. package/dist/utils/isvalid.js +86 -0
  137. package/dist/utils/isvalid.js.map +1 -0
  138. package/dist/utils/network.d.ts +69 -0
  139. package/dist/utils/network.d.ts.map +1 -0
  140. package/dist/utils/network.js +76 -5
  141. package/dist/utils/network.js.map +1 -0
  142. package/dist/utils/parameter.d.ts +58 -0
  143. package/dist/utils/parameter.d.ts.map +1 -0
  144. package/dist/utils/parameter.js +92 -7
  145. package/dist/utils/parameter.js.map +1 -0
  146. package/dist/utils/wait.d.ts +43 -0
  147. package/dist/utils/wait.d.ts.map +1 -0
  148. package/dist/utils/wait.js +50 -5
  149. package/dist/utils/wait.js.map +1 -0
  150. package/frontend/build/asset-manifest.json +6 -6
  151. package/frontend/build/bmc-button.svg +22 -0
  152. package/frontend/build/discord.svg +5 -0
  153. package/frontend/build/index.html +1 -1
  154. package/frontend/build/static/css/{main.ea7910e9.css → main.944b63c3.css} +2 -2
  155. package/frontend/build/static/css/main.944b63c3.css.map +1 -0
  156. package/frontend/build/static/js/{main.e11d6bb4.js → main.1d983660.js} +12 -12
  157. package/frontend/build/static/js/{main.e11d6bb4.js.map → main.1d983660.js.map} +1 -1
  158. package/npm-shrinkwrap.json +300 -362
  159. package/package.json +5 -4
  160. package/tsconfig.jest.json +8 -0
  161. package/README-EDGE.md +0 -74
  162. package/frontend/build/static/css/main.ea7910e9.css.map +0 -1
  163. /package/frontend/build/static/js/{main.e11d6bb4.js.LICENSE.txt → main.1d983660.js.LICENSE.txt} +0 -0
package/CHANGELOG.md CHANGED
@@ -13,10 +13,6 @@ If you like this project and find it useful, please consider giving it a star on
13
13
  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.
14
14
  It is also available the official Matterbridge Home Assistant plugin https://github.com/Luligu/matterbridge-hass.
15
15
 
16
- ### Discord
17
-
18
- Tamer (https://github.com/tammeryousef1006) has created the Matterbridge Discord group: https://discord.gg/QX58CDe6hd.
19
-
20
16
  ## New plugin matterbridge-webhooks
21
17
 
22
18
  A new plugin has been added: https://github.com/Luligu/matterbridge-webhooks
@@ -31,7 +27,7 @@ Features:
31
27
 
32
28
  ## Breaking changes
33
29
 
34
- Matter 1.4
30
+ This release brings Matter 1.4.
35
31
 
36
32
  New device types:
37
33
 
@@ -42,7 +38,7 @@ Modified clusters:
42
38
 
43
39
  - OccupancySensing cluster.
44
40
 
45
- ## [3.0.0] - 2025-04-??
41
+ ## [3.0.0] - 2025-04-29
46
42
 
47
43
  ### Added
48
44
 
@@ -51,20 +47,67 @@ Modified clusters:
51
47
  - [endpoint]: Added createBaseFanControlClusterServer().
52
48
  - [endpoint]: Added createDefaultHepaFilterMonitoringClusterServer().
53
49
  - [endpoint]: Added createDefaultActivatedCarbonFilterMonitoringClusterServer().
54
- - [deviceTypes]: Added Robotic device type.
55
- - [deviceTypes]: Added Appliances device types.
50
+ - [endpoint]: Added createDefaultThermostatUserInterfaceConfigurationClusterServer().
51
+ - [deviceTypes]: Added Robotic device type (please read https://github.com/Luligu/matterbridge/discussions/264).
52
+ - [deviceTypes]: Added Appliances device types (please read https://github.com/Luligu/matterbridge/discussions/264).
53
+ - [frontend]: Added the matterbridge aggregator serialNumber in the QRDiv.
54
+ - [frontend]: Added Power column in the Devices panel of the Home page.
55
+ - [frontend]: Added support for appliances and robot in IconView.
56
+ - [parameter]: Added getIntArrayParameter and getStringArrayParameter.
57
+ - [frontend]: Added the view menu to load the logs directly in the browser.
56
58
 
57
59
  ### Changed
58
60
 
59
- - [deviceTypes]: Updated device types to Matter 1.4
61
+ - [package]: Updated package.
62
+ - [package]: Updated express to v5.1.0.
63
+ - [package]: Updated dependencies.
64
+ - [frontend]: Frontend v.2.6.3.
65
+ - [frontend]: Changed icons with mdiIcons in IconView.
66
+ - [package]: Added tsconfig.jest.json with "isolatedModules": true for ts-jest.
67
+ - [deviceTypes]: Updated device types to Matter 1.4.
68
+ - [clusters]: Updated cluster helpers to Matter 1.4.
60
69
  - [matter.js]: Update to 0.13.0-alpha.0-20250405-7fc7db48.
61
70
  - [matter.js]: Update to 0.13.0-alpha.0-20250408-c916c7e8.
62
71
  - [matter.js]: Update to 0.13.0-alpha.0-20250412-5fad64e7b.
72
+ - [matter.js]: Update to 0.13.0-alpha.0-20250413-d5a27700d.
73
+ - [matter.js]: Update to 0.13.0-alpha.0-20250415-475996bb5.
74
+ - [matter.js]: Update to 0.13.0-alpha.0-20250418-8cfc0b832.
75
+ - [matter.js]: Update to 0.13.0-alpha.0-20250420-9f45e4f77.
76
+ - [matter.js]: Update to 0.13.0-alpha.0-20250422-0d27f26be.
77
+ - [matter.js]: Update to 0.13.0-alpha.0-20250423-8917d1d1d.
78
+ - [matter.js]: Update to 0.13.0-alpha.0-20250424-4760af1f3.
79
+ - [matter.js]: Update to 0.13.0-alpha.0-20250425-94b33ff98.
80
+ - [matter.js]: Update to 0.13.0-alpha.0-20250427-e7df8aa45.
81
+ - [matter.js]: Update to 0.13.0.
82
+ - [help]: Updated cli help screen.
83
+ - [logger]: Improved frontend logger cleaning.
63
84
 
64
85
  ### Fixed
65
86
 
66
87
  - [doorLock]: Fixed supportedOperatingModes inverted bitmap (Thanks Apollon).
67
88
  - [DevicesIcon]: Fixed rendering of leak freeze and rain sensors.
89
+ - [QRCode]: Fixed rendering of QRCode panel when advertising stops.
90
+ - [matterbridge]: Fixed wrong message when advertising stops and the node has been paired.
91
+ - [frontend]: Fixed download logs that broke with express v5.1.0.
92
+
93
+ ## [2.2.9] - 2025-04-18
94
+
95
+ ### Added
96
+
97
+ - [deviceTypes]: Added extendedColorLight device type.
98
+
99
+ ### Changed
100
+
101
+ - [package]: Update dependencies.
102
+
103
+ ### Fixed
104
+
105
+ - [QRCode]: Fixed update when the server node is no more advertising.
106
+ - [frontend]: Fixed wrong notification when the server node has been paired.
107
+
108
+ <a href="https://www.buymeacoffee.com/luligugithub">
109
+ <img src="bmc-button.svg" alt="Buy me a coffee" width="80">
110
+ </a>
68
111
 
69
112
  ## [2.2.8] - 2025-04-10
70
113
 
package/README-DEV.md CHANGED
@@ -82,6 +82,10 @@ Matterbridge must be linked to the plugin in development only.
82
82
  }
83
83
  ```
84
84
 
85
+ On the machine you use for development you should also have matterbridge installed globally or built locally and linked (npm link from the package root).
86
+
87
+ Dev and edge branches of matterbridge are not suitable for developemnt cause they are published for production without types. If you want to develop a plugin using the dev or edge branch of matterbridge, you have to clone the dev or edge branch of matterbridge, build locally and link (npm run deepCleanBuild).
88
+
85
89
  # \***\*\*\*\*\***
86
90
 
87
91
  I added some error messages when a plugin has wrong imports or configurations and the plugin will be disabled to prevent instability and crashes.
package/README-DOCKER.md CHANGED
@@ -38,7 +38,7 @@ docker exec -it matterbridge curl -v http://localhost:8283/health
38
38
 
39
39
  This will create the required directories in your home directory if they don't exist
40
40
 
41
- ```
41
+ ```bash
42
42
  cd ~
43
43
  mkdir -p ./Matterbridge
44
44
  mkdir -p ./.matterbridge
@@ -51,7 +51,7 @@ You may need to adapt the script to your setup.
51
51
 
52
52
  If you don't want to use sudo with docker commands, run this command:
53
53
 
54
- ```
54
+ ```bash
55
55
  sudo groupadd docker
56
56
  sudo usermod -aG docker $USER
57
57
  ```
@@ -62,7 +62,7 @@ After adding your user to the docker group, you need to log out and log back in
62
62
 
63
63
  The container must have full access to the host network (needed for mdns).
64
64
 
65
- ```
65
+ ```bash
66
66
  sudo docker run --name matterbridge \
67
67
  -v /home/<USER>/Matterbridge:/root/Matterbridge \
68
68
  -v /home/<USER>/.matterbridge:/root/.matterbridge \
@@ -95,54 +95,63 @@ copy it in the home directory or edit the existing one to add the matterbridge s
95
95
 
96
96
  Then start docker compose with:
97
97
 
98
- ```
98
+ ```bash
99
99
  docker compose up -d
100
100
  ```
101
101
 
102
102
  ### Stop with docker compose
103
103
 
104
- ```
104
+ ```bash
105
105
  docker compose down
106
106
  ```
107
107
 
108
108
  ### Update with docker compose
109
109
 
110
- ```
110
+ ```bash
111
111
  docker compose pull
112
112
  ```
113
113
 
114
114
  ### Inspect the container
115
115
 
116
- ```
116
+ ```bash
117
117
  docker container inspect matterbridge
118
118
  ```
119
119
 
120
120
  ### Start the Docker container
121
121
 
122
- ```
122
+ ```bash
123
123
  docker start matterbridge
124
124
  ```
125
125
 
126
126
  ### Stop the Docker container
127
127
 
128
- ```
128
+ ```bash
129
129
  docker stop matterbridge
130
130
  ```
131
131
 
132
132
  ### Restart the Docker container
133
133
 
134
- ```
134
+ ```bash
135
135
  docker restart matterbridge
136
136
  ```
137
137
 
138
138
  ### Shows the logs
139
139
 
140
- ```
140
+ ```bash
141
141
  docker logs matterbridge
142
142
  ```
143
143
 
144
- ### Shows the logs real time (tail)
144
+ ### Shows the logs for a time interval
145
145
 
146
+ ```bash
147
+ docker logs \
148
+ --since "2025-04-19T00:00:00" \
149
+ --until "2025-04-19T00:02:00" \
150
+ matterbridge
146
151
  ```
152
+
153
+ ### Shows the logs real time (tail)
154
+
155
+ ```bash
147
156
  docker logs --tail 1000 -f matterbridge
148
157
  ```
package/README-SERVICE.md CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  This will create the required directories if they don't exist
22
22
 
23
- ```
23
+ ```bash
24
24
  cd ~
25
25
  mkdir -p ./Matterbridge
26
26
  mkdir -p ./.matterbridge
@@ -31,7 +31,7 @@ sudo chown -R $USER:$USER ./Matterbridge ./.matterbridge
31
31
 
32
32
  Create a systemctl configuration file for Matterbridge
33
33
 
34
- ```
34
+ ```bash
35
35
  sudo nano /etc/systemd/system/matterbridge.service
36
36
  ```
37
37
 
@@ -53,8 +53,6 @@ WorkingDirectory=/home/<USER>/Matterbridge
53
53
  StandardOutput=inherit
54
54
  StandardError=inherit
55
55
  Restart=always
56
- RestartSec=10s
57
- TimeoutStopSec=30s
58
56
  User=<USER>
59
57
  Group=<USER>
60
58
 
@@ -70,45 +68,53 @@ add this:
70
68
  AmbientCapabilities=CAP_NET_BIND_SERVICE
71
69
  ```
72
70
 
73
- If you modify it after, then run:
71
+ If you use the matterbridge-bthome plugin add this:
74
72
 
75
73
  ```
74
+ [Service]
75
+ AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_NET_ADMIN
76
+ ```
77
+
78
+ If you modify it after, then run:
79
+
80
+ ```bash
76
81
  sudo systemctl daemon-reload
82
+ sudo systemctl restart matterbridge.service
77
83
  ```
78
84
 
79
85
  ### Start Matterbridge
80
86
 
81
- ```
87
+ ```bash
82
88
  sudo systemctl start matterbridge
83
89
  ```
84
90
 
85
91
  ### Stop Matterbridge
86
92
 
87
- ```
93
+ ```bash
88
94
  sudo systemctl stop matterbridge
89
95
  ```
90
96
 
91
97
  ### Show Matterbridge status
92
98
 
93
- ```
99
+ ```bash
94
100
  sudo systemctl status matterbridge.service
95
101
  ```
96
102
 
97
103
  ### Enable Matterbridge to start automatically on boot
98
104
 
99
- ```
105
+ ```bash
100
106
  sudo systemctl enable matterbridge.service
101
107
  ```
102
108
 
103
109
  ### Disable Matterbridge from starting automatically on boot
104
110
 
105
- ```
111
+ ```bash
106
112
  sudo systemctl disable matterbridge.service
107
113
  ```
108
114
 
109
115
  ### View the log of Matterbridge in real time (this will show the log with colors)
110
116
 
111
- ```
117
+ ```bash
112
118
  sudo journalctl -u matterbridge.service -n 1000 -f --output cat
113
119
  ```
114
120
 
@@ -116,13 +122,13 @@ sudo journalctl -u matterbridge.service -n 1000 -f --output cat
116
122
 
117
123
  Check the space used
118
124
 
119
- ```
125
+ ```bash
120
126
  sudo journalctl --disk-usage
121
127
  ```
122
128
 
123
129
  remove all log older then 3 days
124
130
 
125
- ```
131
+ ```bash
126
132
  sudo journalctl --rotate
127
133
  sudo journalctl --vacuum-time=3d
128
134
  ```
@@ -131,13 +137,13 @@ sudo journalctl --vacuum-time=3d
131
137
 
132
138
  If you want to make the setting permanent to prevent the journal logs to grow too much, run
133
139
 
134
- ```
140
+ ```bash
135
141
  sudo nano /etc/systemd/journald.conf
136
142
  ```
137
143
 
138
144
  add
139
145
 
140
- ```
146
+ ```bash
141
147
  Compress=yes # Compress logs
142
148
  MaxRetentionSec=3days # Keep logs for a maximum of 3 days.
143
149
  MaxFileSec=1day # Rotate logs daily within the 3-day retention period.
@@ -148,7 +154,7 @@ RuntimeMaxUse=100M # Limit runtime logs in /run/log/journal to 100 MB.
148
154
 
149
155
  save it and run
150
156
 
151
- ```
157
+ ```bash
152
158
  sudo systemctl restart systemd-journald
153
159
  ```
154
160
 
@@ -156,7 +162,7 @@ sudo systemctl restart systemd-journald
156
162
 
157
163
  Run the following command to verify if you can install Matterbridge globally without being prompted for a password:
158
164
 
159
- ```
165
+ ```bash
160
166
  sudo npm install -g matterbridge
161
167
  ```
162
168
 
@@ -164,7 +170,7 @@ If you are not prompted for a password, no further action is required.
164
170
 
165
171
  If that is not the case, open the sudoers file for editing using visudo
166
172
 
167
- ```
173
+ ```bash
168
174
  sudo visudo
169
175
  ```
170
176
 
@@ -176,8 +182,8 @@ verify the presence of of a line
176
182
 
177
183
  exit and create a configuration file for sudoers
178
184
 
179
- ```
180
- sudo nano /etc/sudoers.d/matterbridge
185
+ ```bash
186
+ sudo nano /etc/sudoers.d/matterbridge
181
187
  ```
182
188
 
183
189
  add this line replacing USER with your user name (e.g. radxa ALL=(ALL) NOPASSWD: ALL)
@@ -194,6 +200,6 @@ or if you prefers to only give access to npm without password try with (e.g. rad
194
200
 
195
201
  save the file and reload the settings with:
196
202
 
197
- ```
203
+ ```bash
198
204
  sudo visudo -c
199
205
  ```
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ---
14
14
 
15
- Matterbridge is a matter.js plugin manager.
15
+ Matterbridge is a Matter plugin manager.
16
16
 
17
17
  It allows you to have all your Matter devices up and running in a couple of minutes without
18
18
  having to deal with the pairing process of each single device.
@@ -46,6 +46,22 @@ The project is build on top of https://github.com/project-chip/matter.js.
46
46
 
47
47
  A special thank to Apollon77 for his incredible work.
48
48
 
49
+ ## Discord
50
+
51
+ Join us in the Matterbridge Discord group https://discord.gg/QX58CDe6hd created by Tamer (https://github.com/tammeryousef1006).
52
+
53
+ ## Videos
54
+
55
+ https://www.youtube.com/watch?v=goNB9Cgh_Fk
56
+
57
+ ## Reviews
58
+
59
+ https://www.matteralpha.com/how-to/how-to-configure-an-open-source-matter-bridge-at-home
60
+
61
+ ## Press
62
+
63
+ https://matter-smarthome.de/en/interview/an-alternative-to-the-official-matter-sdk/
64
+
49
65
  ## Prerequisites
50
66
 
51
67
  To run Matterbridge, you need either a [Node.js](https://nodejs.org/en) environment or [Docker](https://docs.docker.com/get-started/get-docker/) installed on your system.
@@ -57,6 +73,10 @@ Nvm is not a good choice and should not be used for production.
57
73
 
58
74
  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/.
59
75
 
76
+ Since as stated in the Matter specifications "Matter aims to build a universal IPv6-based communication protocol for smart home devices", ipv6 should be enabled in the network.
77
+
78
+ Avoid using VLAN and firewall blocking the communications between the controller and Matterbridge.
79
+
60
80
  ## Installation
61
81
 
62
82
  Follow these steps to install Matterbridge:
@@ -216,6 +236,38 @@ No hub or dedicated hardware needed.
216
236
 
217
237
  Matterbridge Somfy Tahoma is a matterbridge production-level plugin that expose the Somfy Tahoma screen devices to Matter.
218
238
 
239
+ ### Home Assistant
240
+
241
+ <a href="https://github.com/Luligu/matterbridge-hass">
242
+ <img src="screenshot/HomeAssistant.svg" alt="Hass logo" width="100" />
243
+ </a>
244
+
245
+ Matterbridge Home Assistant plugin allows you to expose the Home Assistant devices and entities to Matter.
246
+
247
+ 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).
248
+
249
+ ### Webhooks
250
+
251
+ <a href="https://github.com/Luligu/matterbridge-webhooks">
252
+ <img src="frontend/public/matterbridge.svg" alt="Matterbridge logo" width="100" />
253
+ </a>
254
+
255
+ Matterbridge Webhooks plugin allows you to expose any webhooks to Matter..
256
+
257
+ ### BTHome
258
+
259
+ <a href="https://github.com/Luligu/matterbridge-webhooks">
260
+ <img src="frontend/public/matterbridge.svg" alt="Matterbridge logo" width="100" />
261
+ </a>
262
+
263
+ Matterbridge BTHome allows you to expose any BTHome device to Matter using the native bluetooth of the host machine.
264
+
265
+ Features:
266
+
267
+ - The bluetooth works correctly on all platforms and is based on the @stoprocent fork of noble.
268
+ - The discovered BTHome devices are stored with all attributes to easily restart the plugin.
269
+ - The plugin has also a command line to test and verify the bluetooth adapter and the ble network.
270
+
219
271
  ### Accessory platform example
220
272
 
221
273
  This is an example of an accessory platform plugin.
@@ -276,6 +328,12 @@ The history works in both bridge and childbridge mode.
276
328
 
277
329
  The Eve app only shows the history when the plugins run like an AccessoryPlatform in childbridge mode (this means the plugin is paired directly).
278
330
 
331
+ ## Third-party plugins
332
+
333
+ ### [Loxone](https://github.com/andrasg/matterbridge-loxone)
334
+
335
+ A matterbridge plugin that allows connecting Loxone devices to Matter.
336
+
279
337
  ## How to install and add a plugin with the frontend (best option)
280
338
 
281
339
  Just open the frontend on the link provided in the log, select a plugin and click install.
@@ -406,9 +464,29 @@ All issues have been solved from the version 17.5 of the HomePod/AppleTV. Now th
406
464
 
407
465
  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.
408
466
 
467
+ ### Manufacturer Serial Number and Model
468
+
469
+ The Home app forgets about them when you restart the node.
470
+
471
+ ### Appliances
472
+
473
+ As of version 18.4.x, all Appliances device types are not supported by the Home app. They don't even appear like unsupported accessories.
474
+
475
+ ### Robot
476
+
477
+ As of version 18.4.x, the Robot is supported by the Home app only as a single, non-bridged device or if it is the only device in the bridge.
478
+
479
+ If a Robot is present alongside other devices in the bridge, the entire bridge becomes unstable in the Home app.
480
+
481
+ ### Concentration measurements clusters
482
+
483
+ As of version 18.4.x, all cluster derived from the concentration measurement cluster hang the Home app while pairing and the entire bridge becomes unstable in the Home app.
484
+
485
+ For example: air quality sensors with TVOC measurement or co sensors with CarbonMonoxide measurement.
486
+
409
487
  ## Home Assistant
410
488
 
411
- So far is the only controller supporting some Matter 1.2 and 1.3 device type:
489
+ So far is the only controller supporting some Matter 1.2, 1.3 and 1.4 device type:
412
490
 
413
491
  - airQualitySensor code 0x002c (Matter 1.2)
414
492
  - smokesmokeCoAlarm code 0x0076 (Matter 1.2)
package/dist/cli.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * This file contains the CLI entry point of Matterbridge.
4
+ *
5
+ * @file cli.ts
6
+ * @author Luca Liguori
7
+ * @date 2023-12-29
8
+ * @version 2.0.0
9
+ *
10
+ * Copyright 2023, 2024, 2025 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
+ import { Matterbridge } from './matterbridge.js';
25
+ import { EventEmitter } from 'node:events';
26
+ export declare const cliEmitter: EventEmitter<[never]>;
27
+ export declare let instance: Matterbridge | undefined;
28
+ export declare let lastCpuUsage: number;
29
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,UAAU,uBAAqB,CAAC;AAE7C,eAAO,IAAI,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;AAQ9C,eAAO,IAAI,YAAY,QAAI,CAAC"}
package/dist/cli.js CHANGED
@@ -1,17 +1,44 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * This file contains the CLI entry point of Matterbridge.
4
+ *
5
+ * @file cli.ts
6
+ * @author Luca Liguori
7
+ * @date 2023-12-29
8
+ * @version 2.0.0
9
+ *
10
+ * Copyright 2023, 2024, 2025 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
+ // Matterbridge
2
25
  import { Matterbridge } from './matterbridge.js';
3
26
  import { getIntParameter, hasParameter } from './utils/export.js';
27
+ // AnsiLogger module
4
28
  import { AnsiLogger, BRIGHT, CYAN, db, YELLOW } from './logger/export.js';
5
29
  import { EventEmitter } from 'node:events';
30
+ import { inspect } from 'node:util';
6
31
  export const cliEmitter = new EventEmitter();
7
32
  export let instance;
33
+ // Inspectop
8
34
  let session;
35
+ // Cpu and memory check
9
36
  let memoryCheckInterval;
10
37
  let prevCpus;
11
38
  export let lastCpuUsage = 0;
12
39
  let peakCpu = 0;
13
40
  let peakRss = 0;
14
- const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
41
+ const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: hasParameter('debug') ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
15
42
  const formatMemoryUsage = (bytes) => {
16
43
  if (bytes >= 1024 ** 3) {
17
44
  return `${(bytes / 1024 ** 3).toFixed(2)} GB`;
@@ -44,9 +71,11 @@ async function startCpuMemoryCheck() {
44
71
  prevCpus = os.cpus();
45
72
  clearInterval(memoryCheckInterval);
46
73
  const interval = () => {
74
+ // Get the os uptime
47
75
  const systemUptime = formatOsUpTime(Math.floor(os.uptime()));
48
76
  const processUptime = formatOsUpTime(Math.floor(process.uptime()));
49
77
  cliEmitter.emit('uptime', systemUptime, processUptime);
78
+ // Get the memory usage
50
79
  const totalMememory = formatMemoryUsage(os.totalmem());
51
80
  const freeMemory = formatMemoryUsage(os.freemem());
52
81
  const memoryUsageRaw = process.memoryUsage();
@@ -58,10 +87,11 @@ async function startCpuMemoryCheck() {
58
87
  if (memoryUsageRaw.rss > peakRss)
59
88
  peakRss = memoryUsageRaw.rss;
60
89
  cliEmitter.emit('memory', totalMememory, freeMemory, rss, heapTotal, heapUsed, external, arrayBuffers);
90
+ // Get the cpu usage
61
91
  const currCpus = os.cpus();
62
92
  let cpuUsageLog;
63
93
  if (currCpus.length !== prevCpus.length) {
64
- prevCpus = currCpus;
94
+ prevCpus = currCpus; // Reset the previous cpus
65
95
  log.debug(`Cpu check length failed, resetting previous cpus`);
66
96
  return;
67
97
  }
@@ -87,6 +117,7 @@ async function startCpuMemoryCheck() {
87
117
  cliEmitter.emit('cpu', lastCpuUsage);
88
118
  }
89
119
  prevCpus = currCpus;
120
+ // Show the cpu and memory usage
90
121
  log.debug(`***${YELLOW}${BRIGHT}Cpu usage:${db} ${CYAN}${cpuUsageLog.padStart(6, ' ')} %${db} ${YELLOW}${BRIGHT}Memory usage:${db} rss ${CYAN}${rss}${db} heapTotal ${CYAN}${heapTotal}${db} heapUsed ${CYAN}${heapUsed}${db} external ${external} arrayBuffers ${arrayBuffers}`);
91
122
  };
92
123
  interval();
@@ -114,6 +145,7 @@ async function stopInspector() {
114
145
  return;
115
146
  }
116
147
  try {
148
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
117
149
  const result = await new Promise((resolve, reject) => {
118
150
  session?.post('HeapProfiler.stopSampling', (err, result) => (err ? reject(err) : resolve(result)));
119
151
  });
@@ -158,6 +190,7 @@ async function restart() {
158
190
  }
159
191
  async function update() {
160
192
  log.debug('Received update event, updating...');
193
+ // TODO: Implement update logic outside of matterbridge
161
194
  instance = await Matterbridge.loadInstance(true);
162
195
  registerHandlers();
163
196
  }
@@ -177,6 +210,7 @@ async function main() {
177
210
  log.debug(`***Matterbridge.loadInstance(true) called`);
178
211
  instance = await Matterbridge.loadInstance(true);
179
212
  log.debug(`***Matterbridge.loadInstance(true) exited`);
213
+ // Check if the instance needs to shut down from parseCommandLine()
180
214
  if (!instance || instance.shutdown) {
181
215
  shutdown();
182
216
  }
@@ -184,7 +218,11 @@ async function main() {
184
218
  registerHandlers();
185
219
  }
186
220
  }
221
+ // Run the main function
187
222
  process.title = 'matterbridge';
188
223
  main().catch((error) => {
189
- log.error(`Matterbridge.loadInstance() failed with error: ${error instanceof Error ? error.message : error}`);
224
+ const errorMessage = error instanceof Error ? error.message : error;
225
+ const errorInspect = inspect(error, { depth: 10 });
226
+ log.error(`Matterbridge.loadInstance() failed with error: ${errorMessage}\nstack: ${errorInspect}`);
190
227
  });
228
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/cluster/export.ts"],"names":[],"mappings":""}
@@ -1 +1,3 @@
1
1
  export {};
2
+ // Nothing to export right now, but this file is here to make it easier to add exports in the future
3
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/cluster/export.ts"],"names":[],"mappings":";AAAA,oGAAoG"}