This automation will flash specific lights around your house when a sensor is triggered to visually notify you about it without relying on push notifications or audible messages.
This is useful to silently notify you if a door or window has been opened, a motion sensor triggered or any other trigger you can think of in Home Assistant! This can help you increase your home security by making you aware of what is going on.
One use case that I’ve seen this work well for is flashing lights red in the living room and kitchen when a child’s bedroom door is opened after bedtime. This can alert you if your child has gotten out of bed and left their room because they need to go to the bathroom or have had a bad dream, then you can go over to them and help them out.
You could use this same automation for other reasons too, such as telling you that the garage door has been opened, a water leak is detected by a leak sensor, or if motion was detected by your security cameras.
To make this automation work you’ll need the following:
- A working Home Assistant installation
- Some Contact Sensors (or other sensors) paired with Home Assistant
- Some Lights paired with Home Assistant. I am using Philips Hue LED strips which have a built in flashing function.
This automation is triggered by a simple state trigger when a sensor that you have access to in Home Assistant changes state.
In this example we’re using a contact sensor to check if a door is opened, but you could easily adapt it to use a motion sensor, water leak sensor or even a wireless button. The state trigger is triggered when the contact sensor state goes from off to on.
Contact Sensors are really confusing, their state is set to on when the door is opened. You can validate this yourself by opening one of the doors and then looking at that contact sensor in the developer tools.
Here is the trigger block in YAML:
platform: state entity_id: binary_sensor.bedroom_door_contact_sensor_contact from: 'off' to: 'on'
In my example, where we want to be notified if a child has opened their bedroom door after bedtime, I want to make sure that the lights only flash red after they’ve gone to bed. You don’t want the lights flashing red randomly throughout the day as people go in and out of the bedroom.
To achieve this I’m using a time condition to make sure that the automation only completes if it’s currently between 8pm and 1am.
A more advanced version of this automation would be to create a binary sensor called “Bed Time” in Home Assistant that you can turn on and off when the child goes to bed. This would allow you to replace the time condition with a state condition and allow you to arm this automation any time the child goes to bed – regardless of the time of day. You could even put a wireless button near the child’s bedroom door that toggles this sensor on and off.
If you want to always be notified of a sensor changing state, you can remove the condition altogether.
Here is the condition block in YAML:
condition: time after: '20:00' before: '01:00'
This automation uses a complex, multi-step action that performs the following steps:
Firstly, we create a dynamic scene that captures the current state of the Kitchen and Living Room lights. This will allow us to set the lights back to their original state once the flashing stops. If we don’t do this the lights will flash red, and then stay on solid red until you change them to another colour.
To achieve this we’re using the scene.create service to save all the attributes like brightness, colour, on/off state etc to a temporary scene called TheBeforeTimes.
Next, we use the light.turn_on service to set the TV and Kitchen lights to flash red. I’m using the long flash function of the Philips Hue lights that I have mounted behind my TV and under my kitchen cabinets.
The next part of the action simply waits for 16 seconds. This is the amount of time it takes for my Hue lights to finish their flashing effect – I simply timed it with a stopwatch to get this figure.
I use a delay action type for this.
After 16 seconds the lights will have stopped flashing and we can re-apply whatever settings the lights previously had set by re-applying the dynamic scene that we saved at the start of the automation.
I use the activate scene action to re-apply the scene we created at the start of the automation called TheBeforeTimes.
This will now set the lights back to how they were before the flashing started.
Full Automation in YAML
Here is the full automation in YAML format:
alias: 'Light: Flash light when bedroom door is opened' description: '' trigger: - platform: state entity_id: binary_sensor.bedroom_door_contact_sensor_contact from: 'off' to: 'on' condition: - condition: time after: '20:00' before: '01:00' action: - service: scene.create data: scene_id: thebeforetimes snapshot_entities: - light.kitchen_lights - light.tv_lights_group - service: light.turn_on data: flash: long color_name: red target: device_id: - ad84a1f65afae779089a4abb9f10db1c - db71bf3671ad4b17b57408c25e35cd6a - delay: hours: 0 minutes: 0 seconds: 16 milliseconds: 0 - scene: scene.thebeforetimes mode: single