Skip to content

Commit

Permalink
Merge pull request #198 from Luligu/dev
Browse files Browse the repository at this point in the history
Release 1.7.0
  • Loading branch information
Luligu authored Jan 4, 2025
2 parents ee4a821 + 2ad82b4 commit bce574e
Show file tree
Hide file tree
Showing 54 changed files with 4,035 additions and 1,624 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@ jobs:
- name: Clean cache
run: npm cache clean --force

- name: Install latest npm
run: npm install -g npm@latest

- name: Verify Node.js version
run: node -v

Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ jobs:
- name: Clean cache
run: npm cache clean --force

- name: Install latest npm
run: npm install -g npm@latest

- name: Verify Node.js version
run: node -v

Expand Down
46 changes: 43 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ If you like this project and find it useful, please consider giving it a star on

### Home Assistant

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.
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.
It is also available the official Matterbridge Home Assistant plugin https://github.com/Luligu/matterbridge-hass.

### Discord
Expand All @@ -15,11 +15,51 @@ Tamer (https://github.com/tammeryousef1006) has created the Matterbridge Discord

### Breaking Changes

In this release some device types and the OnOff, LevelControl and ColorControl have been updated to be fully compliant with Matter 1.3 specifications.
It is possible that some controllers see them as new devices or need time to read the new clusters. It can be useful after the upgrade to power off the controller, wait a few minutes and power it on again.
Matterbridge edge is now released. The default mode is still the normal mode to allow the storage conversion. See https://github.com/Luligu/matterbridge/blob/dev/README-EDGE.md to manually switch to edge mode after the conversion is done.

The frontend has a new dark and light mode. The dark mode is now the default mode.
It is possible to change the mode (Classic, Dark or Light) in Settings, Matterbridge settings.

## [1.7.0] - 2025-01-03

### Added

- [edge]: Added guide https://github.com/Luligu/matterbridge/blob/dev/README-EDGE.md.
- [storage]: Added conversion from old matter storage to the new api format with fabrics, resumptionRecords, network, commissioning, operationalCredentials, acl and parts number. The conversion is triggered every time you shutdown or restart matterbridge till the new storage has been used with matterbridge edge.
- [storage]: Added conversion for child endpoint numbers.
- [storage]: Added conversion for childbridge mode.
- [package]: Update README.md and README-SERVICE.md to include instructions for using SSL on port 443.
- [platform]: Added checkEndpointNumbers() to detect endpoint numbers changes.
- [frontend]: Frontend v.2.3.0
- [frontend]: Added dark and light mode to the frontend. Dark mode is now the default mode. It is possible to change the mode in Settings, Matterbridge settings.
- [frontend]: Custom rfjsreact-jsonschema-form for the config editor.
- [frontend]: Added columns configuration to Devices.
- [frontend]: Added clear logs button in Logs.
- [unregister]: Added unregister for Matterbridge edge.
- [reset]: Added reset for Matterbridge edge.
- [factoryreset]: Added factoryreset for Matterbridge edge.
- [websocket]: Added /api/clusters and removed all fetch calls from frontend.

### Changed

- [edge]: Fixes to edge mode.
- [package]: Update dependencies.

### Fixed

- [frontend]: Fixed device/cluster api that was not working in Ingress.

<a href="https://www.buymeacoffee.com/luligugithub">
<img src="./yellow-button.png" alt="Buy me a coffee" width="120">
</a>

## [1.6.7] - 2024-12-15

### Breaking Changes

In this release some device types and the OnOff, LevelControl and ColorControl have been updated to be fully compliant with Matter 1.3 specifications.
It is possible that some controllers see them as new devices or need time to read the new clusters. It can be useful after the upgrade to power off the controller, wait a few minutes and power it on again.

### Added

- [readme]: Update README to clarify Node.js installation instructions and emphasize LTS version.
Expand Down
14 changes: 8 additions & 6 deletions README-DOCKER.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,14 @@ sudo groupadd docker
sudo usermod -aG docker $USER
```

After adding your user to the docker group, you need to log out and log back in for the changes to take effect. This ensures that your current session recognizes the group membership change.

### Run the Docker container and start it

The container must have full access to the host network (needed for mdns).

```
docker run --name matterbridge \
sudo docker run --name matterbridge \
-v ${HOME}/Matterbridge:/root/Matterbridge \
-v ${HOME}/.matterbridge:/root/.matterbridge \
--network host --restart always -d luligu/matterbridge:latest
Expand All @@ -61,12 +63,12 @@ The docker-compose.yml file is available in the docker directory of the package
services:
matterbridge:
container_name: matterbridge
image: luligu/matterbridge:latest # Matterbridge image with the latest tag
network_mode: host # Ensures the Matter mdns works
restart: always # Ensures the container always restarts automatically
image: luligu/matterbridge:latest # Matterbridge image with the latest tag
network_mode: host # Ensures the Matter mdns works
restart: always # Ensures the container always restarts automatically
volumes:
- "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
- "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory
- "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
- "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory
```

copy it in the home directory or edit the existing one to add the matterbridge service.
Expand Down
76 changes: 76 additions & 0 deletions README-EDGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# <img src="https://github.com/Luligu/matterbridge/blob/main/frontend/public/matterbridge%2064x64.png" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge

# Matterbridge edge

Matterbridge Edge is the version of Matterbridge running with the new Matter.js API.

After months of work, the migration of Matterbridge from the old API to the new API is now complete. This includes the conversion of the entire old storage format to the new API storage format, encompassing fabrics, resumption records, network, commissioning, operational credentials, ACL, and part numbers.

A special thanks goes to Apollon for answering my countless questions and helping to resolve the many small issues that arose during this process.

I also want to express my gratitude to Tamer, who continues to test everything daily to ensure we reach a level of confidence needed to release the update with the latest tag.

## Storage conversion

Starting from version 1.7.0 (1.6.8-dev.11 before it is published as 1.7.0 with tag latest), the conversion process is automatic and is triggered each time you shut down, restart, or update Matterbridge using the frontend.

A message is displayed to inform the user when the conversion is complete.

Once the user run Matterbridge in Edge mode for the first time, the conversion will no longer be triggered.

The conversion only creates a new storage directory in the new format. It does not modify the old storage in any way, so there is no risk in trying Edge mode before its official release. You can also revert to normal mode by simply removing the -edge parameter. After the conversion is complete, the two storages will be identical. However, once you start using Edge mode, any changes made to one storage will not be reflected in the other. Therefore, it is recommended to let the conversion complete, switch to Edge mode, and continue using it exclusively.
There is no conversion back to the old storage.

## When it will be released

Matterbridge Edge will be officially released as version 2.0.0, as it represents a major update.

## How to run matterbridge in edge mode

To start Matterbridge in Edge mode before its official release, you need to add the -edge parameter to the command line or Docker command.

### When you run matterbridge from a terminal

```
matterbridge -edge
```

### When you run matterbridge with systemctl

Modify your /etc/systemd/system/matterbridge.service

```
ExecStart=matterbridge -service -edge
```

Then run:

```
sudo systemctl daemon-reload
sudo systemctl restart matterbridge
```

### When you run matterbridge with docker

```
sudo docker run --name matterbridge \
-v ${HOME}/Matterbridge:/root/Matterbridge \
-v ${HOME}/.matterbridge:/root/.matterbridge \
--network host --restart always -d luligu/matterbridge:latest \
matterbridge -docker -edge
```

### When you run matterbridge with docker compose

```
services:
matterbridge:
container_name: matterbridge
image: luligu/matterbridge:latest # Matterbridge image with the latest tag
network_mode: host # Ensures the Matter mdns works
restart: always # Ensures the container always restarts automatically
volumes:
- "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
- "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory
command: [ "matterbridge", "-docker", "-edge" ] # Override the image command adding -edge
```
15 changes: 12 additions & 3 deletions README-SERVICE.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Create a systemctl configuration file for Matterbridge
sudo nano /etc/systemd/system/matterbridge.service
```

Add the following to this file, replacing twice (!) USER with your user name (e.g. WorkingDirectory=/home/pi/Matterbridge and User=pi):
Add the following to this file, replacing 3 times (!) USER with your user name (e.g. WorkingDirectory=/home/pi/Matterbridge, User=pi and Group=pi):

You may need to adapt the configuration to your setup:

Expand All @@ -49,18 +49,27 @@ After=network-online.target
[Service]
Type=simple
ExecStart=matterbridge -service
WorkingDirectory=/home/<USER>/Matterbridge
WorkingDirectory=/home/<USER>/Matterbridge
StandardOutput=inherit
StandardError=inherit
Restart=always
RestartSec=10s
TimeoutStopSec=30s
User=<USER>
User=<USER>
Group=<USER>
[Install]
WantedBy=multi-user.target
```

If you use the frontend with -ssl -frontend 443 and get an error message: "Port 443 requires elevated privileges",
add this:

```
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
```

If you modify it after, then run:

```
Expand Down
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ A special thank to Apollon77 for his incredible work.

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.

If you don't have Node.js already install, please use this method to install it on a debian device: https://github.com/nodesource/distributions.
If you don't have Node.js already install, please use this method to install it on a debian device: https://github.com/nodesource/distributions.
The supported versions of node are 18, 20 and 22. Please install node 22 LTS.
Nvm is not a good choice and should not be used for production.

Expand Down Expand Up @@ -116,6 +116,8 @@ Here's how to specify a different port number:
matterbridge -frontend [port number]
```

To use the frontend with ssl place the certificates in the .matterbridge/certs directory: cert.pem, key.pem and ca.pem (optional).

From the frontend you can do all operations in an easy way.

Home page:
Expand Down Expand Up @@ -177,15 +179,18 @@ Features:
- Shelly wifi battery-powered devices with sleep_mode are supported.
- Shelly BLU devices are supported through local devices configured as ble gateway.
- Discovered shellies are stored in local storage for quick loading on startup.
- The components exposed are Light (with brightness and RGB color), Switch, Relay, Roller, Cover, PowerMeter, Temperature, Humidity and Input.
- All components expose the electrical measurements with the EveHistory cluster (displayed on HA), waiting for the controllers to upgrade to the Matter 1.3 specs.
- The components exposed are Light (with brightness and RGB color), Switch, Relay, Roller, Cover, PowerMeter, Temperature, Humidity, Illuminance, Thermostat, Button and Input.
- PowerMeters expose the electrical measurements with the electricalSensor device type (suppoerted by Home Assistant and partially by SmartThings), waiting for the controllers to upgrade to the Matter 1.3 specs.
- Shellies are controlled locally, eliminating the need for cloud or MQTT (which can both be disabled).
- Shelly Gen 1 devices are controlled using the CoIoT protocol (see the note below).
- Shelly Gen 1 devices are controlled using the CoIoT protocol.
- Shelly Gen 2 and Gen 3 devices are controlled using WebSocket.
- The Matter device takes the name configured in the Shelly device's web page.
- Each device can be blacklisted or whitelisted using its name, id or mac address.
- Device components can be blacklisted globally or on a per-device basis.
- If the device has a firmware update available, a message is displayed.
- If the device's CoIoT protocol is not correctly configured, a message is displayed.
- If the device cover/roller component is not calibrated, a message is displayed.
- If a device changes its ip address on the network, a message is displayed and the new address is stored.
- A 10-minute timer checks if the device has reported within that time frame, and fetch un update.

### Zigbee2MQTT
Expand Down
12 changes: 6 additions & 6 deletions frontend/build/asset-manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"files": {
"main.css": "./static/css/main.823e08b6.css",
"main.js": "./static/js/main.4dd7e165.js",
"main.css": "./static/css/main.f1fce054.css",
"main.js": "./static/js/main.5caad8c7.js",
"static/js/453.abd36b29.chunk.js": "./static/js/453.abd36b29.chunk.js",
"static/media/roboto-latin-700-normal.woff2": "./static/media/roboto-latin-700-normal.4535474e1cf8598695ad.woff2",
"static/media/roboto-latin-500-normal.woff2": "./static/media/roboto-latin-500-normal.7077203b1982951ecf76.woff2",
Expand Down Expand Up @@ -60,12 +60,12 @@
"static/media/roboto-greek-ext-300-normal.woff": "./static/media/roboto-greek-ext-300-normal.b590dbe5c639944366d1.woff",
"static/media/roboto-greek-ext-400-normal.woff": "./static/media/roboto-greek-ext-400-normal.16eb83b4a3b1ea994243.woff",
"index.html": "./index.html",
"main.823e08b6.css.map": "./static/css/main.823e08b6.css.map",
"main.4dd7e165.js.map": "./static/js/main.4dd7e165.js.map",
"main.f1fce054.css.map": "./static/css/main.f1fce054.css.map",
"main.5caad8c7.js.map": "./static/js/main.5caad8c7.js.map",
"453.abd36b29.chunk.js.map": "./static/js/453.abd36b29.chunk.js.map"
},
"entrypoints": [
"static/css/main.823e08b6.css",
"static/js/main.4dd7e165.js"
"static/css/main.f1fce054.css",
"static/js/main.5caad8c7.js"
]
}
2 changes: 1 addition & 1 deletion frontend/build/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><base href="./"><link rel="icon" href="./matterbridge 32x32.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Matterbridge</title><link rel="manifest" href="./manifest.json"/><script defer="defer" src="./static/js/main.4dd7e165.js"></script><link href="./static/css/main.823e08b6.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><base href="./"><link rel="icon" href="./matterbridge 32x32.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Matterbridge</title><link rel="manifest" href="./manifest.json"/><script defer="defer" src="./static/js/main.5caad8c7.js"></script><link href="./static/css/main.f1fce054.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1 change: 0 additions & 1 deletion frontend/build/static/css/main.823e08b6.css.map

This file was deleted.

Loading

0 comments on commit bce574e

Please sign in to comment.