1 """Diagnostics support for Nut."""
3 from __future__
import annotations
14 from .
import NutConfigEntry
15 from .const
import DOMAIN
17 TO_REDACT = {CONF_PASSWORD, CONF_USERNAME}
21 hass: HomeAssistant, entry: NutConfigEntry
22 ) -> dict[str, dict[str, Any]]:
23 """Return diagnostics for a config entry."""
25 hass_data = entry.runtime_data
28 nut_data = hass_data.data
29 nut_cmd = hass_data.user_available_commands
31 "ups_list": nut_data.ups_list,
32 "status": nut_data.status,
37 device_registry = dr.async_get(hass)
38 entity_registry = er.async_get(hass)
39 hass_device = device_registry.async_get_device(
40 identifiers={(DOMAIN, hass_data.unique_id)}
46 **attr.asdict(hass_device),
50 hass_entities = er.async_entries_for_device(
52 device_id=hass_device.id,
53 include_disabled_entities=
True,
56 for entity_entry
in hass_entities:
57 state = hass.states.get(entity_entry.entity_id)
60 state_dict =
dict(state.as_dict())
62 state_dict.pop(
"entity_id",
None)
64 state_dict.pop(
"context",
None)
66 data[
"device"][
"entities"][entity_entry.entity_id] = {
68 entity_entry, filter=
lambda attr, value: attr.name !=
"entity_id"
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
dict[str, dict[str, Any]] async_get_config_entry_diagnostics(HomeAssistant hass, NutConfigEntry entry)