core/homeassistant/components/incomfort/diagnostics.py

46 lines
1.3 KiB
Python

"""Diagnostics support for InComfort integration."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.const import CONF_PASSWORD
from homeassistant.core import HomeAssistant, callback
from . import InComfortConfigEntry
REDACT_CONFIG = {CONF_PASSWORD}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: InComfortConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
return _async_get_diagnostics(hass, entry)
@callback
def _async_get_diagnostics(
hass: HomeAssistant,
entry: InComfortConfigEntry,
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
redacted_config = async_redact_data(entry.data | entry.options, REDACT_CONFIG)
coordinator = entry.runtime_data
nr_heaters = len(coordinator.incomfort_data.heaters)
status: dict[str, Any] = {
f"heater_{n}": coordinator.incomfort_data.heaters[n].status
for n in range(nr_heaters)
}
for n in range(nr_heaters):
status[f"heater_{n}"]["rooms"] = {
n: dict(coordinator.incomfort_data.heaters[n].rooms[m].status)
for m in range(len(coordinator.incomfort_data.heaters[n].rooms))
}
return {
"config": redacted_config,
"gateway": status,
}