197 files

This commit is contained in:
Home Assistant Version Control
2026-08-21 18:53:37 +00:00
parent 89d9f5e49b
commit 383e9ed04e
197 changed files with 4386 additions and 1837 deletions
@@ -7,7 +7,7 @@ from typing import Any, cast
from homeassistant.core import HomeAssistant
from custom_components.powercalc.power_profile.error import LibraryLoadingError
from custom_components.powercalc.power_profile.loader.protocol import Loader
from custom_components.powercalc.power_profile.loader.protocol import Loader, ModelMetadata
from custom_components.powercalc.power_profile.power_profile import DeviceType, DiscoveryBy, PowerProfile
_LOGGER = logging.getLogger(__name__)
@@ -20,12 +20,12 @@ class LocalLoader(Loader):
self._hass = hass
self._manufacturer_model_listing: dict[str, dict[str, PowerProfile]] = {}
async def initialize(self) -> None:
"""Initialize the loader."""
async def initialize(self, prefer_cached: bool = False) -> None:
"""Initialize the loader. Local profiles are read from disk, so nothing is ever cached remotely."""
if not self._is_custom_directory:
await self._hass.async_add_executor_job(self._load_custom_library)
def get_discovery_ignored_domains(self) -> set[str]:
def get_discovery_low_priority_domains(self) -> set[str]:
"""Local profile directories do not provide global library metadata."""
return set()
@@ -139,6 +139,15 @@ class LocalLoader(Loader):
"""Local custom libraries do not support metadata-driven legacy profile migrations."""
return None
async def get_model_metadata(self, manufacturer: str, model: str) -> ModelMetadata | None:
"""Return discovery metadata from the already parsed local profile."""
models = self._manufacturer_model_listing.get(manufacturer.lower())
profile = models.get(model.lower()) if models else None
if profile is None or profile.device_type is None:
return None
return ModelMetadata(device_type=profile.device_type, discovery_by=profile.discovery_by)
def _load_custom_library(self) -> None:
"""Loading custom models and aliases from file system.
Manufacturer directories without model directories and model.json files within