From a678c6fd0b009a59612214acc997e676b5b3b07e Mon Sep 17 00:00:00 2001 From: jezcooke <61294178+jezcooke@users.noreply.github.com> Date: Sun, 23 Feb 2020 04:33:42 +0000 Subject: [PATCH] Fix Frontier Silicon player state (#32082) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The player would report itself as ‘off’ when in certain modes (e.g ‘Music player’ or ‘Spotify’) which meant HA would lose all control (it can’t change input or set volume etc. as it thinks it’s off). Now reports STATE_IDLE in these cases and only STATE_OFF if it is actually off. This fixes issue #20728. --- .../frontier_silicon/media_player.py | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/frontier_silicon/media_player.py b/homeassistant/components/frontier_silicon/media_player.py index 627c3c079b9..2336a9e0e06 100644 --- a/homeassistant/components/frontier_silicon/media_player.py +++ b/homeassistant/components/frontier_silicon/media_player.py @@ -26,6 +26,7 @@ from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_PORT, + STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, @@ -186,14 +187,17 @@ class AFSAPIDevice(MediaPlayerDevice): if not self._source_list: self._source_list = await fs_device.get_mode_list() - status = await fs_device.get_play_status() - self._state = { - "playing": STATE_PLAYING, - "paused": STATE_PAUSED, - "stopped": STATE_OFF, - "unknown": STATE_UNKNOWN, - None: STATE_OFF, - }.get(status, STATE_UNKNOWN) + if await fs_device.get_power(): + status = await fs_device.get_play_status() + self._state = { + "playing": STATE_PLAYING, + "paused": STATE_PAUSED, + "stopped": STATE_IDLE, + "unknown": STATE_UNKNOWN, + None: STATE_IDLE, + }.get(status, STATE_UNKNOWN) + else: + self._state = STATE_OFF if self._state != STATE_OFF: info_name = await fs_device.get_play_name()