From 3e9dd77ada33749ebb2997785178df491633dd8c Mon Sep 17 00:00:00 2001 From: "zhijie.wang" Date: Tue, 1 Jul 2025 11:30:02 +0800 Subject: [PATCH] Add multiplier and divisor attributes to ThirdRealityMeteringCluster --- matter_server/common/custom_clusters.py | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/matter_server/common/custom_clusters.py b/matter_server/common/custom_clusters.py index 024689fa..f71b4de3 100644 --- a/matter_server/common/custom_clusters.py +++ b/matter_server/common/custom_clusters.py @@ -606,11 +606,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor( Label="instantaneousDemand", Tag=0x0400, Type=uint ), + ClusterObjectFieldDescriptor(Label="multiplier", Tag=0x0301, Type=uint), + ClusterObjectFieldDescriptor(Label="divisor", Tag=0x0302, Type=uint), ] ) currentSummationDelivered: uint | None = None instantaneousDemand: uint | None = None + multiplier: uint = 1 + divisor: uint = 1 class Attributes: """Attributes for the custom Cluster.""" @@ -644,6 +648,48 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: uint = 0 + @dataclass + class Divisor(ClusterAttributeDescriptor, CustomClusterAttributeMixin): + """Divisor Attribute within the ThirdRealityMeteringCluster Cluster.""" + + @ChipUtility.classproperty + def cluster_id(cls) -> int: + """Return cluster id.""" + return 0x130DFC02 + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + """Return attribute id.""" + return 0x0302 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + """Return attribute type.""" + return ClusterObjectFieldDescriptor(Type=uint) + + value: uint = 1 + + @dataclass + class Multiplier(ClusterAttributeDescriptor, CustomClusterAttributeMixin): + """Multiplier Attribute within the ThirdRealityMeteringCluster Cluster.""" + + @ChipUtility.classproperty + def cluster_id(cls) -> int: + """Return cluster id.""" + return 0x130DFC02 + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + """Return attribute id.""" + return 0x0301 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + """Return attribute type.""" + return ClusterObjectFieldDescriptor(Type=uint) + + value: uint = 1 + @dataclass class InstantaneousDemand( ClusterAttributeDescriptor, CustomClusterAttributeMixin