1 """Support for Ruckus devices."""
3 from __future__
import annotations
20 UNDO_UPDATE_LISTENERS,
22 from .coordinator
import RuckusDataUpdateCoordinator
24 _LOGGER = logging.getLogger(__package__)
28 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
30 """Set up device tracker for Ruckus component."""
31 coordinator = hass.data[DOMAIN][entry.entry_id][COORDINATOR]
33 tracked: set[str] = set()
37 """Update the values of the router."""
42 hass.data[DOMAIN][entry.entry_id][UNDO_UPDATE_LISTENERS].append(
43 coordinator.async_add_listener(router_update)
46 registry = er.async_get(hass)
52 """Add new tracker entities from the router."""
55 for mac
in coordinator.data[KEY_SYS_CLIENTS]:
59 device = coordinator.data[KEY_SYS_CLIENTS][mac]
60 _LOGGER.debug(
"adding new device: [%s] %s", mac, device[API_CLIENT_HOSTNAME])
61 new_tracked.append(
RuckusDevice(coordinator, mac, device[API_CLIENT_HOSTNAME]))
69 registry: er.EntityRegistry,
70 coordinator: RuckusDataUpdateCoordinator,
72 async_add_entities: AddEntitiesCallback,
75 """Restore clients that are not a part of active clients list."""
76 missing: list[RuckusDevice] = []
78 for entity
in registry.entities.get_entries_for_config_entry_id(entry.entry_id):
80 entity.platform == DOMAIN
81 and entity.unique_id
not in coordinator.data[KEY_SYS_CLIENTS]
84 RuckusDevice(coordinator, entity.unique_id, entity.original_name)
86 tracked.add(entity.unique_id)
88 _LOGGER.debug(
"added %d missing devices", len(missing))
93 """Representation of a Ruckus client."""
95 def __init__(self, coordinator, mac, name) -> None:
96 """Initialize a Ruckus client."""
103 """Return a mac address."""
108 """Return the name."""
110 return self.
_name_name
111 return self.coordinator.data[KEY_SYS_CLIENTS][self.
_mac_mac][API_CLIENT_HOSTNAME]
115 """Return the ip address."""
118 return self.coordinator.data[KEY_SYS_CLIENTS][self.
_mac_mac][API_CLIENT_IP]
122 """Return true if the device is connected to the network."""
123 return self.
_mac_mac
in self.coordinator.data[KEY_SYS_CLIENTS]
None __init__(self, coordinator, mac, name)
str|None ip_address(self)
def add_new_entities(coordinator, async_add_entities, tracked)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
None restore_entities(er.EntityRegistry registry, RuckusDataUpdateCoordinator coordinator, ConfigEntry entry, AddEntitiesCallback async_add_entities, set[str] tracked)