34 lines
1.0 KiB
Python
Raw Normal View History

2022-04-26 09:58:06 +02:00
"""Provides diagnostics for VeSync."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
2022-04-26 09:58:06 +02:00
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from .common import is_humidifier
2022-04-26 09:58:06 +02:00
from .const import DOMAIN
TO_REDACT = {"cid", "uuid", "mac_id"}
2022-04-26 09:58:06 +02:00
def _if_has_attr_else_none(obj, attr):
return getattr(obj, attr) if hasattr(obj, attr) else None
2022-04-26 09:58:06 +02:00
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
data = hass.data[DOMAIN][entry.entry_id]
devices = {}
2022-04-26 09:58:06 +02:00
for type in ["fans", "outlets", "switches", "bulbs"]:
for d in data["manager"]._dev_list[type]:
t = "humidifier" if is_humidifier(d.device_type) else type
devices = {
**devices,
**{t: [{k: v for k, v in d.__dict__.items() if k != "manager"}]},
}
return async_redact_data(devices, TO_REDACT)