From 8afee640ef005153a489cbc7a7743589cf5d2607 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Mon, 20 Apr 2026 11:17:09 +0100 Subject: [PATCH] Remove device ids from extra_state_attrs of Evohome's Button entities (#168517) Co-authored-by: Claude Sonnet 4.6 --- homeassistant/components/evohome/button.py | 31 +++-- homeassistant/components/evohome/entity.py | 6 +- .../evohome/snapshots/test_button.ambr | 111 ------------------ 3 files changed, 16 insertions(+), 132 deletions(-) diff --git a/homeassistant/components/evohome/button.py b/homeassistant/components/evohome/button.py index eed5c2fb581..2283a6919e4 100644 --- a/homeassistant/components/evohome/button.py +++ b/homeassistant/components/evohome/button.py @@ -9,10 +9,11 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType +from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import EVOHOME_DATA from .coordinator import EvoDataUpdateCoordinator -from .entity import EvoEntity, is_valid_zone, unique_zone_id +from .entity import is_valid_zone, unique_zone_id async def async_setup_platform( @@ -40,15 +41,22 @@ async def async_setup_platform( async_add_entities(entities) - for entity in entities: - await entity.update_attrs() - -class EvoResetButtonBase(EvoEntity, ButtonEntity): - """Base for reset button entities.""" +class EvoResetButtonBase(CoordinatorEntity[EvoDataUpdateCoordinator], ButtonEntity): + """Base for Evohome's Button entities.""" _attr_entity_category = EntityCategory.CONFIG - _evo_state_attr_names = () + + _evo_device: evo.ControlSystem | evo.HotWater | evo.Zone + + def __init__( + self, + coordinator: EvoDataUpdateCoordinator, + evo_device: evo.ControlSystem | evo.HotWater | evo.Zone, + ) -> None: + """Initialize an Evohome reset button entity.""" + super().__init__(coordinator, context=evo_device.id) + self._evo_device = evo_device async def async_press(self) -> None: """Reset the Evohome entity to its base operating mode.""" @@ -58,10 +66,7 @@ class EvoResetButtonBase(EvoEntity, ButtonEntity): class EvoResetSystemButton(EvoResetButtonBase): """Button entity for system reset.""" - _attr_translation_key = "reset_system_mode" - _evo_device: evo.ControlSystem - _evo_id_attr = "system_id" def __init__( self, @@ -78,10 +83,7 @@ class EvoResetSystemButton(EvoResetButtonBase): class EvoResetDhwButton(EvoResetButtonBase): """Button entity for DHW override reset.""" - _attr_translation_key = "clear_dhw_override" - _evo_device: evo.HotWater - _evo_id_attr = "dhw_id" def __init__( self, @@ -98,10 +100,7 @@ class EvoResetDhwButton(EvoResetButtonBase): class EvoResetZoneButton(EvoResetButtonBase): """Button entity for zone override reset.""" - _attr_translation_key = "clear_zone_override" - _evo_device: evo.Zone - _evo_id_attr = "zone_id" def __init__( self, diff --git a/homeassistant/components/evohome/entity.py b/homeassistant/components/evohome/entity.py index 344a592352d..4700471d23e 100644 --- a/homeassistant/components/evohome/entity.py +++ b/homeassistant/components/evohome/entity.py @@ -40,11 +40,7 @@ def unique_zone_id(evo_device: evo.Zone) -> str: class EvoEntity(CoordinatorEntity[EvoDataUpdateCoordinator]): - """Base for any evohome-compatible entity (controller, DHW, zone). - - This includes the controller, (1 to 12) heating zones and (optionally) a - DHW controller. - """ + """Base for Evohome's Climate & WaterHeater entities.""" _evo_device: evo.ControlSystem | evo.HotWater | evo.Zone _evo_id_attr: str diff --git a/tests/components/evohome/snapshots/test_button.ambr b/tests/components/evohome/snapshots/test_button.ambr index 79dc055277c..aec3369b18e 100644 --- a/tests/components/evohome/snapshots/test_button.ambr +++ b/tests/components/evohome/snapshots/test_button.ambr @@ -3,9 +3,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Bathroom Dn', - 'status': dict({ - 'zone_id': '3432579', - }), }), 'context': , 'entity_id': 'button.reset_bathroom_dn', @@ -19,9 +16,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Dead Zone', - 'status': dict({ - 'zone_id': '3432521', - }), }), 'context': , 'entity_id': 'button.reset_dead_zone', @@ -35,9 +29,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Domestic Hot Water', - 'status': dict({ - 'dhw_id': '3933910', - }), }), 'context': , 'entity_id': 'button.reset_domestic_hot_water', @@ -51,9 +42,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Front Room', - 'status': dict({ - 'zone_id': '3432577', - }), }), 'context': , 'entity_id': 'button.reset_front_room', @@ -67,9 +55,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Kids Room', - 'status': dict({ - 'zone_id': '3449703', - }), }), 'context': , 'entity_id': 'button.reset_kids_room', @@ -83,9 +68,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Kitchen', - 'status': dict({ - 'zone_id': '3432578', - }), }), 'context': , 'entity_id': 'button.reset_kitchen', @@ -99,9 +81,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Main Bedroom', - 'status': dict({ - 'zone_id': '3432580', - }), }), 'context': , 'entity_id': 'button.reset_main_bedroom', @@ -115,9 +94,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Main Room', - 'status': dict({ - 'zone_id': '3432576', - }), }), 'context': , 'entity_id': 'button.reset_main_room', @@ -131,9 +107,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset My Home', - 'status': dict({ - 'system_id': '3432522', - }), }), 'context': , 'entity_id': 'button.reset_my_home', @@ -147,9 +120,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Bathroom Dn', - 'status': dict({ - 'zone_id': '3432579', - }), }), 'context': , 'entity_id': 'button.reset_bathroom_dn', @@ -163,9 +133,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Dead Zone', - 'status': dict({ - 'zone_id': '3432521', - }), }), 'context': , 'entity_id': 'button.reset_dead_zone', @@ -179,9 +146,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Domestic Hot Water', - 'status': dict({ - 'dhw_id': '3933910', - }), }), 'context': , 'entity_id': 'button.reset_domestic_hot_water', @@ -195,9 +159,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Front Room', - 'status': dict({ - 'zone_id': '3432577', - }), }), 'context': , 'entity_id': 'button.reset_front_room', @@ -211,9 +172,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Kids Room', - 'status': dict({ - 'zone_id': '3449703', - }), }), 'context': , 'entity_id': 'button.reset_kids_room', @@ -227,9 +185,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Kitchen', - 'status': dict({ - 'zone_id': '3432578', - }), }), 'context': , 'entity_id': 'button.reset_kitchen', @@ -243,9 +198,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Main Bedroom', - 'status': dict({ - 'zone_id': '3432580', - }), }), 'context': , 'entity_id': 'button.reset_main_bedroom', @@ -259,9 +211,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Main Room', - 'status': dict({ - 'zone_id': '3432576', - }), }), 'context': , 'entity_id': 'button.reset_main_room', @@ -275,9 +224,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset My Home', - 'status': dict({ - 'system_id': '3432522', - }), }), 'context': , 'entity_id': 'button.reset_my_home', @@ -291,9 +237,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Spare Room', - 'status': dict({ - 'zone_id': '3450733', - }), }), 'context': , 'entity_id': 'button.reset_spare_room', @@ -307,9 +250,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset My Home', - 'status': dict({ - 'system_id': '416856', - }), }), 'context': , 'entity_id': 'button.reset_my_home', @@ -323,9 +263,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset THERMOSTAT', - 'status': dict({ - 'zone_id': '416856', - }), }), 'context': , 'entity_id': 'button.reset_thermostat', @@ -339,9 +276,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset My Home', - 'status': dict({ - 'system_id': '8557535', - }), }), 'context': , 'entity_id': 'button.reset_my_home', @@ -355,9 +289,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset THERMOSTAT', - 'status': dict({ - 'zone_id': '8557539', - }), }), 'context': , 'entity_id': 'button.reset_thermostat', @@ -371,9 +302,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset THERMOSTAT', - 'status': dict({ - 'zone_id': '8557541', - }), }), 'context': , 'entity_id': 'button.reset_thermostat_2', @@ -387,9 +315,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Thermostat', - 'status': dict({ - 'zone_id': '3454854', - }), }), 'context': , 'entity_id': 'button.reset_thermostat', @@ -403,9 +328,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Thermostat 2', - 'status': dict({ - 'zone_id': '3454855', - }), }), 'context': , 'entity_id': 'button.reset_thermostat_2', @@ -419,9 +341,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Vr**********', - 'status': dict({ - 'system_id': '3454856', - }), }), 'context': , 'entity_id': 'button.reset_vr', @@ -435,9 +354,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Ba******', - 'status': dict({ - 'zone_id': '10090505', - }), }), 'context': , 'entity_id': 'button.reset_ba', @@ -451,9 +367,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Ka*********', - 'status': dict({ - 'zone_id': '10090507', - }), }), 'context': , 'entity_id': 'button.reset_ka', @@ -467,9 +380,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Ka*****', - 'status': dict({ - 'zone_id': '10090508', - }), }), 'context': , 'entity_id': 'button.reset_ka_2', @@ -483,9 +393,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Kl********', - 'status': dict({ - 'system_id': '10090510', - }), }), 'context': , 'entity_id': 'button.reset_kl', @@ -499,9 +406,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Sl********', - 'status': dict({ - 'zone_id': '10090506', - }), }), 'context': , 'entity_id': 'button.reset_sl', @@ -515,9 +419,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Wo*******', - 'status': dict({ - 'zone_id': '10090509', - }), }), 'context': , 'entity_id': 'button.reset_wo', @@ -531,9 +432,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Main Room', - 'status': dict({ - 'zone_id': '3432576', - }), }), 'context': , 'entity_id': 'button.reset_main_room', @@ -547,9 +445,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset My Home', - 'status': dict({ - 'system_id': '3432522', - }), }), 'context': , 'entity_id': 'button.reset_my_home', @@ -563,9 +458,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Living room', - 'status': dict({ - 'system_id': '4187769', - }), }), 'context': , 'entity_id': 'button.reset_living_room', @@ -579,9 +471,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'Reset Thermostat', - 'status': dict({ - 'zone_id': '4187768', - }), }), 'context': , 'entity_id': 'button.reset_thermostat',