Moin Gemeinde
jedes mobile Device zeigt dem User die verbleibende Akku-Laufzeit an, das wollte ich auch haben für den Anker Solix Akku.
Das Netz bietet ja so einiges. Na ja, ein echter Programmierer bin ich nicht, daher orientierte ich mich an diesem Beispiel, aber irgendwie fand ich das Ergebnis sub-optimal und etwas zu komliziert.
Im Endeffekt habe ich es für die Anker Solix Batterien nicht nur umgeschrieben, (denn ich habe teils immer negative Laufzeiten der restlichen Akku-Laufzeit erhalten, teils Tage in die Vergangenheit), sondern auch so modifiziert, das hoffentlich jemand auch damit etwas anfangen kann.
Benötigt werden:
- Anker Solix Integration
- die darin enthaltenen Sensoren Akku Leistung, Akku Energie und Ladestand sowie
- drei neu anzulegende Template-Sensoren als Helfer
Grundlegend kann man sagen, das ich der folgende Formel folge:
Ladestand / 10 * Akku Energie durch Ausgangsleistung
Sensor 1: (Dieser macht die eigentliche Berechnung)
Name: Verbleibende Laufzeit Batterie raw
Masseinheit: h (Stunden)
Geräteklasse: Dauer
Yaml Code:
{% set ladestand = (float(states('sensor.solarbank_2_e1600_pro_ladestand'))) %}
{% set akku_energie = (float(states('sensor.solarbank_2_e1600_pro_akkuenergie'))) %}
{% set ausgangsleistung = (float(states('sensor.solarbank_2_e1600_pro_dc_ausgangsleistung'))) %}
{% if ladestand == 0 %}
{% set runtime = 0 %}
{% else %}
{% set runtime = ladestand/10 * akku_energie / ausgangsleistung %}
{% endif %}
{{ runtime }}
Sensor 2:
Name: Verbleibende Laufzeit Batterie (Ausgabe in hh:mm)
Masseinheit: nichts angeben
Geräteklasse: nichts angeben
Yaml Code:
{% set runtime = states('sensor.anker_solix_verbleibende_laufzeit_batterie_raw') %}
{% set hours = runtime | float %}
{% set minutes = ((hours % 1) * 60) | int %}
{% set hours = (hours - (hours % 1)) | int %}
{{'%02i Std. : %02i Min.'%(hours, minutes) }}
Sensor 3:
Name: Anker Solix Batterie leer um (Ausgabe als Tag und Uhrzeit)
Masseinheit: nichts angeben
Geräteklasse: nichts angeben
Yaml Code:
{% set runtime = states('sensor.anker_solix_verbleibende_laufzeit_batterie_raw') %}
{% set hours = runtime | float %}
{% set minutes = ((hours % 1) * 60) | int %}
{% set hours = (hours - (hours % 1)) | int %}
{% set empty_at = now() + timedelta(hours = hours, minutes = minutes) %}
{{ empty_at.strftime('%A %d %B %H:%M') }}
Ergebnis ist das so was in der Art:
Funktioniert ganz gut, ich habe aber keine Lösung für die englischen Angaben in Tagen, evtl. könnte mir da jemand einen Tipp geben, aus “Sunday” “Sonntag” und aus “May” “Mai” zu machen. Muss ich echt alle Tage und alle Monate “replacen” gegen deutsche Worte?
Gruß
Marcus
