Hi,
I am trying to trigger an event every 45 minutes. Instead, it triggers every hour at X:00 and at X:45
Any idea, what is happening here and how to get the event to trigger every 45 minutes?
Thanks for your help!
alias: Test Event
description: ""
trigger:
- platform: time_pattern
minutes: /45
condition:
- condition: time
after: "05:25:00"
before: "21:35:00"
action:
- service: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.tasmota
- delay:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
- service: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.tasmota
mode: single
I am using
Core2024.6.1
Supervisor2024.06.0
Operating System12.3
Frontend20240605.0
1 Like
Thank you for the reply and pointing out, that code was not formatted. I edited the post on my mobile phone and failed to use the preformatted text-button…
I created the automation using the GUI, but copied the code for completeness.
Also, I am well aware that this is not a forum for “hey - I got stuck on the very first try”-questions. I did research thoroughly on this matter for half an hour, read the documentation, watched YouTube videos and still get this unexpected result. I am looking for advice to get a true /45 pattern for my event, triggering e.g. at 0:45h, 1:30h, 2:15h…
I did not mean to imply that you hadn’t done any research, only that code is hard to read when it’s not formatted.
Regarding your issue: I’m afraid that is just how time_pattern works. It uses cron underneath the hood and it has that behaviour.
See the discussion here for a possible solution:
I have the following automation set to run every 27 minutes. For some reason it triggers at the 1 hour mark every hour as well and then starts it’s 27 minute count over again from there. This is causing it to trigger many more times throughout the day that it should. What causes this?
- id: '1603320704350'
alias: 'Climate: Update Accuweather Conditions'
trigger:
- minutes: /27
platform: time_pattern
condition:
- condition: time
after: 05:00:00
before: '23:59:59'
action:
…
2 Likes
There isn’t a way to do this directly with the Time Pattern trigger.
It can be done with a Template trigger:
trigger:
- alias: "Every 45 minutes"
platform: template
value_template: "{{ (now().timestamp()/60)|int % 45 == 0}}"
If, for some reason, you want to select the start time you could use something like:
{% set start = '2024-01-01 00:00:00.0000' | as_datetime | as_local %}
{% set total_min = ((now() - start).total_seconds() | int / 60) %}
{{ total_min % 45 == 0 }}
1 Like
As outlined in the discussion I linked to…
Thank you very much to the both of you and for the advice, how to solve this.
By the way, the time pattern is documented, this was not clear to me.