Send message only when last message has been sent longer than 30 minutes

Why? That’s just going to be another entity you need to create and another process you need to manage. Does it need to be exactly 30 minutes? If not, the dryer’s “anti-wrinkle” cycles are going to happen anyway, use it’s reoccurrence as your “about 30 minutes timer”.

The linked Template condition has nothing to do with HA restart.

The last_triggered property of an automation’s state is only updated when an automation triggers and conditions in the conditions block all pass. The template condition I provided in the link therefor prevents the update of last_triggered and prevents the notifications from being played again until the time threshold has been exceeded.

The variable this is HA’s self-referencing variable. In this scenario it holds the state object of the automation itself. So, it is the nearly the same functionality as what Rick shared with his trigger suggestion. But this way won’t require additional conditions to check if the dryer has already been dealt with since those power-based events won’t be occurring.

It would be helpful if your code was properly formatted. Please follow Community Question Guideline #11 by properly formatting you configuration code. This is important to avoid errors that can be caused by the copy/paste process.

conditions:
  - alias: Check if it has been at least 30 minutes since this automation's action block was last run.
    condition: template
    value_template: |  
      {% set last_run = this.attributes.last_triggered|default(as_datetime(0),1) %}
      {{ now() >=  last_run + timedelta(minutes = 30) }}