1 """Matter Number Inputs."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from chip.clusters
import Objects
as clusters
8 from matter_server.common
import custom_clusters
9 from matter_server.common.helpers.util
import create_attribute_path_from_attribute
14 NumberEntityDescription,
22 from .entity
import MatterEntity, MatterEntityDescription
23 from .helpers
import get_matter
24 from .models
import MatterDiscoverySchema
29 config_entry: ConfigEntry,
30 async_add_entities: AddEntitiesCallback,
32 """Set up Matter Number Input from Config Entry."""
34 matter.register_platform_handler(Platform.NUMBER, async_add_entities)
37 @dataclass(frozen=True)
39 """Describe Matter Number Input entities."""
43 """Representation of a Matter Attribute as a Number entity."""
45 entity_description: MatterNumberEntityDescription
48 """Update the current value."""
49 matter_attribute = self.
_entity_info_entity_info.primary_attribute
50 sendvalue =
int(value)
52 sendvalue = value_convert(value)
54 node_id=self.
_endpoint_endpoint.node.node_id,
55 attribute_path=create_attribute_path_from_attribute(
64 """Update from device."""
67 value = value_convert(value)
74 platform=Platform.NUMBER,
77 entity_category=EntityCategory.CONFIG,
78 translation_key=
"on_level",
83 measurement_to_ha=
lambda x: 255
if x
is None else x,
84 ha_to_native_value=
lambda x:
None if x == 255
else int(x),
86 native_unit_of_measurement=
None,
88 entity_class=MatterNumber,
89 required_attributes=(clusters.LevelControl.Attributes.OnLevel,),
92 platform=Platform.NUMBER,
94 key=
"on_transition_time",
95 entity_category=EntityCategory.CONFIG,
96 translation_key=
"on_transition_time",
97 native_max_value=65534,
99 measurement_to_ha=
lambda x:
None if x
is None else x / 10,
100 ha_to_native_value=
lambda x: round(x * 10),
102 native_unit_of_measurement=UnitOfTime.SECONDS,
105 entity_class=MatterNumber,
106 required_attributes=(clusters.LevelControl.Attributes.OnTransitionTime,),
109 platform=Platform.NUMBER,
111 key=
"off_transition_time",
112 entity_category=EntityCategory.CONFIG,
113 translation_key=
"off_transition_time",
114 native_max_value=65534,
116 measurement_to_ha=
lambda x:
None if x
is None else x / 10,
117 ha_to_native_value=
lambda x: round(x * 10),
119 native_unit_of_measurement=UnitOfTime.SECONDS,
122 entity_class=MatterNumber,
123 required_attributes=(clusters.LevelControl.Attributes.OffTransitionTime,),
126 platform=Platform.NUMBER,
128 key=
"on_off_transition_time",
129 entity_category=EntityCategory.CONFIG,
130 translation_key=
"on_off_transition_time",
131 native_max_value=65534,
133 measurement_to_ha=
lambda x:
None if x
is None else x / 10,
134 ha_to_native_value=
lambda x: round(x * 10),
136 native_unit_of_measurement=UnitOfTime.SECONDS,
139 entity_class=MatterNumber,
140 required_attributes=(clusters.LevelControl.Attributes.OnOffTransitionTime,),
143 platform=Platform.NUMBER,
145 key=
"EveWeatherAltitude",
146 device_class=NumberDeviceClass.DISTANCE,
147 entity_category=EntityCategory.CONFIG,
148 translation_key=
"altitude",
149 native_max_value=9000,
151 native_unit_of_measurement=UnitOfLength.METERS,
155 entity_class=MatterNumber,
156 required_attributes=(custom_clusters.EveCluster.Attributes.Altitude,),
Any get_matter_attribute_value(self, type[ClusterAttributeDescriptor] attribute, bool null_as_none=True)
None _update_from_device(self)
None async_set_native_value(self, float value)
MatterAdapter get_matter(HomeAssistant hass)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)