Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- input_boolean.bathroom_auto_mode = 'on'
- pyscript.bathroom_intended_state = state.get('light.bathroom')
- log.info('Running Bathroom Light script')
- min_elev = -6
- max_elev = 0
- min_bright = 1
- max_bright = 99
- @state_trigger("binary_sensor.bath_motion == 'on'")
- def set_intended_on_state():
- pyscript.bathroom_intended_state = 'on'
- log.info('Set bathroom light intended state: On')
- @state_trigger("binary_sensor.bath_motion == 'off'", state_hold = 30*60)
- def set_intended_off_state():
- pyscript.bathroom_intended_state = 'off'
- log.info('Set bathroom light intended state: Off')
- @state_trigger("pyscript.bathroom_intended_state == 'on' and float(sun.sun.elevation)")
- @state_active("input_boolean.bathroom_auto_mode == 'on'")
- def turn_on_light_if_auto():
- intended_brightness = calc_brightness_from_elevation(sun.sun.elevation, min_elev, max_elev, min_bright, max_bright)
- light.turn_on(entity_id = 'light.bathroom', brightness_pct = intended_brightness)
- light.turn_on(entity_id = 'light.bath_mirror', brightness_pct = 1)
- log.info(f'Set bathroom light actual state in auto mode: On ({intended_brightness} %)')
- @state_trigger("pyscript.bathroom_intended_state == 'off'")
- @state_active("input_boolean.bathroom_auto_mode == 'on'")
- def turn_off_light_if_auto():
- light.turn_off(entity_id = 'light.bathroom')
- light.turn_off(entity_id = 'light.bath_mirror')
- log.info('Set bathroom light actual state in auto mode: Off')
- @time_trigger("period(midnight, 1 days)")
- def reset_auto_state():
- input_boolean.bathroom_auto_mode = 'on'
- log.info("Set bathroom light state: Auto")
- @state_trigger("light.bathroom != pyscript.bathroom_intended_state", state_hold = 1)
- def set_manual_state():
- input_boolean.bathroom_auto_mode = 'off'
- log.info("Set bathroom light state: Manual")
- def calc_brightness_from_elevation(elevation, min_elevation=-6, max_elevation=0, min_brightness=1, max_brightness=99):
- if elevation < min_elevation:
- elevation = min_elevation
- elif elevation > max_elevation:
- elevation = max_elevation
- return (max_brightness - min_brightness)*(elevation - min_elevation)/(max_elevation - min_elevation) + min_brightness
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement