Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for La Marzocco."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import asdict
6 from typing import Any, TypedDict
7 
8 from pylamarzocco.const import FirmwareType
9 
10 from homeassistant.components.diagnostics import async_redact_data
11 from homeassistant.core import HomeAssistant
12 
13 from .coordinator import LaMarzoccoConfigEntry
14 
15 TO_REDACT = {
16  "serial_number",
17 }
18 
19 
20 class DiagnosticsData(TypedDict):
21  """Diagnostic data for La Marzocco."""
22 
23  model: str
24  config: dict[str, Any]
25  firmware: list[dict[FirmwareType, dict[str, Any]]]
26  statistics: dict[str, Any]
27 
28 
30  hass: HomeAssistant,
31  entry: LaMarzoccoConfigEntry,
32 ) -> dict[str, Any]:
33  """Return diagnostics for a config entry."""
34  coordinator = entry.runtime_data
35  device = coordinator.device
36  # collect all data sources
37  diagnostics_data = DiagnosticsData(
38  model=device.model,
39  config=asdict(device.config),
40  firmware=[{key: asdict(firmware)} for key, firmware in device.firmware.items()],
41  statistics=asdict(device.statistics),
42  )
43 
44  return async_redact_data(diagnostics_data, TO_REDACT)
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, LaMarzoccoConfigEntry entry)
Definition: diagnostics.py:32