Subtraktion zweier Zeitvariablen

Hintergrund:
Ich setze in einer Automatisierung einen Helfer zu Anfang auf Now()+2Std 45Min. Im weiteren Verlauf soll die Differenz zwischen dem dann gültigen now() und dem Helfer ausgegeben werden.

So habe ich das im Template-Editor getestet:

Template-Editor

{% set b = now() + timedelta(hours=2, minutes=45) %}
b = {{ b }}

{% set a = (now() ) %}
a = {{ a }}


( Template Helfer „sm_gestartet“ ( = now() ) )

{% set f = states(‘sensor.sm_gestartet’) %}
f = {{ f }}


{% set c = b - a %}
c = {{ c }}

{{ c.total_seconds() % 86400 // 3600 }} Stunden
{{ c.total_seconds() % 3600 // 60 }} Minuten,

Ausgabe:

b = 2024-11-03 18:23:00.447487+01:00
a = 2024-11-03 15:38:00.447629+01:00
f = 2024-11-03 15:38:00.443675+01:00

c = 2:44:59.999698

2.0 Stunden
44.0 Minuten,

Problem:
Wenn ich nun in der obigen Subtraktion das „a“ durch „f“ ersetze, erhalte ich folgenden Fehler:

TypeError: unsupported operand type(s) for -: ‘datetime.datetime’ and ‘str’

Ich hatte den Helfer auch schon als „input-datetime“ definiert, aber das hat nichts gebracht.

Was muss ich tun, damit das funktioniert?

Ich habe das Problem nun selber lösen können. Nachdem ich verstanden habe, dass der Rückgabewert bei „stares“ immer ein String ist, habe ich versucht, diesen wert mit „strptime“ in ein dateien-Objekt umzuwandeln.
Das hat aber erst geklappt, nachdem ich ich vor das Zeitzonen + ein „blank“ gesetzt habe,

So sieht das jetzt aus:

{% set b = now() + timedelta(hours=2, minutes=45) %}
b = {{ b }}
{% set f = states('sensor.sm_gestartet')  %} 
f = {{ f }}  
{% set f = f.replace("+", " +") %}
f= {{  f }}
{% set g = strptime(f, "%Y-%m-%d %H:%M:%S.%f %z") %}
g = {{ g }}

{% set c = b - g %}
c = {{ c }}

{{ c.total_seconds() % 86400 // 3600 }} Stunden
{{ c.total_seconds() % 3600 // 60 }} Minuten,
**Ausgabe**:

b = 2024-11-05 13:24:46.387214+01:00
 
f = 2024-11-05 10:39:00.444142+01:00             ……….  # string

f= 2024-11-05 10:39:00.444142 +01:00              ……….  # hier mit „blank“

g = 2024-11-05 10:39:00.444142+01:00          ……… # datetime

c = 2:45:45.943072

2.0 Stunden
45.0 Minuten,

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)