Differenz von einer Zeit zur aktuellen Zeit

Guten Tag,

ich bin noch relativ neu bei HomeAssistant, aber ich versuche aktuell eine Differenz von zwei Zeiten zu berechnen und erhalte dort immer einen falschen Wert.
Wir haben eine smarte Steckdose (Tapo P100) an unserem Staubsauger, welche bei Einschaltung sich nach zwei Stunden automatisch ausschaltet, damit der Staubsauger nicht dauerhaft “am Strom hängt”.

Ich habe nun auch schon im Dashboard eine Bubble-Karte erstellt, welche beim Einschalten der Steckdose mir die Ausschaltzeit anzeigt aus der Entität “sensor.staubsauger_automatische_abschaltung_bei”. Das funktioniert soweit auch problemlos:
2

Jetzt wird allerdings immer das Datum mit Uhrzeit angezeigt.
Ich würde dort gerne einfach nur die verbleibende Zeit anzeigen lassen. Dafür habe ich im Internet schon verschiedene Wege gefunden und diesen aktuell verwendet:

  - sensor:
    # Zeitspanne 
      - name: "Zeit TEST1"
        unique_id: "ZeitTEST1"
        state: |
          {{ (as_timestamp(now()) - as_timestamp(states('sensor.staubsauger_automatische_abschaltung_bei')))|timestamp_custom("%H:%M") }}

Das Problem ist, dass der Wert mir aber 23:00 anzeigt:

Normalerweise sollte dort in meinen Augen 02:00 stehen, für die 2 Stunden Laufzeit und dann jede Minute weiter runter laufen.

Muss ich dort noch etwas umrechnen?

Viele Grüße
Tobias

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

Moin,
hast du HACS installiert?
Wenn ja, guck dir mal die Templates Easy Time(github) oder Relative Time Plus (github) an.

LG
Tobi

Weil die Abschaltzeit in der Zukunft liegt.

Einfache Gegenprobe im Template-Editor:


{{ now() - today_at('19:11:21') }}

@totow: Ja, hab ich installiert. Ich habe mir die beiden Sachen gerade einmal angeschaut, aber ehrlicherweise nicht direkt verstanden :smiley:

@anon76678013: Ja, das mit der Zukunft könnte ein Grund sein. Die Gegenprobe hab ich nicht durchgeführt, da ich es nun anders gelöst habe.

Ich habe mir das Datum nun entfernt und über die Bubble Karte noch einen Text hinzugefügt mit “Abschaltung um Uhrzeit”.
Eine ablaufende Zeit wäre zwar schöner, aber das ist auch erstmal in Ordnung.

  - sensor:
    # Staubsauger Ausschalten Uhrzeit ohne Datum
      - name: "Staubsauger Ausschalten Uhrzeit"
        unique_id: "StaubsaugerAusschaltenUhrzeit"
        state: >
          {{ as_timestamp(states('sensor.staubsauger_automatische_abschaltung_bei'))|timestamp_custom("%H:%M") }}

Es fehlt lediglich eine Bedingung:

        state: |
          {%- set diff = ( as_timestamp(states('sensor.staubsauger_automatische_abschaltung_bei'), 0) - as_timestamp(now()) ) %}
          {%- set zeit = diff|timestamp_custom('%H:%M', False) %}
          {{ zeit if diff > 0 else '-' }}

Die eingefügte 0 in der diff-Variable setzt einen Default für den Fall, dass dein Sensor zu unknown wechselt.

Das False setzt die MEZ.

1 „Gefällt mir“

@anon76678013 Ganz vielen Dank für das Erstellen des Skript und die Erklärung der einzelnen Werte!
Das Skript hat sofort fehlerfrei funktioniert und zeigt mir nun genau den gewünschten Wert an:

Das Thema kann geschlossen werden.