1 """Diagnostics support for Asuswrt."""
3 from __future__
import annotations
20 from .
import AsusWrtConfigEntry
22 TO_REDACT = {CONF_PASSWORD, CONF_UNIQUE_ID, CONF_USERNAME}
23 TO_REDACT_DEV = {ATTR_CONNECTIONS, ATTR_IDENTIFIERS}
27 hass: HomeAssistant, entry: AsusWrtConfigEntry
28 ) -> dict[str, dict[str, Any]]:
29 """Return diagnostics for a config entry."""
32 router = entry.runtime_data
35 device_registry = dr.async_get(hass)
36 entity_registry = er.async_get(hass)
37 hass_device = device_registry.async_get_device(
38 identifiers=router.device_info[ATTR_IDENTIFIERS]
46 "tracked_devices": [],
49 hass_entities = er.async_entries_for_device(
51 device_id=hass_device.id,
52 include_disabled_entities=
True,
55 for entity_entry
in hass_entities:
56 state = hass.states.get(entity_entry.entity_id)
59 state_dict =
dict(state.as_dict())
61 state_dict.pop(
"entity_id",
None)
63 state_dict.pop(
"context",
None)
65 data[
"device"][
"entities"][entity_entry.entity_id] = {
68 entity_entry, filter=
lambda attr, value: attr.name !=
"entity_id"
75 for device
in router.devices.values():
76 data[
"device"][
"tracked_devices"].append(
78 "name": device.name
or "Unknown device",
79 "ip_address": device.ip_address,
80 "last_activity": device.last_activity,
dict[str, dict[str, Any]] async_get_config_entry_diagnostics(HomeAssistant hass, AsusWrtConfigEntry entry)
dict async_redact_data(Mapping data, Iterable[Any] to_redact)