Templates Sensor input_datetime + Zahlenfeld zum Datum

Hey!

Ich wühle bereits seit etlichen Tagen im WWW nach eine Lösung für mein Problem:

Ich habe zwei Helfer erstellt: Ein input_number.wochen (Zahlenwert für Wochen) und ein input_datetime.startdatum (Sartdatum).

Der dritte Helfer ist ein Template > Template für einen Sensor.In diesem soll das Zieldatum stehen. Dies errechnet sich aus dem Startdatum + Wochen. Leider finde ich keine Lösung die funktioniert.

Hat jemand von Euch einen Tipp für ein passendes Template?

VG

Dein Stichwort lautet timedelta

Ja, verschiedene Snippets mit timedelta(days=7) habe ich auch zwischenzeitlich in den Fingern gehabt. Wenn ich fertige Codes kopiere, steht dort nur ein “Unbekannt” als Datum - und ja, mein “input_datetime.startdatum” habe ich auch angepasst. Keine Chance… :-/

{{ strptime(states('input_datetime.startdatum'), '%Y-%m-%d') + timedelta(days=5) }} 
Ausgabe: Unbekannt

{{ states('input_datetime.startdatum') }} 
> Ausgabe: eingestelltes Datum

{{ strptime(states('input_datetime.startdatum'), '%Y-%m-%d') }} 
> Ausgabe:  Unbekannt

Das hast du so in deinen Entwicklerwerkzeugen getestet?

Wenn das unbekannt ist, stimmt der Helfer nicht

Geht das?

{{ as_timestamp(strptime(states('input_datetime.startdatum'), '%Y-%m-%d %H:%M:%S') + timedelta(days=7)) | timestamp_custom('%Y-%m-%d') }}

Ich hatte es im Template getestet, da ich die Entwicklerwerkzeuge/Template nicht kannte - praktisch. :smiley:

Also, wie beschrieben, der Teil geht:

{{ states('input_datetime.startdatum') }}

Ausgabe: 2024-11-05 (Das korrekte Datum des Helfers)

Aber der zweite Teil funktioniert nicht, siehe Fehlermeldung am Ende - irgendein Default-Wert scheint zu fehlen:

{{ as_timestamp(strptime(states('input_datetime.startdatum'), '%Y-%m-%d %H:%M:%S') + timedelta(days=7)) | timestamp_custom('%Y-%m-%d') }}

Ausgabe: ValueError: Template error: strptime got invalid input ‘2024-11-05’ when rendering template ‘{{ as_timestamp(strptime(states(‘input_datetime.startdatum’), ‘%Y-%m-%d %H:%M:%S’) + timedelta(days=7)) | timestamp_custom(’%Y-%m-%d’) }}’ but no default was specified

Ich habe es aber mit einer kleinen Anpassung (Zeit aus dem Format entfernt) und Deinem Codeschnippsel lösen können:

{% set wochen = states('input_number.wochen') | int %}
{% set tage = wochen * 7 | int %}
{{ as_timestamp(strptime(states('input_datetime.startdatum'), '%Y-%m-%d') + timedelta(days=tage)) | timestamp_custom('%Y-%m-%d') }}

Ps: Gibts noch eine Möglichkeit das Datum anzupassen? Wenn ich beim timestamp_custom(‘%d.%m.%Y’) eingebe, funktioniert es im Template-Editor, aber beim Helfer steht dann “Unbekannt”. Mit dem englischen Format funktioniert es einwandfrei.

Vielen Dank für Deine Hilfe!