From 671a7eed7cba9b2d272b5bf911f42a0d11a8b41b Mon Sep 17 00:00:00 2001 From: mj23000 Date: Wed, 21 Dec 2022 11:24:38 +0100 Subject: [PATCH] Fix idle state --- custom_components/bangolufsen/manifest.json | 20 +++++++++---------- custom_components/bangolufsen/media_player.py | 13 ++++++++++-- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/custom_components/bangolufsen/manifest.json b/custom_components/bangolufsen/manifest.json index 04ba33f..afcabb8 100644 --- a/custom_components/bangolufsen/manifest.json +++ b/custom_components/bangolufsen/manifest.json @@ -1,12 +1,12 @@ { - "domain": "bangolufsen", - "name": "Bang & Olufsen", - "documentation": "https://github.com/bang-olufsen/bangolufsen-hacs", - "issue_tracker": "https://github.com/bang-olufsen/bangolufsen-hacs/issues", - "requirements": ["mozart-api==2.3.4.15123.6"], - "zeroconf": ["_bangolufsen._tcp.local."], - "version": "0.5.1", - "codeowners": ["@mj23000"], - "iot_class": "local_push", - "config_flow": true + "domain": "bangolufsen", + "name": "Bang & Olufsen", + "documentation": "https://github.com/bang-olufsen/bangolufsen-hacs", + "issue_tracker": "https://github.com/bang-olufsen/bangolufsen-hacs/issues", + "requirements": ["mozart-api==2.3.4.15123.6"], + "zeroconf": ["_bangolufsen._tcp.local."], + "version": "0.5.2", + "codeowners": ["@mj23000"], + "iot_class": "local_push", + "config_flow": true } diff --git a/custom_components/bangolufsen/media_player.py b/custom_components/bangolufsen/media_player.py index fddc6ca..380d8ab 100644 --- a/custom_components/bangolufsen/media_player.py +++ b/custom_components/bangolufsen/media_player.py @@ -297,6 +297,11 @@ async def async_added_to_hass(self) -> None: f"{self._unique_id}_{WebSocketNotification.PLAYBACK_STATE}", self._update_playback_state, ), + async_dispatcher_connect( + self.hass, + f"{self._unique_id}_{WebSocketNotification.POWER_STATE}", + self._update_power_state, + ), async_dispatcher_connect( self.hass, f"{self._unique_id}_{WebSocketNotification.SOURCE_CHANGE}", @@ -642,7 +647,11 @@ async def _update_playback_state(self, data: RenderingState) -> None: """Update _playback_state and related.""" self._playback_state = data - # Update entity state based on the playback state. + # Update entity state based on the playback and power state. + # The idle state has higher priority than any other playback state + if self._power_state.value == "networkStandby": + return + self._state = self._playback_state.value self.async_write_ha_state() @@ -653,7 +662,7 @@ async def _update_power_state(self, data: RenderingState) -> None: # Update entity state based on the power state. if self._power_state.value == "networkStandby": - self._state = cast(MediaPlayerState, StateEnum[self._power_state]) + self._state = cast(MediaPlayerState, StateEnum[self._power_state.value]) self.async_write_ha_state()