1 """Support for Renault button entities."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Coroutine
6 from dataclasses
import dataclass
13 from .
import RenaultConfigEntry
14 from .entity
import RenaultEntity
17 @dataclass(frozen=True, kw_only=True)
19 """Class describing Renault button entities."""
21 async_press: Callable[[RenaultButtonEntity], Coroutine[Any, Any, Any]]
22 requires_electricity: bool =
False
27 config_entry: RenaultConfigEntry,
28 async_add_entities: AddEntitiesCallback,
30 """Set up the Renault entities from config entry."""
31 entities: list[RenaultButtonEntity] = [
33 for vehicle
in config_entry.runtime_data.vehicles.values()
34 for description
in BUTTON_TYPES
35 if not description.requires_electricity
or vehicle.details.uses_electricity()
41 """Mixin for button specific attributes."""
43 entity_description: RenaultButtonEntityDescription
46 """Process the button press."""
50 BUTTON_TYPES: tuple[RenaultButtonEntityDescription, ...] = (
52 async_press=
lambda x: x.vehicle.set_ac_start(21,
None),
53 key=
"start_air_conditioner",
54 translation_key=
"start_air_conditioner",
57 async_press=
lambda x: x.vehicle.set_charge_start(),
59 requires_electricity=
True,
60 translation_key=
"start_charge",
63 async_press=
lambda x: x.vehicle.set_charge_stop(),
65 requires_electricity=
True,
66 translation_key=
"stop_charge",