From 8ce9238f7acd6aed5a630630dd07ddff74ae1990 Mon Sep 17 00:00:00 2001 From: Brett Adams Date: Tue, 28 Oct 2025 21:42:53 +1000 Subject: [PATCH] Handle cpd_enabled error in Tessie (#155322) --- homeassistant/components/tessie/const.py | 1 + homeassistant/components/tessie/strings.json | 3 +++ tests/components/tessie/test_climate.py | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/homeassistant/components/tessie/const.py b/homeassistant/components/tessie/const.py index 4731f5168a2..42dc25a90f2 100644 --- a/homeassistant/components/tessie/const.py +++ b/homeassistant/components/tessie/const.py @@ -21,6 +21,7 @@ TRANSLATED_ERRORS = { "already inactive": "already_inactive", "incorrect pin": "incorrect_pin", "no cable": "no_cable", + "cpd_enabled": "cpd_enabled", } diff --git a/homeassistant/components/tessie/strings.json b/homeassistant/components/tessie/strings.json index ebb311f0ec1..df68ad4cf0c 100644 --- a/homeassistant/components/tessie/strings.json +++ b/homeassistant/components/tessie/strings.json @@ -517,6 +517,9 @@ "command_failed": { "message": "Command failed, {message}" }, + "cpd_enabled": { + "message": "Child presence detection has blocked the command, remove weight from seats." + }, "incorrect_pin": { "message": "Incorrect PIN for {name}." }, diff --git a/tests/components/tessie/test_climate.py b/tests/components/tessie/test_climate.py index 4a0134c1b58..87ba067ae5b 100644 --- a/tests/components/tessie/test_climate.py +++ b/tests/components/tessie/test_climate.py @@ -130,3 +130,21 @@ async def test_errors(hass: HomeAssistant) -> None: ) mock_set.assert_called_once() assert error.value.__cause__ == ERROR_UNKNOWN + + # Test setting climate with child presence detection error + with ( + patch( + "homeassistant.components.tessie.climate.start_climate_preconditioning", + return_value={"result": False, "reason": "cpd_enabled"}, + ) as mock_set, + pytest.raises(HomeAssistantError) as error, + ): + await hass.services.async_call( + CLIMATE_DOMAIN, + SERVICE_SET_HVAC_MODE, + {ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.HEAT_COOL}, + blocking=True, + ) + mock_set.assert_called_once() + assert error.value.translation_domain == "tessie" + assert error.value.translation_key == "cpd_enabled"