Könnte man damit realisieren:
{% set first_advent = now().replace(day=25, month=12) - timedelta(days = 21 + now().replace(day=25, month=12).isoweekday() ) %}
{{ first_advent <= now() <= now().replace(day=31, month=12) or now() <= now().replace(day=6, month=1) }}
Dieser Jinja2-Code berechnet das Datum des ersten Advents und überprüft, ob das aktuelle Datum innerhalb des Zeitraums von diesem ersten Advent bis zum 6. Januar liegt. Hier ist eine Schritt-für-Schritt-Erklärung:
- Berechnung des ersten Advents:
{% set first_advent = now().replace(day=25, month=12) - timedelta(days = 21 + now().replace(day=25, month=12).isoweekday() ) %}
now().replace(day=25, month=12)
legt den 25. Dezember des aktuellen Jahres fest.
timedelta(days = 21 + now().replace(day=25, month=12).isoweekday())
berechnet die Differenz in Tagen zum ersten Advent. 21
Tage vorher liegt immer auf einem Sonntag, und isoweekday()
bestimmt den Wochentag des 25. Dezembers, um den genauen ersten Advent festzulegen.
- Überprüfung des Zeitraums:
{{ first_advent <= now() <= now().replace(day=31, month=12) or now() <= now().replace(day=6, month=1) }}
first_advent <= now() <= now().replace(day=31, month=12)
prüft, ob das heutige Datum zwischen dem ersten Advent und dem 31. Dezember liegt.
or now() <= now().replace(day=6, month=1)
fügt die Bedingung hinzu, dass das Datum auch vor oder am 6. Januar sein darf.
Dieser Ausdruck gibt true
zurück, wenn das heutige Datum im Adventszeitraum bis zum 6. Januar liegt, sonst false
.
Nachtrag:
noch ein Tip zur praktischen Umsetzung.
Kopiert man folgenden Code in die configuration.yaml
binary_sensor:
- platform: template
sensors:
adventszeit:
friendly_name: "Adventszeit"
value_template: >
{% set today = now() %}
{% set first_advent = today.replace(day=25, month=12) - timedelta(days=21 + today.replace(day=25, month=12).isoweekday()) %}
{{ first_advent <= today <= today.replace(day=31, month=12) or today <= today.replace(day=6, month=1) }}
so erzeugt dieser einen binären Sensor/Entität mit Namen “Adventszeit” welcher dann einfach als Bedingung in der entsprechenden Automation benutzt werden kann!
Viel einfacher geht’s nicht, oder?
by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)