piano_light_control.py 1.0 KB

1234567891011121314151617181920212223242526
  1. @state_trigger("input_boolean.piano_light_wanted_state")
  2. @task_unique("piano_light_control", kill_me=True)
  3. def control_piano_light():
  4. # Set max number of iterations
  5. maxIterations = 10
  6. # Loop until we have succeeded to controlling the light
  7. while(
  8. ( (sensor.piano_lamp_repeater_status != input_boolean.piano_light_wanted_state) or
  9. ( light.piano_lamp!= input_boolean.piano_light_wanted_state) ) and maxIterations > 0
  10. ):
  11. # Find out if we should turn the light on or off
  12. action = "turn_off" if input_boolean.piano_light_wanted_state == 'off' else "turn_on"
  13. service.call("light", action, entity_id="light.piano_lamp")
  14. service.call("light", action, entity_id="light.piano_lamp_repeater")
  15. log.info("Sleeping 60s.....")
  16. trig_info = task.wait_until(state_trigger=["input_boolean.piano_light_wanted_state","sensor.piano_lamp_repeater_status"], timeout=60)
  17. maxIterations -= 1
  18. log.info(f"Exit control_piano_light")