From e54c2ea55e000ed1bc4622fc2401ef78e977e1f0 Mon Sep 17 00:00:00 2001 From: Sebastiaan Speck <12570668+sebastiaanspeck@users.noreply.github.com> Date: Fri, 30 Jan 2026 09:58:50 +0100 Subject: [PATCH] Ensure Renault buttons are supported by the vehicle (#161893) Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> --- homeassistant/components/renault/button.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/renault/button.py b/homeassistant/components/renault/button.py index 82b811821ea6..75140867a3f4 100644 --- a/homeassistant/components/renault/button.py +++ b/homeassistant/components/renault/button.py @@ -12,6 +12,7 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from . import RenaultConfigEntry from .entity import RenaultEntity +from .renault_vehicle import RenaultVehicleProxy # Coordinator is used to centralize the data updates # but renault servers are unreliable and it's safer to queue action calls @@ -23,7 +24,7 @@ class RenaultButtonEntityDescription(ButtonEntityDescription): """Class describing Renault button entities.""" async_press: Callable[[RenaultButtonEntity], Coroutine[Any, Any, Any]] - requires_electricity: bool = False + is_supported: Callable[[RenaultVehicleProxy], bool] async def async_setup_entry( @@ -36,7 +37,7 @@ async def async_setup_entry( RenaultButtonEntity(vehicle, description) for vehicle in config_entry.runtime_data.vehicles.values() for description in BUTTON_TYPES - if not description.requires_electricity or vehicle.details.uses_electricity() + if description.is_supported(vehicle) ] async_add_entities(entities) @@ -55,18 +56,27 @@ BUTTON_TYPES: tuple[RenaultButtonEntityDescription, ...] = ( RenaultButtonEntityDescription( async_press=lambda x: x.vehicle.set_ac_start(21, None), key="start_air_conditioner", + is_supported=lambda vehicle: ( + vehicle.details.supports_endpoint("actions/hvac-start") + ), translation_key="start_air_conditioner", ), RenaultButtonEntityDescription( async_press=lambda x: x.vehicle.set_charge_start(), key="start_charge", - requires_electricity=True, + is_supported=lambda vehicle: ( + vehicle.details.supports_endpoint("actions/charge-start") + and vehicle.details.uses_electricity() + ), translation_key="start_charge", ), RenaultButtonEntityDescription( async_press=lambda x: x.vehicle.set_charge_stop(), key="stop_charge", - requires_electricity=True, + is_supported=lambda vehicle: ( + vehicle.details.supports_endpoint("actions/charge-stop") + and vehicle.details.uses_electricity() + ), translation_key="stop_charge", ), )