diff --git a/matter_server/common/custom_clusters.py b/matter_server/common/custom_clusters.py index 38762f6e..b5e8d59b 100644 --- a/matter_server/common/custom_clusters.py +++ b/matter_server/common/custom_clusters.py @@ -90,6 +90,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor( Label="pressure", Tag=0x130A0014, Type=float32 ), + ClusterObjectFieldDescriptor( + Label="valvePosition", Tag=0x130A0018, Type=int + ), ] ) @@ -101,6 +104,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: current: float32 | None = None altitude: float32 | None = None pressure: float32 | None = None + valvePosition: int | None = None class Attributes: """Attributes for the Eve Cluster.""" @@ -287,6 +291,29 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: float32 = 0 + @dataclass + class ValvePosition(ClusterAttributeDescriptor, CustomClusterAttributeMixin): + """ValvePosition Attribute within the Eve Cluster.""" + + should_poll = True + + @ChipUtility.classproperty + def cluster_id(cls) -> int: + """Return cluster id.""" + return 0x130AFC01 + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + """Return attribute id.""" + return 0x130A0018 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + """Return attribute type.""" + return ClusterObjectFieldDescriptor(Type=int) + + value: int = 0 + @dataclass class NeoCluster(Cluster, CustomClusterMixin):