Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Velbus."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from velbusaio.channels import Channel as VelbusChannel
8 from velbusaio.module import Module as VelbusModule
9 
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.device_registry import DeviceEntry
13 
14 from .const import DOMAIN
15 
16 
18  hass: HomeAssistant, entry: ConfigEntry
19 ) -> dict[str, Any]:
20  """Return diagnostics for a config entry."""
21  controller = hass.data[DOMAIN][entry.entry_id]["cntrl"]
22  data: dict[str, Any] = {"entry": entry.as_dict(), "modules": []}
23  for module in controller.get_modules().values():
24  data["modules"].append(_build_module_diagnostics_info(module))
25  return data
26 
27 
29  hass: HomeAssistant, entry: ConfigEntry, device: DeviceEntry
30 ) -> dict[str, Any]:
31  """Return diagnostics for a device entry."""
32  controller = hass.data[DOMAIN][entry.entry_id]["cntrl"]
33  channel = list(next(iter(device.identifiers)))[1]
34  modules = controller.get_modules()
35  return _build_module_diagnostics_info(modules[int(channel)])
36 
37 
38 def _build_module_diagnostics_info(module: VelbusModule) -> dict[str, Any]:
39  """Build per module diagnostics info."""
40  data: dict[str, Any] = {
41  "type": module.get_type_name(),
42  "address": module.get_addresses(),
43  "name": module.get_name(),
44  "sw_version": module.get_sw_version(),
45  "is_loaded": module.is_loaded(),
46  "channels": _build_channels_diagnostics_info(module.get_channels()),
47  }
48  return data
49 
50 
52  channels: dict[str, VelbusChannel],
53 ) -> dict[str, Any]:
54  """Build diagnostics info for all channels."""
55  data: dict[str, Any] = {}
56  for channel in channels.values():
57  data[str(channel.get_channel_number())] = channel.get_channel_info()
58  return data
dict[str, Any] _build_channels_diagnostics_info(dict[str, VelbusChannel] channels)
Definition: diagnostics.py:53
dict[str, Any] async_get_device_diagnostics(HomeAssistant hass, ConfigEntry entry, DeviceEntry device)
Definition: diagnostics.py:30
dict[str, Any] _build_module_diagnostics_info(VelbusModule module)
Definition: diagnostics.py:38
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry entry)
Definition: diagnostics.py:19