Hallo zusammen,
die folgende Automation funktioniert und tut folgendes:
Schaltet die Automation “Weihnachtsbeleuchtung” ein, wenn im Kalender
“Feiertage in Deutschland” der Eintrag “Totensonntag” gefunden wird und es 24h
Stunden später ist.
Ausgelöst durch Erreichen des Datums 15.01. eines Jahres wird die Automation
“Weihnachtsbeleuchtung” ausgeschaltet.
Automation:
Zusammenfassung
alias: Kalendertrigger Totensonntag
triggers:
- event: start
offset: "24:0:0"
entity_id: calendar.feiertage_in_deutschland
id: Totensonntag ein
trigger: calendar
- trigger: template
value_template: |-
{% set today = (now().month, now().day) %}
{{ today == (1, 15) }}
id: Totensonntag aus
conditions: []
actions:
- if:
- condition: and
conditions:
- condition: trigger
id:
- Totensonntag ein
- condition: template
value_template: "{{ trigger.calendar_event.summary is search('Totensonntag') }}"
then:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.weihnachtsbeleuchtung
- if:
- condition: trigger
id:
- Totensonntag aus
then:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.weihnachtsbeleuchtung
mode: single
Allerdings wundere ich mich, da ich nirgendwo in der GUI der Automationen eine Möglichkeit finde ein bestimmtes Datum einzugeben. Geht das nach wie vor nur mithilfe eines Templates?
Deweiteren habe ich gelesen, dass die Funktion now() minütlich auslöst und damit eine hohe Systemlast bedeutet. (ich benutze solche Templates so oder so ähnlich teils mehrfach in verschiedenen Automationen.
Gibt es eine bessere Art und Weise dasselbe Resultat zu erreichen?
Hallo,
ich habe das anders gelöst, da ich dort Steckdosen im Einsatz habe, die nur zu Weihnachten Ihren Zweck erfüllen. Heißt: Wechseln diese Steckdosen dann von “unavailable” zu “verfügbar”, wird die Automation aktiviert. Wieder zu “unavailable” dann wird die Automation wieder deaktiviert.
trigger: time
wird sogar sekündlich evaluiert, da HA den Trigger mit der internen Uhr abgleicht.
Ist das denn wirklich ein Problem fürs System wenn minütlich abgeglichen wird welches Datum (bzw Tag und Monat) ist? Ich kann zumindest bisher keine erhöhte Belastung des Systems feststellen.
Ich hatte mich in meinen HA Anfängen hier auch eher bedenklich geäußert, mittlerweile denke ich theoretisch richtig, praktisch Hardware mäßig nicht relevant.
Edit: habe Raspi4 mit 8GB
1 „Gefällt mir“
Auch wenn technisch vielleicht unbegründet, habe ich auch immer ein Unbehagen verspürt, mit now() ständige Abfragen laufen zu haben. 
Daher habe ich mir für ähnliche Sachen in der templates.yaml „Trigger Based Template Sensors“ angelegt, die nur zu bestimmten Ereignissen die Abfragen evaluieren.
Vielleicht ist das ja auch was für dich.
Hier mal zwei Beispiele, deren Werte bei mir in unterschiedlichen Automatisierungen genutzt werden:
## "Sensor zur Ermittlung ob in timetuple().tm_isdst Sommerzeit gesetzt ist" ##
- trigger:
- trigger: time
at: "03:01:00"
condition:
- condition: template
value_template: >
{{ now().isoweekday() == 7 }}
sensor:
- name: Zeitmodus
unique_id: zeitmodus
state: >
{% if now().timetuple().tm_isdst == 1 %}
Sommerzeit
{% else %}
Normalzeit
{% endif %}
icon: mdi:calendar-clock
attributes:
Mögliche_Zustände: "Sommerzeit (1), Normalzeit (0)"
## "Sensor zur Anzeige der Tageszeit anhand der Uhrzeiten" ##
- trigger:
- trigger: time
at: "00:00:00"
- trigger: time
at: "06:00:00"
- trigger: time
at: "10:00:00"
- trigger: time
at: "12:00:00"
- trigger: time
at: "14:00:00"
- trigger: time
at: "17:00:00"
- trigger: time
at: "18:00:00"
- trigger: time
at: "22:00:00"
sensor:
- name: Tageszeit
unique_id: tageszeit
state: >
{% if now().hour >= 0 and now().hour < 6 -%}
Nacht
{% elif now().hour >= 6 and now().hour < 10 -%}
Morgen
{% elif now().hour >= 10 and now().hour < 12 -%}
Vormittag
{% elif now().hour >= 12 and now().hour < 14 -%}
Mittag
{% elif is_state('sensor.zeitmodus', 'Sommerzeit') and now().hour >= 14 and now().hour < 18 -%}
Nachmittag
{% elif is_state('sensor.zeitmodus', 'Normalzeit') and now().hour >= 14 and now().hour < 17 -%}
Nachmittag
{% elif is_state('sensor.zeitmodus', 'Sommerzeit') and now().hour >= 18 and now().hour < 22 -%}
Abend
{% elif is_state('sensor.zeitmodus', 'Normalzeit') and now().hour >= 17 and now().hour < 22 -%}
Abend
{% elif now().hour >= 22 and now().hour < 24 -%}
Spätabend
{%- endif -%}
attributes:
Mögliche_Zustände: "Nacht, Morgen, Vormittag, Mittag, Nachmittag, Abend, Spätabend"
icon: mdi:progress-clock
1 „Gefällt mir“
Ich hab ebenfalls nen Raspi4 mit 4GB und ner SSD am laufen. Verwende einmalig das oben gezeigte Script in der Automation und 2 mal triggere ich in anderen Automationen noch nach einem Jahresbereich, auch mit now().
Wie gesagt, kann bislang auch kein Performance-Problem erkennen.
Dennoch.. irgendwie bin ich der Meinung dass die Möglichkeit ein festes Datum zusetzen, oder Trigger für bestimmte Monate oder Trigger für frei definierbare Datums-Bereiche, in der GUI der Automationen fehlt. Oder ich finde das einfach nicht… Hab das bisher nur über Templates gemacht.
Perfetto! Schaue ich mir auf jeden Fall an. Danke dir.