3
0
Quellcode durchsuchen

Fix HA 2026.x compatibility: sync node lookup, use Lovelace resource store

async_get_node_from_entity_id is now synchronous; drop the await.
async_register_extra_module_url was removed from homeassistant.components.frontend;
register the card via hass.data[lovelace][resources] instead.
ZiB vor 4 Monaten
Ursprung
Commit
1dbdd2ede5

+ 6 - 4
custom_components/zlock_slots/__init__.py

@@ -66,12 +66,14 @@ async def _async_register_frontend(hass: HomeAssistant) -> None:
     _LOGGER.debug("Static path %s already registered: %s", _CARD_URL, err)
 
   try:
-    from homeassistant.components.frontend import async_register_extra_module_url
-    async_register_extra_module_url(hass, _CARD_URL)
-    _LOGGER.debug("Registered Lovelace module: %s", _CARD_URL)
+    lovelace = hass.data["lovelace"]
+    resources = lovelace["resources"]
+    if not any(r.get("url") == _CARD_URL for r in resources.async_items()):
+      await resources.async_create_item({"res_type": "module", "url": _CARD_URL})
+    _LOGGER.debug("Registered Lovelace resource: %s", _CARD_URL)
   except Exception as err:
     _LOGGER.error(
-      "Failed to register Lovelace card module %s: %s. "
+      "Failed to register Lovelace card resource %s: %s. "
       "Add it manually: Settings → Dashboards → ⋮ → Resources → Add Resource, "
       "URL: %s, Resource type: JavaScript module.",
       _CARD_URL, err, _CARD_URL,

+ 1 - 1
custom_components/zlock_slots/coordinator.py

@@ -107,7 +107,7 @@ class ZLockCoordinator(DataUpdateCoordinator[dict[str, LockState]]):
   async def _fetch_slots(self, lock_entity_id: str) -> dict[int, SlotInfo]:
     try:
       from homeassistant.components.zwave_js.helpers import async_get_node_from_entity_id
-      node = await async_get_node_from_entity_id(self.hass, lock_entity_id)
+      node = async_get_node_from_entity_id(self.hass, lock_entity_id)
       users = await node.access_control.get_users_cached()
     except Exception:
       _LOGGER.exception("Failed to fetch code slots for %s", lock_entity_id)