From: Marcel van der Veldt Date: Wed, 5 Feb 2025 21:54:04 +0000 (+0100) Subject: Fix: correctly map player availability state for ha players X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=85301421c1170bf127ca77b677722be35f255d65;p=music-assistant-server.git Fix: correctly map player availability state for ha players --- diff --git a/music_assistant/providers/hass/constants.py b/music_assistant/providers/hass/constants.py index 7e81837d..a29486b0 100644 --- a/music_assistant/providers/hass/constants.py +++ b/music_assistant/providers/hass/constants.py @@ -47,3 +47,4 @@ StateMap = { # HA states that we consider as "powered off" OFF_STATES = ("unavailable", "unknown", "standby", "off") +UNAVAILABLE_STATES = ("unavailable", "unknown") diff --git a/music_assistant/providers/hass_players/__init__.py b/music_assistant/providers/hass_players/__init__.py index d75ee45b..8c8a4652 100644 --- a/music_assistant/providers/hass_players/__init__.py +++ b/music_assistant/providers/hass_players/__init__.py @@ -33,7 +33,12 @@ from music_assistant.helpers.datetime import from_iso_string from music_assistant.helpers.tags import async_parse_tags from music_assistant.models.player_provider import PlayerProvider from music_assistant.providers.hass import DOMAIN as HASS_DOMAIN -from music_assistant.providers.hass.constants import OFF_STATES, MediaPlayerEntityFeature, StateMap +from music_assistant.providers.hass.constants import ( + OFF_STATES, + UNAVAILABLE_STATES, + MediaPlayerEntityFeature, + StateMap, +) if TYPE_CHECKING: from collections.abc import AsyncGenerator @@ -403,7 +408,7 @@ class HomeAssistantPlayers(PlayerProvider): provider=self.lookup_key, type=PlayerType.PLAYER, name=state["attributes"]["friendly_name"], - available=state["state"] not in ("unavailable", "unknown"), + available=state["state"] not in UNAVAILABLE_STATES, device_info=DeviceInfo.from_dict(dev_info), state=StateMap.get(state["state"], PlayerState.IDLE), extra_data={ @@ -435,7 +440,7 @@ class HomeAssistantPlayers(PlayerProvider): and MediaPlayerEntityFeature.TURN_OFF in hass_supported_features ): player.supported_features.add(PlayerFeature.POWER) - player.powered = state["state"] not in ("unavailable", "unknown", "standby", "off") + player.powered = state["state"] not in OFF_STATES self._update_player_attributes(player, state["attributes"]) await self.mass.players.register_or_update(player) @@ -456,6 +461,7 @@ class HomeAssistantPlayers(PlayerProvider): return if "s" in state: player.state = StateMap.get(state["s"], PlayerState.IDLE) + player.available = state["s"] not in UNAVAILABLE_STATES if PlayerFeature.POWER in player.supported_features: player.powered = state["s"] not in OFF_STATES if "a" in state: