diff --git a/homeassistant/components/broadlink/const.py b/homeassistant/components/broadlink/const.py
index 09a667b0969e30bafde40b67cb314d2630fc39a7..adb5a437ae558fa44350fabbaaddaca4dfd71c6f 100644
--- a/homeassistant/components/broadlink/const.py
+++ b/homeassistant/components/broadlink/const.py
@@ -8,7 +8,7 @@ DOMAIN = "broadlink"
 DOMAINS_AND_TYPES = (
     (REMOTE_DOMAIN, ("RM2", "RM4")),
     (SENSOR_DOMAIN, ("A1", "RM2", "RM4")),
-    (SWITCH_DOMAIN, ("MP1", "RM2", "RM4", "SP1", "SP2")),
+    (SWITCH_DOMAIN, ("MP1", "RM2", "RM4", "SP1", "SP2", "SP4", "SP4B")),
 )
 
 DEFAULT_PORT = 80
diff --git a/homeassistant/components/broadlink/manifest.json b/homeassistant/components/broadlink/manifest.json
index 9c6e571ec8685eaad64a0fae131327f94994e4f0..0562bc306a5116a807d94ad0ad58af423003e262 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.15.0"],
+  "requirements": ["broadlink==0.16.0"],
   "codeowners": ["@danielhiversen", "@felipediel"],
   "config_flow": true
 }
diff --git a/homeassistant/components/broadlink/switch.py b/homeassistant/components/broadlink/switch.py
index 4067d1e535d6543127ba794a7f89e0026e9469d2..644255d7d1720509eee3949c7e37ee30d66b287b 100644
--- a/homeassistant/components/broadlink/switch.py
+++ b/homeassistant/components/broadlink/switch.py
@@ -121,6 +121,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
     elif device.api.type == "SP2":
         switches = [BroadlinkSP2Switch(device)]
 
+    elif device.api.type in {"SP4", "SP4B"}:
+        switches = [BroadlinkSP4Switch(device)]
+
     elif device.api.type == "MP1":
         switches = [BroadlinkMP1Slot(device, slot) for slot in range(1, 5)]
 
@@ -294,6 +297,27 @@ class BroadlinkSP2Switch(BroadlinkSP1Switch):
         self.async_write_ha_state()
 
 
+class BroadlinkSP4Switch(BroadlinkSP1Switch):
+    """Representation of a Broadlink SP4 switch."""
+
+    def __init__(self, device, *args, **kwargs):
+        """Initialize the switch."""
+        super().__init__(device, *args, **kwargs)
+        self._state = self._coordinator.data["pwr"]
+
+    @property
+    def assumed_state(self):
+        """Return True if unable to access real state of the switch."""
+        return False
+
+    @callback
+    def update_data(self):
+        """Update data."""
+        if self._coordinator.last_update_success:
+            self._state = self._coordinator.data["pwr"]
+        self.async_write_ha_state()
+
+
 class BroadlinkMP1Slot(BroadlinkSwitch):
     """Representation of a Broadlink MP1 slot."""
 
diff --git a/homeassistant/components/broadlink/updater.py b/homeassistant/components/broadlink/updater.py
index 6d3bbc5b6c1f013035e009480bec113a33592797..22f26d41b9c06d6cb20adb295c083da8e914ff62 100644
--- a/homeassistant/components/broadlink/updater.py
+++ b/homeassistant/components/broadlink/updater.py
@@ -31,6 +31,8 @@ def get_update_manager(device):
         "RM4": BroadlinkRMUpdateManager,
         "SP1": BroadlinkSP1UpdateManager,
         "SP2": BroadlinkSP2UpdateManager,
+        "SP4": BroadlinkSP4UpdateManager,
+        "SP4B": BroadlinkSP4UpdateManager,
     }
     return update_managers[device.api.type](device)
 
@@ -153,3 +155,11 @@ class BroadlinkSP2UpdateManager(BroadlinkUpdateManager):
         except (CommandNotSupportedError, StorageError):
             data["load_power"] = None
         return data
+
+
+class BroadlinkSP4UpdateManager(BroadlinkUpdateManager):
+    """Manages updates for Broadlink SP4 devices."""
+
+    async def async_fetch_data(self):
+        """Fetch data from the device."""
+        return await self.device.async_request(self.device.api.get_state)
diff --git a/requirements_all.txt b/requirements_all.txt
index 94c460075777be3b61fdc80b6a0b10c62fd20b29..9f10f1b0bdecb8b5a8b51d686572178e923cc851 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -380,7 +380,7 @@ boto3==1.9.252
 bravia-tv==1.0.6
 
 # homeassistant.components.broadlink
-broadlink==0.15.0
+broadlink==0.16.0
 
 # homeassistant.components.brother
 brother==0.1.18
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 927ef726c8a69b6c44bcc540a817c4127f5f499d..763dc77be22753fceb0ef9dc2857494e50c0405e 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.15.0
+broadlink==0.16.0
 
 # homeassistant.components.brother
 brother==0.1.18