From 07f7f369a3949bbc8d0e80ed6e8bc993df5e4b04 Mon Sep 17 00:00:00 2001 From: Christophe Painchaud Date: Sat, 14 Jan 2023 14:25:24 +0100 Subject: [PATCH] fix object detection sensor going on/off in a loop when not available --- custom_components/reolink_dev/binary_sensor.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/custom_components/reolink_dev/binary_sensor.py b/custom_components/reolink_dev/binary_sensor.py index 83d0fc2..7f1e90d 100644 --- a/custom_components/reolink_dev/binary_sensor.py +++ b/custom_components/reolink_dev/binary_sensor.py @@ -292,11 +292,15 @@ async def async_added_to_hass(self) -> None: async def handle_event(self, event): """Handle incoming event for motion detection and availability.""" + new_availability = self._available + try: new_availability = event.data["available"] - if new_availability != self._available: - self._available = new_availability - self.async_schedule_update_ha_state() + if not new_availability: + if new_availability != self._available: + self._available = new_availability + self.async_schedule_update_ha_state() + return except KeyError: pass @@ -330,8 +334,11 @@ async def handle_event(self, event): break if not object_found: - self._available = False - self.async_schedule_update_ha_state() + new_availability = False + + if new_availability != self._available: + self._available = new_availability + self.async_schedule_update_ha_state()