Fixed Callbacks for customized items

This commit is contained in:
joBr99
2022-03-21 21:51:37 +01:00
committed by GitHub
parent f0945b01e1
commit 4bfaff1a26

View File

@@ -367,14 +367,7 @@ class NsPanelLovelaceUI:
pos = pos/100 pos = pos/100
self.api.get_entity(entity_id).call_service("volume_set", volume_level=pos) self.api.get_entity(entity_id).call_service("volume_set", volume_level=pos)
def get_all_configured_items(self, pages): def filter_dict_from_item_list(self, items):
items = []
for page in pages:
if "item" in page:
items.append(page["item"])
if "items" in page:
items.extend(page["items"])
# remove all dicts from list # remove all dicts from list
cleaned_list = [] cleaned_list = []
for item in items: for item in items:
@@ -383,9 +376,17 @@ class NsPanelLovelaceUI:
cleaned_list.append(next(iter(item))) cleaned_list.append(next(iter(item)))
else: else:
cleaned_list.append(item) cleaned_list.append(item)
return cleaned_list return cleaned_list
def get_all_configured_items(self, pages):
items = []
for page in pages:
if "item" in page:
items.append(page["item"])
if "items" in page:
items.extend(page["items"])
return self.filter_dict_from_item_list(items)
def check_items(self): def check_items(self):
items = self.get_all_configured_items(self.config["pages"]) items = self.get_all_configured_items(self.config["pages"])
@@ -401,10 +402,7 @@ class NsPanelLovelaceUI:
def register_callbacks(self): def register_callbacks(self):
items = self.get_all_configured_items(self.config["pages"]) items = self.get_all_configured_items(self.config["pages"])
for item in items: for item in items:
if not self.api.entity_exists(item):
continue
self.api.log("Enable state callback for %s", item, level="DEBUG") self.api.log("Enable state callback for %s", item, level="DEBUG")
self.api.handle = self.api.listen_state(self.state_change_callback, entity_id=item, attribute="all") self.api.handle = self.api.listen_state(self.state_change_callback, entity_id=item, attribute="all")
@@ -417,11 +415,13 @@ class NsPanelLovelaceUI:
if page_type in ["cardEntities", "cardGrid"]: if page_type in ["cardEntities", "cardGrid"]:
items = current_page_config["items"] items = current_page_config["items"]
if entity in items: items_filtered = self.filter_dict_from_item_list(items)
if entity in items_filtered:
self.api.log(f"State change on current page for {entity}", level="DEBUG") self.api.log(f"State change on current page for {entity}", level="DEBUG")
# send update of the page # send update of the page
command = self.generate_entities_page(items) command = self.generate_entities_page(items)
self.send_mqtt_msg(command) self.send_mqtt_msg(command)
# send detail pages in case they are open
if(entity.startswith("cover")): if(entity.startswith("cover")):
self.generate_detail_page("popupShutter", entity) self.generate_detail_page("popupShutter", entity)
if(entity.startswith("light")): if(entity.startswith("light")):