From 470121e5b07a98cc34b68dd13bd97b4a81be76c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 24 Feb 2021 14:17:01 +0100 Subject: [PATCH] Restore Tado binary sensor attributes (#46069) --- .../components/tado/binary_sensor.py | 11 +++++++++ tests/components/tado/util.py | 23 +++++++++++++++++++ tests/fixtures/tado/zone_default_overlay.json | 5 ++++ 3 files changed, 39 insertions(+) create mode 100644 tests/fixtures/tado/zone_default_overlay.json diff --git a/homeassistant/components/tado/binary_sensor.py b/homeassistant/components/tado/binary_sensor.py index 71b52931013..068c3a7ce93 100644 --- a/homeassistant/components/tado/binary_sensor.py +++ b/homeassistant/components/tado/binary_sensor.py @@ -183,6 +183,7 @@ class TadoZoneBinarySensor(TadoZoneEntity, BinarySensorEntity): self._unique_id = f"{zone_variable} {zone_id} {tado.home_id}" self._state = None + self._state_attributes = None self._tado_zone_data = None async def async_added_to_hass(self): @@ -229,6 +230,11 @@ class TadoZoneBinarySensor(TadoZoneEntity, BinarySensorEntity): return DEVICE_CLASS_POWER return None + @property + def device_state_attributes(self): + """Return the state attributes.""" + return self._state_attributes + @callback def _async_update_callback(self): """Update and write state.""" @@ -251,6 +257,10 @@ class TadoZoneBinarySensor(TadoZoneEntity, BinarySensorEntity): elif self.zone_variable == "overlay": self._state = self._tado_zone_data.overlay_active + if self._tado_zone_data.overlay_active: + self._state_attributes = { + "termination": self._tado_zone_data.overlay_termination_type + } elif self.zone_variable == "early start": self._state = self._tado_zone_data.preparation @@ -260,3 +270,4 @@ class TadoZoneBinarySensor(TadoZoneEntity, BinarySensorEntity): self._tado_zone_data.open_window or self._tado_zone_data.open_window_detected ) + self._state_attributes = self._tado_zone_data.open_window_attr diff --git a/tests/components/tado/util.py b/tests/components/tado/util.py index d27ede47a63..c5bf8cf28a4 100644 --- a/tests/components/tado/util.py +++ b/tests/components/tado/util.py @@ -46,6 +46,9 @@ async def async_init_integration( # Device Temp Offset device_temp_offset = "tado/device_temp_offset.json" + # Zone Default Overlay + zone_def_overlay = "tado/zone_default_overlay.json" + with requests_mock.mock() as m: m.post("https://auth.tado.com/oauth/token", text=load_fixture(token_fixture)) m.get( @@ -92,6 +95,26 @@ async def async_init_integration( "https://my.tado.com/api/v2/homes/1/zones/1/capabilities", text=load_fixture(zone_1_capabilities_fixture), ) + m.get( + "https://my.tado.com/api/v2/homes/1/zones/1/defaultOverlay", + text=load_fixture(zone_def_overlay), + ) + m.get( + "https://my.tado.com/api/v2/homes/1/zones/2/defaultOverlay", + text=load_fixture(zone_def_overlay), + ) + m.get( + "https://my.tado.com/api/v2/homes/1/zones/3/defaultOverlay", + text=load_fixture(zone_def_overlay), + ) + m.get( + "https://my.tado.com/api/v2/homes/1/zones/4/defaultOverlay", + text=load_fixture(zone_def_overlay), + ) + m.get( + "https://my.tado.com/api/v2/homes/1/zones/5/defaultOverlay", + text=load_fixture(zone_def_overlay), + ) m.get( "https://my.tado.com/api/v2/homes/1/zones/5/state", text=load_fixture(zone_5_state_fixture), diff --git a/tests/fixtures/tado/zone_default_overlay.json b/tests/fixtures/tado/zone_default_overlay.json new file mode 100644 index 00000000000..092b2b25d4d --- /dev/null +++ b/tests/fixtures/tado/zone_default_overlay.json @@ -0,0 +1,5 @@ +{ + "terminationCondition": { + "type": "MANUAL" + } +}