implement sleeptimeout

This commit is contained in:
joBr99
2023-11-20 18:41:09 +01:00
parent 3dcb91b276
commit c0ebe4a397
3 changed files with 30 additions and 11 deletions

View File

@@ -1,6 +1,5 @@
import logging
def init(mqtt_client_from_manager):
global mqtt_client
mqtt_client = mqtt_client_from_manager
@@ -31,3 +30,9 @@ def entityUpd(topic, data):
def weatherUpdate(topic, data):
custom_send(topic, f"weatherUpdate~{data}")
def timeout(topic, timeout):
custom_send(topic, f"timeout~{timeout}")
def dimmode(topic, dimValue, dimValueNormal, backgroundColor, fontColor, featExperimentalSliders):
custom_send(topic, f"dimmode~{dimValue}~{dimValueNormal}~{backgroundColor}~{fontColor}~{featExperimentalSliders}")

View File

@@ -97,7 +97,25 @@ class LovelaceUIPanel:
def ha_event_callback(self, entity_id):
#logging.debug(f"{entity_id} updated/state changed")
if entity_id in self.current_card.get_entities():
self.render_current_page()
def render_current_page(self, switchPages=False):
if switchPages:
libs.panel_cmd.page_type(self.sendTopic, self.current_card.type)
if self.current_card.type in ["screensaver", "screensaver2"]:
libs.panel_cmd.weatherUpdate(self.sendTopic, self.current_card.render())
else:
libs.panel_cmd.entityUpd(self.sendTopic, self.current_card.render())
# send sleepTimeout
sleepTimeout = self.settings.get("sleepTimeout", 20)
if self.current_card.config.get("sleepTimeout"):
sleepTimeout = self.current_card.config.get("sleepTimeout")
libs.panel_cmd.timeout(self.sendTopic, sleepTimeout)
# send dimmode
#libs.panel_cmd.dimmode(self.sendTopic, 10, 100, )
def customrecv_event_callback(self, msg):
logging.debug("Recv Message from NsPanel: %s", msg)
@@ -113,13 +131,11 @@ class LovelaceUIPanel:
ha_control.wait_for_ha_cache()
self.current_card = Screensaver(self.settings["locale"], self.settings["screensaver"], self)
libs.panel_cmd.page_type(self.sendTopic, self.current_card.type)
libs.panel_cmd.weatherUpdate(self.sendTopic, self.current_card.render())
self.render_current_page(switchPages=True)
if msg[1] == "sleepReached":
self.privious_cards.append(self.current_card)
self.current_card = Screensaver(self.settings["locale"], self.settings["screensaver"], self)
libs.panel_cmd.page_type(self.sendTopic, self.current_card.type)
libs.panel_cmd.weatherUpdate(self.sendTopic, self.current_card.render())
self.render_current_page(switchPages=True)
if msg[1] == "buttonPress2":
entity_id = msg[2]
btype = msg[3]
@@ -133,8 +149,7 @@ class LovelaceUIPanel:
self.privious_cards.append(
list(self.cards.values())[0]) # TODO: Impelement default card config
self.current_card = self.privious_cards.pop()
libs.panel_cmd.page_type(self.sendTopic, self.current_card.type)
libs.panel_cmd.entityUpd(self.sendTopic, self.current_card.render())
self.render_current_page(switchPages=True)
return
# replace iid with real entity id
@@ -151,10 +166,8 @@ class LovelaceUIPanel:
iid = entity_id.split(".")[1]
self.privious_cards.append(self.current_card)
self.current_card = self.searchCard(iid)
libs.panel_cmd.page_type(
self.sendTopic, self.current_card.type)
libs.panel_cmd.entityUpd(
self.sendTopic, self.current_card.render())
self.render_current_page(switchPages=True)
# send ha stuff to ha
case _:
ha_control.handle_buttons(entity_id, btype, value)

View File

@@ -12,6 +12,7 @@ class Card:
self.locale = locale
self.title = config.get("title", "")
self.type = config.get("type", "")
self.config = config
self.panel = panel
def render(self):