1 """Support for FRITZ!Box devices."""
3 from __future__
import annotations
14 from .const
import DATA_FRITZ, DOMAIN
15 from .coordinator
import (
19 device_filter_out_from_trackers,
21 from .entity
import FritzDeviceBase
23 _LOGGER = logging.getLogger(__name__)
27 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
29 """Set up device tracker for FRITZ!Box component."""
30 _LOGGER.debug(
"Starting FRITZ!Box device tracker")
31 avm_wrapper: AvmWrapper = hass.data[DOMAIN][entry.entry_id]
32 data_fritz: FritzData = hass.data[DATA_FRITZ]
35 def update_avm_device() -> None:
36 """Update the values of AVM device."""
39 entry.async_on_unload(
48 avm_wrapper: AvmWrapper,
49 async_add_entities: AddEntitiesCallback,
50 data_fritz: FritzData,
52 """Add new tracker entities from the AVM device."""
55 if avm_wrapper.unique_id
not in data_fritz.tracked:
56 data_fritz.tracked[avm_wrapper.unique_id] = set()
58 for mac, device
in avm_wrapper.devices.items():
63 data_fritz.tracked[avm_wrapper.unique_id].
add(mac)
69 """Class which queries a FRITZ!Box device."""
71 def __init__(self, avm_wrapper: AvmWrapper, device: FritzDevice) ->
None:
72 """Initialize a FRITZ!Box device."""
73 super().
__init__(avm_wrapper, device)
74 self.
_last_activity_last_activity: datetime.datetime |
None = device.last_activity
78 """Return device status."""
79 return self.
_avm_wrapper_avm_wrapper.devices[self._mac].is_connected
83 """Return device unique id."""
84 return f
"{self._mac}_tracker"
88 """Return mac_address."""
93 """Return device icon."""
95 return "mdi:lan-connect"
96 return "mdi:lan-disconnect"
100 """Return the attributes."""
101 attrs: dict[str, str] = {}
102 device = self.
_avm_wrapper_avm_wrapper.devices[self._mac]
105 attrs[
"last_time_reachable"] = self.
_last_activity_last_activity.isoformat(
108 if device.connected_to:
109 attrs[
"connected_to"] = device.connected_to
110 if device.connection_type:
111 attrs[
"connection_type"] = device.connection_type
113 attrs[
"ssid"] = device.ssid
dict[str, str] extra_state_attributes(self)
None __init__(self, AvmWrapper avm_wrapper, FritzDevice device)
bool add(self, _T matcher)
bool device_filter_out_from_trackers(str mac, FritzDevice device, ValuesView current_devices)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
None _async_add_entities(AvmWrapper avm_wrapper, AddEntitiesCallback async_add_entities, FritzData data_fritz)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)