Advertisement
anon123680126

Untitled

Oct 4th, 2021
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.21 KB | None | 0 0
  1. input_boolean.bathroom_auto_mode = 'on'
  2. pyscript.bathroom_intended_state = state.get('light.bathroom')
  3. log.info('Running Bathroom Light script')
  4.  
  5. min_elev = -6
  6. max_elev = 0
  7.  
  8. min_bright = 1
  9. max_bright = 99
  10.  
  11. @state_trigger("binary_sensor.bath_motion == 'on'")
  12. def set_intended_on_state():
  13.     pyscript.bathroom_intended_state = 'on'
  14.     log.info('Set bathroom light intended state: On')
  15.    
  16. @state_trigger("binary_sensor.bath_motion == 'off'", state_hold = 30*60)
  17. def set_intended_off_state():
  18.     pyscript.bathroom_intended_state = 'off'
  19.     log.info('Set bathroom light intended state: Off')
  20.  
  21. @state_trigger("pyscript.bathroom_intended_state == 'on' and float(sun.sun.elevation)")
  22. @state_active("input_boolean.bathroom_auto_mode == 'on'")
  23. def turn_on_light_if_auto():
  24.     intended_brightness = calc_brightness_from_elevation(sun.sun.elevation, min_elev, max_elev, min_bright, max_bright)
  25.     light.turn_on(entity_id = 'light.bathroom', brightness_pct = intended_brightness)
  26.     light.turn_on(entity_id = 'light.bath_mirror', brightness_pct = 1)
  27.     log.info(f'Set bathroom light actual state in auto mode: On ({intended_brightness} %)')
  28.  
  29. @state_trigger("pyscript.bathroom_intended_state == 'off'")
  30. @state_active("input_boolean.bathroom_auto_mode == 'on'")
  31. def turn_off_light_if_auto():
  32.     light.turn_off(entity_id = 'light.bathroom')
  33.     light.turn_off(entity_id = 'light.bath_mirror')
  34.     log.info('Set bathroom light actual state in auto mode: Off')
  35.        
  36. @time_trigger("period(midnight, 1 days)")
  37. def reset_auto_state():
  38.     input_boolean.bathroom_auto_mode = 'on'
  39.     log.info("Set bathroom light state: Auto")
  40.    
  41. @state_trigger("light.bathroom != pyscript.bathroom_intended_state", state_hold = 1)
  42. def set_manual_state():
  43.     input_boolean.bathroom_auto_mode = 'off'
  44.     log.info("Set bathroom light state: Manual")
  45.    
  46. def calc_brightness_from_elevation(elevation, min_elevation=-6, max_elevation=0, min_brightness=1, max_brightness=99):
  47.     if elevation < min_elevation:
  48.         elevation = min_elevation
  49.     elif elevation > max_elevation:
  50.         elevation = max_elevation
  51.     return (max_brightness - min_brightness)*(elevation - min_elevation)/(max_elevation - min_elevation) + min_brightness
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement