diff --git a/homeassistant/components/broadlink/config_flow.py b/homeassistant/components/broadlink/config_flow.py
index 4dfc80c6fe97230b4095c33745f9c1379665d809..9fe83e350cfbd5128a290e58f02cde0ea4201157 100644
--- a/homeassistant/components/broadlink/config_flow.py
+++ b/homeassistant/components/broadlink/config_flow.py
@@ -7,7 +7,7 @@ import broadlink as blk
 from broadlink.exceptions import (
     AuthenticationError,
     BroadlinkException,
-    DeviceOfflineError,
+    NetworkTimeoutError,
 )
 import voluptuous as vol
 
@@ -139,7 +139,7 @@ class BroadlinkFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
             await self.async_set_unique_id(device.mac.hex())
             return await self.async_step_reset(errors=errors)
 
-        except DeviceOfflineError as err:
+        except NetworkTimeoutError as err:
             errors["base"] = "cannot_connect"
             err_msg = str(err)
 
@@ -207,7 +207,7 @@ class BroadlinkFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
             try:
                 await self.hass.async_add_executor_job(device.set_lock, False)
 
-            except DeviceOfflineError as err:
+            except NetworkTimeoutError as err:
                 errors["base"] = "cannot_connect"
                 err_msg = str(err)
 
diff --git a/homeassistant/components/broadlink/device.py b/homeassistant/components/broadlink/device.py
index d05fdfd4df6406548df84866e0e089839f5de5a6..51d9b0a497ffa2f53fb920f259581979e6f3a24b 100644
--- a/homeassistant/components/broadlink/device.py
+++ b/homeassistant/components/broadlink/device.py
@@ -9,7 +9,7 @@ from broadlink.exceptions import (
     AuthorizationError,
     BroadlinkException,
     ConnectionClosedError,
-    DeviceOfflineError,
+    NetworkTimeoutError,
 )
 
 from homeassistant.const import CONF_HOST, CONF_MAC, CONF_NAME, CONF_TIMEOUT, CONF_TYPE
@@ -82,7 +82,7 @@ class BroadlinkDevice:
             await self._async_handle_auth_error()
             return False
 
-        except (DeviceOfflineError, OSError) as err:
+        except (NetworkTimeoutError, OSError) as err:
             raise ConfigEntryNotReady from err
 
         except BroadlinkException as err:
diff --git a/homeassistant/components/broadlink/manifest.json b/homeassistant/components/broadlink/manifest.json
index 6a6300449044cdacddf3af73e45d0f7c70bb3f73..9c6e571ec8685eaad64a0fae131327f94994e4f0 100644
--- a/homeassistant/components/broadlink/manifest.json
+++ b/homeassistant/components/broadlink/manifest.json
@@ -2,7 +2,7 @@
   "domain": "broadlink",
   "name": "Broadlink",
   "documentation": "https://www.home-assistant.io/integrations/broadlink",
-  "requirements": ["broadlink==0.14.1"],
+  "requirements": ["broadlink==0.15.0"],
   "codeowners": ["@danielhiversen", "@felipediel"],
   "config_flow": true
 }
diff --git a/homeassistant/components/broadlink/remote.py b/homeassistant/components/broadlink/remote.py
index 7c1ae7349da85bb64a2ce63777e99e0bef09c483..32305331a218712c262f867d47df789ab0cb5cb9 100644
--- a/homeassistant/components/broadlink/remote.py
+++ b/homeassistant/components/broadlink/remote.py
@@ -9,7 +9,7 @@ import logging
 from broadlink.exceptions import (
     AuthorizationError,
     BroadlinkException,
-    DeviceOfflineError,
+    NetworkTimeoutError,
     ReadError,
     StorageError,
 )
@@ -262,7 +262,7 @@ class BroadlinkRemote(RemoteEntity, RestoreEntity):
             try:
                 await self._device.async_request(self._device.api.send_data, code)
 
-            except (AuthorizationError, DeviceOfflineError, OSError) as err:
+            except (AuthorizationError, NetworkTimeoutError, OSError) as err:
                 _LOGGER.error("Failed to send '%s': %s", command, err)
                 break
 
@@ -295,7 +295,7 @@ class BroadlinkRemote(RemoteEntity, RestoreEntity):
                 if toggle:
                     code = [code, await self._async_learn_command(command)]
 
-            except (AuthorizationError, DeviceOfflineError, OSError) as err:
+            except (AuthorizationError, NetworkTimeoutError, OSError) as err:
                 _LOGGER.error("Failed to learn '%s': %s", command, err)
                 break
 
diff --git a/homeassistant/components/broadlink/updater.py b/homeassistant/components/broadlink/updater.py
index 8b6f1316f52d510f2ec352e1c67a7a4be8df8949..d36a07a185bdba49d1257bcf5602d5f08967b903 100644
--- a/homeassistant/components/broadlink/updater.py
+++ b/homeassistant/components/broadlink/updater.py
@@ -9,7 +9,7 @@ from broadlink.exceptions import (
     AuthorizationError,
     BroadlinkException,
     CommandNotSupportedError,
-    DeviceOfflineError,
+    NetworkTimeoutError,
     StorageError,
 )
 
