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] 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]