Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Kostal Plenticore."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from homeassistant.components.diagnostics import REDACTED, async_redact_data
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.const import ATTR_IDENTIFIERS, CONF_PASSWORD
10 from homeassistant.core import HomeAssistant
11 
12 from .const import DOMAIN
13 from .coordinator import Plenticore
14 
15 TO_REDACT = {CONF_PASSWORD}
16 
17 
19  hass: HomeAssistant, config_entry: ConfigEntry
20 ) -> dict[str, dict[str, Any]]:
21  """Return diagnostics for a config entry."""
22  data = {"config_entry": async_redact_data(config_entry.as_dict(), TO_REDACT)}
23 
24  plenticore: Plenticore = hass.data[DOMAIN][config_entry.entry_id]
25 
26  # Get information from Kostal Plenticore library
27  available_process_data = await plenticore.client.get_process_data()
28  available_settings_data = await plenticore.client.get_settings()
29  data["client"] = {
30  "version": str(await plenticore.client.get_version()),
31  "me": str(await plenticore.client.get_me()),
32  "available_process_data": available_process_data,
33  "available_settings_data": {
34  module_id: [str(setting) for setting in settings]
35  for module_id, settings in available_settings_data.items()
36  },
37  }
38 
39  device_info = {**plenticore.device_info}
40  device_info[ATTR_IDENTIFIERS] = REDACTED # contains serial number
41  data["device"] = device_info
42 
43  return data
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, dict[str, Any]] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry config_entry)
Definition: diagnostics.py:20