From 734704c1f7e934e4863c05c0f432ceb6b56f7df2 Mon Sep 17 00:00:00 2001 From: Nikolay Vasilchuk Date: Wed, 23 Oct 2019 09:18:00 +0300 Subject: [PATCH] Squeezebox LMS reconnect (#27378) * Fix * Review --- homeassistant/components/squeezebox/media_player.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/squeezebox/media_player.py b/homeassistant/components/squeezebox/media_player.py index 6d67f67a3ce..d8574223307 100644 --- a/homeassistant/components/squeezebox/media_player.py +++ b/homeassistant/components/squeezebox/media_player.py @@ -41,6 +41,7 @@ from homeassistant.const import ( ) from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv +from homeassistant.exceptions import PlatformNotReady from homeassistant.util.dt import utcnow _LOGGER = logging.getLogger(__name__) @@ -126,18 +127,21 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= # Get IP of host, to prevent duplication of same host (different DNS names) try: ipaddr = socket.gethostbyname(host) - except (OSError) as error: + except OSError as error: _LOGGER.error("Could not communicate with %s:%d: %s", host, port, error) - return False + raise PlatformNotReady from error if ipaddr in known_servers: return - known_servers.add(ipaddr) _LOGGER.debug("Creating LMS object for %s", ipaddr) lms = LogitechMediaServer(hass, host, port, username, password) players = await lms.create_players() + if players is None: + raise PlatformNotReady + + known_servers.add(ipaddr) hass.data[DATA_SQUEEZEBOX].extend(players) async_add_entities(players) @@ -194,7 +198,7 @@ class LogitechMediaServer: result = [] data = await self.async_query("players", "status") if data is False: - return result + return None for players in data.get("players_loop", []): player = SqueezeBoxDevice(self, players["playerid"], players["name"]) await player.async_update()