From 1c3f6202cb939d3445ece0d670d5ca0d76c959cf Mon Sep 17 00:00:00 2001 From: Nathan Spencer Date: Wed, 28 Dec 2022 02:15:08 +0000 Subject: [PATCH 1/2] Use built in polling --- .../components/litterrobot/update.py | 41 ++++--------------- 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/homeassistant/components/litterrobot/update.py b/homeassistant/components/litterrobot/update.py index d6475ea486b1c..8c869807c8bc0 100644 --- a/homeassistant/components/litterrobot/update.py +++ b/homeassistant/components/litterrobot/update.py @@ -1,8 +1,6 @@ """Support for Litter-Robot updates.""" from __future__ import annotations -from collections.abc import Callable -from datetime import datetime, timedelta from typing import Any from pylitterbot import LitterRobot4 @@ -17,8 +15,6 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.event import async_call_later -from homeassistant.helpers.start import async_at_start from .const import DOMAIN from .entity import LitterRobotEntity, LitterRobotHub @@ -43,7 +39,7 @@ async def async_setup_entry( for robot in robots if isinstance(robot, LitterRobot4) ] - async_add_entities(entities) + async_add_entities(entities, True) class RobotUpdateEntity(LitterRobotEntity[LitterRobot4], UpdateEntity): @@ -53,16 +49,6 @@ class RobotUpdateEntity(LitterRobotEntity[LitterRobot4], UpdateEntity): UpdateEntityFeature.INSTALL | UpdateEntityFeature.PROGRESS ) - def __init__( - self, - robot: LitterRobot4, - hub: LitterRobotHub, - description: UpdateEntityDescription, - ) -> None: - """Initialize a Litter-Robot update entity.""" - super().__init__(robot, hub, description) - self._poll_unsub: Callable[[], None] | None = None - @property def installed_version(self) -> str: """Version installed and in use.""" @@ -73,10 +59,13 @@ def in_progress(self) -> bool: """Update installation progress.""" return self.robot.firmware_update_triggered - async def _async_update(self, _: HomeAssistant | datetime | None = None) -> None: - """Update the entity.""" - self._poll_unsub = None + @property + def should_poll(self) -> bool: + """Set polling to True.""" + return True + async def async_update(self) -> None: + """Update the entity.""" if await self.robot.has_firmware_update(): latest_version = await self.robot.get_latest_firmware() else: @@ -84,16 +73,6 @@ async def _async_update(self, _: HomeAssistant | datetime | None = None) -> None if self._attr_latest_version != self.installed_version: self._attr_latest_version = latest_version - self.async_write_ha_state() - - self._poll_unsub = async_call_later( - self.hass, timedelta(days=1), self._async_update - ) - - async def async_added_to_hass(self) -> None: - """Set up a listener for the entity.""" - await super().async_added_to_hass() - self.async_on_remove(async_at_start(self.hass, self._async_update)) async def async_install( self, version: str | None, backup: bool, **kwargs: Any @@ -103,9 +82,3 @@ async def async_install( if not await self.robot.update_firmware(): message = f"Unable to start firmware update on {self.robot.name}" raise HomeAssistantError(message) - - async def async_will_remove_from_hass(self) -> None: - """Call when entity will be removed.""" - if self._poll_unsub: - self._poll_unsub() - self._poll_unsub = None From 2e5b5b9d9bf1403c2f78f21bf761a79ec15b8500 Mon Sep 17 00:00:00 2001 From: Nathan Spencer Date: Wed, 28 Dec 2022 18:13:17 +0000 Subject: [PATCH 2/2] Define scan interval --- homeassistant/components/litterrobot/update.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/litterrobot/update.py b/homeassistant/components/litterrobot/update.py index 8c869807c8bc0..2ed46220a8c3f 100644 --- a/homeassistant/components/litterrobot/update.py +++ b/homeassistant/components/litterrobot/update.py @@ -1,6 +1,7 @@ """Support for Litter-Robot updates.""" from __future__ import annotations +from datetime import timedelta from typing import Any from pylitterbot import LitterRobot4 @@ -19,6 +20,8 @@ from .const import DOMAIN from .entity import LitterRobotEntity, LitterRobotHub +SCAN_INTERVAL = timedelta(days=1) + FIRMWARE_UPDATE_ENTITY = UpdateEntityDescription( key="firmware", name="Firmware",