mirror of
https://github.com/home-assistant/core.git
synced 2025-07-07 13:27:09 +00:00
Fix wrong state in Husqvarna Automower (#146075)
This commit is contained in:
parent
db04c77e62
commit
e4bcde7d20
@ -1,7 +1,19 @@
|
|||||||
"""The constants for the Husqvarna Automower integration."""
|
"""The constants for the Husqvarna Automower integration."""
|
||||||
|
|
||||||
|
from aioautomower.model import MowerStates
|
||||||
|
|
||||||
DOMAIN = "husqvarna_automower"
|
DOMAIN = "husqvarna_automower"
|
||||||
EXECUTION_TIME_DELAY = 5
|
EXECUTION_TIME_DELAY = 5
|
||||||
NAME = "Husqvarna Automower"
|
NAME = "Husqvarna Automower"
|
||||||
OAUTH2_AUTHORIZE = "https://api.authentication.husqvarnagroup.dev/v1/oauth2/authorize"
|
OAUTH2_AUTHORIZE = "https://api.authentication.husqvarnagroup.dev/v1/oauth2/authorize"
|
||||||
OAUTH2_TOKEN = "https://api.authentication.husqvarnagroup.dev/v1/oauth2/token"
|
OAUTH2_TOKEN = "https://api.authentication.husqvarnagroup.dev/v1/oauth2/token"
|
||||||
|
|
||||||
|
ERROR_STATES = [
|
||||||
|
MowerStates.ERROR_AT_POWER_UP,
|
||||||
|
MowerStates.ERROR,
|
||||||
|
MowerStates.FATAL_ERROR,
|
||||||
|
MowerStates.OFF,
|
||||||
|
MowerStates.STOPPED,
|
||||||
|
MowerStates.WAIT_POWER_UP,
|
||||||
|
MowerStates.WAIT_UPDATING,
|
||||||
|
]
|
||||||
|
@ -18,7 +18,7 @@ from homeassistant.helpers import config_validation as cv, entity_platform
|
|||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import AutomowerConfigEntry
|
from . import AutomowerConfigEntry
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN, ERROR_STATES
|
||||||
from .coordinator import AutomowerDataUpdateCoordinator
|
from .coordinator import AutomowerDataUpdateCoordinator
|
||||||
from .entity import AutomowerAvailableEntity, handle_sending_exception
|
from .entity import AutomowerAvailableEntity, handle_sending_exception
|
||||||
|
|
||||||
@ -108,18 +108,28 @@ class AutomowerLawnMowerEntity(AutomowerAvailableEntity, LawnMowerEntity):
|
|||||||
def activity(self) -> LawnMowerActivity:
|
def activity(self) -> LawnMowerActivity:
|
||||||
"""Return the state of the mower."""
|
"""Return the state of the mower."""
|
||||||
mower_attributes = self.mower_attributes
|
mower_attributes = self.mower_attributes
|
||||||
|
if mower_attributes.mower.state in ERROR_STATES:
|
||||||
|
return LawnMowerActivity.ERROR
|
||||||
if mower_attributes.mower.state in PAUSED_STATES:
|
if mower_attributes.mower.state in PAUSED_STATES:
|
||||||
return LawnMowerActivity.PAUSED
|
return LawnMowerActivity.PAUSED
|
||||||
if (mower_attributes.mower.state == "RESTRICTED") or (
|
if mower_attributes.mower.activity == MowerActivities.GOING_HOME:
|
||||||
mower_attributes.mower.activity in DOCKED_ACTIVITIES
|
return LawnMowerActivity.RETURNING
|
||||||
|
if (
|
||||||
|
mower_attributes.mower.state is MowerStates.RESTRICTED
|
||||||
|
or mower_attributes.mower.activity in DOCKED_ACTIVITIES
|
||||||
):
|
):
|
||||||
return LawnMowerActivity.DOCKED
|
return LawnMowerActivity.DOCKED
|
||||||
if mower_attributes.mower.state in MowerStates.IN_OPERATION:
|
if mower_attributes.mower.state in MowerStates.IN_OPERATION:
|
||||||
if mower_attributes.mower.activity == MowerActivities.GOING_HOME:
|
|
||||||
return LawnMowerActivity.RETURNING
|
|
||||||
return LawnMowerActivity.MOWING
|
return LawnMowerActivity.MOWING
|
||||||
return LawnMowerActivity.ERROR
|
return LawnMowerActivity.ERROR
|
||||||
|
|
||||||
|
@property
|
||||||
|
def available(self) -> bool:
|
||||||
|
"""Return the available attribute of the entity."""
|
||||||
|
return (
|
||||||
|
super().available and self.mower_attributes.mower.state != MowerStates.OFF
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def work_areas(self) -> dict[int, WorkArea] | None:
|
def work_areas(self) -> dict[int, WorkArea] | None:
|
||||||
"""Return the work areas of the mower."""
|
"""Return the work areas of the mower."""
|
||||||
|
@ -7,13 +7,7 @@ import logging
|
|||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from aioautomower.model import (
|
from aioautomower.model import MowerAttributes, MowerModes, RestrictedReasons, WorkArea
|
||||||
MowerAttributes,
|
|
||||||
MowerModes,
|
|
||||||
MowerStates,
|
|
||||||
RestrictedReasons,
|
|
||||||
WorkArea,
|
|
||||||
)
|
|
||||||
|
|
||||||
from homeassistant.components.sensor import (
|
from homeassistant.components.sensor import (
|
||||||
SensorDeviceClass,
|
SensorDeviceClass,
|
||||||
@ -27,6 +21,7 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|||||||
from homeassistant.helpers.typing import StateType
|
from homeassistant.helpers.typing import StateType
|
||||||
|
|
||||||
from . import AutomowerConfigEntry
|
from . import AutomowerConfigEntry
|
||||||
|
from .const import ERROR_STATES
|
||||||
from .coordinator import AutomowerDataUpdateCoordinator
|
from .coordinator import AutomowerDataUpdateCoordinator
|
||||||
from .entity import (
|
from .entity import (
|
||||||
AutomowerBaseEntity,
|
AutomowerBaseEntity,
|
||||||
@ -166,15 +161,6 @@ ERROR_KEYS = [
|
|||||||
"zone_generator_problem",
|
"zone_generator_problem",
|
||||||
]
|
]
|
||||||
|
|
||||||
ERROR_STATES = [
|
|
||||||
MowerStates.ERROR_AT_POWER_UP,
|
|
||||||
MowerStates.ERROR,
|
|
||||||
MowerStates.FATAL_ERROR,
|
|
||||||
MowerStates.OFF,
|
|
||||||
MowerStates.STOPPED,
|
|
||||||
MowerStates.WAIT_POWER_UP,
|
|
||||||
MowerStates.WAIT_UPDATING,
|
|
||||||
]
|
|
||||||
|
|
||||||
ERROR_KEY_LIST = list(
|
ERROR_KEY_LIST = list(
|
||||||
dict.fromkeys(ERROR_KEYS + [state.lower() for state in ERROR_STATES])
|
dict.fromkeys(ERROR_KEYS + [state.lower() for state in ERROR_STATES])
|
||||||
|
@ -42,6 +42,11 @@ from tests.common import MockConfigEntry, async_fire_time_changed
|
|||||||
MowerStates.IN_OPERATION,
|
MowerStates.IN_OPERATION,
|
||||||
LawnMowerActivity.DOCKED,
|
LawnMowerActivity.DOCKED,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
MowerActivities.GOING_HOME,
|
||||||
|
MowerStates.RESTRICTED,
|
||||||
|
LawnMowerActivity.RETURNING,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_lawn_mower_states(
|
async def test_lawn_mower_states(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user