@@ -113,7 +113,7 @@ class BroadlinkRMMini3UpdateManager(BroadlinkUpdateManager):
         )
         devices = await self.device.hass.async_add_executor_job(hello)
         if not devices:
-            raise DeviceOfflineError("The device is offline")
+            raise NetworkTimeoutError("The device is offline")
         return {}
 
 
diff --git a/requirements_all.txt b/requirements_all.txt
index 771d31c80bee4327d9edfe57e070e627014342cc..6406f32bad6a345fbbc4a539798259a862ba8e2c 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -383,7 +383,7 @@ boto3==1.9.252
 bravia-tv==1.0.6
 
 # homeassistant.components.broadlink
-broadlink==0.14.1
+broadlink==0.15.0
 
 # homeassistant.components.brother
 brother==0.1.17
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 6a86f7538baf6432b9f490e24257657f81cf1d74..455341a248362ed57fc88d6f3aca8d89947962e2 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -204,7 +204,7 @@ bond-api==0.1.8
 bravia-tv==1.0.6
 
 # homeassistant.components.broadlink
-broadlink==0.14.1
+broadlink==0.15.0
 
 # homeassistant.components.brother
 brother==0.1.17
diff --git a/tests/components/broadlink/test_config_flow.py b/tests/components/broadlink/test_config_flow.py
index a7660b03da5b636bca7733c87f35159e143d42ff..bc0eba069a862bf6d7f740017bddf425b9721800 100644
--- a/tests/components/broadlink/test_config_flow.py
+++ b/tests/components/broadlink/test_config_flow.py
@@ -249,11 +249,11 @@ async def test_flow_auth_authentication_error(hass):
     assert result["errors"] == {"base": "invalid_auth"}
 
 
-async def test_flow_auth_device_offline(hass):
-    """Test we handle a device offline in the auth step."""
+async def test_flow_auth_network_timeout(hass):
+    """Test we handle a network timeout in the auth step."""
     device = get_device("Living Room")
     mock_api = device.get_mock_api()
-    mock_api.auth.side_effect = blke.DeviceOfflineError()
+    mock_api.auth.side_effect = blke.NetworkTimeoutError()
 
     result = await hass.config_entries.flow.async_init(
         DOMAIN, context={"source": config_entries.SOURCE_USER}
@@ -403,12 +403,12 @@ async def test_flow_unlock_works(hass):
     assert mock_api.set_lock.call_count == 1
 
 
-async def test_flow_unlock_device_offline(hass):
-    """Test we handle a device offline in the unlock step."""
+async def test_flow_unlock_network_timeout(hass):
+    """Test we handle a network timeout in the unlock step."""
     device = get_device("Living Room")
     mock_api = device.get_mock_api()
     mock_api.is_locked = True
-    mock_api.set_lock.side_effect = blke.DeviceOfflineError
+    mock_api.set_lock.side_effect = blke.NetworkTimeoutError()
 
     result = await hass.config_entries.flow.async_init(
         DOMAIN, context={"source": config_entries.SOURCE_USER}
diff --git a/tests/components/broadlink/test_device.py b/tests/components/broadlink/test_device.py
index 1e68921e9bdd5d288bc9ec5afe2871f9c5a53ac1..d267243aeb94814b938590b685d4f9af972833ed 100644
--- a/tests/components/broadlink/test_device.py
+++ b/tests/components/broadlink/test_device.py
@@ -62,11 +62,11 @@ async def test_device_setup_authentication_error(hass):
     }
 
 
-async def test_device_setup_device_offline(hass):
-    """Test we handle a device offline."""
+async def test_device_setup_network_timeout(hass):
+    """Test we handle a network timeout."""
     device = get_device("Office")
     mock_api = device.get_mock_api()
-    mock_api.auth.side_effect = blke.DeviceOfflineError()
+    mock_api.auth.side_effect = blke.NetworkTimeoutError()
 
     with patch.object(
         hass.config_entries, "async_forward_entry_setup"
@@ -119,11 +119,11 @@ async def test_device_setup_broadlink_exception(hass):
     assert mock_init.call_count == 0
 
 
-async def test_device_setup_update_device_offline(hass):
-    """Test we handle a device offline in the update step."""
+async def test_device_setup_update_network_timeout(hass):
+    """Test we handle a network timeout in the update step."""
     device = get_device("Office")
     mock_api = device.get_mock_api()
-    mock_api.check_sensors.side_effect = blke.DeviceOfflineError()
+    mock_api.check_sensors.side_effect = blke.NetworkTimeoutError()
 
     with patch.object(
         hass.config_entries, "async_forward_entry_setup"
@@ -308,7 +308,7 @@ async def test_device_unload_update_failed(hass):
     """Test we unload a device that failed the update step."""
     device = get_device("Office")
     mock_api = device.get_mock_api()
-    mock_api.check_sensors.side_effect = blke.DeviceOfflineError()
+    mock_api.check_sensors.side_effect = blke.NetworkTimeoutError()
 
     with patch.object(hass.config_entries, "async_forward_entry_setup"):
         _, mock_entry = await device.setup_entry(hass, mock_api=mock_api)