mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-24 00:14:26 +01:00
alternaitve layout screensaver
This commit is contained in:
@@ -77,13 +77,14 @@ class LuiBackendConfig(object):
|
||||
}],
|
||||
'screensaver': {
|
||||
'type': 'screensaver',
|
||||
'weather': 'weather.example',
|
||||
'entity': 'weather.example',
|
||||
'weatherUnit': 'celsius',
|
||||
'weatherOverrideForecast1': None,
|
||||
'weatherOverrideForecast2': None,
|
||||
'weatherOverrideForecast3': None,
|
||||
'weatherOverrideForecast4': None,
|
||||
'doubleTapToUnlock': False
|
||||
'doubleTapToUnlock': False,
|
||||
'alternativeLayout': False
|
||||
},
|
||||
'hiddenCards': []
|
||||
}
|
||||
|
||||
@@ -36,14 +36,14 @@ class LuiController(object):
|
||||
self.register_callbacks()
|
||||
|
||||
# register callbacks for each time
|
||||
if type(self._config.get("brightnessScreensaver")) == list:
|
||||
for index, timeset in enumerate(self._config.get("brightnessScreensaver")):
|
||||
if type(self._config.get("sleepBrightness")) == list:
|
||||
for index, timeset in enumerate(self._config.get("sleepBrightness")):
|
||||
self._ha_api.run_daily(self.update_screensaver_brightness, timeset["time"], value=timeset["value"])
|
||||
|
||||
# calculate current brightness
|
||||
self.current_screensaver_brightness = self.calc_current_screensaver_brightness()
|
||||
# call update_screensaver_brightness on changes of entity configured in brightnessScreensaverTracking
|
||||
bst = self._config.get("brightnessScreensaverTracking")
|
||||
bst = self._config.get("sleepTracking")
|
||||
if bst is not None and self._ha_api.entity_exists(bst):
|
||||
self._ha_api.listen_state(self.update_screensaver_brightness_state_callback, entity_id=bst)
|
||||
|
||||
@@ -54,7 +54,7 @@ class LuiController(object):
|
||||
self._pages_gen.update_date("")
|
||||
|
||||
# set screensaver timeout
|
||||
timeout = self._config.get("timeoutScreensaver")
|
||||
timeout = self._config.get("sleepTimeout")
|
||||
self._send_mqtt_msg(f"timeout~{timeout}")
|
||||
|
||||
# set current screensaver brightness
|
||||
@@ -142,7 +142,7 @@ class LuiController(object):
|
||||
self._pages_gen.generate_screensaver_page()
|
||||
return
|
||||
|
||||
if button_type in ["bExit", "bUp"]:
|
||||
if button_type in ["bExit", "bUp"]:
|
||||
self._pages_gen.render_card(self._current_card)
|
||||
|
||||
if button_type == "bNext":
|
||||
|
||||
@@ -61,8 +61,9 @@ class LuiPagesGen(object):
|
||||
|
||||
def update_screensaver_weather(self):
|
||||
global babel_spec
|
||||
we_name = self._config.get("screensaver.weather")
|
||||
unit = self._config.get("screensaver.weatherUnit")
|
||||
screensaver_config = self._config._config_screensaver
|
||||
we_name = self._config._config_screensaver.entity.entityId
|
||||
unit = self._config._config_screensaver.raw_config.get("weatherUnit", "celsius")
|
||||
|
||||
if self._ha_api.entity_exists(we_name):
|
||||
we = self._ha_api.get_entity(we_name)
|
||||
@@ -75,7 +76,7 @@ class LuiPagesGen(object):
|
||||
|
||||
weather_res = ""
|
||||
for i in range(1,5):
|
||||
wOF = self._config.get(f"screensaver.weatherOverrideForecast{i}")
|
||||
wOF = self._config._config_screensaver.raw_config.get(f"weatherOverrideForecast{i}")
|
||||
if wOF is None:
|
||||
up = we.attributes.forecast[i-1]['datetime']
|
||||
up = datetime.datetime.fromisoformat(up)
|
||||
@@ -87,16 +88,20 @@ class LuiPagesGen(object):
|
||||
down = convert_temperature(we.attributes.forecast[i-1]['temperature'], unit)
|
||||
else:
|
||||
LOGGER.info(f"Forecast {i} is overriden with {wOF}")
|
||||
icon = wOF.iconOverride
|
||||
name = wOF.nameOverride
|
||||
entity = self._ha_api.get_entity(wOF.entityId)
|
||||
icon = wOF.get("icon")
|
||||
name = wOF.get("name")
|
||||
entity = self._ha_api.get_entity(wOF.get("entity"))
|
||||
up = name if name is not None else entity.attributes.friendly_name
|
||||
icon = get_icon_id_ha("sensor", state=entity.state, device_class=entity.attributes.get("device_class", ""), overwrite=icon)
|
||||
unit_of_measurement = entity.attributes.get("unit_of_measurement", "")
|
||||
down = f"{entity.state} {unit_of_measurement}"
|
||||
weather_res+=f"~{up}~{icon}~{down}"
|
||||
|
||||
self._send_mqtt_msg(f"weatherUpdate~{icon_cur}~{text_cur}{weather_res}")
|
||||
altLayout = ""
|
||||
if self._config._config_screensaver.raw_config.get("alternativeLayout", False) is True:
|
||||
altLayout = f"~26~{we.attributes.humidity} %"
|
||||
|
||||
self._send_mqtt_msg(f"weatherUpdate~{icon_cur}~{text_cur}{weather_res}{altLayout}")
|
||||
|
||||
def generate_entities_item(self, entity):
|
||||
entityId = entity.entityId
|
||||
@@ -326,7 +331,10 @@ class LuiPagesGen(object):
|
||||
|
||||
def render_card(self, card, send_page_type=True):
|
||||
LOGGER.info(f"Started rendering of page {card.pos} with type {card.cardType}")
|
||||
navigation = "1|1"
|
||||
if len(self._config._config_cards) == 1:
|
||||
navigation = "0|0"
|
||||
else:
|
||||
navigation = "1|1"
|
||||
if card.pos is None:
|
||||
navigation = "2|0"
|
||||
# Switch to page
|
||||
|
||||
Reference in New Issue
Block a user