EPF2 Pro mit Wechselakku: Wie kann man beim Aufladen ohne Scooter den Akkustand anzeigen lassen?

Solch einen Multimeter habe ich
Das ist gut geeignet und hat passend dünne Prüfspitzen. Aber am besten den Anschluss "10A" (links) mit einem Stück Tesa überkleben, solange Du ihn nicht brauchst. Grund: Wenn man die Strommessung unabsichtlich anschließt ist das problematisch. Falls Du da noch Fragen hast gib bescheid. :-)
 
Das ist gut geeignet und hat passend dünne Prüfspitzen. Aber am besten den Anschluss "10A" (links) mit einem Stück Tesa überkleben, solange Du ihn nicht brauchst. Grund: Wenn man die Strommessung unabsichtlich anschließt ist das problematisch. Falls Du da noch Fragen hast gib bescheid. :-)
Hallo NovaVecto,

ich danke Dir, es ist gelungen. Soebend habe ich mit dem Multimeter erst einen Test an einer 1,5 Volt Batterie, und dann am EPF- 2 Pro Wechselakku (653 W) getestet.
Es wurden 049,6 V angezeigt.
Am 08.01.2026 wurde der Akkustand direkt am EPF- 2 Pro mit 49,7 V angezeigt.

Sehr schön, so brauche ich keinen 5 Stockwerke Sport, um den Akkustand zu Testen, mehr machen.
DANKE!!!

Beste Grüße, Helmut

20260116_223335.jpg

20260108_174720.jpg
 
Der sollte ausgebaut, in der Wohnung, nahezu keinen Spannungsabfall haben.
Monatlich kontrollieren schadet aber nicht.
 
Ich hab jetzt mit ki Erfahrung einer Ikea Grillplats Steckdose für 8€ und Home Assistent für mich eine einfache Akku information gebaut.

Da du im dem Bereich auch schon viel gemacht hattest @NovaVecto würde gerne deine Meinung dazu hören.

Yaml Dateien geb ich gerne auch wenn benötigt hier mit, aber nur wenn Interesse besteht.
 
