Frage zum Rechnen in Homeassistant

Hallo zusammen,
ich bekomme es einfach nicht hin. Ich habe eine Uhrzeitvariable ( sensor.time in hh:mm ) und eine Variable die mit die Restlaufzeit meines Hausakkus berechnet ( sensor.akku_restlaufzeit in hh:mm ). Nun möchte ich wissen bis zu welcher Uhrzeit mein Akku noch Strom liefert bis er leer ist. Ich bekomme die berechnung aber nicht hin. Ich hoffe Ihr könnt mir dabei helfen.

Danke

{#
- Wandelt beide Zeiten in Sekunden
- Addiert dann beide Zeiten
- Wandelt Sekunden wieder in Uhrzeit
#}

{% set now_time = states('sensor.time') %}
{% set akku_rest = states('sensor.akku_restlaufzeit') %}
{% set invalide_stati = ['unknown', 'unavailable', 'none'] %}

{% if now_time | lower not in invalide_stati and akku_rest | lower not in invalide_stati %}
  {% set now = now_time.split(':') | map('int') | list %}
  {% set akku = akku_rest.split(':') | map('int') | list %}

  {% set now_seconds = (now[0] * 3600) + (now[1] * 60) %}
  {% set akku_seconds = (akku[0] * 3600) + (akku[1] * 60) %}

  {% set end_seconds = now_seconds + akku_seconds %}
  {% set end_hour = (end_seconds // 3600) % 24 %}
  {% set end_minute = (end_seconds % 3600) // 60 %}

  {{ '%02d:%02d' | format(end_hour, end_minute) }}
{% else %}
  Fehler wahrscheinlich durch invaliden Stati
{% endif %}

EDIT:
Habe die invaliden Stati noch etwas robuster gemacht.

1 „Gefällt mir“

Super Danke.So wäre ich da nie drauf gekommen.
Und wenn ich die Uhrzeit haben will wann der Akku voll ist… Tausche ich die Variable “sensor.akku_restlaufzeit” gegen “sensor.akku_restladezeit” ??

Das wäre dann absolut Perfekt.

Vermutlich kaum einer, der sich nich sowas oder ähnliches mal angeschaut hat. Bookmarke es dir am besten mal.

Nicht nur für Dinge die mit Zeiten zu tun haben. Das ist als Referenz ganz brauchbar wenn man mal nicht weiter weiss.

Ja, wenn ein Sensoren keine Uhrzeit zurückgibt sondern eine noch verbleibende Zeit in hh:min. Beide Zeiten werden in Sekunden heruntergebrochen und addiert und zurück in eine Uhrzeit.

PS: Zeitberechnungen können unterschiedlich vorgenommen werden und es kann tricky sein. Ich gehe meistens Fehlern aus dem Weg, indem ich vorher immer in Sekunden umrechne. Vielleicht findet sich hier noch jemand im Forum, der es Dir auch einfacher zeigt.

Das hört sich gut an. Wie sieht denn das aus wenn abend der Akku anspringt und die Restlaufzeit ein Wert von 06:00 Uhr morgens rausbringten würde . Berechnet das script das auch??
Alternativ sehe ich es ja heute Abend :slightly_smiling_face:

Gruß

Spiel doch einfach die Szenarien durch:

EDIT:
Hier der obige Code angepaßt um (heute) oder (morgen) nach der Uhrzeit. Da siehst Du wie flexibel Du mit Templatecode sein kannst.

{#
- Wandelt beide Zeiten in Sekunden
- Addiert dann beide Zeiten
- Wandelt Sekunden wieder in Uhrzeit
- Falls die neue Uhrzeit am nächsten Tag liegt, wird "(morgen)" hinzugefügt
#}

{% set now_time = states('sensor.time') %}
{% set akku_rest = states('sensor.akku_restlaufzeit') %}
{% set invalide_stati = ['unknown', 'unavailable', 'none'] %}

{% if now_time | lower not in invalide_stati and akku_rest | lower not in invalide_stati %}
  {% set now = now_time.split(':') | map('int') | list %}
  {% set akku = akku_rest.split(':') | map('int') | list %}

  {% set now_seconds = (now[0] * 3600) + (now[1] * 60) %}
  {% set akku_seconds = (akku[0] * 3600) + (akku[1] * 60) %}

  {% set end_seconds = now_seconds + akku_seconds %}
  {% set end_hour = (end_seconds // 3600) %}
  {% set end_minute = (end_seconds % 3600) // 60 %}

  {# Falls die Stunden über 24 gehen, ist es morgen #}
  {% if end_hour >= 24 %}
    {% set end_hour = end_hour % 24 %}
    {{ '%02d:%02d (morgen)' | format(end_hour, end_minute) }}
  {% else %}
    {{ '%02d:%02d (heute)' | format(end_hour, end_minute) }}
  {% endif %}
{% else %}
  Fehler wahrscheinlich durch invaliden Stati
{% endif %}

image

Das ist schon sehr flexibel. Aber ich muss zugeben, das ich fürs Templating einfach nicht gemacht bin . Das will in meinen Schädel nicht so richtig rein. Bitte seid nachsichtig mit mir.
Daher bin ich Dir ( euch ) echt dankbar für die extrem gute Hilfe .
Gruß
markro76

Gib Dir Zeit und gehe in Deinem Tempo und vorallem genieße Deine Reise.
Ich hatte anfangs auch von nix Template Ahnung und heute möchte ich nicht mehr ohne.