From 690f4f00ec23cd049d4e2e31ddf5db3878130f9c Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 3 Apr 2020 10:28:47 +0200 Subject: [PATCH 1/3] Remove getmac library --- .../components/braviatv/manifest.json | 2 +- .../components/braviatv/media_player.py | 21 +++++++------------ requirements_all.txt | 1 - requirements_test_all.txt | 1 - 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/braviatv/manifest.json b/homeassistant/components/braviatv/manifest.json index 4945614ed7f02..8d432740a4d82 100644 --- a/homeassistant/components/braviatv/manifest.json +++ b/homeassistant/components/braviatv/manifest.json @@ -2,7 +2,7 @@ "domain": "braviatv", "name": "Sony Bravia TV", "documentation": "https://www.home-assistant.io/integrations/braviatv", - "requirements": ["bravia-tv==1.0.1", "getmac==0.8.1"], + "requirements": ["bravia-tv==1.0.1"], "dependencies": ["configurator"], "codeowners": ["@robbiet480"] } diff --git a/homeassistant/components/braviatv/media_player.py b/homeassistant/components/braviatv/media_player.py index 6dd431aac695e..d8d3fa8910683 100644 --- a/homeassistant/components/braviatv/media_player.py +++ b/homeassistant/components/braviatv/media_player.py @@ -1,9 +1,7 @@ """Support for interface with a Sony Bravia TV.""" -import ipaddress import logging from bravia_tv import BraviaRC -from getmac import get_mac_address import voluptuous as vol from homeassistant.components.media_player import PLATFORM_SCHEMA, MediaPlayerDevice @@ -22,6 +20,7 @@ ) from homeassistant.const import CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.device_registry import format_mac from homeassistant.util.json import load_json, save_json BRAVIA_CONFIG_FILE = "bravia.conf" @@ -94,15 +93,6 @@ def setup_bravia(config, pin, hass, add_entities): request_configuration(config, hass, add_entities) return - try: - if ipaddress.ip_address(host).version == 6: - mode = "ip6" - else: - mode = "ip" - except ValueError: - mode = "hostname" - mac = get_mac_address(**{mode: host}) - # If we came here and configuring this host, mark as done if host in _CONFIGURING: request_id = _CONFIGURING.pop(host) @@ -110,14 +100,17 @@ def setup_bravia(config, pin, hass, add_entities): configurator.request_done(request_id) _LOGGER.info("Discovery configuration done") + braviarc = BraviaRC(host) + braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) + system_info = braviarc.get_system_info() + mac = format_mac(system_info["macAddr"]) + unique_id = system_info["cid"].lower() + # Save config save_json( hass.config.path(BRAVIA_CONFIG_FILE), {host: {"pin": pin, "host": host, "mac": mac}}, ) - braviarc = BraviaRC(host, mac) - braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) - unique_id = braviarc.get_system_info()["cid"].lower() add_entities([BraviaTVDevice(braviarc, name, pin, unique_id)]) diff --git a/requirements_all.txt b/requirements_all.txt index 7defeea4c9c68..b818cccef910a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -603,7 +603,6 @@ georss_ign_sismologia_client==0.2 # homeassistant.components.qld_bushfire georss_qld_bushfire_alert_client==0.3 -# homeassistant.components.braviatv # homeassistant.components.huawei_lte # homeassistant.components.kef # homeassistant.components.minecraft_server diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ff686fe5e3083..f9df9e91e696b 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -232,7 +232,6 @@ georss_ign_sismologia_client==0.2 # homeassistant.components.qld_bushfire georss_qld_bushfire_alert_client==0.3 -# homeassistant.components.braviatv # homeassistant.components.huawei_lte # homeassistant.components.kef # homeassistant.components.minecraft_server From 0932d5b192b6fc9f15f105309ad982cabea96706 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 3 Apr 2020 16:50:07 +0200 Subject: [PATCH 2/3] Fix error handling --- .../components/braviatv/media_player.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/braviatv/media_player.py b/homeassistant/components/braviatv/media_player.py index d8d3fa8910683..45cd3426a9cfa 100644 --- a/homeassistant/components/braviatv/media_player.py +++ b/homeassistant/components/braviatv/media_player.py @@ -19,6 +19,7 @@ SUPPORT_VOLUME_STEP, ) from homeassistant.const import CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON +from homeassistant.exceptions import PlatformNotReady import homeassistant.helpers.config_validation as cv from homeassistant.helpers.device_registry import format_mac from homeassistant.util.json import load_json, save_json @@ -75,8 +76,11 @@ def setup_platform(hass, config, add_entities, discovery_info=None): mac = host_config["mac"] name = config.get(CONF_NAME) braviarc = BraviaRC(host, mac) - braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) - unique_id = braviarc.get_system_info()["cid"].lower() + try: + braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) + unique_id = braviarc.get_system_info()["cid"].lower() + except Exception: # pylint: disable=broad-except + raise PlatformNotReady add_entities([BraviaTVDevice(braviarc, name, pin, unique_id)]) return @@ -101,8 +105,12 @@ def setup_bravia(config, pin, hass, add_entities): _LOGGER.info("Discovery configuration done") braviarc = BraviaRC(host) - braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) - system_info = braviarc.get_system_info() + try: + braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) + system_info = braviarc.get_system_info() + except Exception as exception_instance: # pylint: disable=broad-except + _LOGGER.error(exception_instance) + return mac = format_mac(system_info["macAddr"]) unique_id = system_info["cid"].lower() From 5dd9ae302f59eabed7569f174b92a9e0de47bfb0 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 3 Apr 2020 18:58:15 +0200 Subject: [PATCH 3/3] Change error handling method --- homeassistant/components/braviatv/media_player.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/braviatv/media_player.py b/homeassistant/components/braviatv/media_player.py index 45cd3426a9cfa..e4fd91533d1ce 100644 --- a/homeassistant/components/braviatv/media_player.py +++ b/homeassistant/components/braviatv/media_player.py @@ -76,10 +76,11 @@ def setup_platform(hass, config, add_entities, discovery_info=None): mac = host_config["mac"] name = config.get(CONF_NAME) braviarc = BraviaRC(host, mac) + if not braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME): + raise PlatformNotReady try: - braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) unique_id = braviarc.get_system_info()["cid"].lower() - except Exception: # pylint: disable=broad-except + except TypeError: raise PlatformNotReady add_entities([BraviaTVDevice(braviarc, name, pin, unique_id)]) @@ -105,11 +106,13 @@ def setup_bravia(config, pin, hass, add_entities): _LOGGER.info("Discovery configuration done") braviarc = BraviaRC(host) + if not braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME): + _LOGGER.error("Cannot connect to %s", host) + return try: - braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME) system_info = braviarc.get_system_info() - except Exception as exception_instance: # pylint: disable=broad-except - _LOGGER.error(exception_instance) + except TypeError: + _LOGGER.error("Cannot retrieve system info from %s", host) return mac = format_mac(system_info["macAddr"]) unique_id = system_info["cid"].lower()