diff --git a/homeassistant/components/ubee/device_tracker.py b/homeassistant/components/ubee/device_tracker.py index bbe028bbb78..f73f58f3a1f 100644 --- a/homeassistant/components/ubee/device_tracker.py +++ b/homeassistant/components/ubee/device_tracker.py @@ -9,79 +9,60 @@ from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pyubee==0.2'] +REQUIREMENTS = ['pyubee==0.5'] _LOGGER = logging.getLogger(__name__) +CONF_MODEL = 'model' +DEFAULT_MODEL = 'detect' + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Required(CONF_PASSWORD): cv.string, vol.Required(CONF_USERNAME): cv.string, + vol.Optional(CONF_MODEL, default=DEFAULT_MODEL): cv.string }) def get_scanner(hass, config): """Validate the configuration and return a Ubee scanner.""" - try: - return UbeeDeviceScanner(config[DOMAIN]) - except ConnectionError: + info = config[DOMAIN] + host = info[CONF_HOST] + username = info[CONF_USERNAME] + password = info[CONF_PASSWORD] + model = info[CONF_MODEL] + + from pyubee import Ubee + ubee = Ubee(host, username, password, model) + if not ubee.login(): + _LOGGER.error("Login failed") return None + scanner = UbeeDeviceScanner(ubee) + return scanner + class UbeeDeviceScanner(DeviceScanner): """This class queries a wireless Ubee router.""" - def __init__(self, config): + def __init__(self, ubee): """Initialize the Ubee scanner.""" - from pyubee import Ubee - - self.host = config[CONF_HOST] - self.username = config[CONF_USERNAME] - self.password = config[CONF_PASSWORD] - - self.last_results = {} - self.mac2name = {} - - self.ubee = Ubee(self.host, self.username, self.password) - _LOGGER.info("Logging in") - results = self.get_connected_devices() - self.success_init = results is not None - - if self.success_init: - self.last_results = results - else: - _LOGGER.error("Login failed") + self._ubee = ubee + self._mac2name = {} def scan_devices(self): """Scan for new devices and return a list with found device IDs.""" - self._update_info() - - return self.last_results + devices = self._get_connected_devices() + self._mac2name = devices + return list(devices) def get_device_name(self, device): """Return the name of the given device or None if we don't know.""" - if device in self.mac2name: - return self.mac2name.get(device) + return self._mac2name.get(device) - return None - - def _update_info(self): - """Retrieve latest information from the Ubee router.""" - if not self.success_init: - return - - _LOGGER.debug("Scanning") - results = self.get_connected_devices() - - if results is None: - _LOGGER.warning("Error scanning devices") - return - - self.last_results = results or [] - - def get_connected_devices(self): + def _get_connected_devices(self): """List connected devices with pyubee.""" - if not self.ubee.session_active(): - self.ubee.login() + if not self._ubee.session_active(): + self._ubee.login() - return self.ubee.get_connected_devices() + return self._ubee.get_connected_devices() diff --git a/homeassistant/components/ubee/manifest.json b/homeassistant/components/ubee/manifest.json index c19c72e8686..524dcb1d77b 100644 --- a/homeassistant/components/ubee/manifest.json +++ b/homeassistant/components/ubee/manifest.json @@ -3,7 +3,7 @@ "name": "Ubee", "documentation": "https://www.home-assistant.io/components/ubee", "requirements": [ - "pyubee==0.2" + "pyubee==0.5" ], "dependencies": [], "codeowners": [] diff --git a/requirements_all.txt b/requirements_all.txt index 9738d5e0191..922239c44ef 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1423,7 +1423,7 @@ pytradfri[async]==6.0.1 pytrafikverket==0.1.5.9 # homeassistant.components.ubee -pyubee==0.2 +pyubee==0.5 # homeassistant.components.unifi pyunifi==2.16