Guten Tag zusammen,
ich hätte mal eine Frage an schlaue Köpfe 
Ich versuche aktuell die Restlade oder Entlade Zeit meines PV Speichers zu berechnen. Dabei scheint die Entladezeit bereits recht genau dargestellt zu werden.
Jedoch die Ladezeit ist total daneben, z.Zt. ca 5 Stunden bei 1% verbleibend und 1kwh Ladeleistung.
Hat da jemand evtl. einen Ansatz was da schief läuft?
- platform: template
sensors:
speicher_lade_entlade_zeit:
friendly_name: "Speicher Restlade/Entlade Zeit in Stunden"
value_template: >
{% set battery_level = states('sensor.battery_level') %}
{% set battery_current = states('sensor.battery_current') %}
{% set charging_power = states('sensor.battery_charging_power') | float %}
{% set discharging_power = states('sensor.battery_discharging_power') | float %}
{% if battery_level is not none and battery_current is not none and battery_level | float != 0 and battery_current | float != 0 %}
{% set result = 12.8 * 1000 / (float(states('sensor.battery_voltage'))) * ((battery_level | float / 100) / (battery_current | float)) * 1.30 %}
{% set total_minutes = (result * 60) | round(0) %}
{% set hours = total_minutes // 60 %}
{% set minutes = total_minutes % 60 %}
{% if charging_power > 0 %}
{{ '%02d:%02d Stunden (Laden)' | format(hours, minutes) }}
{% elif discharging_power > 0 %}
{{ '%02d:%02d Stunden (Entladen)' | format(hours, minutes) }}
{% else %}
{{ '%02d:%02d Stunden (Neutral)' | format(hours, minutes) }}
{% endif %}
{% else %}
Unbekannt
{% endif %}
Danke,
Gruß
Tom
Habe es selbst hin bekommen.
Danke, falls sich jemand damit beschäftigt hat.
Im Grunde war es nur ein Vorzeichen Fehler, aber ich habe den Code auch gleich etwas leserlicher gemacht.
Falls es Interessiert, hier der funktionierende Code:
# ------- Berechnung Restlade und Entladezeit begin -------
- platform: template
sensors:
speicher_lade_entlade_zeit:
friendly_name: "Speicher Restlade/Entlade Zeit"
value_template: >
{% set battery_level = states('sensor.battery_level') | float %}
{% set battery_current = states('sensor.battery_current') | float %}
{% set battery_voltage = states('sensor.battery_voltage') | float %}
{% set charging_power = states('sensor.battery_charging_power') | float %}
{% set discharging_power = states('sensor.battery_discharging_power') | float %}
{% set k = 1.30 %}
{% if battery_level is none or battery_current is none or battery_voltage is none %}
{% set message = 'Keine Daten verfügbar' %}
{% elif battery_level != 0 and battery_current != 0 and battery_voltage != 0 %}
{% set battery_capacity_coulomb = ((12.8 * 1000) / battery_voltage) * 3600 %} {# Kapazität in Coulomb basierend auf 12.8 kWh und der Batteriespannung #}
{% if charging_power > 0 %}
{% set remaining_capacity_coulomb = battery_capacity_coulomb * (1 - battery_level / 100) %}
{% elif discharging_power > 0 %}
{% set remaining_capacity_coulomb = battery_capacity_coulomb * (battery_level / 100) %}
{% endif %}
{% set t_seconds = (remaining_capacity_coulomb / battery_current) * k %}
{% set total_minutes = (t_seconds / 60) | round(0) %}
{% set hours = total_minutes // 60 %}
{% set minutes = total_minutes % 60 %}
{% if charging_power > 0 %}
{% set message = '%02d:%02d Stunden (Laden)' | format(hours, minutes) %}
{% elif discharging_power > 0 %}
{% set message = '%02d:%02d Stunden (Entladen)' | format(hours, minutes) %}
{% else %}
{% set message = '%02d:%02d Stunden (Neutral)' | format(hours, minutes) %}
{% endif %}
{% else %}
{% set message = 'Ladung erhalten' %}
{% endif %}
{{ message }}
# ------- Berechnung Restlade und Entladezeit end -------
Danke,
Gruß
Tom
Und so kann das dann aussehen:

1 „Gefällt mir“