52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.device_registry import DeviceEntry
|
|
|
|
from .core.const import DOMAIN
|
|
from .core.yandex_quasar import YandexQuasar
|
|
from .hass import hass_utils
|
|
|
|
|
|
async def async_get_config_entry_diagnostics(
|
|
hass: HomeAssistant, config_entry: ConfigEntry
|
|
):
|
|
quasar: YandexQuasar = hass.data[DOMAIN][config_entry.unique_id]
|
|
|
|
info = get_diagnostics(hass, config_entry)
|
|
info["device"] = quasar.devices
|
|
return info
|
|
|
|
|
|
async def async_get_device_diagnostics(
|
|
hass: HomeAssistant, config_entry: ConfigEntry, device: DeviceEntry
|
|
):
|
|
did = next(did for _, did in device.identifiers)
|
|
|
|
quasar: YandexQuasar = hass.data[DOMAIN][config_entry.unique_id]
|
|
device = next(
|
|
device
|
|
for device in quasar.devices
|
|
if device["id"] == did or device.get("quasar_info", {}).get("device_id") == did
|
|
)
|
|
|
|
info = get_diagnostics(hass, config_entry)
|
|
info["device"] = device
|
|
return info
|
|
|
|
|
|
def get_diagnostics(hass: HomeAssistant, config_entry: ConfigEntry) -> dict:
|
|
try:
|
|
errors = [
|
|
entry.to_dict()
|
|
for key, entry in hass.data["system_log"].records.items()
|
|
if DOMAIN in str(key)
|
|
]
|
|
except Exception as e:
|
|
errors = repr(e)
|
|
|
|
include = [
|
|
device["id"] for _, device, _ in hass_utils.incluce_devices(hass, config_entry)
|
|
]
|
|
|
|
return {"errors": errors, "include": include}
|