Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """Diagnostics support for Nest."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from google_nest_sdm import diagnostics
8 from google_nest_sdm.device import Device
9 from google_nest_sdm.device_manager import DeviceManager
10 from google_nest_sdm.device_traits import InfoTrait
11 
12 from homeassistant.components.camera import diagnostics as camera_diagnostics
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.core import HomeAssistant, callback
15 from homeassistant.helpers.device_registry import DeviceEntry
16 
17 from .const import DATA_DEVICE_MANAGER, DATA_SDM, DOMAIN
18 
19 REDACT_DEVICE_TRAITS = {InfoTrait.NAME}
20 
21 
22 @callback
24  hass: HomeAssistant, config_entry: ConfigEntry
25 ) -> dict[str, Device]:
26  """Return dict of available devices."""
27  if DATA_SDM not in config_entry.data:
28  return {}
29 
30  if (
31  config_entry.entry_id not in hass.data[DOMAIN]
32  or DATA_DEVICE_MANAGER not in hass.data[DOMAIN][config_entry.entry_id]
33  ):
34  return {}
35 
36  device_manager: DeviceManager = hass.data[DOMAIN][config_entry.entry_id][
37  DATA_DEVICE_MANAGER
38  ]
39  return device_manager.devices
40 
41 
43  hass: HomeAssistant, config_entry: ConfigEntry
44 ) -> dict[str, Any]:
45  """Return diagnostics for a config entry."""
46  nest_devices = _async_get_nest_devices(hass, config_entry)
47  if not nest_devices:
48  return {}
49  data: dict[str, Any] = {
50  **diagnostics.get_diagnostics(),
51  "devices": [
52  nest_device.get_diagnostics() for nest_device in nest_devices.values()
53  ],
54  }
55  camera_data = await camera_diagnostics.async_get_config_entry_diagnostics(
56  hass, config_entry
57  )
58  if camera_data:
59  data["camera"] = camera_data
60  return data
61 
62 
64  hass: HomeAssistant,
65  config_entry: ConfigEntry,
66  device: DeviceEntry,
67 ) -> dict[str, Any]:
68  """Return diagnostics for a device."""
69  nest_devices = _async_get_nest_devices(hass, config_entry)
70  nest_device_id = next(iter(device.identifiers))[1]
71  nest_device = nest_devices.get(nest_device_id)
72  return nest_device.get_diagnostics() if nest_device else {}
dict[str, Any] async_get_device_diagnostics(HomeAssistant hass, ConfigEntry config_entry, DeviceEntry device)
Definition: diagnostics.py:67
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry config_entry)
Definition: diagnostics.py:44
dict[str, Device] _async_get_nest_devices(HomeAssistant hass, ConfigEntry config_entry)
Definition: diagnostics.py:25