61 lines
1.6 KiB
Python
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),
|
|
}
|