Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Renault."""
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_PASSWORD, CONF_USERNAME
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.device_registry import DeviceEntry
11 
12 from . import RenaultConfigEntry
13 from .const import CONF_KAMEREON_ACCOUNT_ID
14 from .renault_vehicle import RenaultVehicleProxy
15 
16 TO_REDACT = {
17  CONF_KAMEREON_ACCOUNT_ID,
18  CONF_PASSWORD,
19  CONF_USERNAME,
20  "radioCode",
21  "registrationNumber",
22  "vin",
23  "gpsLatitude",
24  "gpsLongitude",
25 }
26 
27 
29  hass: HomeAssistant, entry: RenaultConfigEntry
30 ) -> dict[str, Any]:
31  """Return diagnostics for a config entry."""
32  return {
33  "entry": {
34  "title": entry.title,
35  "data": async_redact_data(entry.data, TO_REDACT),
36  },
37  "vehicles": [
39  for vehicle in entry.runtime_data.vehicles.values()
40  ],
41  }
42 
43 
45  hass: HomeAssistant, entry: RenaultConfigEntry, device: DeviceEntry
46 ) -> dict[str, Any]:
47  """Return diagnostics for a device."""
48  vin = next(iter(device.identifiers))[1]
49  vehicle = entry.runtime_data.vehicles[vin]
50 
51  return _get_vehicle_diagnostics(vehicle)
52 
53 
54 def _get_vehicle_diagnostics(vehicle: RenaultVehicleProxy) -> dict[str, Any]:
55  """Return diagnostics for a device."""
56  return {
57  "details": async_redact_data(vehicle.details.raw_data, TO_REDACT),
58  "data": {
59  key: async_redact_data(
60  coordinator.data.raw_data if coordinator.data else None, TO_REDACT
61  )
62  for key, coordinator in vehicle.coordinators.items()
63  },
64  }
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, RenaultConfigEntry entry)
Definition: diagnostics.py:30
dict[str, Any] _get_vehicle_diagnostics(RenaultVehicleProxy vehicle)
Definition: diagnostics.py:54
dict[str, Any] async_get_device_diagnostics(HomeAssistant hass, RenaultConfigEntry entry, DeviceEntry device)
Definition: diagnostics.py:46