mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 16:38:31 +00:00
- entry.runtime_data (HouseplanData in store.py) instead of hass.data; WS answers not_ready without a loaded entry - test-before-setup (ConfigEntryNotReady), async_unload_entry, async_remove_entry (Lovelace resource cleanup), single_config_entry in manifest - Store minor_version + migration hook; diagnostics.py (redacted); repairs (broken_plan issues, en/ru); system_health.py; strings.json - quality_scale.yaml self-assessment; HA-harness tests (config flow, WS, upload) in CI on py3.13; CI backend job updated
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
"""System health for House Plan (Settings → System → Repairs → System information)."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from homeassistant.components import system_health
|
|
from homeassistant.core import HomeAssistant, callback
|
|
|
|
from .store import get_data
|
|
|
|
|
|
@callback
|
|
def async_register(hass: HomeAssistant, register: system_health.SystemHealthRegistration) -> None:
|
|
"""Register the system health info callback."""
|
|
register.async_register_info(system_health_info)
|
|
|
|
|
|
async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
|
|
"""Return integration health info."""
|
|
data = get_data(hass)
|
|
if data is None:
|
|
return {"status": "not set up"}
|
|
cfg_raw = await data.config_store.async_load() or {}
|
|
layout_raw = await data.store.async_load() or {}
|
|
config = cfg_raw.get("config", {})
|
|
return {
|
|
"config_rev": cfg_raw.get("rev", 0),
|
|
"spaces": len(config.get("spaces", [])),
|
|
"rooms": sum(len(s.get("rooms", [])) for s in config.get("spaces", [])),
|
|
"markers": len(config.get("markers", [])),
|
|
"layout_entries": len(layout_raw.get("layout", {})),
|
|
}
|