1 """TOLO Sauna switch controls."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
9 from tololib
import ToloClient, ToloStatus
16 from .const
import DOMAIN
17 from .coordinator
import ToloSaunaUpdateCoordinator
18 from .entity
import ToloSaunaCoordinatorEntity
21 @dataclass(frozen=True, kw_only=True)
23 """Class describing TOLO switch entities."""
25 getter: Callable[[ToloStatus], bool]
26 setter: Callable[[ToloClient, bool], bool]
31 key=
"aroma_therapy_on",
32 translation_key=
"aroma_therapy_on",
33 getter=
lambda status: status.aroma_therapy_on,
34 setter=
lambda client, value: client.set_aroma_therapy_on(value),
38 translation_key=
"salt_bath_on",
39 getter=
lambda status: status.salt_bath_on,
40 setter=
lambda client, value: client.set_salt_bath_on(value),
48 async_add_entities: AddEntitiesCallback,
50 """Set up switch controls for TOLO Sauna."""
51 coordinator = hass.data[DOMAIN][entry.entry_id]
53 ToloSwitchEntity(coordinator, entry, description)
for description
in SWITCHES
58 """TOLO switch entity."""
60 entity_description: ToloSwitchEntityDescription
64 coordinator: ToloSaunaUpdateCoordinator,
66 entity_description: ToloSwitchEntityDescription,
68 """Initialize TOLO switch entity."""
71 self.
_attr_unique_id_attr_unique_id = f
"{entry.entry_id}_{entity_description.key}"
75 """Return if the switch is currently on."""
79 """Turn the switch on."""
83 """Turn the switch off."""
None turn_off(self, **Any kwargs)
None turn_on(self, **Any kwargs)
None __init__(self, ToloSaunaUpdateCoordinator coordinator, ConfigEntry entry, ToloSwitchEntityDescription entity_description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)