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