Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2.0.5 #136

Merged
merged 11 commits into from
Mar 19, 2025
11 changes: 5 additions & 6 deletions .github/workflows/build-matterbridge-plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,33 +9,33 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: [18.x, 20.x, 22.x]
node-version: [18.x, 20.x, 22.x, 23.x]
os: [ubuntu-latest, windows-latest, macos-latest]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Clean cache
run: npm cache clean --force

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

- name: Verify Npm version
run: npm -v

- name: Install matterbridge
run: npm install -g matterbridge --omit=dev

- name: Install dependencies
run: npm ci

- name: Link matterbridge
run: npm link matterbridge

Expand All @@ -47,4 +47,3 @@ jobs:

- name: Build the project
run: npm run build

10 changes: 5 additions & 5 deletions .github/workflows/publish-matterbridge-plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,32 @@ on:
jobs:
publish:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
node-version: '22.x'
registry-url: 'https://registry.npmjs.org'

- name: Clean cache
run: npm cache clean --force

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

- name: Verify Npm version
run: npm -v

- name: Install matterbridge
run: npm install -g matterbridge --omit=dev

- name: Install dependencies
run: npm ci

- name: Link matterbridge
run: npm link matterbridge

Expand Down
4 changes: 3 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ frontend
docker

# Ignore all HTML files:
**/*.html
**/*.html

TODO.md
32 changes: 31 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,47 @@ Removed options:

