Skip to content

Commit

Permalink
Merge pull request #56 from Luligu/dev
Browse files Browse the repository at this point in the history
Release 1.3.2
  • Loading branch information
Luligu authored Jun 22, 2024
2 parents 3fea031 + 1c24ebf commit ac38eb9
Show file tree
Hide file tree
Showing 24 changed files with 834 additions and 425 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docker-buildx-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
--platform linux/amd64,linux/arm64,linux/arm/v7 \
-f docker/Dockerfile.main \
-t luligu/matterbridge:latest \
-t luligu/matterbridge:1.3.1 \
-t luligu/matterbridge:1.3.2 \
--push .
docker manifest inspect luligu/matterbridge:latest
timeout-minutes: 60
33 changes: 31 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,40 @@

All notable changes to this project will be documented in this file.

## [1.3.2] - 2024-06-21
## [1.3.2] - 2024-06-22

New plugin

[shelly](https://github.com/Luligu/matterbridge-shelly)

Matterbridge shelly allows you to expose Shelly Gen 1, Gen 2, and Gen 3 devices to Matter.

Features:

- Shellies are automatically discovered using mDNS.
- Discovered shellies are stored in local storage for quick loading on startup.
- In this first release, the components exposed are lights (with brightness), switches, rollers and power meters (with EveHistory electrical measurements).
- Shellies are controlled locally, eliminating the need for cloud or MQTT (which can be disabled).
- Shelly Gen 1 devices are controlled using the CoIoT protocol (see the note below).
- 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.
- A 10-minute timer checks if the device has reported in that time.

### Added
- [matterbridgeDevice]: Added all clusters for airQualitySensor:
CarbonMonoxideConcentrationMeasurement,
CarbonDioxideConcentrationMeasurement,
NitrogenDioxideConcentrationMeasurement,
OzoneConcentrationMeasurement,
FormaldehydeConcentrationMeasurement,
Pm1ConcentrationMeasurement,
Pm25ConcentrationMeasurement,
Pm10ConcentrationMeasurement,
RadonConcentrationMeasurement,

### Changed
- [matterbridge]: Updated dependencies
- [matter.js]: Updated to 0.9.2
- [matter.js]: Updated matter.js to 0.9.2

<a href="https://www.buymeacoffee.com/luligugithub">
<img src="./yellow-button.png" alt="Buy me a coffee" width="120">
Expand Down
1 change: 1 addition & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@Luligu
54 changes: 27 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,33 @@ Config editor:

## Plugins

### Production-level plugins

[zigbee2mqtt](https://github.com/Luligu/matterbridge-zigbee2mqtt)

Matterbridge zigbee2mqtt is a matterbridge production-level plugin that expose all zigbee2mqtt devices and groups to Matter.

No hub or dedicated hardware needed.

[somy-tahoma](https://github.com/Luligu/matterbridge-somfy-tahoma)

Matterbridge Somfy Tahoma is a matterbridge production-level plugin that expose all Somfy Tahoma devices to Matter.

[shelly](https://github.com/Luligu/matterbridge-shelly)

Matterbridge shelly allows you to expose Shelly Gen 1, Gen 2, and Gen 3 devices to Matter.

Features:

- Shellies are automatically discovered using mDNS.
- Discovered shellies are stored in local storage for quick loading on startup.
- In this first release, the components exposed are lights (with brightness), switches, rollers and meters.
- Shellies are controlled locally, eliminating the need for cloud or MQTT (which can be disabled).
- Shelly Gen 1 devices are controlled using the CoIoT protocol (see the note below).
- 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.
- A 10-minute timer checks if the device has reported in that time.

### Accessory platform example

This an example of an accessory platform plugin.
Expand Down Expand Up @@ -153,33 +180,6 @@ The history works in both bridge and childbridge mode.

The Eve app only shows the history when the plugins run like an AccessoryPlatform in childbridge mode (this means the plugin is paired directly).

### Production-level plugins

[zigbee2mqtt](https://github.com/Luligu/matterbridge-zigbee2mqtt)

Matterbridge zigbee2mqtt is a matterbridge production-level plugin that expose all zigbee2mqtt devices and groups to Matter.

No hub or dedicated hardware needed.

[somy-tahoma](https://github.com/Luligu/matterbridge-somfy-tahoma)

Matterbridge Somfy Tahoma is a matterbridge production-level plugin that expose all Somfy Tahoma devices to Matter.

[shelly](https://github.com/Luligu/matterbridge-shelly)

Matterbridge shelly allows you to expose Shelly Gen 1, Gen 2, and Gen 3 devices to Matter.

Features:

- Shellies are automatically discovered using mDNS.
- Discovered shellies are stored in local storage for quick loading on startup.
- In this first release, the components exposed are lights (with brightness), switches, rollers and meters.
- Shellies are controlled locally, eliminating the need for cloud or MQTT (which can be disabled).
- Shelly Gen 1 devices are controlled using the CoIoT protocol (see the note below).
- 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.
- A 10-minute timer checks if the device has reported in that time.


## How to install and register a production-level plugin (from npm)

Expand Down
Binary file modified Screenshot home.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# TODO list

- drop down list of plugins
- fabrics list
- fix unpair procedure
20 changes: 10 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@
"devDependencies": {
"@tsconfig/node-lts": "^20.1.3",
"@types/express": "^4.17.21",
"@types/node": "^20.14.6",
"@types/node": "^20.14.7",
"@types/ws": "^8.5.10",
"@typescript-eslint/eslint-plugin": "^7.13.1",
"@typescript-eslint/parser": "^7.13.1",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"prettier": "^3.3.2",
"typescript": "^5.4.5"
"typescript": "^5.5.2"
},
"dependencies": {
"@project-chip/matter-node.js": "^0.9.2",
Expand Down
47 changes: 47 additions & 0 deletions src/cluster/CarbonDioxideConcentrationMeasurementCluster.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* eslint-disable @typescript-eslint/no-namespace */
/**
* @license
* Copyright 2022-2024 Matter.js Authors
* SPDX-License-Identifier: Apache-2.0
*/

/** * THIS FILE IS GENERATED, DO NOT EDIT ***/

import { ClusterRegistry, MutableCluster } from '@project-chip/matter-node.js/cluster';
import { Identity } from '@project-chip/matter-node.js/util';
import { ConcentrationMeasurement } from './ConcentrationMeasurementCluster.js';

export namespace CarbonDioxideConcentrationMeasurement {
export const Base = { ...ConcentrationMeasurement.Base, id: 0x40d, name: 'CarbonDioxideConcentrationMeasurement' };

/**
* @see {@link Cluster}
*/
export const ClusterInstance = MutableCluster.ExtensibleOnly(Base);

/**
* This alias specializes the semantics of {@link ConcentrationMeasurement.Cluster}.
*
* Per the Matter specification you cannot use {@link CarbonDioxideConcentrationMeasurementCluster} without
* enabling certain feature combinations. You must use the {@link with} factory method to obtain a working cluster.
*/
export type Cluster = Identity<typeof ClusterInstance>;

export const Cluster: Cluster = ClusterInstance;

/**
* This cluster supports all CarbonDioxideConcentrationMeasurement features. It may support illegal feature
* combinations.
*
* If you use this cluster you must manually specify which features are active and ensure the set of active
* features is legal per the Matter specification.
*/
export const CompleteInstance = MutableCluster({ ...ConcentrationMeasurement.Complete, id: 0x40d });

export type Complete = Identity<typeof CompleteInstance>;
export const Complete: Complete = CompleteInstance;
}

export type CarbonDioxideConcentrationMeasurementCluster = CarbonDioxideConcentrationMeasurement.Cluster;
export const CarbonDioxideConcentrationMeasurementCluster = CarbonDioxideConcentrationMeasurement.Cluster;
ClusterRegistry.register(CarbonDioxideConcentrationMeasurement.Complete);
47 changes: 47 additions & 0 deletions src/cluster/FormaldehydeConcentrationMeasurementCluster.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* eslint-disable @typescript-eslint/no-namespace */
/**
* @license
* Copyright 2022-2024 Matter.js Authors
* SPDX-License-Identifier: Apache-2.0
*/

/** * THIS FILE IS GENERATED, DO NOT EDIT ***/

import { ClusterRegistry, MutableCluster } from '@project-chip/matter-node.js/cluster';
import { Identity } from '@project-chip/matter-node.js/util';
import { ConcentrationMeasurement } from './ConcentrationMeasurementCluster.js';

export namespace FormaldehydeConcentrationMeasurement {
export const Base = { ...ConcentrationMeasurement.Base, id: 0x42b, name: 'FormaldehydeConcentrationMeasurement' };

/**
* @see {@link Cluster}
*/
export const ClusterInstance = MutableCluster.ExtensibleOnly(Base);

/**
* This alias specializes the semantics of {@link ConcentrationMeasurement.Cluster}.
*
* Per the Matter specification you cannot use {@link FormaldehydeConcentrationMeasurementCluster} without enabling
* certain feature combinations. You must use the {@link with} factory method to obtain a working cluster.
*/
export type Cluster = Identity<typeof ClusterInstance>;

export const Cluster: Cluster = ClusterInstance;

/**
* This cluster supports all FormaldehydeConcentrationMeasurement features. It may support illegal feature
* combinations.
*
* If you use this cluster you must manually specify which features are active and ensure the set of active
* features is legal per the Matter specification.
*/
export const CompleteInstance = MutableCluster({ ...ConcentrationMeasurement.Complete, id: 0x42b });

export type Complete = Identity<typeof CompleteInstance>;
export const Complete: Complete = CompleteInstance;
}

export type FormaldehydeConcentrationMeasurementCluster = FormaldehydeConcentrationMeasurement.Cluster;
export const FormaldehydeConcentrationMeasurementCluster = FormaldehydeConcentrationMeasurement.Cluster;
ClusterRegistry.register(FormaldehydeConcentrationMeasurement.Complete);
51 changes: 51 additions & 0 deletions src/cluster/NitrogenDioxideConcentrationMeasurementCluster.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/* eslint-disable @typescript-eslint/no-namespace */
/**
* @license
* Copyright 2022-2024 Matter.js Authors
* SPDX-License-Identifier: Apache-2.0
*/

/** * THIS FILE IS GENERATED, DO NOT EDIT ***/

import { ClusterRegistry, MutableCluster } from '@project-chip/matter-node.js/cluster';
import { Identity } from '@project-chip/matter-node.js/util';
import { ConcentrationMeasurement } from './ConcentrationMeasurementCluster.js';

export namespace NitrogenDioxideConcentrationMeasurement {
export const Base = {
...ConcentrationMeasurement.Base,
id: 0x413,
name: 'NitrogenDioxideConcentrationMeasurement',
};

/**
* @see {@link Cluster}
*/
export const ClusterInstance = MutableCluster.ExtensibleOnly(Base);

/**
* This alias specializes the semantics of {@link ConcentrationMeasurement.Cluster}.
*
* Per the Matter specification you cannot use {@link NitrogenDioxideConcentrationMeasurementCluster} without
* enabling certain feature combinations. You must use the {@link with} factory method to obtain a working cluster.
*/
export type Cluster = Identity<typeof ClusterInstance>;

export const Cluster: Cluster = ClusterInstance;

/**
* This cluster supports all NitrogenDioxideConcentrationMeasurement features. It may support illegal feature
* combinations.
*
* If you use this cluster you must manually specify which features are active and ensure the set of active
* features is legal per the Matter specification.
*/
export const CompleteInstance = MutableCluster({ ...ConcentrationMeasurement.Complete, id: 0x413 });

export type Complete = Identity<typeof CompleteInstance>;
export const Complete: Complete = CompleteInstance;
}

export type NitrogenDioxideConcentrationMeasurementCluster = NitrogenDioxideConcentrationMeasurement.Cluster;
export const NitrogenDioxideConcentrationMeasurementCluster = NitrogenDioxideConcentrationMeasurement.Cluster;
ClusterRegistry.register(NitrogenDioxideConcentrationMeasurement.Complete);
46 changes: 46 additions & 0 deletions src/cluster/OzoneConcentrationMeasurementCluster.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* eslint-disable @typescript-eslint/no-namespace */
/**
* @license
* Copyright 2022-2024 Matter.js Authors
* SPDX-License-Identifier: Apache-2.0
*/

/** * THIS FILE IS GENERATED, DO NOT EDIT ***/

import { ClusterRegistry, MutableCluster } from '@project-chip/matter-node.js/cluster';
import { Identity } from '@project-chip/matter-node.js/util';
import { ConcentrationMeasurement } from './ConcentrationMeasurementCluster.js';

export namespace OzoneConcentrationMeasurement {
export const Base = { ...ConcentrationMeasurement.Base, id: 0x415, name: 'OzoneConcentrationMeasurement' };

/**
* @see {@link Cluster}
*/
export const ClusterInstance = MutableCluster.ExtensibleOnly(Base);

/**
* This alias specializes the semantics of {@link ConcentrationMeasurement.Cluster}.
*
* Per the Matter specification you cannot use {@link OzoneConcentrationMeasurementCluster} without enabling
* certain feature combinations. You must use the {@link with} factory method to obtain a working cluster.
*/
export type Cluster = Identity<typeof ClusterInstance>;

export const Cluster: Cluster = ClusterInstance;

/**
* This cluster supports all OzoneConcentrationMeasurement features. It may support illegal feature combinations.
*
* If you use this cluster you must manually specify which features are active and ensure the set of active
* features is legal per the Matter specification.
*/
export const CompleteInstance = MutableCluster({ ...ConcentrationMeasurement.Complete, id: 0x415 });

export type Complete = Identity<typeof CompleteInstance>;
export const Complete: Complete = CompleteInstance;
}

export type OzoneConcentrationMeasurementCluster = OzoneConcentrationMeasurement.Cluster;
export const OzoneConcentrationMeasurementCluster = OzoneConcentrationMeasurement.Cluster;
ClusterRegistry.register(OzoneConcentrationMeasurement.Complete);
Loading

0 comments on commit ac38eb9

Please sign in to comment.