44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Diagnostics for homee integration."""
|
|
|
|
from typing import Any
|
|
|
|
from homeassistant.components.diagnostics import async_redact_data
|
|
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.device_registry import DeviceEntry
|
|
|
|
from . import DOMAIN, HomeeConfigEntry
|
|
|
|
TO_REDACT = [CONF_PASSWORD, CONF_USERNAME, "latitude", "longitude", "wlan_ssid"]
|
|
|
|
|
|
async def async_get_config_entry_diagnostics(
|
|
hass: HomeAssistant, entry: HomeeConfigEntry
|
|
) -> dict[str, Any]:
|
|
"""Return diagnostics for a config entry."""
|
|
|
|
return {
|
|
"entry_data": async_redact_data(entry.data, TO_REDACT),
|
|
"settings": async_redact_data(entry.runtime_data.settings.raw_data, TO_REDACT),
|
|
"devices": [{"node": node.raw_data} for node in entry.runtime_data.nodes],
|
|
}
|
|
|
|
|
|
async def async_get_device_diagnostics(
|
|
hass: HomeAssistant, entry: HomeeConfigEntry, device: DeviceEntry
|
|
) -> dict[str, Any]:
|
|
"""Return diagnostics for a device."""
|
|
|
|
# Extract node_id from the device identifiers
|
|
split_uid = next(
|
|
identifier[1] for identifier in device.identifiers if identifier[0] == DOMAIN
|
|
).split("-")
|
|
# Homee hub itself only has MAC as identifier and a node_id of -1
|
|
node_id = -1 if len(split_uid) < 2 else split_uid[1]
|
|
|
|
node = entry.runtime_data.get_node_by_id(int(node_id))
|
|
assert node is not None
|
|
return {
|
|
"homee node": node.raw_data,
|
|
}
|