Change the method of getting the mac address in the braviatv i… (#33567)

* Remove getmac library

* Fix error handling

* Change error handling method
This commit is contained in:
Maciej Bieniek 2020-04-04 07:44:28 +02:00 committed by GitHub
parent c628c2cef2
commit b60527c986
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 19 deletions

View File

@ -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"]
}

View File

@ -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)])

View File

@ -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

View File

@ -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