Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Supervisor."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from attr import asdict
8 
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers import device_registry as dr, entity_registry as er
12 
13 from .const import ADDONS_COORDINATOR
14 from .coordinator import HassioDataUpdateCoordinator
15 
16 
18  hass: HomeAssistant,
19  config_entry: ConfigEntry,
20 ) -> dict[str, Any]:
21  """Return diagnostics for a config entry."""
22  coordinator: HassioDataUpdateCoordinator = hass.data[ADDONS_COORDINATOR]
23  device_registry = dr.async_get(hass)
24  entity_registry = er.async_get(hass)
25 
26  devices = []
27 
28  registry_devices = dr.async_entries_for_config_entry(
29  device_registry, config_entry.entry_id
30  )
31 
32  for device in registry_devices:
33  entities = []
34 
35  registry_entities = er.async_entries_for_device(
36  entity_registry,
37  device_id=device.id,
38  include_disabled_entities=True,
39  )
40 
41  for entity_entry in registry_entities:
42  state_dict = None
43  if state := hass.states.get(entity_entry.entity_id):
44  state_dict = dict(state.as_dict())
45  state_dict.pop("context", None)
46 
47  entities.append({"entry": asdict(entity_entry), "state": state_dict})
48 
49  devices.append({"device": asdict(device), "entities": entities})
50 
51  return {
52  "coordinator_data": coordinator.data,
53  "devices": devices,
54  }
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry config_entry)
Definition: diagnostics.py:20