Files
ha_pstryk/custom_components/pstryk/diagnostics.py
2025-04-30 14:39:27 +02:00

49 lines
1.7 KiB
Python

"""Diagnostics support for Pstryk Energy."""
from __future__ import annotations
import logging
from typing import Any
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.util import dt as dt_util
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
diagnostics_data = {
"entry": {
"title": entry.title,
"entry_id": entry.entry_id,
"version": entry.version,
"options": entry.options,
},
"coordinators": {},
}
for price_type in ("buy", "sell"):
key = f"{entry.entry_id}_{price_type}"
coordinator = hass.data[DOMAIN].get(key)
if coordinator:
coordinator_data = {
"last_update_success": coordinator.last_update_success,
"data_available": coordinator.data is not None
}
# Sprawdzamy czy atrybut istnieje przed użyciem
if hasattr(coordinator, 'last_update') and coordinator.last_update:
coordinator_data["last_update"] = dt_util.as_local(coordinator.last_update).isoformat()
elif hasattr(coordinator, 'last_updated') and coordinator.last_updated:
coordinator_data["last_update"] = dt_util.as_local(coordinator.last_updated).isoformat()
else:
coordinator_data["last_update"] = None
diagnostics_data["coordinators"][price_type] = coordinator_data
return diagnostics_data