Automatic switch-off light with cancel option

Hello,

I would like to share with you some automation that I’m using at home for the children’s bedtime, at 21:30 I dim the light and they know it’s time to go to sleep … and then at 22:00 :clock10: begins the scenario of automatic light switch-off until 7:00 :clock7:. It also notifies me when the light is on and off.

What happens in this scenario is that when the light is switched on, two events are triggered that activate two timers.

So you will need to configure two timers:

timer:
  auto_off:
    duration: 00:10:00
  cancel_auto_off:
    duration: 00:00:30

And then include in your configuration.yaml

automation: !include automation.yaml

which contains:

- id: Activates_automatic_light_switch_off
  alias: Activates automatic light switch-off
  trigger:
    - platform: state
      entity_id: switch.relay_switch
      from: 'off'
      to: 'on'
  condition:
    - condition: state
      entity_id: timer.cancel_auto_off
      state: idle
    - condition: time
      after: 00:00:00
      before: 07:00:00
  action:
    - service: notify.telegram
      data_template:
        title: "Child's Bedroom Light"
        message: "Light has been turned on at ({{ now().strftime('%X') }})"
    - service: timer.start
      entity_id: timer.auto_off
    - service: timer.start
      entity_id: timer.cancel_auto_off

The first timer :timer_clock: is used to automatically turn off the light after 10 minutes.

- id: automatic_light_switch_off
  alias: Automatic light switch-off
  trigger:
    - platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.auto_off
  condition: []
  action:
    - service: switch.turn_off
      data:
        entity_id: switch.relay_switch
    - service: notify.telegram
      data_template:
        title: "Child's Bedroom Light"
        message: "Light has been turned off automatically at ({{ now().strftime('%X') }})"

The second timer :timer_clock: is only intended to cancel the automatic switch-off if the light is switched on again in less than 30 seconds (i.e. if we switch it off and on again in less than 30 seconds).

- id: manual_light_switch_off
  alias: Manual Light switch-off
  trigger:
    - platform: state
      entity_id: switch.relay_switch
      from: 'on'
      to: 'off'
  condition:
    - condition: state
      entity_id: timer.auto_off
      state: active
  action:
    - service: notify.telegram
      data_template:
        title: "Child's Bedroom Light"
        message: "Light has been turned off at ({{ now().strftime('%X') }})"
    - service: timer.cancel
      entity_id: timer.auto_off
      data:
        entity_id: timer.auto_off

- id: cancel_auto_switch_off
  alias: Deactivate automatic light switch-off
  trigger:
    - platform: state
      entity_id: switch.relay_switch
      from: 'off'
      to: 'on'
  condition:
    - condition: state
      entity_id: timer.cancel_auto_off
      state: active
  action:
    - service: notify.telegram
      data_template:
        title: "Child's Bedroom Light"
        message: "Automatic switch-off has been cancelled at ({{ now().strftime('%X') }})"
    - service: timer.cancel
      data:
        entity_id: timer.auto_off
    - service: timer.cancel
      data:
        entity_id: timer.cancel_auto_off

I see another use, it could be use in offices.

At 17:00 non essential lights are turned off (end of working day) but a switch or presence detector can turn it back on (there is always someone who takes longer to get out). After 10 minutes, it is switched off again, thus reminding workers that the day is over. This way we can be switching on and off automatically.

If you have to stay a long time because of overtime, you can cancel the automatic switch-off (switching off and on in less than 30 seconds)… This should be done by pressing the wall switch not by using the presence detector.

I hope you like those automation.

4 Likes