1 """Models used for the Matter integration."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
6 from typing
import Any, TypedDict
8 from chip.clusters
import Objects
as clusters
9 from chip.clusters.Objects
import Cluster, ClusterAttributeDescriptor
10 from matter_server.client.models.device_types
import DeviceType
11 from matter_server.client.models.node
import MatterEndpoint
16 type SensorValueTypes = type[
17 clusters.uint | int | clusters.Nullable | clusters.float32 | float
22 """Dictionary with Matter Device info.
24 Used to send to other Matter controllers,
25 such as Google Home to prevent duplicated devices.
27 Reference: https://developers.home.google.com/matter/device-deduplication
37 """Info discovered from (primary) Matter Attribute to create entity."""
40 endpoint: MatterEndpoint
46 attributes_to_watch: list[type[ClusterAttributeDescriptor]]
49 entity_description: EntityDescription
55 discovery_schema: MatterDiscoverySchema
59 """Return Primary Attribute belonging to the entity."""
60 return self.attributes_to_watch[0]
65 """Matter discovery schema.
67 The Matter endpoint and its (primary) Attribute
68 for an entity must match these conditions.
75 entity_description: EntityDescription
84 required_attributes: tuple[type[ClusterAttributeDescriptor], ...]
87 device_type: tuple[type[DeviceType] | DeviceType, ...] |
None =
None
90 not_device_type: tuple[type[DeviceType] | DeviceType, ...] |
None =
None
93 vendor_id: tuple[int, ...] |
None =
None
96 product_name: tuple[str, ...] |
None =
None
99 endpoint_id: tuple[int, ...] |
None =
None
103 absent_attributes: tuple[type[ClusterAttributeDescriptor], ...] |
None =
None
107 absent_clusters: tuple[type[Cluster], ...] |
None =
None
112 optional_attributes: tuple[type[ClusterAttributeDescriptor], ...] |
None =
None
117 value_contains: Any |
None =
None
121 featuremap_contains: int |
None =
None
125 allow_multi: bool =
False
type[ClusterAttributeDescriptor] primary_attribute(self)