diff --git a/homeassistant/components/sensor/mfi.py b/homeassistant/components/sensor/mfi.py index 53b1726a210..37f1e73c607 100644 --- a/homeassistant/components/sensor/mfi.py +++ b/homeassistant/components/sensor/mfi.py @@ -6,6 +6,8 @@ https://home-assistant.io/components/sensor.mfi/ """ import logging +import requests + from homeassistant.components.sensor import DOMAIN from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, TEMP_CELCIUS from homeassistant.helpers import validate_config @@ -48,11 +50,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) - from mficlient.client import MFiClient + from mficlient.client import FailedToLogin, MFiClient try: client = MFiClient(host, username, password, port=port) - except client.FailedToLogin as ex: + except (FailedToLogin, requests.exceptions.ConnectionError) as ex: _LOGGER.error('Unable to connect to mFi: %s', str(ex)) return False diff --git a/homeassistant/components/switch/mfi.py b/homeassistant/components/switch/mfi.py index 42abe75af60..77346d224bd 100644 --- a/homeassistant/components/switch/mfi.py +++ b/homeassistant/components/switch/mfi.py @@ -8,6 +8,8 @@ https://home-assistant.io/components/switch.mfi/ """ import logging +import requests + from homeassistant.components.switch import DOMAIN, SwitchDevice from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.helpers import validate_config @@ -41,11 +43,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): username = config.get('username') password = config.get('password') - from mficlient.client import MFiClient + from mficlient.client import FailedToLogin, MFiClient try: client = MFiClient(host, username, password, port=port) - except client.FailedToLogin as ex: + except (FailedToLogin, requests.exceptions.ConnectionError) as ex: _LOGGER.error('Unable to connect to mFi: %s', str(ex)) return False diff --git a/tests/components/sensor/test_mfi.py b/tests/components/sensor/test_mfi.py index 58506bdff1b..987466853b6 100644 --- a/tests/components/sensor/test_mfi.py +++ b/tests/components/sensor/test_mfi.py @@ -7,6 +7,8 @@ Tests mFi sensor. import unittest import unittest.mock as mock +import requests + import homeassistant.components.sensor as sensor import homeassistant.components.sensor.mfi as mfi from homeassistant.const import TEMP_CELCIUS @@ -54,6 +56,15 @@ class TestMfiSensorSetup(unittest.TestCase): dict(self.GOOD_CONFIG), None)) + @mock.patch('mficlient.client') + def test_setup_failed_connect(self, mock_client): + mock_client.FailedToLogin = Exception() + mock_client.MFiClient.side_effect = requests.exceptions.ConnectionError + self.assertFalse( + self.PLATFORM.setup_platform(self.hass, + dict(self.GOOD_CONFIG), + None)) + @mock.patch('mficlient.client.MFiClient') def test_setup_minimum(self, mock_client): config = dict(self.GOOD_CONFIG)