initial support for tilt #240

This commit is contained in:
Johannes
2022-06-19 16:20:01 +02:00
parent 9ab13d89da
commit 76ee7c2fa3
5 changed files with 50 additions and 21 deletions

View File

@@ -111,7 +111,7 @@ The following message can be used to update the content on the cardEntities Page
### popupShutter Page ### popupShutter Page
`entityUpdateDetail~entityName~*sliderPos*~2ndrow~textPosition~icon1~iconUp~iconStop~iconDown~iconUpStatus~iconStopStatus~iconDownStatus~textTilt~iconTiltLeft~iconTiltStop~iconTiltRight~iconTiltLeftStatus~iconTiltStopStatus~iconTiltLeftStatus` `entityUpdateDetail~entityName~*sliderPos*~2ndrow~textPosition~icon1~iconUp~iconStop~iconDown~iconUpStatus~iconStopStatus~iconDownStatus~textTilt~iconTiltLeft~iconTiltStop~iconTiltRight~iconTiltLeftStatus~iconTiltStopStatus~iconTiltLeftStatus~tiltPos`
`entityUpdateDetail~1~77` `entityUpdateDetail~1~77`

Binary file not shown.

Binary file not shown.

View File

@@ -237,6 +237,16 @@ class LuiController(object):
if button_type == "positionSlider": if button_type == "positionSlider":
pos = int(value) pos = int(value)
self._ha_api.get_entity(entity_id).call_service("set_cover_position", position=pos) self._ha_api.get_entity(entity_id).call_service("set_cover_position", position=pos)
if button_type == "tiltOpen":
self._ha_api.get_entity(entity_id).call_service("open_cover_tilt")
if button_type == "tiltStop":
self._ha_api.get_entity(entity_id).call_service("stop_cover_tilt")
if button_type == "tiltClose":
self._ha_api.get_entity(entity_id).call_service("close_cover_tilt")
if button_type == "tiltSlider":
pos = int(value)
self._ha_api.get_entity(entity_id).call_service("set_cover_tilt_position", position=pos)
if button_type == "button": if button_type == "button":
if entity_id.startswith('navigate'): if entity_id.startswith('navigate'):

View File

@@ -547,34 +547,53 @@ class LuiPagesGen(object):
entityType="cover" entityType="cover"
device_class = entity.attributes.get("device_class", "window") device_class = entity.attributes.get("device_class", "window")
icon_id = get_icon_id_ha(entityType, state=entity.state, device_class=device_class) icon_id = get_icon_id_ha(entityType, state=entity.state, device_class=device_class)
pos_translation = get_translation(self._locale, "frontend.ui.card.cover.position")
pos = entity.attributes.get("current_position") pos = entity.attributes.get("current_position")
if pos is None: if pos is None:
pos_status = entity.state pos_status = entity.state
pos = "disable" pos = "disable"
else: else:
pos_status = pos pos_status = pos
icon_up = get_action_id_ha(ha_type=entityType, action="open", device_class=device_class) icon_up = ""
icon_stop = get_action_id_ha(ha_type=entityType, action="stop", device_class=device_class) icon_stop = ""
icon_down = get_action_id_ha(ha_type=entityType, action="close", device_class=device_class) icon_down = ""
icon_up_status = "enable" icon_up_status = "disable"
icon_stop_status = "enable" icon_stop_status = "disable"
icon_down_status = "enable" icon_down_status = "disable"
textTilt = "Y"
if pos == 100: iconTiltLeft = "X"
icon_up_status = "disable" iconTiltStop = "X"
elif pos == 0: iconTiltRight = "X"
icon_down_status = "disable" iconTiltLeftStatus = "disable"
elif pos == "disable": iconTiltStopStatus = "disable"
if pos_status == "open": iconTiltRightStatus = "disable"
icon_up_status = "disable" tilt_pos = "disable"
elif pos_status == "closed":
icon_down_status = "disable"
pos_translation = get_translation(self._locale, "frontend.ui.card.cover.position") bits = entity.attributes.supported_features
self._send_mqtt_msg(f"entityUpdateDetail~{entity_id}~{pos}~{pos_translation}: {pos_status}~{pos_translation}~{icon_id}~{icon_up}~{icon_stop}~{icon_down}~{icon_up_status}~{icon_stop_status}~{icon_down_status}") if bits & 0b00000001: # SUPPORT_OPEN
icon_up = get_action_id_ha(ha_type=entityType, action="open", device_class=device_class)
if pos != 100 and not (pos_status == "open" and pos == "disable"):
icon_up_status = "enable"
if bits & 0b00000010: # SUPPORT_CLOSE
icon_down = get_action_id_ha(ha_type=entityType, action="close", device_class=device_class)
if pos != 0 and not (pos_status == "closed" and pos == "disable"):
icon_down_status = "enable"
#if bits & 0b000000100: # SUPPORT_SET_POSITION
if bits & 0b00001000: # SUPPORT_STOP
icon_stop = get_action_id_ha(ha_type=entityType, action="stop", device_class=device_class)
icon_stop_status = "enable"
if bits & 0b00010000: # SUPPORT_OPEN_TILT
iconTiltLeftStatus = "enable"
if bits & 0b00100000: # SUPPORT_CLOSE_TILT
iconTiltRightStatus = "enable"
if bits & 0b01000000: # SUPPORT_STOP_TILT
iconTiltStopStatus = "enable"
if bits & 0b10000000: # SUPPORT_SET_TILT_POSITION
tilt_pos = get_attr_safe(entity, "current_tilt_position", 0)
self._send_mqtt_msg(f"entityUpdateDetail~{entity_id}~{pos}~{pos_translation}: {pos_status}~{pos_translation}~{icon_id}~{icon_up}~{icon_stop}~{icon_down}~{icon_up_status}~{icon_stop_status}~{icon_down_status}~{textTilt}~{iconTiltLeft}~{iconTiltStop}~{iconTiltRight}~{iconTiltLeftStatus}~{iconTiltStopStatus}~{iconTiltRightStatus}~{tilt_pos}")
def send_message_page(self, ident, heading, msg, b1, b2): def send_message_page(self, ident, heading, msg, b1, b2):
self._send_mqtt_msg(f"pageType~popupNotify") self._send_mqtt_msg(f"pageType~popupNotify")