Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for P1 Monitor."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import asdict
6 from typing import TYPE_CHECKING, Any, cast
7 
8 from homeassistant.components.diagnostics import async_redact_data
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.const import CONF_HOST, CONF_PORT
11 from homeassistant.core import HomeAssistant
12 
13 from .const import (
14  SERVICE_PHASES,
15  SERVICE_SETTINGS,
16  SERVICE_SMARTMETER,
17  SERVICE_WATERMETER,
18 )
19 
20 if TYPE_CHECKING:
21  from _typeshed import DataclassInstance
22 
23 TO_REDACT = {CONF_HOST, CONF_PORT}
24 
25 
27  hass: HomeAssistant, entry: ConfigEntry
28 ) -> dict[str, Any]:
29  """Return diagnostics for a config entry."""
30  data = {
31  "entry": {
32  "title": entry.title,
33  "data": async_redact_data(entry.data, TO_REDACT),
34  },
35  "data": {
36  "smartmeter": asdict(entry.runtime_data.data[SERVICE_SMARTMETER]),
37  "phases": asdict(entry.runtime_data.data[SERVICE_PHASES]),
38  "settings": asdict(entry.runtime_data.data[SERVICE_SETTINGS]),
39  },
40  }
41 
42  if entry.runtime_data.has_water_meter:
43  data["data"]["watermeter"] = asdict(
44  cast("DataclassInstance", entry.runtime_data.data[SERVICE_WATERMETER])
45  )
46 
47  return 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, ConfigEntry entry)
Definition: diagnostics.py:28