51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""Diagnostics support for KNX."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant import config as conf_util
|
|
from homeassistant.components.diagnostics import async_redact_data
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from . import CONFIG_SCHEMA
|
|
from .const import (
|
|
CONF_KNX_KNXKEY_PASSWORD,
|
|
CONF_KNX_SECURE_DEVICE_AUTHENTICATION,
|
|
CONF_KNX_SECURE_USER_PASSWORD,
|
|
DOMAIN,
|
|
)
|
|
|
|
TO_REDACT = {
|
|
CONF_KNX_KNXKEY_PASSWORD,
|
|
CONF_KNX_SECURE_USER_PASSWORD,
|
|
CONF_KNX_SECURE_DEVICE_AUTHENTICATION,
|
|
}
|
|
|
|
|
|
async def async_get_config_entry_diagnostics(
|
|
hass: HomeAssistant, config_entry: ConfigEntry
|
|
) -> dict:
|
|
"""Return diagnostics for a config entry."""
|
|
diag: dict[str, Any] = {}
|
|
knx_module = hass.data[DOMAIN]
|
|
diag["xknx"] = {
|
|
"version": knx_module.xknx.version,
|
|
"current_address": str(knx_module.xknx.current_address),
|
|
}
|
|
|
|
diag["config_entry_data"] = async_redact_data(dict(config_entry.data), TO_REDACT)
|
|
|
|
raw_config = await conf_util.async_hass_config_yaml(hass)
|
|
diag["configuration_yaml"] = raw_config.get(DOMAIN)
|
|
try:
|
|
CONFIG_SCHEMA(raw_config)
|
|
except vol.Invalid as ex:
|
|
diag["configuration_error"] = str(ex)
|
|
else:
|
|
diag["configuration_error"] = None
|
|
|
|
return diag
|