1 """Renson ventilation unit time."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from datetime
import datetime, time
9 from renson_endura_delta.field_enum
import DAYTIME_FIELD, NIGHTTIME_FIELD, FieldEnum
10 from renson_endura_delta.renson
import RensonVentilation
18 from .
import RensonData
19 from .const
import DOMAIN
20 from .coordinator
import RensonCoordinator
21 from .entity
import RensonEntity
24 @dataclass(kw_only=True, frozen=True)
26 """Class describing Renson time entity."""
28 action_fn: Callable[[RensonVentilation, str],
None]
32 ENTITY_DESCRIPTIONS: tuple[RensonTimeEntityDescription, ...] = (
35 entity_category=EntityCategory.CONFIG,
36 translation_key=
"day_time",
37 action_fn=
lambda api, time: api.set_day_time(time),
42 translation_key=
"night_time",
43 entity_category=EntityCategory.CONFIG,
44 action_fn=
lambda api, time: api.set_night_time(time),
45 field=NIGHTTIME_FIELD,
52 config_entry: ConfigEntry,
53 async_add_entities: AddEntitiesCallback,
55 """Set up the Renson time platform."""
57 data: RensonData = hass.data[DOMAIN][config_entry.entry_id]
60 RensonTime(description, data.coordinator)
for description
in ENTITY_DESCRIPTIONS
67 """Representation of a Renson time entity."""
69 entity_description: RensonTimeEntityDescription
70 _attr_has_entity_name =
True
74 description: RensonTimeEntityDescription,
75 coordinator: RensonCoordinator,
77 """Initialize class."""
78 super().
__init__(description.key, coordinator.api, coordinator)
84 """Handle updated data from the coordinator."""
86 all_data = self.coordinator.data
98 """Triggers the action."""
100 string_value = value.strftime(
"%H:%M")
None _handle_coordinator_update(self)
None set_value(self, time value)
None __init__(self, RensonTimeEntityDescription description, RensonCoordinator coordinator)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
bool time(HomeAssistant hass, dt_time|str|None before=None, dt_time|str|None after=None, str|Container[str]|None weekday=None)