From bfd4f8522554876f3a19fd9bbd2b8606356778a3 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 27 Aug 2025 10:37:32 +0200 Subject: [PATCH] Fix husqvarna_automower_ble activity mapping (#151228) --- .../husqvarna_automower_ble/lawn_mower.py | 4 ++++ .../husqvarna_automower_ble/test_lawn_mower.py | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/husqvarna_automower_ble/lawn_mower.py b/homeassistant/components/husqvarna_automower_ble/lawn_mower.py index 78d39ddd96a..ffe05bac8a8 100644 --- a/homeassistant/components/husqvarna_automower_ble/lawn_mower.py +++ b/homeassistant/components/husqvarna_automower_ble/lawn_mower.py @@ -73,6 +73,10 @@ class AutomowerLawnMower(HusqvarnaAutomowerBleEntity, LawnMowerEntity): if state in (MowerState.STOPPED, MowerState.OFF, MowerState.WAIT_FOR_SAFETYPIN): # This is actually stopped, but that isn't an option return LawnMowerActivity.ERROR + if state == MowerState.PENDING_START and activity == MowerActivity.NONE: + # This happens when the mower is safety stopped and we try to send a + # command to start it. + return LawnMowerActivity.ERROR if state in ( MowerState.RESTRICTED, MowerState.IN_OPERATION, diff --git a/tests/components/husqvarna_automower_ble/test_lawn_mower.py b/tests/components/husqvarna_automower_ble/test_lawn_mower.py index 2a127c785d9..25e02a43acc 100644 --- a/tests/components/husqvarna_automower_ble/test_lawn_mower.py +++ b/tests/components/husqvarna_automower_ble/test_lawn_mower.py @@ -156,7 +156,7 @@ OPERATIONAL_STATES = [ # Operational states are mapped according to the activity ( OPERATIONAL_STATES, - [MowerActivity.CHARGING, MowerActivity.NONE, MowerActivity.PARKED], + [MowerActivity.CHARGING, MowerActivity.PARKED], LawnMowerActivity.DOCKED, ), ( @@ -174,6 +174,17 @@ OPERATIONAL_STATES = [ [MowerActivity.STOPPED_IN_GARDEN], LawnMowerActivity.ERROR, ), + # Special case for MowerActivity.NONE + ( + [MowerState.IN_OPERATION, MowerState.RESTRICTED], + [MowerActivity.NONE], + LawnMowerActivity.DOCKED, + ), + ( + [MowerState.PENDING_START], + [MowerActivity.NONE], + LawnMowerActivity.ERROR, + ), ], ) async def test_mower_activity_mapping(