From 5af14d743a9769d04c49df086dfef294f5206370 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Mon, 22 Dec 2025 19:10:55 +0100 Subject: [PATCH 01/13] Start adding update_interval test --- tests/components/plugwise/test_init.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index 035c52038..b52d47d47 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -265,6 +265,23 @@ async def test_migrate_unique_id_relay( ) +@pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) +@pytest.mark.parametrize("cooling_present", [False], indirect=True) +async def test_update_interval( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_smile_adam_heat_cool: MagicMock, + freezer: FrozenDateTimeFactory, +) -> None: + """Test Adam update interval.""" + mock_config_entry.add_to_hass(hass) + assert await async_setup_component(hass, DOMAIN, {}) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.LOADED + assert mock_smile_adam_heat_cool.async_update.call_count == 1 + + @pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) @pytest.mark.parametrize("cooling_present", [False], indirect=True) async def test_update_device( From 5679cbc71ca9b805f229c7586d91cd20b8ac9518 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Mon, 22 Dec 2025 19:25:46 +0100 Subject: [PATCH 02/13] Test update_interval 1 --- tests/components/plugwise/test_init.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index b52d47d47..63a2513f5 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -14,7 +14,8 @@ import pytest from freezegun.api import FrozenDateTimeFactory -from homeassistant.components.plugwise.const import DOMAIN +from homeassistant.components.plugwise.const import DEFAULT_SCAN_INTERVAL, DOMAIN +from homeassistant.components.plugwise.coordinator import PlugwiseDataUpdateCoordinator from homeassistant.config_entries import ConfigEntryState from homeassistant.const import ( CONF_HOST, @@ -281,6 +282,13 @@ async def test_update_interval( assert mock_config_entry.state is ConfigEntryState.LOADED assert mock_smile_adam_heat_cool.async_update.call_count == 1 + assert DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type] == timedelta(seconds=60) + freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type]) + async_fire_time_changed(hass) + await hass.async_block_till_done() + + assert mock_smile_adam_heat_cool.async_update.call_count == 2 + @pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) @pytest.mark.parametrize("cooling_present", [False], indirect=True) From 06d08d8ab4c718a5a99da1c3b8974126a993e8dd Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Mon, 22 Dec 2025 19:41:09 +0100 Subject: [PATCH 03/13] Test update interval 2 --- tests/components/plugwise/test_init.py | 30 ++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index 63a2513f5..78da64354 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -268,12 +268,12 @@ async def test_migrate_unique_id_relay( @pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) @pytest.mark.parametrize("cooling_present", [False], indirect=True) -async def test_update_interval( +async def test_update_interval_adam( hass: HomeAssistant, mock_config_entry: MockConfigEntry, mock_smile_adam_heat_cool: MagicMock, freezer: FrozenDateTimeFactory, -) -> None: +) -> None: """Test Adam update interval.""" mock_config_entry.add_to_hass(hass) assert await async_setup_component(hass, DOMAIN, {}) @@ -290,6 +290,32 @@ async def test_update_interval( assert mock_smile_adam_heat_cool.async_update.call_count == 2 +@pytest.mark.parametrize("chosen_env", ["p1v4_442_single"], indirect=True) +@pytest.mark.parametrize( + "gateway_id", ["a455b61e52394b2db5081ce025a430f3"], indirect=True +) +async def test_update_interval_p1( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_smile_p1: MagicMock, + freezer: FrozenDateTimeFactory, +) -> None: + """Test Adam update interval.""" + mock_config_entry.add_to_hass(hass) + assert await async_setup_component(hass, DOMAIN, {}) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.LOADED + assert mock_smile_p1.async_update.call_count == 1 + + assert DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type] == timedelta(seconds=10) + freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type]) + async_fire_time_changed(hass) + await hass.async_block_till_done() + + assert mock_smile_p1.async_update.call_count == 2 + + @pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) @pytest.mark.parametrize("cooling_present", [False], indirect=True) async def test_update_device( From f687f5d3fc0dd9c1af97b9d774adff8b5cb48088 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 23 Dec 2025 10:05:05 +0100 Subject: [PATCH 04/13] Fixes, move new tests to the bottom --- tests/components/plugwise/test_init.py | 104 ++++++++++++------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index 78da64354..6fc8ce7b7 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -155,7 +155,7 @@ async def test_device_in_dr( ) -> None: """Test Gateway device registry data.""" mock_config_entry.add_to_hass(hass) - assert await async_setup_component(hass, DOMAIN, {}) + await hass.config_entries.async_setup(mock_config_entry.entry_id) await hass.async_block_till_done() device_entry = device_registry.async_get_device( @@ -266,56 +266,6 @@ async def test_migrate_unique_id_relay( ) -@pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) -@pytest.mark.parametrize("cooling_present", [False], indirect=True) -async def test_update_interval_adam( - hass: HomeAssistant, - mock_config_entry: MockConfigEntry, - mock_smile_adam_heat_cool: MagicMock, - freezer: FrozenDateTimeFactory, -) -> None: - """Test Adam update interval.""" - mock_config_entry.add_to_hass(hass) - assert await async_setup_component(hass, DOMAIN, {}) - await hass.async_block_till_done() - - assert mock_config_entry.state is ConfigEntryState.LOADED - assert mock_smile_adam_heat_cool.async_update.call_count == 1 - - assert DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type] == timedelta(seconds=60) - freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type]) - async_fire_time_changed(hass) - await hass.async_block_till_done() - - assert mock_smile_adam_heat_cool.async_update.call_count == 2 - - -@pytest.mark.parametrize("chosen_env", ["p1v4_442_single"], indirect=True) -@pytest.mark.parametrize( - "gateway_id", ["a455b61e52394b2db5081ce025a430f3"], indirect=True -) -async def test_update_interval_p1( - hass: HomeAssistant, - mock_config_entry: MockConfigEntry, - mock_smile_p1: MagicMock, - freezer: FrozenDateTimeFactory, -) -> None: - """Test Adam update interval.""" - mock_config_entry.add_to_hass(hass) - assert await async_setup_component(hass, DOMAIN, {}) - await hass.async_block_till_done() - - assert mock_config_entry.state is ConfigEntryState.LOADED - assert mock_smile_p1.async_update.call_count == 1 - - assert DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type] == timedelta(seconds=10) - freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type]) - async_fire_time_changed(hass) - await hass.async_block_till_done() - - assert mock_smile_p1.async_update.call_count == 2 - - @pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) @pytest.mark.parametrize("cooling_present", [False], indirect=True) async def test_update_device( @@ -330,7 +280,7 @@ async def test_update_device( data = mock_smile_adam_heat_cool.async_update.return_value mock_config_entry.add_to_hass(hass) - assert await async_setup_component(hass, DOMAIN, {}) + await hass.config_entries.async_setup(mock_config_entry.entry_id) await hass.async_block_till_done() assert ( @@ -426,6 +376,56 @@ async def test_delete_removed_device( assert "14df5c4dc8cb4ba69f9d1ac0eaf7c5c6" not in item_list +@pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True) +@pytest.mark.parametrize("cooling_present", [False], indirect=True) +async def test_update_interval_adam( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_smile_adam_heat_cool: MagicMock, + freezer: FrozenDateTimeFactory, +) -> None: + """Test Adam update interval.""" + mock_config_entry.add_to_hass(hass) + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.LOADED + assert mock_smile_adam_heat_cool.async_update.call_count == 1 + + assert DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type] == timedelta(seconds=60) + freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type]) + async_fire_time_changed(hass) + await hass.async_block_till_done() + + assert mock_smile_adam_heat_cool.async_update.call_count == 2 + + +@pytest.mark.parametrize("chosen_env", ["p1v4_442_single"], indirect=True) +@pytest.mark.parametrize( + "gateway_id", ["a455b61e52394b2db5081ce025a430f3"], indirect=True +) +async def test_update_interval_p1( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_smile_p1: MagicMock, + freezer: FrozenDateTimeFactory, +) -> None: + """Test Adam update interval.""" + mock_config_entry.add_to_hass(hass) + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.LOADED + assert mock_smile_p1.async_update.call_count == 1 + + assert DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type] == timedelta(seconds=10) + freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type]) + async_fire_time_changed(hass) + await hass.async_block_till_done() + + assert mock_smile_p1.async_update.call_count == 2 + + #### pw-beta only #### @pytest.mark.parametrize("chosen_env", ["m_anna_heatpump_cooling"], indirect=True) @pytest.mark.parametrize("cooling_present", [True], indirect=True) From fd0ddd9495ac9ca475b2fa72003432e80261f925 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 23 Dec 2025 11:39:13 +0100 Subject: [PATCH 05/13] Fix docstring --- tests/components/plugwise/test_init.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index 6fc8ce7b7..f47f2bfa3 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -410,7 +410,7 @@ async def test_update_interval_p1( mock_smile_p1: MagicMock, freezer: FrozenDateTimeFactory, ) -> None: - """Test Adam update interval.""" + """Test Smile P1 update interval.""" mock_config_entry.add_to_hass(hass) await hass.config_entries.async_setup(mock_config_entry.entry_id) await hass.async_block_till_done() From 7d26a577bc3cc2746f2a84988d79c1a15983389d Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 23 Dec 2025 11:41:40 +0100 Subject: [PATCH 06/13] Clean up --- tests/components/plugwise/test_init.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index f47f2bfa3..be43f17ac 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -15,7 +15,6 @@ from freezegun.api import FrozenDateTimeFactory from homeassistant.components.plugwise.const import DEFAULT_SCAN_INTERVAL, DOMAIN -from homeassistant.components.plugwise.coordinator import PlugwiseDataUpdateCoordinator from homeassistant.config_entries import ConfigEntryState from homeassistant.const import ( CONF_HOST, @@ -28,7 +27,6 @@ ) from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr, entity_registry as er -from homeassistant.setup import async_setup_component from tests.common import MockConfigEntry, async_fire_time_changed From b81e700936bc1a29df794d0b078052a7b7960cc1 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 23 Dec 2025 12:35:01 +0100 Subject: [PATCH 07/13] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12ff2979a..0b5c3b7d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Versions from 0.40 and up ## v0.62.2 - Bump plugwise to [v1.11.2](https://github.com/plugwise/python-plugwise/releases/tag/v1.11.2) +- Add tests for the integration default update_interval settings via PR [#994](https://github.com/plugwise/plugwise-beta/pull/994) - Revert exceptions-move in coordinator.py, line up with Core Plugwise via PR [#990](https://github.com/plugwise/plugwise-beta/pull/990) ## v0.62.1 From 5b2f8829747bccfcc6cca7576d978565246dd04b Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Fri, 26 Dec 2025 10:20:51 +0100 Subject: [PATCH 08/13] Fix CHANGELOG after rebase --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b5c3b7d3..64be18586 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,13 @@ Versions from 0.40 and up +## Ongoing + +- Add tests for the integration default update_interval settings via PR [#994](https://github.com/plugwise/plugwise-beta/pull/994) + ## v0.62.2 - Bump plugwise to [v1.11.2](https://github.com/plugwise/python-plugwise/releases/tag/v1.11.2) -- Add tests for the integration default update_interval settings via PR [#994](https://github.com/plugwise/plugwise-beta/pull/994) - Revert exceptions-move in coordinator.py, line up with Core Plugwise via PR [#990](https://github.com/plugwise/plugwise-beta/pull/990) ## v0.62.1 From efaedef6be98dd775f93042b1e02d19a8d6a1b96 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Thu, 1 Jan 2026 15:05:29 +0100 Subject: [PATCH 09/13] Replace DEFAULT_SCAN_INTERVAL --- custom_components/plugwise/const.py | 7 ++----- custom_components/plugwise/coordinator.py | 17 +++++++++++------ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/custom_components/plugwise/const.py b/custom_components/plugwise/const.py index 6bf80f736..ea0c25feb 100644 --- a/custom_components/plugwise/const.py +++ b/custom_components/plugwise/const.py @@ -150,13 +150,10 @@ # Default directives DEFAULT_PORT: Final[int] = 80 -DEFAULT_SCAN_INTERVAL: Final[dict[str, timedelta]] = { - "power": timedelta(seconds=10), - "stretch": timedelta(seconds=60), - "thermostat": timedelta(seconds=60), -} DEFAULT_TIMEOUT: Final[int] = 30 +DEFAULT_UPDATE_INTERVAL: Final = timedelta(seconds=60) DEFAULT_USERNAME: Final = "smile" +P1_UPDATE_INTERVAL: Final = timedelta(seconds=10) # --- Const for Plugwise Smile and Stretch PLATFORMS: Final[list[str]] = [ diff --git a/custom_components/plugwise/coordinator.py b/custom_components/plugwise/coordinator.py index 363a9083f..93bf2b55a 100644 --- a/custom_components/plugwise/coordinator.py +++ b/custom_components/plugwise/coordinator.py @@ -29,7 +29,14 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from packaging.version import Version -from .const import DEFAULT_SCAN_INTERVAL, DEV_CLASS, DOMAIN, LOGGER, SWITCH_GROUPS +from .const import ( + DEFAULT_UPDATE_INTERVAL, + DEV_CLASS, + DOMAIN, + LOGGER, + P1_UPDATE_INTERVAL, + SWITCH_GROUPS, +) type PlugwiseConfigEntry = ConfigEntry[PlugwiseDataUpdateCoordinator] @@ -49,7 +56,6 @@ def __init__( hass: HomeAssistant, cooldown: float, config_entry: PlugwiseConfigEntry, - update_interval: timedelta = timedelta(seconds=60), ) -> None: # pw-beta cooldown """Initialize the coordinator.""" super().__init__( @@ -59,7 +65,7 @@ def __init__( name=DOMAIN, # Core directly updates from const's DEFAULT_SCAN_INTERVAL # Upstream check correct progress for adjusting - update_interval=update_interval, + update_interval=DEFAULT_UPDATE_INTERVAL, # Don't refresh immediately, give the device time to process # the change in state before we query it. request_refresh_debouncer=Debouncer( @@ -90,9 +96,8 @@ async def _connect(self) -> None: version = await self.api.connect() self._connected = isinstance(version, Version) if self._connected: - self.update_interval = DEFAULT_SCAN_INTERVAL.get( - self.api.smile.type, timedelta(seconds=60) - ) # pw-beta options scan-interval + if self.api.smile.type == "power": + self.update_interval = P1_UPDATE_INTERVAL if (custom_time := self.config_entry.options.get(CONF_SCAN_INTERVAL)) is not None: self.update_interval = timedelta( seconds=int(custom_time) From 3817281628c9e55e16430adfe013726455163dc8 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Thu, 1 Jan 2026 15:08:44 +0100 Subject: [PATCH 10/13] Update related testcases --- tests/components/plugwise/test_init.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/components/plugwise/test_init.py b/tests/components/plugwise/test_init.py index be43f17ac..914842b60 100644 --- a/tests/components/plugwise/test_init.py +++ b/tests/components/plugwise/test_init.py @@ -14,7 +14,11 @@ import pytest from freezegun.api import FrozenDateTimeFactory -from homeassistant.components.plugwise.const import DEFAULT_SCAN_INTERVAL, DOMAIN +from homeassistant.components.plugwise.const import ( + DEFAULT_UPDATE_INTERVAL, + DOMAIN, + P1_UPDATE_INTERVAL, +) from homeassistant.config_entries import ConfigEntryState from homeassistant.const import ( CONF_HOST, @@ -390,8 +394,7 @@ async def test_update_interval_adam( assert mock_config_entry.state is ConfigEntryState.LOADED assert mock_smile_adam_heat_cool.async_update.call_count == 1 - assert DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type] == timedelta(seconds=60) - freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_adam_heat_cool.smile.type]) + freezer.tick(DEFAULT_UPDATE_INTERVAL) async_fire_time_changed(hass) await hass.async_block_till_done() @@ -416,8 +419,7 @@ async def test_update_interval_p1( assert mock_config_entry.state is ConfigEntryState.LOADED assert mock_smile_p1.async_update.call_count == 1 - assert DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type] == timedelta(seconds=10) - freezer.tick(DEFAULT_SCAN_INTERVAL[mock_smile_p1.smile.type]) + freezer.tick(P1_UPDATE_INTERVAL) async_fire_time_changed(hass) await hass.async_block_till_done() From be25dda7a1458c5de163c1aba056317a41308e99 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Thu, 1 Jan 2026 15:16:51 +0100 Subject: [PATCH 11/13] Update config_flow.py --- custom_components/plugwise/config_flow.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/custom_components/plugwise/config_flow.py b/custom_components/plugwise/config_flow.py index 9a14e7fa1..ba33abcd8 100644 --- a/custom_components/plugwise/config_flow.py +++ b/custom_components/plugwise/config_flow.py @@ -48,12 +48,13 @@ CONF_HOMEKIT_EMULATION, # pw-beta option CONF_REFRESH_INTERVAL, # pw-beta option DEFAULT_PORT, - DEFAULT_SCAN_INTERVAL, # pw-beta option + DEFAULT_UPDATE_INTERVAL, DEFAULT_USERNAME, DOMAIN, FLOW_SMILE, FLOW_STRETCH, INIT, + P1_UPDATE_INTERVAL, SMILE, SMILE_OPEN_THERM, SMILE_THERMO, @@ -317,7 +318,9 @@ def __init__(self, config_entry: ConfigEntry) -> None: self.options = deepcopy(dict(config_entry.options)) def _create_options_schema(self, coordinator: PlugwiseDataUpdateCoordinator) -> vol.Schema: - interval = DEFAULT_SCAN_INTERVAL[coordinator.api.smile.type] # pw-beta options + interval = DEFAULT_UPDATE_INTERVAL + if coordinator.api.smile.type == "power": + interval = P1_UPDATE_INTERVAL schema = { vol.Optional( CONF_SCAN_INTERVAL, From ac292cdc520252096e99b5dfa03e2ac97c5d1efd Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Thu, 1 Jan 2026 15:21:44 +0100 Subject: [PATCH 12/13] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64be18586..e95865381 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Versions from 0.40 and up ## Ongoing -- Add tests for the integration default update_interval settings via PR [#994](https://github.com/plugwise/plugwise-beta/pull/994) +- Implement Core PR [#159626](https://github.com/home-assistant/core/pull/159626) via PR [#994](https://github.com/plugwise/plugwise-beta/pull/994) ## v0.62.2 From 77d9835daee73cdfaddeb9f22c4576a2aa2be6db Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Thu, 1 Jan 2026 15:23:27 +0100 Subject: [PATCH 13/13] Remove unneeded line --- custom_components/plugwise/coordinator.py | 1 - 1 file changed, 1 deletion(-) diff --git a/custom_components/plugwise/coordinator.py b/custom_components/plugwise/coordinator.py index 93bf2b55a..e1d5e9266 100644 --- a/custom_components/plugwise/coordinator.py +++ b/custom_components/plugwise/coordinator.py @@ -86,7 +86,6 @@ def __init__( self._current_devices = set() self._stored_devices = set() self.new_devices = set() - self.update_interval = update_interval async def _connect(self) -> None: """Connect to the Plugwise Smile.