Zeit richtig auslesen

Hallo Zusammen,

ich habe ein kleines Problem und finde momentan noch keine richtige lösung…

Undzwar habe ich mir einen Countdown aus dem Internet gezogen, siehe Code:

  - trigger:
      - platform: time_pattern
        Minute: '/1'
    sensor: 
      - name: Countdown_1
        state: >
          {% set end = state_attr('timer.timer_1', 'finishes_at') %}
          {% if end is not none %}
            {{ end | as_datetime - now().replace(microsecond=0) }}
          {% else %}
            No Timer
          {% endif %}

dieser gibt mir jedoch die Zeit in HH:MM:SS aus. Ich würde aber gerne nur die Minuten auslesen. Nach langer Zeit auf der suche nach der richtigen Lösung bin ich leider auf keinen grünen Zweig gekommen. Hat jemand eventuell eine Idee wie ich das hin bekomme?

Gruß Its137

schon gelesen?

ansonsten vielleicht mal mit
{{ end | as_datetime | timestamp_custom (“%M”) }}
weiss gar nicht ob man ds as_datetime nochmals braucht ist ja schon in deinem Template.

Ja hatte ich schon gelesen, bin aber daraus nicht schlauer geworden.

Dein vorschlag hat leider auch nicht so ganz geholfen.

Ich will ja eigenltich nur die entität Countdown_1 Auslesen und dabei nur auf die Minuten schauen bzw. die Minuten ausgeben. Gibt es da nicht evtl. einen Befehl?

Stimmt … mein Fehler.

Mit Zeiten arbeite ich auch immer ungern.
Hab aber einen lustigen Weg gefunden wie man es machen könnte, aber das ist schon sehr böse hingrfrickelt, was aber zeigt, es geht immer alles auch wenn es so nicht sinnvoll ist.
(copy & paste in Entwicklerwerkzeuge>Template)

{% set t = state_attr('timer.timer_1', 'finishes_at') | as_datetime - now().replace(microsecond=0) %}
datetime Wert: {{t}},  da er nicht scriptable ist machen wir einen String draus
{% set s = t | string %}
String       : {{ s }} und davon behalten wir die 2 in der Mitte
{% set x = s[-5:-3] %}
Substring    : {{ x }}
1 „Gefällt mir“

Danke dir dafür! Ich glaub ich wäre nie auf so eine Lösung gekommen. Kannst du mich eventuell noch aufklären was die [-5:-3] auf sich hat?

der nimmt die letzten 5 Stellen vom HH:MM:SS String also MM:SS und dann schnippelt er davon :SS ab, übrig bleiben die Minuten :slight_smile:

Wenn du das in Entwicklerwerkzeuge>Template reinkopierst bekommst du ja angezeigt was passiert, und kannst die Zahlen dort ändern, dann siehst du was da passiert.
Wenn du das Ergebnis als Zahl und nicht als String brauchst musst du am Ende halt {% set x = s[-5:-3] | int %}
benutzen, dann bekommst du bei 1-stelligen Minuten halt auch nur 1,2,3, … und nicht 01,02,03, …

1 „Gefällt mir“

Super alles klar danke dir! :grinning:

Du musst natürlich dran denken das das ein Fake ist.
Sprich
00:10:11 ergibt 10
01:10:11 ergibt aber auch 10 und nicht 70

Das ist also nur eine Lösung wenn du dir sicher bist das es nur um Minuten geht, also < 61 Min.

Hat mich jetzt aber selbst mal interessiert, wie ich das hinbekomme obwohl ich mich ja selten mit Zeiten beschäftige.

Folgendes sollte die bessere Lösung sein:

{{ ((state_attr('timer.timer_1','finishes_at') | as_datetime - now()).total_seconds() // 60) | int }}

Erklärung:
Du nimmst die Differenz vom Timer und now() in Sekunden und weil du Minuten willst halt “// 60” also Ganzzahliges Teilen, und weil er dir dann immer noch die Minuten in xxx.0 anzeigt alles in eine Klammer mit einem " | int" damit es ne Ganzzahl wird.

1 „Gefällt mir“