1 """Diagnostics support for Nest."""
3 from __future__
import annotations
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
17 from .const
import DATA_DEVICE_MANAGER, DATA_SDM, DOMAIN
19 REDACT_DEVICE_TRAITS = {InfoTrait.NAME}
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:
31 config_entry.entry_id
not in hass.data[DOMAIN]
32 or DATA_DEVICE_MANAGER
not in hass.data[DOMAIN][config_entry.entry_id]
36 device_manager: DeviceManager = hass.data[DOMAIN][config_entry.entry_id][
39 return device_manager.devices
43 hass: HomeAssistant, config_entry: ConfigEntry
45 """Return diagnostics for a config entry."""
49 data: dict[str, Any] = {
50 **diagnostics.get_diagnostics(),
52 nest_device.get_diagnostics()
for nest_device
in nest_devices.values()
55 camera_data = await camera_diagnostics.async_get_config_entry_diagnostics(
59 data[
"camera"] = camera_data
65 config_entry: ConfigEntry,
68 """Return diagnostics for a device."""
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)
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry config_entry)
dict[str, Device] _async_get_nest_devices(HomeAssistant hass, ConfigEntry config_entry)