diff --git a/homeassistant/components/sensor/upnp.py b/homeassistant/components/sensor/upnp.py index e0c57ca9ac6..07b63553fcb 100644 --- a/homeassistant/components/sensor/upnp.py +++ b/homeassistant/components/sensor/upnp.py @@ -11,6 +11,8 @@ from homeassistant.helpers.entity import Entity _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['upnp'] + BYTES_RECEIVED = 1 BYTES_SENT = 2 PACKETS_RECEIVED = 3 @@ -25,12 +27,16 @@ SENSOR_TYPES = { } -async def async_setup_platform(hass, config, add_devices, discovery_info=None): +async def async_setup_platform(hass, config, async_add_devices, + discovery_info=None): """Set up the IGD sensors.""" + if discovery_info is None: + return + device = hass.data[DATA_UPNP] service = device.find_first_service(CIC_SERVICE) unit = discovery_info['unit'] - add_devices([ + async_add_devices([ IGDSensor(service, t, unit if SENSOR_TYPES[t][1] else '#') for t in SENSOR_TYPES], True) diff --git a/homeassistant/components/upnp.py b/homeassistant/components/upnp.py index 26a59746aea..8aeb93fed25 100644 --- a/homeassistant/components/upnp.py +++ b/homeassistant/components/upnp.py @@ -50,7 +50,7 @@ CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Optional(CONF_ENABLE_PORT_MAPPING, default=True): cv.boolean, vol.Optional(CONF_UNITS, default="MBytes"): vol.In(UNITS), - vol.Optional(CONF_LOCAL_IP): ip_address, + vol.Optional(CONF_LOCAL_IP): vol.All(ip_address, cv.string), vol.Optional(CONF_PORTS): vol.Schema({vol.Any(CONF_HASS, cv.positive_int): cv.positive_int}) }), @@ -62,9 +62,7 @@ async def async_setup(hass, config): config = config[DOMAIN] host = config.get(CONF_LOCAL_IP) - if host is not None: - host = str(host) - else: + if host is None: host = get_local_ip() if host == '127.0.0.1': @@ -90,10 +88,8 @@ async def async_setup(hass, config): service = device.find_first_service(IP_SERVICE) if _service['serviceType'] == CIC_SERVICE: unit = config.get(CONF_UNITS) - discovery.load_platform(hass, 'sensor', - DOMAIN, - {'unit': unit}, - config) + hass.async_add_job(discovery.async_load_platform( + hass, 'sensor', DOMAIN, {'unit': unit}, config)) except UpnpSoapError as error: _LOGGER.error(error) return False