core/homeassistant/components/myuplink/diagnostics.py

43 lines
1.4 KiB
Python

"""Diagnostics support for myUplink."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.core import HomeAssistant
from . import MyUplinkConfigEntry
TO_REDACT = {"access_token", "refresh_token", "serialNumber"}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: MyUplinkConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry.
Pick up fresh data from API and dump it.
"""
api = config_entry.runtime_data.api
myuplink_data = {}
myuplink_data["my_systems"] = await api.async_get_systems_json()
myuplink_data["my_systems"]["devices"] = []
for system in myuplink_data["my_systems"]["systems"]:
for device in system["devices"]:
device_data = await api.async_get_device_json(device["id"])
device_points = await api.async_get_device_points_json(device["id"])
myuplink_data["my_systems"]["devices"].append(
{
system["systemId"]: {
"device_data": device_data,
"points": device_points,
}
}
)
return {
"config_entry_data": async_redact_data(dict(config_entry.data), TO_REDACT),
"myuplink_data": async_redact_data(myuplink_data, TO_REDACT),
}