mirror of
https://github.com/home-assistant/core.git
synced 2026-08-24 10:13:52 -05:00
59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
"""Diagnostics support for Hot Spring."""
|
|
|
|
from dataclasses import asdict
|
|
import re
|
|
from typing import Any
|
|
|
|
from homeassistant.components.diagnostics import REDACTED, async_redact_data
|
|
from homeassistant.const import CONF_HOST
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from .coordinator import HotSpringConfigEntry
|
|
|
|
TO_REDACT = {
|
|
CONF_HOST,
|
|
}
|
|
|
|
|
|
def _redact_mac(value: str, patterns: list[str]) -> str:
|
|
"""Redact MAC address patterns from a string."""
|
|
for pattern in patterns:
|
|
value = re.sub(re.escape(pattern), REDACTED, value, flags=re.IGNORECASE)
|
|
return value
|
|
|
|
|
|
async def async_get_config_entry_diagnostics(
|
|
hass: HomeAssistant, entry: HotSpringConfigEntry
|
|
) -> dict[str, Any]:
|
|
"""Return diagnostics for a config entry."""
|
|
coordinator = entry.runtime_data
|
|
spa = coordinator.data
|
|
|
|
info = asdict(spa.info)
|
|
if mac_address := spa.info.mac_address:
|
|
clean_mac = mac_address.replace(":", "")
|
|
patterns = [mac_address, clean_mac, clean_mac[-6:]]
|
|
info["root_topic"] = _redact_mac(info["root_topic"], patterns)
|
|
info["hostname"] = _redact_mac(info["hostname"], patterns)
|
|
|
|
return {
|
|
"entry": async_redact_data(entry.data, TO_REDACT),
|
|
"data": {
|
|
"info": info,
|
|
"heater": asdict(spa.heater),
|
|
"jets": [asdict(jet) for jet in spa.jets],
|
|
"blower": asdict(spa.blower),
|
|
"light_zones": [asdict(zone) for zone in spa.light_zones],
|
|
"logo_light": asdict(spa.logo_light),
|
|
"clean_cycle": asdict(spa.clean_cycle),
|
|
"spa_lock": asdict(spa.spa_lock),
|
|
"water_care": asdict(spa.water_care),
|
|
"freshwater_iq": asdict(spa.freshwater_iq),
|
|
"energy_savings": [asdict(schedule) for schedule in spa.energy_savings],
|
|
"versions": asdict(spa.versions),
|
|
"connection_status": asdict(spa.connection_status),
|
|
"diagnostics": asdict(spa.diagnostics),
|
|
"test_metrics": asdict(spa.test_metrics),
|
|
},
|
|
}
|