Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for RainMachine."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from regenmaschine.errors import RainMachineError
8 
9 from homeassistant.components.diagnostics import async_redact_data
10 from homeassistant.const import (
11  CONF_ELEVATION,
12  CONF_LATITUDE,
13  CONF_LONGITUDE,
14  CONF_PASSWORD,
15  CONF_UNIQUE_ID,
16 )
17 from homeassistant.core import HomeAssistant
18 
19 from . import RainMachineConfigEntry
20 from .const import LOGGER
21 
22 CONF_STATION_ID = "stationID"
23 CONF_STATION_NAME = "stationName"
24 CONF_STATION_SOURCE = "stationSource"
25 CONF_TIMEZONE = "timezone"
26 
27 TO_REDACT = {
28  CONF_ELEVATION,
29  CONF_LATITUDE,
30  CONF_LONGITUDE,
31  CONF_PASSWORD,
32  CONF_STATION_ID,
33  CONF_STATION_NAME,
34  CONF_STATION_SOURCE,
35  CONF_TIMEZONE,
36  # Config entry unique ID may contain sensitive data:
37  CONF_UNIQUE_ID,
38 }
39 
40 
42  hass: HomeAssistant, entry: RainMachineConfigEntry
43 ) -> dict[str, Any]:
44  """Return diagnostics for a config entry."""
45  data = entry.runtime_data
46 
47  try:
48  controller_diagnostics = await data.controller.diagnostics.current()
49  except RainMachineError:
50  LOGGER.warning("Unable to download controller-specific diagnostics")
51  controller_diagnostics = None
52 
53  return async_redact_data(
54  {
55  "entry": entry.as_dict(),
56  "data": {
57  "coordinator": {
58  api_category: controller.data
59  for api_category, controller in data.coordinators.items()
60  },
61  "controller_diagnostics": controller_diagnostics,
62  },
63  },
64  TO_REDACT,
65  )
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, RainMachineConfigEntry entry)
Definition: diagnostics.py:43