core/homeassistant/components/whirlpool/diagnostics.py

61 lines
1.6 KiB
Python

"""Diagnostics support for Whirlpool."""
from __future__ import annotations
from typing import Any
from whirlpool.appliance import Appliance
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.core import HomeAssistant
from . import WhirlpoolConfigEntry
TO_REDACT = {
"SERIAL_NUMBER",
"macaddress",
"username",
"password",
"token",
"unique_id",
"SAID",
}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant,
config_entry: WhirlpoolConfigEntry,
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
def get_appliance_diagnostics(appliance: Appliance) -> dict[str, Any]:
return {
"data_model": appliance.appliance_info.data_model,
"category": appliance.appliance_info.category,
"model_number": appliance.appliance_info.model_number,
}
appliances_manager = config_entry.runtime_data
diagnostics_data = {
"washers": {
washer.name: get_appliance_diagnostics(washer)
for washer in appliances_manager.washers
},
"dryers": {
dryer.name: get_appliance_diagnostics(dryer)
for dryer in appliances_manager.dryers
},
"aircons": {
ac.name: get_appliance_diagnostics(ac) for ac in appliances_manager.aircons
},
"ovens": {
oven.name: get_appliance_diagnostics(oven)
for oven in appliances_manager.ovens
},
}
return {
"config_entry": async_redact_data(config_entry.as_dict(), TO_REDACT),
"appliances": async_redact_data(diagnostics_data, TO_REDACT),
}