-
Notifications
You must be signed in to change notification settings - Fork 55
Closed
Description
This works, but it's complicated to write and follow:
@state_trigger('binary_sensor.dark == "on"')
@time_active("range(sunrise - 120min, sunset + 120min)")
def turn_on_dark():
turn_on()
@state_trigger('binary_sensor.downstairs_occupied == "on" and binary_sensor.dark == "on"')
def turn_on_occupied():
turn_on()
@state_trigger('binary_sensor.downstairs_occupied == "off"')
@time_active("range(sunset + 120min, sunrise - 120min)")
def turn_off_notoccupied():
turn_off()
@state_trigger('binary_sensor.dark == "off"')
def turn_off_notdark():
turn_off()
@time_trigger('startup')
@state_active('binary_sensor.dark == "on"')
@time_active("range(sunrise - 120min, sunset + 120min)")
def turn_on_startup_dark():
turn_on()
@time_trigger('startup')
@state_active('binary_sensor.downstairs_occupied == "on" and binary_sensor.dark == "on"')
def turn_on_startup_occupied():
turn_on()
@time_trigger('startup')
@state_active('binary_sensor.downstairs_occupied == "off"')
@time_active("range(sunset + 120min, sunrise - 120min)")
def turn_off_startup_notoccupied():
turn_off()
@time_trigger('startup')
@state_active('binary_sensor.dark == "off"')
def turn_off_startup_notdark():
turn_off()
I would prefer this:
import datetime
@time_trigger('startup')
@state_trigger('True or binary_sensor.dark or binary_sensor.downstairs_occupied')
def set_lights():
today = datetime.datetime.today()
start_time = today.replace(hour=5, minute=0) # would like sunrise - 120min
end_time = today.replace(hour=22, minute=0) # would like sunset + 120min
if binary_sensor.dark == "off":
turn_off()
return
if start_time < datetime.datetime.now() < end_time:
turn_on()
return
if binary_sensor.downstairs_occupied == "on":
turn_on()
return
turn_off()
However, as you can see in the code comments, there's not an easy way to get to sunrise/sunset offsets.
Metadata
Metadata
Assignees
Labels
No labels