Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Proximity."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from homeassistant.components.device_tracker import ATTR_GPS, ATTR_IP, ATTR_MAC
8 from homeassistant.components.diagnostics import REDACTED, async_redact_data
9 from homeassistant.components.person import ATTR_USER_ID
10 from homeassistant.components.zone import DOMAIN as ZONE_DOMAIN
11 from homeassistant.const import (
12  ATTR_LATITUDE,
13  ATTR_LONGITUDE,
14  STATE_HOME,
15  STATE_NOT_HOME,
16  STATE_UNAVAILABLE,
17  STATE_UNKNOWN,
18 )
19 from homeassistant.core import HomeAssistant
20 
21 from .coordinator import ProximityConfigEntry
22 
23 TO_REDACT = {
24  ATTR_GPS,
25  ATTR_IP,
26  ATTR_LATITUDE,
27  ATTR_LONGITUDE,
28  ATTR_MAC,
29  ATTR_USER_ID,
30  "context",
31  "location_name",
32 }
33 
34 
36  hass: HomeAssistant, entry: ProximityConfigEntry
37 ) -> dict[str, Any]:
38  """Return diagnostics for a config entry."""
39  coordinator = entry.runtime_data
40 
41  diag_data = {
42  "entry": entry.as_dict(),
43  }
44 
45  non_sensitiv_states = [
46  STATE_HOME,
47  STATE_NOT_HOME,
48  STATE_UNAVAILABLE,
49  STATE_UNKNOWN,
50  ] + [z.name for z in hass.states.async_all(ZONE_DOMAIN)]
51 
52  tracked_states: dict[str, dict] = {}
53  for tracked_entity_id in coordinator.tracked_entities:
54  if (state := hass.states.get(tracked_entity_id)) is None:
55  continue
56  tracked_states[tracked_entity_id] = async_redact_data(
57  state.as_dict(), TO_REDACT
58  )
59  if state.state not in non_sensitiv_states:
60  tracked_states[tracked_entity_id]["state"] = REDACTED
61 
62  diag_data["data"] = {
63  "proximity": coordinator.data.proximity,
64  "entities": coordinator.data.entities,
65  "entity_mapping": coordinator.entity_mapping,
66  "tracked_states": tracked_states,
67  }
68  return diag_data
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ProximityConfigEntry entry)
Definition: diagnostics.py:37