From a2d123abbfc35e76d62ab6d0a175d0e948c1af3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Bachmann?= Date: Thu, 15 Jan 2026 14:30:33 +0000 Subject: [PATCH] custom_components/bahmcloud_store/__init__.py aktualisiert --- custom_components/bahmcloud_store/__init__.py | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/custom_components/bahmcloud_store/__init__.py b/custom_components/bahmcloud_store/__init__.py index 7f9baf4..cd8cac1 100644 --- a/custom_components/bahmcloud_store/__init__.py +++ b/custom_components/bahmcloud_store/__init__.py @@ -9,51 +9,52 @@ from homeassistant.helpers.discovery import async_load_platform from homeassistant.helpers.event import async_track_time_interval from homeassistant.components.panel_custom import async_register_panel -from .core import BCSCore, BCSConfig, BCSError +from .core import BCSCore, BCSConfig, BCSError, DOMAIN _LOGGER = logging.getLogger(__name__) -DOMAIN = "bahmcloud_store" - DEFAULT_STORE_URL = "https://git.bahmcloud.de/bahmcloud/ha_store/raw/branch/main/store.yaml" CONF_STORE_URL = "store_url" async def async_setup(hass: HomeAssistant, config: dict) -> bool: - cfg = config.get(DOMAIN, {}) - store_url = cfg.get(CONF_STORE_URL, DEFAULT_STORE_URL) + domain_cfg = config.get(DOMAIN, {}) if isinstance(config.get(DOMAIN, {}), dict) else {} + store_url = domain_cfg.get(CONF_STORE_URL, DEFAULT_STORE_URL) - core = BCSCore(hass, BCSConfig(store_url=store_url)) + core = BCSCore(hass, BCSConfig(store_url=str(store_url))) hass.data[DOMAIN] = core await core.register_http_views() - # RESTORE: keep the module_url pattern that worked for you + # Panel (works on HA 2026.1.x using panel_custom) await async_register_panel( hass, frontend_url_path="bahmcloud-store", webcomponent_name="bahmcloud-store-panel", - module_url="/api/bahmcloud_store_static/panel.js?v=42", + module_url="/api/bahmcloud_store_static/panel.js?v=1", sidebar_title="Bahmcloud Store", sidebar_icon="mdi:store", require_admin=True, config={}, ) + # initial refresh try: await core.refresh() + core.signal_updated() except BCSError as e: - _LOGGER.error("Initial refresh failed: %s", e) + _LOGGER.warning("Initial refresh failed: %s", e) - async def periodic(_now) -> None: + # auto refresh (only index list; no forced updates) + async def _periodic(_now) -> None: try: await core.refresh() core.signal_updated() except BCSError as e: - _LOGGER.warning("Periodic refresh failed: %s", e) + _LOGGER.debug("Periodic refresh failed: %s", e) - interval = timedelta(seconds=int(core.refresh_seconds or 300)) - async_track_time_interval(hass, periodic, interval) + async_track_time_interval(hass, _periodic, timedelta(seconds=int(core.refresh_seconds))) + # Update entity platform (manual updates) await async_load_platform(hass, Platform.UPDATE, DOMAIN, {}, config) return True