Fix work area sensor for Husqvarna Automower (#141527)

* Fix work area sensor for Husqvarna Automower

* simplify
This commit is contained in:
Thomas55555 2025-03-26 22:16:26 +01:00 committed by GitHub
parent 3a207e2571
commit c3f8b7e200
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 3 deletions

View File

@ -227,12 +227,16 @@ def _get_work_area_names(data: MowerAttributes) -> list[str]:
@callback @callback
def _get_current_work_area_name(data: MowerAttributes) -> str: def _get_current_work_area_name(data: MowerAttributes) -> str:
"""Return the name of the current work area.""" """Return the name of the current work area."""
if data.mower.work_area_id is None:
return STATE_NO_WORK_AREA_ACTIVE
if TYPE_CHECKING: if TYPE_CHECKING:
# Sensor does not get created if values are None # Sensor does not get created if values are None
assert data.work_areas is not None assert data.work_areas is not None
return data.work_areas[data.mower.work_area_id].name if (
data.mower.work_area_id is not None
and data.mower.work_area_id in data.work_areas
):
return data.work_areas[data.mower.work_area_id].name
return STATE_NO_WORK_AREA_ACTIVE
@callback @callback

View File

@ -110,6 +110,18 @@ async def test_work_area_sensor(
state = hass.states.get("sensor.test_mower_1_work_area") state = hass.states.get("sensor.test_mower_1_work_area")
assert state.state == "my_lawn" assert state.state == "my_lawn"
# Test EPOS mower, which returns work_area_id = 0, when no
# work area is active and has no default work_area_id=0
values[TEST_MOWER_ID].mower.work_area_id = 0
del values[TEST_MOWER_ID].work_areas[0]
del values[TEST_MOWER_ID].work_area_dict[0]
mock_automower_client.get_status.return_value = values
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done()
state = hass.states.get("sensor.test_mower_1_work_area")
assert state.state == "no_work_area_active"
@pytest.mark.usefixtures("entity_registry_enabled_by_default") @pytest.mark.usefixtures("entity_registry_enabled_by_default")
@pytest.mark.parametrize( @pytest.mark.parametrize(