Skip to content

Commit 531b671

Browse files
authored
fix rain sensor for Velux GPU windows (home-assistant#151857)
1 parent 596a3fc commit 531b671

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

homeassistant/components/velux/binary_sensor.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,6 @@ async def async_update(self) -> None:
5959
LOGGER.error("Error fetching limitation data for cover %s", self.name)
6060
return
6161

62-
# Velux windows with rain sensors report an opening limitation of 93 when rain is detected.
63-
self._attr_is_on = limitation.min_value == 93
62+
# Velux windows with rain sensors report an opening limitation of 93 or 100 (Velux GPU) when rain is detected.
63+
# So far, only 93 and 100 have been observed in practice, documentation on this is non-existent AFAIK.
64+
self._attr_is_on = limitation.min_value in {93, 100}

tests/components/velux/test_binary_sensor.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,27 @@ async def test_rain_sensor_state(
3939
assert state is not None
4040
assert state.state == STATE_OFF
4141

42-
# simulate rain detected
42+
# simulate rain detected (Velux GPU reports 100)
43+
mock_window.get_limitation.return_value.min_value = 100
44+
await update_polled_entities(hass, freezer)
45+
state = hass.states.get(test_entity_id)
46+
assert state is not None
47+
assert state.state == STATE_ON
48+
49+
# simulate rain detected (other Velux models report 93)
4350
mock_window.get_limitation.return_value.min_value = 93
4451
await update_polled_entities(hass, freezer)
4552
state = hass.states.get(test_entity_id)
4653
assert state is not None
4754
assert state.state == STATE_ON
4855

56+
# simulate no rain detected again
57+
mock_window.get_limitation.return_value.min_value = 95
58+
await update_polled_entities(hass, freezer)
59+
state = hass.states.get(test_entity_id)
60+
assert state is not None
61+
assert state.state == STATE_OFF
62+
4963

5064
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
5165
@pytest.mark.usefixtures("mock_module")

0 commit comments

Comments
 (0)