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)