From c6f21b47a860e503bff368dec332ffe723acb9ac Mon Sep 17 00:00:00 2001 From: mkmer Date: Tue, 25 Jul 2023 16:23:31 -0400 Subject: [PATCH] Whrilpool add periodic update (#97222) --- homeassistant/components/whirlpool/sensor.py | 7 ++++++- tests/components/whirlpool/test_sensor.py | 11 +++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/whirlpool/sensor.py b/homeassistant/components/whirlpool/sensor.py index 37b16530b0d..f761badfa2b 100644 --- a/homeassistant/components/whirlpool/sensor.py +++ b/homeassistant/components/whirlpool/sensor.py @@ -70,6 +70,7 @@ ICON_D = "mdi:tumble-dryer" ICON_W = "mdi:washing-machine" _LOGGER = logging.getLogger(__name__) +SCAN_INTERVAL = timedelta(minutes=5) def washer_state(washer: WasherDryer) -> str | None: @@ -228,7 +229,7 @@ class WasherDryerClass(SensorEntity): class WasherDryerTimeClass(RestoreSensor): """A timestamp class for the whirlpool/maytag washer account.""" - _attr_should_poll = False + _attr_should_poll = True _attr_has_entity_name = True def __init__( @@ -272,6 +273,10 @@ class WasherDryerTimeClass(RestoreSensor): """Return True if entity is available.""" return self._wd.get_online() + async def async_update(self) -> None: + """Update status of Whirlpool.""" + await self._wd.fetch_data() + @callback def update_from_latest_data(self) -> None: """Calculate the time stamp for completion.""" diff --git a/tests/components/whirlpool/test_sensor.py b/tests/components/whirlpool/test_sensor.py index be78b0e2df8..4e451f46e9b 100644 --- a/tests/components/whirlpool/test_sensor.py +++ b/tests/components/whirlpool/test_sensor.py @@ -4,13 +4,14 @@ from unittest.mock import MagicMock from whirlpool.washerdryer import MachineState +from homeassistant.components.whirlpool.sensor import SCAN_INTERVAL from homeassistant.core import CoreState, HomeAssistant, State from homeassistant.helpers import entity_registry as er -from homeassistant.util.dt import as_timestamp, utc_from_timestamp +from homeassistant.util.dt import as_timestamp, utc_from_timestamp, utcnow from . import init_integration -from tests.common import mock_restore_cache_with_extra_data +from tests.common import async_fire_time_changed, mock_restore_cache_with_extra_data async def update_sensor_state( @@ -132,6 +133,12 @@ async def test_washer_sensor_values( await init_integration(hass) + async_fire_time_changed( + hass, + utcnow() + SCAN_INTERVAL, + ) + await hass.async_block_till_done() + entity_id = "sensor.washer_state" mock_instance = mock_sensor1_api entry = entity_registry.async_get(entity_id)