WTH: Why is getting a trigger for a yearly automation so involved?

Been looking into getting a trigger for a yearly automation, and everything I read talks about having to set a time trigger and then do condition filtering for month and date.

Why?

If I can set a onetime date, say 2025-01-23, why can’t the year be replaced by a wildcard instead of having to mess around with extra steps?

Probably because those were old topics written before the local calendar trigger was available. Use that. Much easier.

2 Likes

The alternative to creating a repeating event in a local calendar is to use a template trigger. This is an example that will trigger at 6am every Christmas:

{{ now() >= today_at('06:00:00').replace(month=12,day=25) }}

If one of those options is adequate you can mark the WTH as solved. If you are looking for something else, I would suggest adding some detail describing the solution you’d like to see.

If it’s yearly then you shouldn’t specify the year, just month and date.
That is the same as a wildcard.

Example:

{{ "-01-23" in now().date() | string }}

Looking up the yaml is what I’m trying to avoid, if it was something complicated, sure, but just to have a automation trigger once a year, or even once a month at a specific time should just be tap, tap, tap from the visual editor.

If Calendar supported picking a specific event without having to write yaml for the condition, if time supported wildcards, or time pattern supported days and months it wouldn’t be a thing.

You could make a yearless date template sensor Helper. If you want to trigger on just the date, use it as the trigger… if you want a specific time, use a Time trigger and add the sensor as a condition.

That is 100% do-able in the UI and the sensor could be used for any date… no YAML and one template that you tune to your preferred format:

{{now().strftime('%m/%d') }}

To me, that seems easier than tap-tap-tapping through a date selector.