123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- state.persist('pyscript.ext_light_has_been_day','false')
- state.persist('pyscript.ext_light_has_been_night','false')
- # Set that it has been midnight, and that it's ok to turn the light on
- @time_trigger("once(00:30:00)")
- def ext_light_has_been_night():
- pyscript.ext_light_has_been_night = 'true'
- # Set that it has been noon, and that it's ok to turn off the light
- @time_trigger("once(12:30:00)")
- def ext_light_has_been_day():
- pyscript.ext_light_has_been_day = 'true'
- @state_trigger("int(sensor.lux_outside_the_garage) < 100", state_hold_false=0 )
- def automate_exterior_lights_on_in_evening():
- if( pyscript.ext_light_has_been_day == 'true' ):
- pyscript.ext_light_has_been_day = 'false'
- input_boolean.exterior_lights_wanted_state = 'on'
- @state_trigger("int(sensor.lux_outside_the_garage) > 50", state_hold_false=0)
- def automate_exterior_lights_off_in_morning():
- if( pyscript.ext_light_has_been_night == 'true' ):
- pyscript.ext_light_has_been_night = 'false'
- input_boolean.exterior_lights_wanted_state = 'off'
- @state_trigger("input_boolean.exterior_lights_wanted_state")
- @task_unique("control_ext_light", kill_me=True)
- def control_ext_light():
- # Set max number of iterations
- maxIterations = 5
- # Loop until we have succeeded to controlling the light
- while(
- ( (sensor.exterior_light_status != input_boolean.exterior_lights_wanted_state) or
- ( light.exterior_lights!= input_boolean.exterior_lights_wanted_state) ) and maxIterations > 0
- ):
- # Find out if we should turn the light on or off
- action = "turn_off" if input_boolean.exterior_lights_wanted_state == 'off' else "turn_on"
-
- service.call("light", action, entity_id="light.exterior_lights")
- service.call("light", action, entity_id="light.exterior_lights_repeater")
- log.info("Sleeping 60s.....")
- trig_info = task.wait_until(state_trigger=["input_boolean.exterior_lights_wanted_state","sensor.exterior_light_status"], timeout=60)
- maxIterations -= 1
-
- log.info(f"Exit control_ext_light")
|