Trigger Monthly

Is there an option to trigger a rule “Once a Month”? I see the option to trigger “daily” and “weekly”, but not monthly.

I have a rule that checks all of my battery devices and sends me a notification if any of them are below 15% so I have time to change them. I really don’t need the rule to run every week, but monthly would be just fine. Is there a way to add “monthly” to the options?

So… the long way around is to create a trigger when each month changes.

That would presumably send the notification at 00:00:01 (Midnight).

Any thoughts on how to get it to send the notifications after say 9:00 AM?

The rule is going to check the battery status of 20 devices, so would putting a “wait” in the first “IF” cause all the other “IFS” to wait as well? (see image)

How are you triggering the other rule that’s setting the variable?

If you already have some sort of rule that’s running daily, you could use the Day of Month (D) changing to 1 as your trigger which would simplify the trigger to a single trigger instead of one for each month.

I would guess that daily type of rule that sets date variables would as close to 12:01 AM as other rules might have dependencies on it. If that rule is only for setting a variable for this monthly report, then you could just set it to run at 9:00 AM every day.

Alternatively, if it’s running at 12:01 to set the date, you could either update this monthly report rule to trigger at 9:00 AM every day and check if the ‘Day of Month’ variable is set to 1 in a top-level condition. That would require rewriting your rule flow which is probably not ideal – so the alternative would be to create a separate rule that is triggered at 9:00 AM every day, checks if the Day of Month variable is 1 and then sets a ‘RunMonthlyReport’ variable to true. The RunMonthlyReport changing to true would be the single trigger you need in your monthly report rule to tell it to run. Then you would either need to have a small delay in the rule that sets RunMonthlyReport true before setting the RunMonthlyReport back to false… or set it back to false in your rule that actually runs the rule (to indicate that it was successfully run).

I’ll have to check why I set this up to run at 12:05 AM. If there is not a good reason why I have it set at 12:05, I guess I could just change it to 9:00 AM. That would solve my problem, correct? Then I could eliminate the long wait…

EDIT: I’ll just run this every day.

I’m sure I can use the day of the month for other things as well. Thanks for the direction @josh

A little tip for your first idea of the variable changing to specific things, you don’t need it any more but could help in the future:
Instead of setting it to “changes to every possible outcome”, set it to changes and is not “anything”. Whenever it changes and it’s not “anything”, it triggers.

PS: in the flow you can then use the event context variable of the triggering value to choose what happens for certain variable values.