From 84003e079cbf4d8d2500357e966df3c6daaec831 Mon Sep 17 00:00:00 2001 From: bakonyiferenc <54292419+bakonyiferenc@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:04:02 +0100 Subject: [PATCH 1/2] Fix issue #116 --- .../sagemcom_fast/device_tracker.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/custom_components/sagemcom_fast/device_tracker.py b/custom_components/sagemcom_fast/device_tracker.py index e22954f..9aa49f2 100644 --- a/custom_components/sagemcom_fast/device_tracker.py +++ b/custom_components/sagemcom_fast/device_tracker.py @@ -4,7 +4,7 @@ from homeassistant.components.device_tracker import SourceType from homeassistant.components.device_tracker.config_entry import ScannerEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.core import HomeAssistant +from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.restore_state import RestoreEntity @@ -24,12 +24,21 @@ async def async_setup_entry( ) -> None: """Set up device tracker from config entry.""" data: HomeAssistantSagemcomFastData = hass.data[DOMAIN][entry.entry_id] + tracked: dict[str, SagemcomScannerEntity] = {} - async_add_entities( - SagemcomScannerEntity(data.coordinator, idx, entry.entry_id) - for idx, device in data.coordinator.data.items() - ) + @callback + def async_update_router() -> None: + """Update the values of the router.""" + newly_discovered: list[SagemcomScannerEntity] = [] + for idx, device in data.coordinator.data.items(): + if idx not in tracked: + tracked[idx] = SagemcomScannerEntity(data.coordinator, idx, entry.entry_id) + newly_discovered.append(tracked[idx]) + async_add_entities(newly_discovered) + + entry.async_on_unload(data.coordinator.async_add_listener(async_update_router)) + async_update_router() class SagemcomScannerEntity( ScannerEntity, RestoreEntity, CoordinatorEntity[SagemcomDataUpdateCoordinator] From fba253261425a2ef45ebf8f42ef0ef824bf2cbb4 Mon Sep 17 00:00:00 2001 From: Ferenc Bakonyi Date: Wed, 20 Mar 2024 21:06:31 +0100 Subject: [PATCH 2/2] Format code with black --- custom_components/sagemcom_fast/device_tracker.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/custom_components/sagemcom_fast/device_tracker.py b/custom_components/sagemcom_fast/device_tracker.py index 9aa49f2..70b49f8 100644 --- a/custom_components/sagemcom_fast/device_tracker.py +++ b/custom_components/sagemcom_fast/device_tracker.py @@ -32,14 +32,16 @@ def async_update_router() -> None: newly_discovered: list[SagemcomScannerEntity] = [] for idx, device in data.coordinator.data.items(): if idx not in tracked: - tracked[idx] = SagemcomScannerEntity(data.coordinator, idx, entry.entry_id) + tracked[idx] = SagemcomScannerEntity( + data.coordinator, idx, entry.entry_id + ) newly_discovered.append(tracked[idx]) - async_add_entities(newly_discovered) entry.async_on_unload(data.coordinator.async_add_listener(async_update_router)) async_update_router() + class SagemcomScannerEntity( ScannerEntity, RestoreEntity, CoordinatorEntity[SagemcomDataUpdateCoordinator] ):