Skip to content

Commit e54c2ea

Browse files
Ensure Renault buttons are supported by the vehicle (home-assistant#161893)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
1 parent 1ec4269 commit e54c2ea

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

homeassistant/components/renault/button.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from . import RenaultConfigEntry
1414
from .entity import RenaultEntity
15+
from .renault_vehicle import RenaultVehicleProxy
1516

1617
# Coordinator is used to centralize the data updates
1718
# but renault servers are unreliable and it's safer to queue action calls
@@ -23,7 +24,7 @@ class RenaultButtonEntityDescription(ButtonEntityDescription):
2324
"""Class describing Renault button entities."""
2425

2526
async_press: Callable[[RenaultButtonEntity], Coroutine[Any, Any, Any]]
26-
requires_electricity: bool = False
27+
is_supported: Callable[[RenaultVehicleProxy], bool]
2728

2829

2930
async def async_setup_entry(
@@ -36,7 +37,7 @@ async def async_setup_entry(
3637
RenaultButtonEntity(vehicle, description)
3738
for vehicle in config_entry.runtime_data.vehicles.values()
3839
for description in BUTTON_TYPES
39-
if not description.requires_electricity or vehicle.details.uses_electricity()
40+
if description.is_supported(vehicle)
4041
]
4142
async_add_entities(entities)
4243

@@ -55,18 +56,27 @@ async def async_press(self) -> None:
5556
RenaultButtonEntityDescription(
5657
async_press=lambda x: x.vehicle.set_ac_start(21, None),
5758
key="start_air_conditioner",
59+
is_supported=lambda vehicle: (
60+
vehicle.details.supports_endpoint("actions/hvac-start")
61+
),
5862
translation_key="start_air_conditioner",
5963
),
6064
RenaultButtonEntityDescription(
6165
async_press=lambda x: x.vehicle.set_charge_start(),
6266
key="start_charge",
63-
requires_electricity=True,
67+
is_supported=lambda vehicle: (
68+
vehicle.details.supports_endpoint("actions/charge-start")
69+
and vehicle.details.uses_electricity()
70+
),
6471
translation_key="start_charge",
6572
),
6673
RenaultButtonEntityDescription(
6774
async_press=lambda x: x.vehicle.set_charge_stop(),
6875
key="stop_charge",
69-
requires_electricity=True,
76+
is_supported=lambda vehicle: (
77+
vehicle.details.supports_endpoint("actions/charge-stop")
78+
and vehicle.details.uses_electricity()
79+
),
7080
translation_key="stop_charge",
7181
),
7282
)

0 commit comments

Comments
 (0)