diff --git a/homeassistant/components/mikrotik/__init__.py b/homeassistant/components/mikrotik/__init__.py index 9b533288d86..c3f21658d21 100644 --- a/homeassistant/components/mikrotik/__init__.py +++ b/homeassistant/components/mikrotik/__init__.py @@ -2,8 +2,9 @@ import logging import ssl -import librouteros -from librouteros.login import login_plain, login_token +from librouteros import connect +from librouteros.exceptions import LibRouterosError +from librouteros.login import plain as login_plain, token as login_token import voluptuous as vol from homeassistant.components.device_tracker import DOMAIN as DEVICE_TRACKER @@ -82,11 +83,9 @@ def setup(hass, config): port = MTK_DEFAULT_API_PORT if login == MTK_LOGIN_PLAIN: - login_method = (login_plain,) - elif login == MTK_LOGIN_TOKEN: - login_method = (login_token,) + login_method = login_plain else: - login_method = (login_plain, login_token) + login_method = login_token try: api = MikrotikClient( @@ -94,11 +93,7 @@ def setup(hass, config): ) api.connect_to_device() hass.data[DOMAIN][HOSTS][host] = {"config": device, "api": api} - except ( - librouteros.exceptions.TrapError, - librouteros.exceptions.MultiTrapError, - librouteros.exceptions.ConnectionError, - ) as api_error: + except LibRouterosError as api_error: _LOGGER.error("Mikrotik %s error %s", host, api_error) continue @@ -148,15 +143,9 @@ class MikrotikClient: kwargs["ssl_wrapper"] = self._ssl_wrapper try: - self._client = librouteros.connect( - self._host, self._user, self._password, **kwargs - ) + self._client = connect(self._host, self._user, self._password, **kwargs) self._connected = True - except ( - librouteros.exceptions.TrapError, - librouteros.exceptions.MultiTrapError, - librouteros.exceptions.ConnectionError, - ) as api_error: + except LibRouterosError as api_error: _LOGGER.error("Mikrotik %s: %s", self._host, api_error) self._client = None return False @@ -184,14 +173,7 @@ class MikrotikClient: response = self._client(cmd=cmd, **params) else: response = self._client(cmd=cmd) - except (librouteros.exceptions.ConnectionError,) as api_error: - _LOGGER.error("Mikrotik %s connection error %s", self._host, api_error) - self.connect_to_device() - return None - except ( - librouteros.exceptions.TrapError, - librouteros.exceptions.MultiTrapError, - ) as api_error: + except LibRouterosError as api_error: _LOGGER.error( "Mikrotik %s failed to retrieve data. cmd=[%s] Error: %s", self._host, diff --git a/homeassistant/components/mikrotik/manifest.json b/homeassistant/components/mikrotik/manifest.json index 1f5bcf8163f..932df2edd29 100644 --- a/homeassistant/components/mikrotik/manifest.json +++ b/homeassistant/components/mikrotik/manifest.json @@ -2,7 +2,7 @@ "domain": "mikrotik", "name": "MikroTik", "documentation": "https://www.home-assistant.io/integrations/mikrotik", - "requirements": ["librouteros==2.3.0"], + "requirements": ["librouteros==3.0.0"], "dependencies": [], "codeowners": [] } diff --git a/requirements_all.txt b/requirements_all.txt index 55c6f72b6b6..d0bc384d14b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -775,7 +775,7 @@ libpyfoscam==1.0 libpyvivotek==0.4.0 # homeassistant.components.mikrotik -librouteros==2.3.0 +librouteros==3.0.0 # homeassistant.components.soundtouch libsoundtouch==0.7.2