diff --git a/apps/nspanel-lovelace-ui/luibackend/controller.py b/apps/nspanel-lovelace-ui/luibackend/controller.py index c71040a0..544f590a 100644 --- a/apps/nspanel-lovelace-ui/luibackend/controller.py +++ b/apps/nspanel-lovelace-ui/luibackend/controller.py @@ -182,7 +182,10 @@ class LuiController(object): self._ha_api.turn_off(entity_id) if button_type == "number-set": - self._ha_api.get_entity(entity_id).call_service("set_value", value=value) + if entity_id.startswith('fan'): + self._ha_api.get_entity(entity_id).call_service("set_percentage", percentage=value) + else: + self._ha_api.get_entity(entity_id).call_service("set_value", value=value) # for shutter / covers if button_type == "up": diff --git a/apps/nspanel-lovelace-ui/luibackend/icons.py b/apps/nspanel-lovelace-ui/luibackend/icons.py index 92882198..849d826e 100644 --- a/apps/nspanel-lovelace-ui/luibackend/icons.py +++ b/apps/nspanel-lovelace-ui/luibackend/icons.py @@ -47,6 +47,8 @@ def map_to_mdi_name(ha_type, state=None, device_class=None): return "ray-vertex" if ha_type == "light": return "lightbulb" + if ha_type == "fan": + return "fan" if ha_type == "input_boolean": return "check-circle-outline" if state == "on" else "close-circle-outline" if ha_type == "cover": diff --git a/apps/nspanel-lovelace-ui/luibackend/pages.py b/apps/nspanel-lovelace-ui/luibackend/pages.py index cdd82bab..448feef6 100644 --- a/apps/nspanel-lovelace-ui/luibackend/pages.py +++ b/apps/nspanel-lovelace-ui/luibackend/pages.py @@ -181,6 +181,9 @@ class LuiPagesGen(object): min_v = entity.attributes.get("min", 0) max_v = entity.attributes.get("max", 100) return f"~number~{entityId}~{icon_id}~17299~{name}~{entity.state}|{min_v}|{max_v}" + if entityType == "fan": + icon_id = get_icon_id_ha("fan", overwrite=icon) + return f"~number~{entityId}~{icon_id}~17299~{name}~{entity.percentage}|0|100" if entityType == "input_text": icon_id = get_icon_id_ha("input_text", overwrite=icon) value = entity.state