mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-31 20:04:19 +01:00
Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui into joBr99-main
This commit is contained in:
@@ -67,6 +67,7 @@ class LuiBackendConfig(object):
|
||||
'model': "eu",
|
||||
'sleepTimeout': 20,
|
||||
'sleepBrightness': 20,
|
||||
'screenBrightness': 100,
|
||||
'sleepTracking': None,
|
||||
'sleepOverride': None,
|
||||
'locale': "en_US",
|
||||
|
||||
@@ -36,9 +36,10 @@ class LuiController(object):
|
||||
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()
|
||||
self.current_screensaver_brightness = self.calc_current_brightness(self._config.get("sleepBrightness"))
|
||||
self.current_screen_brightness = self.calc_current_brightness(self._config.get("screenBrightness"))
|
||||
|
||||
# call update_screensaver_brightness on changes of entity configured in brightnessScreensaverTracking
|
||||
# call update_screensaver_brightness on changes of entity configured in sleepTracking
|
||||
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)
|
||||
@@ -49,10 +50,14 @@ class LuiController(object):
|
||||
self._ha_api.log(f"Configuring Sleep Override. Config is {sleepOverride}")
|
||||
self._ha_api.listen_state(self.update_screensaver_brightness_state_callback, entity_id=sleepOverride["entity"])
|
||||
|
||||
# register callback for state changes on tracked value
|
||||
# register callback for state changes on tracked value (for input_number) - sleepBrightness
|
||||
sleep_brightness_config = self._config.get("sleepBrightness")
|
||||
if type(sleep_brightness_config) == str and self._ha_api.entity_exists(sleep_brightness_config):
|
||||
self._ha_api.listen_state(self.update_screensaver_brightness_state_callback, entity_id=sleep_brightness_config)
|
||||
# register callback for state changes on tracked value (for input_number) - screenBrightness
|
||||
screen_brightness_config = self._config.get("screenBrightness")
|
||||
if type(screen_brightness_config) == str and self._ha_api.entity_exists(screen_brightness_config):
|
||||
self._ha_api.listen_state(self.update_screensaver_brightness_state_callback, entity_id=screen_brightness_config)
|
||||
|
||||
def startup(self):
|
||||
self._ha_api.log(f"Startup Event")
|
||||
@@ -65,7 +70,7 @@ class LuiController(object):
|
||||
self._send_mqtt_msg(f"timeout~{timeout}")
|
||||
|
||||
# set current screensaver brightness
|
||||
self.update_screensaver_brightness(kwargs={"value": self.current_screensaver_brightness})
|
||||
self.update_screensaver_brightness(kwargs={"ssbr": self.current_screensaver_brightness, "sbr": self.current_screen_brightness})
|
||||
|
||||
# send panel to screensaver
|
||||
self._pages_gen.render_card(self._current_card)
|
||||
@@ -73,8 +78,9 @@ class LuiController(object):
|
||||
|
||||
def update_screensaver_brightness_state_callback(self, entity, attribute, old, new, kwargs):
|
||||
if type(self._config.get("sleepBrightness")) == str:
|
||||
self.current_screensaver_brightness = self.calc_current_screensaver_brightness()
|
||||
self.update_screensaver_brightness(kwargs={"value": self.current_screensaver_brightness})
|
||||
self.current_screensaver_brightness = self.calc_current_brightness(self._config.get("sleepBrightness"))
|
||||
self.current_screen_brightness = self.calc_current_brightness(self._config.get("screenBrightness"))
|
||||
self.update_screensaver_brightness(kwargs={"ssbr": self.current_screensaver_brightness, "sbr": self.current_screen_brightness})
|
||||
|
||||
def update_screensaver_brightness(self, kwargs):
|
||||
bst = self._config.get("sleepTracking")
|
||||
@@ -83,24 +89,29 @@ class LuiController(object):
|
||||
sOEntity = sleepOverride["entity"]
|
||||
sOBrightness = sleepOverride["brightness"]
|
||||
|
||||
brightness = 0
|
||||
sleepBrightness = 0
|
||||
|
||||
if bst is not None and self._ha_api.entity_exists(bst) and self._ha_api.get_entity(bst).state in ["not_home", "off"]:
|
||||
self._ha_api.log(f"sleepTracking setting brightness to 0")
|
||||
brightness = 0
|
||||
sleepBrightness = 0
|
||||
|
||||
elif sOEntity is not None and sOBrightness is not None and self._ha_api.entity_exists(sOEntity) and self._ha_api.get_entity(sOEntity).state in ["on", "true", "home"]:
|
||||
self._ha_api.log(f"sleepOverride setting brightness to {sOBrightness}")
|
||||
brightness = sOBrightness
|
||||
sleepBrightness = sOBrightness
|
||||
|
||||
else:
|
||||
self.current_screensaver_brightness = kwargs['value']
|
||||
brightness = kwargs['value']
|
||||
self._send_mqtt_msg(f"dimmode~{brightness}")
|
||||
self.current_screensaver_brightness = kwargs['ssbr']
|
||||
sleepBrightness = self.current_screensaver_brightness
|
||||
self.current_screen_brightness = kwargs['sbr']
|
||||
brightness = self.current_screen_brightness
|
||||
# same value for both values will break sleep timer of the firmware
|
||||
if sleepBrightness==brightness:
|
||||
sleepBrightness = sleepBrightness-1
|
||||
self._send_mqtt_msg(f"dimmode~{sleepBrightness}~{brightness}")
|
||||
|
||||
def calc_current_screensaver_brightness(self):
|
||||
def calc_current_brightness(self, sleep_brightness_config):
|
||||
current_screensaver_brightness = 20
|
||||
sleep_brightness_config = self._config.get("sleepBrightness")
|
||||
#sleep_brightness_config = self._config.get("sleepBrightness")
|
||||
# set brightness of screensaver
|
||||
if type(sleep_brightness_config) == int:
|
||||
current_screensaver_brightness = sleep_brightness_config
|
||||
@@ -290,3 +301,11 @@ class LuiController(object):
|
||||
# for alarm page
|
||||
if button_type in ["disarm", "arm_home", "arm_away", "arm_night", "arm_vacation"]:
|
||||
self._ha_api.get_entity(entity_id).call_service(f"alarm_{button_type}", code=value)
|
||||
if button_type == "opnSensorNotify":
|
||||
msg = ""
|
||||
entity = self._ha_api.get_entity(entity_id)
|
||||
if "open_sensors" in entity.attributes and entity.attributes.open_sensors is not None:
|
||||
for e in entity.attributes.open_sensors:
|
||||
msg += f"- {self._ha_api.get_entity(e).attributes.friendly_name}\n"
|
||||
self._pages_gen.send_message_page("opnSensorNotifyRes", "", msg, "", "")
|
||||
|
||||
|
||||
@@ -264,6 +264,12 @@ translations = {
|
||||
'fan_mode': "Fan mode",
|
||||
'heating': "Heating",
|
||||
},
|
||||
'eo': {
|
||||
'cooling': "malvarmigo",
|
||||
'code': "Kodo",
|
||||
'state': "Stato",
|
||||
'heating': "hejtado",
|
||||
},
|
||||
'es': {
|
||||
'PRESS': "Pulsa",
|
||||
'ACTIVATE': "Activar",
|
||||
@@ -1108,10 +1114,76 @@ translations = {
|
||||
'fan_mode': "Chế độ quạt",
|
||||
'heating': "Làm ấm",
|
||||
},
|
||||
'zh-Hans': {
|
||||
'PRESS': "按下",
|
||||
'ACTIVATE': "激活",
|
||||
'aux_heat': "辅热",
|
||||
'away_mode': "离开模式",
|
||||
'cooling': "制冷",
|
||||
'drying': "除湿",
|
||||
'fan': "送风",
|
||||
'idle': "空闲",
|
||||
'off': "关",
|
||||
'arm_away': "离家警戒",
|
||||
'arm_custom_bypass': "自定义略过条件",
|
||||
'arm_home': "在家警戒",
|
||||
'arm_night': "夜间警戒",
|
||||
'arm_vacation': "度假警戒",
|
||||
'clear_code': "清除",
|
||||
'code': "密码",
|
||||
'disarm': "解除警戒",
|
||||
'run': "运行",
|
||||
'lock': "锁定",
|
||||
'unlock': "解锁",
|
||||
'brightness': "亮度",
|
||||
'color_temperature': "色温",
|
||||
'position': "位置",
|
||||
'state': "状态",
|
||||
'currently': "当前",
|
||||
'operation': "运行模式",
|
||||
'fan_mode': "风速",
|
||||
'heating': "制热",
|
||||
},
|
||||
'zh-Hant': {
|
||||
'PRESS': "按下",
|
||||
'ACTIVATE': "啟用",
|
||||
'aux_heat': "輔助暖氣",
|
||||
'away_mode': "外出模式",
|
||||
'cooling': "冷氣",
|
||||
'drying': "除濕",
|
||||
'fan': "風速",
|
||||
'idle': "閒置",
|
||||
'off': "關閉",
|
||||
'arm_away': "離家警戒",
|
||||
'arm_custom_bypass': "警戒模式狀態",
|
||||
'arm_home': "在家警戒",
|
||||
'arm_night': "夜間警戒",
|
||||
'arm_vacation': "度假警戒",
|
||||
'clear_code': "清除",
|
||||
'code': "密碼",
|
||||
'disarm': "解除警戒",
|
||||
'run': "執行",
|
||||
'lock': "上鎖",
|
||||
'unlock': "解鎖",
|
||||
'brightness': "亮度",
|
||||
'color_temperature': "色溫",
|
||||
'position': "位置",
|
||||
'state': "狀態判斷",
|
||||
'currently': "目前狀態",
|
||||
'operation': "運轉模式",
|
||||
'fan_mode': "風速模式",
|
||||
'heating': "暖氣",
|
||||
},
|
||||
}
|
||||
|
||||
def lookup(locale, inputstr):
|
||||
locale = locale.split("_")[0]
|
||||
if locale in ["zh_CN", "zh_Hans_CN", "zh_Hans"]:
|
||||
locale = "zh-Hans"
|
||||
elif locale in ["zh_TW", "zh_Hant_TW", "zh_Hant"]:
|
||||
locale = "zh-Hant"
|
||||
else:
|
||||
locale = locale.split("_")[0]
|
||||
|
||||
en_fallback_res = translations.get("en").get(inputstr, inputstr)
|
||||
if locale in translations:
|
||||
return translations.get(locale).get(inputstr, en_fallback_res)
|
||||
|
||||
@@ -413,13 +413,18 @@ class LuiPagesGen(object):
|
||||
icon = get_icon_id("bell-ring")
|
||||
flashing = "enable"
|
||||
|
||||
#add button to show sensor state
|
||||
add_btn = ""
|
||||
if "open_sensors" in entity.attributes and entity.attributes.open_sensors is not None:
|
||||
add_btn=f"{get_icon_id('progress-alert')}~{rgb_dec565([243,179,0])}~opnSensorNotify"
|
||||
|
||||
# add padding to arm buttons
|
||||
arm_buttons = ""
|
||||
for b in supported_modes:
|
||||
arm_buttons += f"~{get_translation(self._locale, b)}~{b}"
|
||||
if len(supported_modes) < 4:
|
||||
arm_buttons += "~"*((4-len(supported_modes))*2)
|
||||
command = f"entityUpd~{item}~{navigation}{arm_buttons}~{icon}~{color}~{numpad}~{flashing}"
|
||||
command = f"entityUpd~{item}~{navigation}{arm_buttons}~{icon}~{color}~{numpad}~{flashing}~{add_btn}"
|
||||
self._send_mqtt_msg(command)
|
||||
|
||||
|
||||
@@ -529,6 +534,6 @@ class LuiPagesGen(object):
|
||||
pos_translation = get_translation(self._locale, "position")
|
||||
self._send_mqtt_msg(f"entityUpdateDetail~{pos}~{pos_translation}: {pos_status}~{pos_translation}~{icon_id}~{icon_up}~{icon_stop}~{icon_down}~{icon_up_status}~{icon_stop_status}~{icon_down_status}")
|
||||
|
||||
def send_message_page(self, id, 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"entityUpdateDetail~{id}~{heading}~65535~{b1}~65535~{b2}~65535~{msg}~65535~0")
|
||||
self._send_mqtt_msg(f"entityUpdateDetail~{ident}~{heading}~65535~{b1}~65535~{b2}~65535~{msg}~65535~0")
|
||||
|
||||
Reference in New Issue
Block a user