Decision inputs for a good morning routine

I have a number of smart devices that I could automate for my morning wake up call - heating, blinds, radio and my normal schedule.

For example,
five days a week I have
The radio alarm at 5:50.
Lights fade in a few minutes later.
The heating comes on at 5:40
The blinds at six (unless it is still dark - they will open at sunrise)

All this could be triggered via a schedule or a calendar with wait times between steps.

What I would like to ask is what measures you take for bank holidays, absences etc to delay or cancel these automations?

The Workday integration can be helpful, but might not match up with your specific work schedule.

Since my partner’s work doesn’t always observe the standard holidays used in the Workday integration, we use a trigger-based template binary sensor that fires just after midnight and checks a calendar for events titled “Off Work”. Even though it still requires some manual upkeep, I find using this Calendar-based approach easier than the process required for including and excluding holidays or dates in the Workday integration.

At its most basic I started with a bunch of input helpers.

Guest mode
Vacation mode
Second llama day of the month mode.
Foo mode
Pause (I use this as an emergency stop-all pause)

You get the point.

But then in every automation you now have a way to check decisions and react in the conditions of whatever you use to trigger or run automations.

Started with input helpers as It was easy and I could start building automations and you can add the input helper to a Dashboard. Then you can start getting Fancy with what TRIGGERS those input boolean.

For instance - an automation can read something and then say hey it’s a vacation day (one of your conditions) and pop the vacation mode helper. The automation that popped vacation mode doesn’t care anything about your other automations or the consequences - just it’s vacation mode.

It’s up to your other automation to react accordingly. Example every single automation I have (except for a few very specific ones) has a condition at the top that basically says if NOT paused (pause input bool = off) so throwing the pause switch has the effect of stopping all new automation that isn’t already running (i have another to kill certain running things) for my all pause automation I just enable pause. For all stop I enable pause and run the kill script.

1 Like