diff --git a/homeassistant/components/switcher_kis/cover.py b/homeassistant/components/switcher_kis/cover.py
index d81611b1629b40cddfd330a1b7b67d2459e8b021..6f71a27c72afc0c2a7473c2774494d3818cec184 100644
--- a/homeassistant/components/switcher_kis/cover.py
+++ b/homeassistant/components/switcher_kis/cover.py
@@ -66,7 +66,7 @@ class SwitcherCoverEntity(SwitcherEntity, CoverEntity):
     def __init__(
         self,
         coordinator: SwitcherDataUpdateCoordinator,
-        cover_id: int | None = None,
+        cover_id: int,
     ) -> None:
         """Initialize the entity."""
         super().__init__(coordinator)
@@ -85,10 +85,14 @@ class SwitcherCoverEntity(SwitcherEntity, CoverEntity):
     def _update_data(self) -> None:
         """Update data from device."""
         data = cast(SwitcherShutter, self.coordinator.data)
-        self._attr_current_cover_position = data.position
-        self._attr_is_closed = data.position == 0
-        self._attr_is_closing = data.direction == ShutterDirection.SHUTTER_DOWN
-        self._attr_is_opening = data.direction == ShutterDirection.SHUTTER_UP
+        self._attr_current_cover_position = data.position[self._cover_id]
+        self._attr_is_closed = data.position[self._cover_id] == 0
+        self._attr_is_closing = (
+            data.direction[self._cover_id] == ShutterDirection.SHUTTER_DOWN
+        )
+        self._attr_is_opening = (
+            data.direction[self._cover_id] == ShutterDirection.SHUTTER_UP
+        )
 
     async def _async_call_api(self, api: str, *args: Any) -> None:
         """Call Switcher API."""
diff --git a/homeassistant/components/switcher_kis/light.py b/homeassistant/components/switcher_kis/light.py
index d3e8d52bc006a09685d10ba8f8e7c985d8f0ddbb..f5125c616dade76528fdc43278416683ed90e861 100644
--- a/homeassistant/components/switcher_kis/light.py
+++ b/homeassistant/components/switcher_kis/light.py
@@ -6,11 +6,7 @@ import logging
 from typing import Any, cast
 
 from aioswitcher.api import SwitcherBaseResponse, SwitcherType2Api
-from aioswitcher.device import (
-    DeviceCategory,
-    DeviceState,
-    SwitcherSingleShutterDualLight,
-)
+from aioswitcher.device import DeviceCategory, DeviceState, SwitcherLight
 
 from homeassistant.components.light import ColorMode, LightEntity
 from homeassistant.config_entries import ConfigEntry
@@ -87,8 +83,8 @@ class SwitcherLightEntity(SwitcherEntity, LightEntity):
         if self.control_result is not None:
             return self.control_result
 
-        data = cast(SwitcherSingleShutterDualLight, self.coordinator.data)
-        return bool(data.lights[self._light_id] == DeviceState.ON)
+        data = cast(SwitcherLight, self.coordinator.data)
+        return bool(data.light[self._light_id] == DeviceState.ON)
 
     async def _async_call_api(self, api: str, *args: Any) -> None:
         """Call Switcher API."""
diff --git a/homeassistant/components/switcher_kis/manifest.json b/homeassistant/components/switcher_kis/manifest.json
index 902316f374ececbb92e2e99c9271cd1a6630d6bf..cd754b4b8ec7c27165223c5c5a9f1f42fd375b72 100644
--- a/homeassistant/components/switcher_kis/manifest.json
+++ b/homeassistant/components/switcher_kis/manifest.json
@@ -7,6 +7,6 @@
   "iot_class": "local_push",
   "loggers": ["aioswitcher"],
   "quality_scale": "platinum",
-  "requirements": ["aioswitcher==4.0.3"],
+  "requirements": ["aioswitcher==4.2.0"],
   "single_config_entry": true
 }
diff --git a/requirements_all.txt b/requirements_all.txt
index e8e4fc17103e10f1cd00f86ed294dca18e0047d2..3f2b205cc5e9b018f128db78c1a4025a4a338332 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -384,7 +384,7 @@ aiosteamist==1.0.0
 aiostreammagic==2.8.1
 
 # homeassistant.components.switcher_kis
-aioswitcher==4.0.3
+aioswitcher==4.2.0
 
 # homeassistant.components.syncthing
 aiosyncthing==0.5.1
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 496cf5345be3afadf102318e27040d9354ad84d1..6a97ad1b00d94cb990849edadd88e688277e415f 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -366,7 +366,7 @@ aiosteamist==1.0.0
 aiostreammagic==2.8.1
 
 # homeassistant.components.switcher_kis
