diff --git a/pydeconz/models/light/cover.py b/pydeconz/models/light/cover.py index cd198d06..a6a090cf 100644 --- a/pydeconz/models/light/cover.py +++ b/pydeconz/models/light/cover.py @@ -31,10 +31,7 @@ class CoverAction(enum.Enum): class Cover(LightBase): - """Cover and Damper class. - - Position 0 means open and 100 means closed. - """ + """Cover and Damper class.""" raw: TypedCover @@ -47,8 +44,8 @@ def is_open(self) -> bool: def lift(self) -> int: """Amount of closed position. - 0 is fully open. - 100 is fully closed. + Supported values: + 0-100 - 0 is open / 100 is closed """ return self.raw["state"]["lift"] @@ -56,9 +53,14 @@ def lift(self) -> int: def tilt(self) -> int | None: """Amount of tilt. - 0 is fully open. - 100 is fully closed. + Supported values: + 0-100 - 0 is open / 100 is closed """ if "tilt" in self.raw["state"]: return self.raw["state"]["tilt"] return None + + @property + def supports_tilt(self) -> bool: + """Supports tilt.""" + return "tilt" in self.raw["state"] diff --git a/tests/lights/test_cover.py b/tests/lights/test_cover.py index 3d606d45..194332c9 100644 --- a/tests/lights/test_cover.py +++ b/tests/lights/test_cover.py @@ -63,6 +63,7 @@ async def test_light_cover(mock_aioresponse, deconz_light, deconz_called_with): assert cover.is_open is True assert cover.lift == 0 assert cover.tilt is None + assert cover.supports_tilt is False assert cover.reachable is True @@ -78,12 +79,15 @@ async def test_light_cover(mock_aioresponse, deconz_light, deconz_called_with): cover.register_callback(mock_callback := Mock()) assert cover._callbacks - event = {"state": {"lift": 50, "open": True}} - cover.update(event) + cover.update({"state": {"lift": 50, "open": True}}) assert cover.is_open is True assert cover.lift == 50 mock_callback.assert_called_once() assert cover.changed_keys == {"state", "lift", "open"} + cover.update({"state": {"tilt": 25, "open": True}}) + assert cover.tilt == 25 + assert cover.supports_tilt is True + cover.remove_callback(mock_callback) assert not cover._callbacks