Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Fronius."""
2 
3 from typing import Any
4 
5 from homeassistant.components.diagnostics import async_redact_data
6 from homeassistant.core import HomeAssistant
7 
8 from . import FroniusConfigEntry
9 
10 TO_REDACT = {"unique_id", "unique_identifier", "serial"}
11 
12 
14  hass: HomeAssistant, config_entry: FroniusConfigEntry
15 ) -> dict[str, Any]:
16  """Return diagnostics for a config entry."""
17  diag: dict[str, Any] = {}
18  solar_net = config_entry.runtime_data
19  fronius = solar_net.fronius
20 
21  diag["config_entry"] = config_entry.as_dict()
22  diag["inverter_info"] = await fronius.inverter_info()
23 
24  diag["coordinators"] = {"inverters": {}}
25  for inv in solar_net.inverter_coordinators:
26  diag["coordinators"]["inverters"] |= inv.data
27 
28  diag["coordinators"]["logger"] = (
29  solar_net.logger_coordinator.data if solar_net.logger_coordinator else None
30  )
31  diag["coordinators"]["meter"] = (
32  solar_net.meter_coordinator.data if solar_net.meter_coordinator else None
33  )
34  diag["coordinators"]["ohmpilot"] = (
35  solar_net.ohmpilot_coordinator.data if solar_net.ohmpilot_coordinator else None
36  )
37  diag["coordinators"]["power_flow"] = (
38  solar_net.power_flow_coordinator.data
39  if solar_net.power_flow_coordinator
40  else None
41  )
42  diag["coordinators"]["storage"] = (
43  solar_net.storage_coordinator.data if solar_net.storage_coordinator else None
44  )
45 
46  return async_redact_data(diag, TO_REDACT)
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, FroniusConfigEntry config_entry)
Definition: diagnostics.py:15