-aioswitcher==4.0.3
+aioswitcher==4.2.0
 
 # homeassistant.components.syncthing
 aiosyncthing==0.5.1
diff --git a/tests/components/switcher_kis/consts.py b/tests/components/switcher_kis/consts.py
index 7b0b5c28f3f04b2f530f3e204c1f673b339b44d1..fc2becbb4d5947da667c661b17d2543296bcca3d 100644
--- a/tests/components/switcher_kis/consts.py
+++ b/tests/components/switcher_kis/consts.py
@@ -60,11 +60,11 @@ DUMMY_TARGET_TEMPERATURE = 23
 DUMMY_FAN_LEVEL = ThermostatFanLevel.LOW
 DUMMY_SWING = ThermostatSwing.OFF
 DUMMY_REMOTE_ID = "ELEC7001"
-DUMMY_POSITION = 54
-DUMMY_DIRECTION = ShutterDirection.SHUTTER_STOP
+DUMMY_POSITION = [54]
+DUMMY_DIRECTION = [ShutterDirection.SHUTTER_STOP]
 DUMMY_USERNAME = "email"
 DUMMY_TOKEN = "zvVvd7JxtN7CgvkD1Psujw=="
-DUMMY_LIGHTS = [DeviceState.ON, DeviceState.ON]
+DUMMY_LIGHT_2 = [DeviceState.ON, DeviceState.ON]
 
 DUMMY_PLUG_DEVICE = SwitcherPowerPlug(
     DeviceType.POWER_PLUG,
@@ -118,7 +118,7 @@ DUMMY_SINGLE_SHUTTER_DUAL_LIGHT_DEVICE = SwitcherSingleShutterDualLight(
     DUMMY_TOKEN_NEEDED5,
     DUMMY_POSITION,
     DUMMY_DIRECTION,
-    DUMMY_LIGHTS,
+    DUMMY_LIGHT_2,
 )
 
 DUMMY_THERMOSTAT_DEVICE = SwitcherThermostat(
diff --git a/tests/components/switcher_kis/test_cover.py b/tests/components/switcher_kis/test_cover.py
index 5e0e6c53f5af97cdc3260e2d34fcce4ff9ad974d..c4b613ed2c1df63c95c0c32add4460e1eb10f908 100644
--- a/tests/components/switcher_kis/test_cover.py
+++ b/tests/components/switcher_kis/test_cover.py
@@ -47,7 +47,7 @@ async def test_cover(
     mock_api,
     monkeypatch: pytest.MonkeyPatch,
     device,
-    entity_id,
+    entity_id: str,
 ) -> None:
     """Test cover services."""
     await init_integration(hass, USERNAME, TOKEN)
@@ -68,7 +68,7 @@ async def test_cover(
             blocking=True,
         )
 
-        monkeypatch.setattr(device, "position", 77)
+        monkeypatch.setattr(device, "position", [77])
         mock_bridge.mock_callbacks([device])
         await hass.async_block_till_done()
 
@@ -89,7 +89,7 @@ async def test_cover(
             blocking=True,
         )
 
-        monkeypatch.setattr(device, "direction", ShutterDirection.SHUTTER_UP)
+        monkeypatch.setattr(device, "direction", [ShutterDirection.SHUTTER_UP])
         mock_bridge.mock_callbacks([device])
         await hass.async_block_till_done()
 
@@ -109,7 +109,7 @@ async def test_cover(
             blocking=True,
         )
 
-        monkeypatch.setattr(device, "direction", ShutterDirection.SHUTTER_DOWN)
+        monkeypatch.setattr(device, "direction", [ShutterDirection.SHUTTER_DOWN])
         mock_bridge.mock_callbacks([device])
         await hass.async_block_till_done()
 
@@ -129,7 +129,7 @@ async def test_cover(
             blocking=True,
         )
 
-        monkeypatch.setattr(device, "direction", ShutterDirection.SHUTTER_STOP)
+        monkeypatch.setattr(device, "direction", [ShutterDirection.SHUTTER_STOP])
         mock_bridge.mock_callbacks([device])
         await hass.async_block_till_done()
 
@@ -139,7 +139,7 @@ async def test_cover(
         assert state.state == CoverState.OPEN
 
     # Test closed on position == 0
-    monkeypatch.setattr(device, "position", 0)
+    monkeypatch.setattr(device, "position", [0])
     mock_bridge.mock_callbacks([device])
     await hass.async_block_till_done()
 
@@ -161,7 +161,7 @@ async def test_cover_control_fail(
     mock_bridge,
     mock_api,
     device,
-    entity_id,
+    entity_id: str,
 ) -> None:
     """Test cover control fail."""
     await init_integration(hass, USERNAME, TOKEN)
diff --git a/tests/components/switcher_kis/test_light.py b/tests/components/switcher_kis/test_light.py
index 0fb036967e7aae7608a5b46e176144828817ddaa..8a37174cf5853c831f78fdd74770649c6ff94c60 100644
--- a/tests/components/switcher_kis/test_light.py
+++ b/tests/components/switcher_kis/test_light.py
@@ -30,7 +30,6 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{slugify(DEVICE.name)}_light_1"
 ENTITY_ID2 = f"{LIGHT_DOMAIN}.{slugify(DEVICE.name)}_light_2"
 
 
-@pytest.mark.parametrize("mock_bridge", [[DEVICE]], indirect=True)
 @pytest.mark.parametrize(
     ("entity_id", "light_id", "device_state"),
     [
@@ -38,6 +37,7 @@ ENTITY_ID2 = f"{LIGHT_DOMAIN}.{slugify(DEVICE.name)}_light_2"
         (ENTITY_ID2, 1, [DeviceState.ON, DeviceState.OFF]),
     ],
 )
+@pytest.mark.parametrize("mock_bridge", [[DEVICE]], indirect=True)
 async def test_light(
     hass: HomeAssistant,
     mock_bridge,
@@ -56,7 +56,7 @@ async def test_light(
     assert state.state == STATE_ON
 
     # Test state change on --> off for light
-    monkeypatch.setattr(DEVICE, "lights", device_state)
+    monkeypatch.setattr(DEVICE, "light", device_state)
     mock_bridge.mock_callbacks([DEVICE])
     await hass.async_block_till_done()
 
@@ -90,6 +90,13 @@ async def test_light(
         assert state.state == STATE_OFF
 
 
+@pytest.mark.parametrize(
+    ("entity_id", "light_id", "device_state"),
+    [
+        (ENTITY_ID, 0, [DeviceState.OFF, DeviceState.ON]),
+        (ENTITY_ID2, 1, [DeviceState.ON, DeviceState.OFF]),
+    ],
+)
 @pytest.mark.parametrize("mock_bridge", [[DEVICE]], indirect=True)
 async def test_light_control_fail(
     hass: HomeAssistant,
@@ -97,17 +104,20 @@ async def test_light_control_fail(
     mock_api,
     monkeypatch: pytest.MonkeyPatch,
     caplog: pytest.LogCaptureFixture,
+    entity_id: str,
+    light_id: int,
+    device_state: list[DeviceState],
 ) -> None:
     """Test light control fail."""
     await init_integration(hass, USERNAME, TOKEN)
     assert mock_bridge
 
     # Test initial state - light off
-    monkeypatch.setattr(DEVICE, "lights", [DeviceState.OFF, DeviceState.ON])
+    monkeypatch.setattr(DEVICE, "light", device_state)
     mock_bridge.mock_callbacks([DEVICE])
     await hass.async_block_till_done()
 
-    state = hass.states.get(ENTITY_ID)
+    state = hass.states.get(entity_id)
     assert state.state == STATE_OFF
 
     # Test exception during turn on
@@ -119,20 +129,20 @@ async def test_light_control_fail(
             await hass.services.async_call(
                 LIGHT_DOMAIN,
                 SERVICE_TURN_ON,
-                {ATTR_ENTITY_ID: ENTITY_ID},
+                {ATTR_ENTITY_ID: entity_id},
                 blocking=True,
             )
 
         assert mock_api.call_count == 2
-        mock_control_device.assert_called_once_with(DeviceState.ON, 0)
-        state = hass.states.get(ENTITY_ID)
+        mock_control_device.assert_called_once_with(DeviceState.ON, light_id)
+        state = hass.states.get(entity_id)
         assert state.state == STATE_UNAVAILABLE
 
     # Make device available again
     mock_bridge.mock_callbacks([DEVICE])
     await hass.async_block_till_done()
 
-    state = hass.states.get(ENTITY_ID)
+    state = hass.states.get(entity_id)
     assert state.state == STATE_OFF
 
     # Test error response during turn on
@@ -144,11 +154,11 @@ async def test_light_control_fail(
             await hass.services.async_call(
                 LIGHT_DOMAIN,
                 SERVICE_TURN_ON,
-                {ATTR_ENTITY_ID: ENTITY_ID},
+                {ATTR_ENTITY_ID: entity_id},
                 blocking=True,
             )
 
         assert mock_api.call_count == 4
-        mock_control_device.assert_called_once_with(DeviceState.ON, 0)
-        state = hass.states.get(ENTITY_ID)
+        mock_control_device.assert_called_once_with(DeviceState.ON, light_id)
+        state = hass.states.get(entity_id)
         assert state.state == STATE_UNAVAILABLE