From b60527c9866d21d4b5fb57b9e7c3b2a66c4e3439 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Sat, 4 Apr 2020 07:44:28 +0200 Subject: [PATCH] =?UTF-8?q?Change=20the=20method=20of=20getting=20the=20ma?= =?UTF-8?q?c=20address=20in=20the=20braviatv=20i=E2=80=A6=20(#33567)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove getmac library * Fix error handling * Change error handling method --- .../components/braviatv/manifest.json | 2 +- .../components/braviatv/media_player.py | 36 ++++++++++--------- requirements_all.txt | 1 - requirements_test_all.txt | 1 - 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/homeassistant/components/braviatv/manifest.json b/homeassistant/components/braviatv/manifest.json index 4945614ed7f..8d432740a4d 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 f9362799224..d428e2deea8 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 @@ -21,7 +19,9 @@ from homeassistant.components.media_player.const import ( 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 BRAVIA_CONFIG_FILE = "bravia.conf" @@ -76,8 +76,12 @@ 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() + if not braviarc.connect(pin, CLIENTID_PREFIX, NICKNAME): + raise PlatformNotReady + try: + unique_id = braviarc.get_system_info()["cid"].lower() + except TypeError: + raise PlatformNotReady add_entities([BraviaTVDevice(braviarc, name, pin, unique_id)]) return @@ -94,15 +98,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 +105,23 @@ def setup_bravia(config, pin, hass, add_entities): configurator.request_done(request_id) _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: + system_info = braviarc.get_system_info() + except TypeError: + _LOGGER.error("Cannot retrieve system info from %s", host) + return + 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 cbac7186ed4..284f78aa2d1 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 7a35896b496..6c156f0dbae 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -235,7 +235,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