mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-23 07:54:25 +01:00
Merge pull request #241 from illuzn/sleepOverride-patch
Sleep Override Function
This commit is contained in:
17
README.md
17
README.md
@@ -380,6 +380,7 @@ key | optional | type | default | description
|
|||||||
`sleepBrightness` | True | integer/complex | `20` | Brightness for the screen on the screensaver, see example below for complex/scheduled config.
|
`sleepBrightness` | True | integer/complex | `20` | Brightness for the screen on the screensaver, see example below for complex/scheduled config.
|
||||||
`screenBrightness` | True | integer/complex | `100` | Brightness for the screen during usage, config format is the same as sleepBrightness.
|
`screenBrightness` | True | integer/complex | `100` | Brightness for the screen during usage, config format is the same as sleepBrightness.
|
||||||
`sleepTracking` | True | string | None | Forces screensaver brightness to 0 in case entity state is not_home or off, can be a group, person or device_tracker entity.
|
`sleepTracking` | True | string | None | Forces screensaver brightness to 0 in case entity state is not_home or off, can be a group, person or device_tracker entity.
|
||||||
|
`sleepOverride` | True | complex | None | Allows overriding of the sleepBrightness if entity state is on, true or home. Overrides sleepBrightness but sleepTracking takes precedence.
|
||||||
`locale` | True | string | `en_US` | Used by babel to determinante Date format on screensaver, also used for localization.
|
`locale` | True | string | `en_US` | Used by babel to determinante Date format on screensaver, also used for localization.
|
||||||
`dateFormatBabel` | True | string | `full` | formatting options on https://babel.pocoo.org/en/latest/dates.html?highlight=name%20of%20day#date-fields
|
`dateFormatBabel` | True | string | `full` | formatting options on https://babel.pocoo.org/en/latest/dates.html?highlight=name%20of%20day#date-fields
|
||||||
`timeFormat` | True | string | `%H:%M` | Time Format on screensaver. Substring after `?` is displayed in a seperate smaller textbox. Useful for 12h time format with AM/PM <pre>`"%I:%M ?%p"`</pre>
|
`timeFormat` | True | string | `%H:%M` | Time Format on screensaver. Substring after `?` is displayed in a seperate smaller textbox. Useful for 12h time format with AM/PM <pre>`"%I:%M ?%p"`</pre>
|
||||||
@@ -537,6 +538,22 @@ It is possible to schedule a brightness change for the screen at specific times.
|
|||||||
value: 0
|
value: 0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`sleepTracking` overrides this setting and sets the brightness to 0 if the state of the configured Home Assistant entity is `off` or `not_home`. You may also use a [Home Assistant group](https://www.home-assistant.io/integrations/group) to track multiple entities.
|
||||||
|
|
||||||
|
`sleepOverride` overrides sleepBrightness but does not take precedence over sleepTracking. This is useful if, for example, you want your NSPanel to be brighter than usual if your light is on or if you want to override a panel dimming if you are in the room.
|
||||||
|
|
||||||
|
The following example configuration does nothing during the day but at night, if the bedroom light is on the NSPanel brightness will be 20 instead of 0.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
sleepBrightness:
|
||||||
|
- time: "sunrise"
|
||||||
|
value: 20
|
||||||
|
- time: "sunset"
|
||||||
|
value: 0
|
||||||
|
sleepOverride:
|
||||||
|
entity: light.bedroomlight
|
||||||
|
brightness: 20
|
||||||
|
```
|
||||||
|
|
||||||
#### Override Icons or Names
|
#### Override Icons or Names
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ class LuiBackendConfig(object):
|
|||||||
'sleepBrightness': 20,
|
'sleepBrightness': 20,
|
||||||
'screenBrightness': 100,
|
'screenBrightness': 100,
|
||||||
'sleepTracking': None,
|
'sleepTracking': None,
|
||||||
|
'sleepOverride': None,
|
||||||
'locale': "en_US",
|
'locale': "en_US",
|
||||||
'timeFormat': "%H:%M",
|
'timeFormat': "%H:%M",
|
||||||
'dateFormatBabel': "full",
|
'dateFormatBabel': "full",
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ class LuiController(object):
|
|||||||
if bst is not None and self._ha_api.entity_exists(bst):
|
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)
|
self._ha_api.listen_state(self.update_screensaver_brightness_state_callback, entity_id=bst)
|
||||||
|
|
||||||
|
# call update_screensaver_brightness on entity configured in sleepOverride
|
||||||
|
sleepOverride = self._config.get("sleepOverride")
|
||||||
|
if sleepOverride is not None and type(sleepOverride) is dict and sleepOverride["entity"] is not None and sleepOverride["brightness"] is not None and self._ha_api.entity_exists(sleepOverride["entity"]):
|
||||||
|
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 (for input_number) - sleepBrightness
|
# register callback for state changes on tracked value (for input_number) - sleepBrightness
|
||||||
sleep_brightness_config = self._config.get("sleepBrightness")
|
sleep_brightness_config = self._config.get("sleepBrightness")
|
||||||
if type(sleep_brightness_config) == str and self._ha_api.entity_exists(sleep_brightness_config):
|
if type(sleep_brightness_config) == str and self._ha_api.entity_exists(sleep_brightness_config):
|
||||||
@@ -78,9 +84,21 @@ class LuiController(object):
|
|||||||
|
|
||||||
def update_screensaver_brightness(self, kwargs):
|
def update_screensaver_brightness(self, kwargs):
|
||||||
bst = self._config.get("sleepTracking")
|
bst = self._config.get("sleepTracking")
|
||||||
|
sleepOverride = self._config.get("sleepOverride")
|
||||||
|
if sleepOverride is not None and type(sleepOverride) is dict:
|
||||||
|
sOEntity = sleepOverride["entity"]
|
||||||
|
sOBrightness = sleepOverride["brightness"]
|
||||||
|
|
||||||
sleepBrightness = 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"]:
|
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")
|
||||||
sleepBrightness = 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}")
|
||||||
|
sleepBrightness = sOBrightness
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.current_screensaver_brightness = kwargs['ssbr']
|
self.current_screensaver_brightness = kwargs['ssbr']
|
||||||
sleepBrightness = self.current_screensaver_brightness
|
sleepBrightness = self.current_screensaver_brightness
|
||||||
|
|||||||
Reference in New Issue
Block a user