Files
HomeAssistantVS/custom_components/spook/ectoplasms/proximity/repairs/unknown_zone.py
T
2026-07-20 22:52:35 -04:00

59 lines
1.9 KiB
Python

"""Spook - Your homie."""
from __future__ import annotations
from typing import TYPE_CHECKING
from homeassistant.const import EVENT_COMPONENT_LOADED
from homeassistant.helpers import entity_registry as er
from ....const import LOGGER
from ....entity_filtering import async_get_all_entity_ids
from ....repairs import AbstractSpookRepair
if TYPE_CHECKING:
from homeassistant.components.proximity.coordinator import (
ProximityDataUpdateCoordinator,
)
class SpookRepair(AbstractSpookRepair):
"""Spook repair that tries to find unknown zones used in proximity."""
domain = "proximity"
repair = "proximity_unknown_zone"
inspect_events = {
EVENT_COMPONENT_LOADED,
er.EVENT_ENTITY_REGISTRY_UPDATED,
}
inspect_config_entry_changed = "proximity"
automatically_clean_up_issues = True
async def async_inspect(self) -> None:
"""Trigger a inspection."""
LOGGER.debug("Spook is inspecting: %s", self.repair)
coordinators: list[ProximityDataUpdateCoordinator] | None
if not (coordinators := self.hass.data.get(self.domain)):
return # Nothing to do, proximity is not loaded
known_entity_ids = async_get_all_entity_ids(self.hass)
for entry_id, coordinator in coordinators.items():
if coordinator.proximity_zone_id not in known_entity_ids:
self.possible_issue_ids.add(entry_id)
self.async_create_issue(
issue_id=entry_id,
translation_placeholders={
"name": coordinator.name,
"zone": coordinator.proximity_zone_id,
},
)
LOGGER.debug(
"Spook found unknown zone %s in proximity %s "
"and created an issue for it",
coordinator.proximity_zone_id,
coordinator.name,
)