diff --git a/homeassistant/components/teslemetry/cover.py b/homeassistant/components/teslemetry/cover.py index be85a877c86..c58559ab308 100644 --- a/homeassistant/components/teslemetry/cover.py +++ b/homeassistant/components/teslemetry/cover.py @@ -201,14 +201,22 @@ class TeslemetryStreamingWindowEntity( def _handle_stream_update(self, data) -> None: """Update the entity attributes.""" - if value := data.get(Signal.FD_WINDOW): - self.fd = WindowState.get(value) == "closed" - if value := data.get(Signal.FP_WINDOW): - self.fp = WindowState.get(value) == "closed" - if value := data.get(Signal.RD_WINDOW): - self.rd = WindowState.get(value) == "closed" - if value := data.get(Signal.RP_WINDOW): - self.rp = WindowState.get(value) == "closed" + change = False + if value := data["data"].get(Signal.FD_WINDOW): + self.fd = WindowState.get(value) == "Closed" + change = True + if value := data["data"].get(Signal.FP_WINDOW): + self.fp = WindowState.get(value) == "Closed" + change = True + if value := data["data"].get(Signal.RD_WINDOW): + self.rd = WindowState.get(value) == "Closed" + change = True + if value := data["data"].get(Signal.RP_WINDOW): + self.rp = WindowState.get(value) == "Closed" + change = True + + if not change: + return if False in (self.fd, self.fp, self.rd, self.rp): self._attr_is_closed = False diff --git a/tests/components/teslemetry/snapshots/test_cover.ambr b/tests/components/teslemetry/snapshots/test_cover.ambr index 9548a911cf9..438738ff2b9 100644 --- a/tests/components/teslemetry/snapshots/test_cover.ambr +++ b/tests/components/teslemetry/snapshots/test_cover.ambr @@ -713,11 +713,11 @@ 'unknown' # --- # name: test_cover_streaming[cover.test_windows-closed] - 'unknown' + 'closed' # --- # name: test_cover_streaming[cover.test_windows-open] - 'unknown' + 'open' # --- # name: test_cover_streaming[cover.test_windows-unknown] - 'unknown' + 'open' # ---