From 9a5a1a49a64bb85da8c6197d64d131e95fc2ecb5 Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Sun, 17 Jul 2022 14:32:11 +0200 Subject: [PATCH] closes #240 --- apps/nspanel-lovelace-ui/luibackend/pages.py | 39 ++++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/apps/nspanel-lovelace-ui/luibackend/pages.py b/apps/nspanel-lovelace-ui/luibackend/pages.py index 26b9c601..ef682bb5 100644 --- a/apps/nspanel-lovelace-ui/luibackend/pages.py +++ b/apps/nspanel-lovelace-ui/luibackend/pages.py @@ -203,26 +203,33 @@ class LuiPagesGen(object): device_class = entity.attributes.get("device_class", "window") icon_id = get_icon_id_ha(ha_type=entityType, state=entity.state, device_class=device_class, overwrite=icon) - icon_up = get_action_id_ha(ha_type=entityType, action="open", device_class=device_class) - icon_stop = get_action_id_ha(ha_type=entityType, action="stop", device_class=device_class) - icon_down = get_action_id_ha(ha_type=entityType, action="close", device_class=device_class) + icon_up = "" + icon_stop = "" + icon_down = "" + icon_up_status = "disable" + icon_stop_status = "disable" + icon_down_status = "disable" + bits = entity.attributes.supported_features pos = entity.attributes.get("current_position") - if pos == 100: - status = f"disable|enable|enable" - elif pos == 0: - status = f"enable|enable|disable" - elif pos is None: + if pos is None: pos_status = entity.state - if pos_status == "open": - status = f"disable|enable|enable" - elif pos_status == "closed": - status = f"enable|enable|disable" - else: - status = f"enable|enable|enable" + pos = "disable" else: - status = f"enable|enable|enable" - return f"~shutter~{entityId}~{icon_id}~17299~{name}~{icon_up}|{icon_stop}|{icon_down}|{status}" + pos_status = pos + if bits & 0b00000001: # SUPPORT_OPEN + if pos != 100 and not (entity.state == "open" and pos == "disable"): + icon_up_status = "enable" + icon_up = get_action_id_ha(ha_type=entityType, action="open", device_class=device_class) + if bits & 0b00000010: # SUPPORT_CLOSE + if pos != 0 and not (entity.state == "closed" and pos == "disable"): + icon_down_status = "enable" + icon_down = get_action_id_ha(ha_type=entityType, action="close", device_class=device_class) + if bits & 0b00001000: # SUPPORT_STOP + icon_stop = get_action_id_ha(ha_type=entityType, action="stop", device_class=device_class) + icon_stop_status = "enable" + + return f"~shutter~{entityId}~{icon_id}~17299~{name}~{icon_up}|{icon_stop}|{icon_down}|{icon_up_status}|{icon_stop_status}|{icon_down_status}" if entityType in "light": switch_val = 1 if entity.state == "on" else 0 icon_color = self.get_entity_color(entity, overwrite=colorOverride)