Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Axis."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from homeassistant.components.diagnostics import async_redact_data
8 from homeassistant.const import CONF_MAC, CONF_PASSWORD, CONF_UNIQUE_ID, CONF_USERNAME
9 from homeassistant.core import HomeAssistant
10 
11 from . import AxisConfigEntry
12 
13 REDACT_CONFIG = {CONF_MAC, CONF_PASSWORD, CONF_UNIQUE_ID, CONF_USERNAME}
14 REDACT_BASIC_DEVICE_INFO = {"SerialNumber", "SocSerialNumber"}
15 REDACT_VAPIX_PARAMS = {"root.Network", "System.SerialNumber"}
16 
17 
19  hass: HomeAssistant, config_entry: AxisConfigEntry
20 ) -> dict[str, Any]:
21  """Return diagnostics for a config entry."""
22  hub = config_entry.runtime_data
23  diag: dict[str, Any] = hub.additional_diagnostics.copy()
24 
25  diag["config"] = async_redact_data(config_entry.as_dict(), REDACT_CONFIG)
26 
27  if hub.api.vapix.api_discovery:
28  diag["api_discovery"] = [
29  {"id": api.id, "name": api.name, "version": api.version}
30  for api in hub.api.vapix.api_discovery.values()
31  ]
32 
33  if hub.api.vapix.basic_device_info:
34  diag["basic_device_info"] = async_redact_data(
35  hub.api.vapix.basic_device_info["0"],
36  REDACT_BASIC_DEVICE_INFO,
37  )
38 
39  if hub.api.vapix.params:
40  diag["params"] = async_redact_data(
41  hub.api.vapix.params.items(),
42  REDACT_VAPIX_PARAMS,
43  )
44 
45  return diag
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, AxisConfigEntry config_entry)
Definition: diagnostics.py:20
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14