- exposePowerMeter: electrical sensors are enabled by default on existing setups. You can disable them globally or on a per-device basis adding "PowerMeter" to entityBlackList or deviceEntityBlackList, see [COMPONENTS.md documentation.](https://github.com/Luligu/matterbridge-shelly/blob/main/COMPONENTS.md). On new setups the "PowerMeter" components are already globally disabled by default.

- enableConfigDiscover and deviceIp: replaced by a config action in expert mode.

New setups:

- these components are blacklisted (with entityBlackList) by default: "PowerMeter", "Lux", "Illuminance", "Vibration", "Button". This allows to create simplified devices for the controllers that don't manage correctly composed devices (i.e. Alexa and SmartThings).
- all switches are exposed like outlet (matter compliant).
- shellyplusi4, shellyi4g3, shellyix3 and shellybutton1 are automatically added to inputMomentaryList when discovered.
- expertMode is disabled. This makes the config showing only username, password and blackList.
- expertMode is disabled. This makes the config showing only username, password, whitelist and blackList.

Expert mode:

The expertMode option has been added to show an advanced or simplified config.

## [2.0.5] - 2025-03-19

### Added

- [config] Added action: manually add a device with IP address. It allows to add the devices that are not discovered on the network with the mdns.
- [config] Added action: remove a device from the storage with its device id. It allows to remove from the storage a single device when it has been removed from the network.
- [config] Added action: scan network. It will send a mdns request on the network.
- [mdns] Added a fully automatic IP change detection when the device is discovered on a different IP (no need to restart).
- [shelly] Verified AZ Plug Gen3.
- [shelly] Verified PlugSG3 Matter Gen3.
- [BLU]: Verified new BLU firmware 1.0.22 on all BLU devices.
- [TRV]: Verified new BLU TRV firmware 1.2.1.

### Removed

- [fetch]: Removed node-fetch package and use the global fetch.

### Changed

- [config] Removed enableConfigDiscover and deviceIp. Replaced by a config action (manually add a device with IP address).
- [package]: Updated package.
- [package]: Updated dependencies.
- [plugin]: Requires Matterbridge 2.2.5.

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

## [2.0.4] - 2025-03-13

### Added
Expand Down
92 changes: 54 additions & 38 deletions matterbridge-shelly.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,23 @@
"name": {
"description": "Plugin name",
"type": "string",
"readOnly": true
"readOnly": true,
"ui:widget": "hidden"
},
"type": {
"description": "Plugin type",
"type": "string",
"readOnly": true
"readOnly": true,
"ui:widget": "hidden"
},
"username": {
"description": "Username for password protected shelly devices (used only for gen 1 devices)",
"description": "Username for password protected shelly devices (used only for gen 1 devices).",
"type": "string"
},
"password": {
"description": "Password for password protected shelly devices (must be unique for all the devices)",
"type": "string"
"description": "Password for password protected shelly devices (must be unique for all the devices).",
"type": "string",
"ui:widget": "password"
},
"switchList": {
"description": "The devices in the list will be exposed as switches (don't use it for Alexa).",
Expand Down Expand Up @@ -66,8 +69,8 @@
"uniqueItems": true,
"selectFrom": "serial"
},
"blackList": {
"description": "The devices in the list will not be exposed. Use the device id (e.g. shellyplus2pm-5443B23D81F8) or BLU addr (i.e. 7c:c6:b6:65:2d:87)",
"nocacheList": {
"description": "The devices in the list will not be loaded from the cache. Use the device id (e.g. shellyplus2pm-5443B23D81F8). If the list is empty, all the devices will be loaded from the cache.",
"type": "array",
"items": {
"type": "string"
Expand All @@ -76,7 +79,16 @@
"selectFrom": "serial"
},
"whiteList": {
"description": "Only the devices in the list will be exposed. Use the device id (e.g. shellyplus2pm-5443B23D81F8) or BLU addr (i.e. 7c:c6:b6:65:2d:87).",
"description": "Only the devices in the list will be exposed. Use the device id (e.g. shellyplus2pm-5443B23D81F8) or BLU addr (i.e. 7c:c6:b6:65:2d:87). If the list is empty, all the devices will be exposed.",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"selectFrom": "serial"
},
"blackList": {
"description": "The devices in the list will not be exposed. Use the device id (e.g. shellyplus2pm-5443B23D81F8) or BLU addr (i.e. 7c:c6:b6:65:2d:87). If the list is empty, no devices will be excluded.",
"type": "array",
"items": {
"type": "string"
Expand All @@ -85,7 +97,7 @@
"selectFrom": "serial"
},
"entityBlackList": {
"description": "The components in the list will not be exposed for all devices. Use the component name (i.e. Temperature)",
"description": "The components in the list will not be exposed for all devices. Use the component name (i.e. Temperature).",
"type": "array",
"items": {
"type": "string"
Expand All @@ -108,46 +120,23 @@
"selectDeviceEntityFrom": "name"
}
},
"nocacheList": {
"description": "The devices in the list will not be loaded from the cache. Use the device id (e.g. shellyplus2pm-5443B23D81F8)",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"selectFrom": "serial"
},
"deviceIp": {
"description": "Set the IP address for each device that is not discovered automatically. Enter in the first field the shelly ID of the device and in the second field the IP address. (e.g. shelly1minig3-543204547478: 192.168.1.221). Enable enableConfigDiscover to load the devices from this setting.",
"type": "object",
"uniqueItems": true,
"selectFrom": "serial",
"additionalProperties": {
"type": "string"
}
},
"enableMdnsDiscover": {
"description": "Enable the mdns discovery for shelly devices. Once all the devices are loaded and stored, it is possible to disable this setting to reduce the network traffic.",
"description": "Enable the mdns discovery for shelly devices. Once all the devices are discovered and stored, it is possible to disable this setting to reduce the network traffic.",
"type": "boolean",
"default": true
},
"enableStorageDiscover": {
"description": "Enable storage discovery for shelly devices (it will load from the storage the devices already discovered)",
"description": "Enable storage discovery for shelly devices (it will load from the storage the devices already discovered).",
"type": "boolean",
"default": true
},
"resetStorageDiscover": {
"description": "Reset the storage on the next restart (it will clear the storage and the cache files)",
"type": "boolean",
"default": false
},
"enableConfigDiscover": {
"description": "Enable config discovery for shelly devices (it will load the devices from deviceIp config setting). It is only needed if a device is not discovered on your network. Once they are loaded and stored, disable this setting.",
"description": "Reset the storage on the next restart (it will clear the storage and the cache files).",
"type": "boolean",
"default": false
},
"enableBleDiscover": {
"description": "Enable ble discovery for shelly BLU devices (it will register the BLU devices paired in each ble gateway, see the readme for more info)",
"description": "Enable ble discovery for shelly BLU devices (it will register the BLU devices paired in each ble gateway, see the readme for more info).",
"type": "boolean",
"default": true
},
Expand All @@ -166,6 +155,32 @@
"type": "boolean",
"default": false
},
"addDevice": {
"description": "Manually add a device that has not been discovered with mdns:",
"type": "boolean",
"buttonField": "ADD",
"buttonClose": false,
"buttonSave": false,
"textPlaceholder": "Enter the device IP address",
"default": false
},
"removeDevice": {
"description": "Remove a device and its cache file from the storage:",
"type": "boolean",
"buttonField": "REMOVE",
"buttonClose": false,
"buttonSave": false,
"textPlaceholder": "Enter the device id",
"default": false
},
"scanNetwork": {
"description": "Scan the network with mdns for new devices:",
"type": "boolean",
"buttonText": "SCAN",
"buttonClose": false,
"buttonSave": false,
"default": false
},
"debug": {
"description": "Enable the debug for the plugin (development only)",
"type": "boolean",
Expand All @@ -182,14 +197,15 @@
"default": false
},
"debugWs": {
"description": "Enable the debug for the shelly WsClient or WsServer (development only)",
"description": "Enable the debug for the shelly WsClient and WsServer (development only)",
"type": "boolean",
"default": false
},
"unregisterOnShutdown": {
"description": "Unregister all devices on shutdown (development only)",
"type": "boolean",
"default": false
"default": false,
"ui:widget": "hidden"
}
}
}
Loading