diff --git a/apps/nspanel-lovelace-ui/luibackend/controller.py b/apps/nspanel-lovelace-ui/luibackend/controller.py index f628e0e1..936a950e 100644 --- a/apps/nspanel-lovelace-ui/luibackend/controller.py +++ b/apps/nspanel-lovelace-ui/luibackend/controller.py @@ -361,3 +361,8 @@ class LuiController(object): msg += f"- {self._ha_api.get_entity(e).attributes.friendly_name}\r\n" self._pages_gen.send_message_page("opnSensorNotifyRes", "", msg, "", "") + # for fan popup / preset selection + if button_type == "mode-sel": + entity = self._ha_api.get_entity(entity_id) + preset_mode = entity.attributes.preset_modes[int(value)] + entity.call_service("set_preset_mode", preset_mode=preset_mode) diff --git a/apps/nspanel-lovelace-ui/luibackend/pages.py b/apps/nspanel-lovelace-ui/luibackend/pages.py index 60cf71b8..6d09250a 100644 --- a/apps/nspanel-lovelace-ui/luibackend/pages.py +++ b/apps/nspanel-lovelace-ui/luibackend/pages.py @@ -685,15 +685,26 @@ class LuiPagesGen(object): switch_val = 1 if entity.state == "on" else 0 icon_color = self.get_entity_color(entity) speed = entity.attributes.get("percentage") + percentage_step = entity.attributes.get("percentage_step") speedMax = 100 - if(speed is None): + if percentage_step is None: speed = "disable" else: - speed = round(entity.attributes.get("percentage")/entity.attributes.get("percentage_step")) - speedMax = int(100/entity.attributes.get("percentage_step")) + if speed is None: + speed = 0 + speed = round(speed/percentage_step) + speedMax = int(100/percentage_step) speed_translation = get_translation(self._locale, "frontend.ui.card.fan.speed") - self._send_mqtt_msg(f"entityUpdateDetail~{entity_id}~{get_icon_id('fan')}~{icon_color}~{switch_val}~{speed}~{speedMax}~{speed_translation}") + + preset_mode = entity.attributes.get("preset_mode", "") + preset_modes = entity.attributes.get("preset_modes", []) + if preset_modes is not None: + preset_modes = "?".join(entity.attributes.get("preset_modes", [])) + else: + preset_modes = "" + + self._send_mqtt_msg(f"entityUpdateDetail~{entity_id}~{get_icon_id('fan')}~{icon_color}~{switch_val}~{speed}~{speedMax}~{speed_translation}~{preset_mode}~{preset_modes}") def send_message_page(self, ident, heading, msg, b1, b2): self._send_mqtt_msg(f"pageType~popupNotify")