Ah, sehr schön :-) ... Ja, da geht einiges. Hast Du Dir schon ein paar Automatisierungen dazu gebaut? Ich hab meine Laderegelung (die ihn mir grob von ~30% wieder auf 70 hochlädt ja im shelly direkt implementiert, das geht aber natürlich auch problemlos in HA, da ist es sogar etwas flexibler.

Ich hab mittlerweile auch ein automatisches Zuschalten gebaut, dass mir das Laden auslöst, wenn die Klein-PV einen gewissen Überschuss hat, dann lass ich den 2. Akku einfach am Ladegerät, und wenn am Hausanschluss eine gewisse Einspeisung für eine gewisse Zeit überschritten wird, aktiviert er das Laden.

Bei mir sieht das so aus, hab beim Scooter noch nicht viel an der Optik gemacht:
Screenshot_20260511_083040.png
Falls Du nach Bedingungen suchst, die Dir das eigentliche Ladeende beim Vollladen erkennt:
Wenn Ladeleistung seit dem letzten Zuschalten zustande kam (z.B. >100W, kannst Du Dir in einem Merker speichern) UND die Leistung <10W wird, dann Benachrichtigung

Ich mach sowas meist über ein paar Helfer, in denen dann die entsprechenden Zustände und Werte gespeichert werden, hier zur Veranschaulichung wie ich es bei der Waschmaschine mache (da will ich erkennen, ob sie läuft und wenn sie fertig ist bekomm ich eine Notification aufs Handy, rein anhand der Leistung, ist also ähnlich wie beim Scooter-Ladegerät):

Screenshot_20260511_084755.png

Screenshot_20260511_084718.png

Screenshot_20260511_084846.png

Screenshot_20260511_084923.png

In dem Fall: Wenn die Waschmaschine an ist, und für zwei Minuten die Leistung unter 10W ist, weiß ich, dass sie fertig ist. Ich nehme den Shelly in dem Fall nur zum messen, nicht zum Schalten.

Mit der GRILLPLATS müsste sich das auch genauso machen lassen, die schickt Dir ja auch ihre gemessene Leistung
 
Ja die Grillplats senden auch noch deutlich andere Daten, ich habe anhand der kWh und der Watt mehre Werte eingestellt, kWh für den aktuellen Vorgang, kosten aktuellen Vorgang, gelade Kilometer also von 0 bis 100 = 50 km hab einfach pauschal 12,6 wh für meinen Scooter festgelegt. Dann über die Watt Zahl die ungefähre Akkuspannung/Reichweite und dynamische Reichweite zieht ein bisschen ab je nach geschätzter Akku Spannung und zählt mit den Kilometer die geladen werden hoch.

Abschaltung hab ich nur wenn unter 10 Watt Steckdose aus, da das epowerfun Netzteils immer 3 Watt im Leerlauf braucht.

Screenshot_2026-05-11-08-58-49-814_io.homeassistant.companion.android.jpg
 
Hier sind die Skripte, die ich verwende. Ich gebe keine Garantie, dass sie bei euch so funktionieren. Sie sollen der Transparenz und dem Austausch dienen.

configuration.yaml
YAML:
template:
  - sensor:
      # 1. Sensor für die geladenen Kilometer (basierend auf 12,6 Wh/km)
      - name: "Scooter Geladene Kilometer"
        unique_id: scooter_km_session
        unit_of_measurement: "km"
        device_class: distance
        state_class: measurement
        state: >
          {# Berechnung: kWh * 79.36 (entspricht 12.6 Wh/km) #}
          {{ (states('sensor.e_scooter1_scooter_energy_session') | float(0) * 79.36) | round(2) }}
        attributes:
          wh_per_km: 12.6
          calculation_factor: 79.36

      # 2. Sensor für die Ladekosten (mit festen 2 Nachkommastellen)
      - name: "Scooter Ladekosten"
        unique_id: scooter_cost_session
        unit_of_measurement: "€"
        device_class: monetary
        state: >
          {# Preis: 0.39 € pro kWh | Formatierung auf 2 Stellen #}
          {% set cost = states('sensor.e_scooter1_scooter_energy_session') | float(0) * 0.39 %}
          {{ "{:.2f}".format(cost) }}

  - sensor:
      - name: "Scooter Aktuelle Reichweite (geschätzt)"
        unique_id: scooter_range_estimated
        unit_of_measurement: "km"
        device_class: distance
        state: >
          {% set voltage = states('sensor.scooter_akku_spannung_geschatzt') | float(0) %}
          {% if voltage > 39.9 %}
            {# Berechnung: (Aktuelle Volt - Leer Volt) * (Gesamt-km / Spannungs-Differenz) #}
            {# (voltage - 39.9) * (50 / 14.5) #}
            {{ ((voltage - 39.9) * 3.448) | round(1) }}
          {% else %}
            0
          {% endif %}
        attributes:
          full_range_ref: 50
          empty_voltage_ref: 39.9
  - sensor:
      - name: "Scooter Akku Spannung (geschätzt)"
        unique_id: scooter_voltage_estimated
        unit_of_measurement: "V"
        device_class: voltage
        state: >
          {% set watt = states('sensor.grillplats_plug_leistung_3') | float(0) %}

          {% if watt > 130 %}
            {# CC-Phase: Akku wird geladen, Spannung steigt mit den Watt #}
            {{ (watt * 0.2957) | round(1) }}
          {% elif watt > 10 and watt <= 130 %}
            {# CV-Phase: Watt sinken am Ende -> Fest auf 54,4V setzen #}
            54.4
          {% else %}
            {# Aus oder Standby #}
            0
          {% endif %}


  # 1. DER SPEICHER: Merkt sich den Stand beim Einstecken
  - trigger:
      - platform: numeric_state
        entity_id: sensor.grillplats_plug_leistung_3
        above: 10
        for: "00:01:00"  # 1 Minute Stabilitäts-Puffer
    sensor:
      - name: "Scooter Start Reichweite Fix"
        unique_id: scooter_start_range_fix
        unit_of_measurement: "km"
        state: >
          {# Die Spannung ist nach 1 Minute Laden extrem stabil #}
          {% set v_now = states('sensor.scooter_akku_spannung_geschatzt') | float(39.9) %}

          {# Ladedruck-Kompensation (Netzteil hebt Spannung künstlich an) #}
          {% set v_start = v_now - 1.2 %} {# Bei 1 Min evtl. 1.2V statt 1.0V, da Akku schon leicht steigt #}

          {{ ((v_start - 39.9) * 3.57) | round(2) }}

  # 2. DIE LIVE-ANZEIGE: Rechnet Startwert + Zuwachs
  - sensor:
      - name: "Scooter Dynamische Gesamt-Reichweite"
        unique_id: scooter_total_range_dynamic
        unit_of_measurement: "km"
        device_class: distance
        state: >
          {% set start_km = states('sensor.scooter_start_reichweite_fix') | float(0) %}
          {% set geladen_km = states('sensor.scooter_geladene_kilometer') | float(0) %}
          {% set gesamt = (start_km + geladen_km) | round(1) %}

          {# Begrenzung auf 51.8 km #}
          {% if gesamt > 51.8 %} 51.8
          {% else %} {{ gesamt }}
          {% endif %}

Automation: Scooter Abschaltung wenn voll
YAML:
alias: Scooter Abschaltung wenn voll
description: Schaltet den IKEA Stecker aus, wenn die Ladeleistung unter 5W sinkt
triggers:
  - entity_id:
      - sensor.grillplats_plug_leistung_3
    below: 5
    for:
      hours: 0
      minutes: 10
      seconds: 0
    trigger: numeric_state
conditions:
  - condition: state
    entity_id: switch.grillplats_plug_3
    state:
      - "on"
actions:
  - target:
      entity_id: switch.grillplats_plug_3
    action: switch.turn_off
    data: {}
    enabled: true
  - action: notify.mobile_app_23122pcd1g
    metadata: {}
    data:
      title: Scooter voll geladen
      message: Der Ladevorgang ist beendet. Der Stecker wurde ausgeschaltet.
mode: single

Automation:
YAML:
alias: Scooter Lade-Reset beim Einstecken
description: Setzt den Kilometer- und Kostenzähler auf Null, wenn der Ladevorgang startet
triggers:
  - entity_id:
      - sensor.grillplats_plug_leistung_3
    above: 10
    trigger: numeric_state
conditions: []
actions:
  - target:
      entity_id: sensor.e_scooter1_scooter_energy_session
    action: utility_meter.reset
    data: {}
mode: single

Helfer:
Verbrauchzähler: Scooter Energy Session
 
Danke für das Teilen von dem Repo, cool! :-)

Hab grade gesehen, dass Du da auch eine Ladezustands-Schätzung über die rechnerische Spannung mit reingemacht hast :-) ... Hatte da vor kurzem selber was dazu gepostet, siehe hier.

Falls das fluktuieren sollte bzw. zu ungenau ist, könntest Du das mit meiner Methodik zusammenführen (ich habe die OCV-Tabelle gegen den ungefähren IU-Übergang referenziert, und durch den Ableitungssensor mit 1-Minute-Fenster werden einzelne Ausreißer bereinigt).
 
Ich habe nur den Akku von ganz leer ganz voll geladen und die Watt Verkaufskurve durch Google Gemini gejagt. Und deine epf2 pro Spannung vs Ladestand Tabelle als Referenz der ki mitgegeben. Ich finde das die Messung sehr sehr genau sind. Wie das Technisch im Hintergrund umgesetzt wird kann ich dir nicht genau erklären die Idee war nur das mit der Volt Zahl im Akku auch die Watt Zahl steigt in der Phase vor dem Balance.
 
Ich denke du meinst ab ca 90% ja ab dem Zeitpunkt springt meiner sofort auf 98,8 oder so, mich stört das nicht persönlich deine Methode kann dann von 90% bis ca 100% genauer anzeigen?
 
deine Methode kann dann von 90% bis ca 100% genauer anzeigen?
Meine Methode kompensiert die Ladeleistung (d.h. um wie viel die Spannung potentiell höher ist während dem Laden) und kann Dir die vollen 0...100% anzeigen. Ich habs mal in deine configuration.yml eingefügt und Dir einen Pull-Request erstellt falls Du es ausprobieren magst :-)
 
Meine Methode kompensiert die Ladeleistung (d.h. um wie viel die Spannung potentiell höher ist während dem Laden) und kann Dir die vollen 0...100% anzeigen. Ich habs mal in deine configuration.yml eingefügt und Dir einen Pull-Request erstellt falls Du es ausprobieren magst :-)
Kann man zu den % auch die Akkuspannung Auslesen? Darauf berechnend berechne ich die noch vorhande Reichweite.
 
Ich hab aus meiner App mal eine vereinfachte Reichweitenformel entnommen (den Temperatur-Faktor) und Dir damit einen Pull-Request erstellt, die Rechnung nutzt dabei den SoC anstatt der geschätzten Spannung

Du kannst ihm dabei eine Entity für die Außentemperatur geben (such nach "sensor.trag_hier_einen_aussentemperatursensor_ein_z_b_wettervorhersage_oder_dwd_oder_wetterstation_usw", da muss es hin), das kann eine Wetterstation sein, Wettervorhersage, dwd, etc. ... Wenn Du nix angibst geht es trotzdem.

Dann trägst Du ihm Deine geschätzte 25°-Reichweite in das neue input-feld ein (z.B. 55 km wenn Du weißt dass du bei 20° auf 50 kommst und bei 8° auf 40, etc., kannst rumspielen dran, die Ableitung über den Faktor ist _einigermaßen_ verlässlich)

Daraus machts dann den neuen Template Sensor "Scooter Referenz-Reichweite aktuell" - da drin steht welche mögliche Reichweite Du bei der aktuellen Temperatur hast.

Das zusammen mit dem Ladezustand wird dann zur Reichweitenberechnung genutzt.

z.B. wie das bei meinem neuen pull request laufen sollte (habs aus meiner eigenen config transplantiert und nicht getestet, aber sollte okay sein hoffentlich :-D ):

Du Trägst 55km bei der 25°C-Reichweite ein
Du hast eine Temperaturquelle angegeben die gerade 20°C meldet, dann wird die aktuelle Referenzreichweite automatisch zu 50km
Nehmen wir an der Ladezustand meldet dann 55%
Dann Ergibt das eine aktuelle rest-reichweite von 27,5km

Ich hab auch die Rundung von dem Ladezustand geändert (keine kommastellen), weils eh nur ein solides Schätzeisen ist und die Kommastellen da nur iritieren und die Statistik unnötig zumüllen mit einer Genauigkeit die es eh nicht haben kann.

Ist das in Deinem Sinne? Wie gesagt, ungetestet aus meiner Config übertragen, kann sein dass du da noch dran rumtrimmen musst.
 
Zurück
Oben