Calculated SoC kombinieren mit SoC aus API

Auflistung von gewünschten Features, Ausschreibung zur Umsetzung
Antworten
Dobby
Beiträge: 6
Registriert: Mo Jun 17, 2024 6:29 pm

Calculated SoC kombinieren mit SoC aus API

Beitrag von Dobby »

Hallo allerseits,

wenn ich das richtig verstanden habe, gibt es SoC-Module, die nur den initialen SoC über die API beziehen und danach über die abgegebene Energiemenge den aktuellen SoC berechnen (müssen).
Ich würde mir wünschen, dass auch Module, die regelmäßig über die API einen neuen SoC-Wert bekommen, diese Berechnung nutzen könnten (und würden).


OpenWB bekommt den SoC unseres ID.3 über die VW API. Leider gibt es einige Situationen, bei denen das nicht sinnvoll funktionieren kann.
Das sind zum einen die Fälle, bei denen openWB gar keinen SoC bekommt (Änderungen an der API oder VW-Server/Internet down). Das könnte in der aktuellen Softwareversion halbwegs gut funktionieren, da ein SoC von 0% angenommen wird und daher lieber zu viel als zu wenig geladen wird (getestet habe ich das aber noch nicht).

Zum anderen gibt es die Situationen, bei denen zwar ein SoC ankommt, dieser aber falsch ist. Das passiert
1. Wenn ein Fahrer das Auto in den Gastnutzermodus oder Offlinemodus versetzt. Problematisch ist, wenn das direkt nach einem Vollladen auf 100% oder 80% passiert, da dann folgende Ladevorgänge mit SoC-Limit bockiert werden.
2. Wenn das Auto nur selten SoC-Updates schickt. Es macht teilweise auch bei aktivem Ladevorgang gerne mal eine Pause von einer Stunde oder mehr, was bei 11kW schon knapp 20% SoC ausmacht.
Beim Anstecken scheint aber zuverlässig ein Wert an VW geschickt zu werden, genauso bei "Start" des Ladevorgangs ("Stop"-->"Sofortladen"). Ich habe aber ein Beispiel, bei dem beim Ladestart selbst (Freischalten des Stroms durch openWB) kein aktueller Wert kam.

In jedem Fall kommt bei dem SoC-Abruf ein Zeitstempel mit, wann die Daten vom Fahrzeug erfasst wurden. Dieser "carCapturedTimestamp" kommt auch im SoC-Modul in openWB an:

Code: Alles auswählen

2025-02-18 21:55:22,660 - {modules.vehicles.vwid.api:86} - {DEBUG:fetch soc_ev1} - batteryStatus: 
{
    "value": {
        "carCapturedTimestamp": "2025-02-18T20:00:19Z",
        "currentSOC_pct": 40,
        "cruisingRangeElectric_km": 137
    }
}
Gedacht hätte ich an folgenden Ablauf:

- Mit Anstecken holt sich openWB den SoC-Wert (darf auch gerne 10-20s warten, damit VW genug Zeit hat, den Wert zu verarbeiten).
- Wenn der SoC ungültig (API-Fehler), oder zu alt ist (älter als ein paar Minuten?), wird ein SoC von 0% angenommen.
- Ab diesem Zeitpunkt wird der SoC mit den Parametern des hinterlegten Fahrzeugs (Kapazität und Effizienz) berechnet.
- Im Rahmen des konfigurierten Abrufintervalls wird der SoC weiterhin über die API abgefragt. Wenn der Zeitstempel "neu" ist (z.B. kleiner Abfrageintervall), wird der SoC neu gesetzt und ab da neu gerechnet. API-Fehler werden ignoriert und weiter berechnet.

Dadurch ist Situation 1 etwas besser abgedeckt (Zielladen fängt zwar zu früh an, wartet aber zumindest bis zum letzten sicher möglichen Zeitpunkt und bei geeignetem (niedrigem) Ladeziel ist sogar noch etwas PV-Laden drin) und Situation 2 ist für die allermeisten Fälle gelöst.
Problematisch wären hier höchstens zusätzliche Verbräuche zum Vorheizen, etc.

Zusätzlicher Bonus: Das Sägezahnmuster in der Ladeleistung, das beim Zielladen manchmal insbesondere zum Ende hin auftritt, da sich der SoC nur alle paar Minuten aktualisiert, wäre auch Geschichte.

Mit relativ wenig zusätzlichem Aufwand (Speichern der geladenen Energiemenge und Zeitpunkt des letzten Abrufversuchs) kann das Modul sogar interpolieren, falls der abgerufene SoC schon ein paar Minuten alt ist. Das sollte aber eher nicht nötig sein.
rleidner
Beiträge: 1144
Registriert: Mo Nov 02, 2020 9:50 am
Has thanked: 9 times
Been thanked: 63 times

Re: Calculated SoC kombinieren mit SoC aus API

Beitrag von rleidner »

In 2.x ist die Berechnung zentral implementiert und kann recht einfach in jedes SoC-Modul integriert werden.
Dazu wird im Konfigurations-UI (vue) ein weiteres Feld benötigt (calculate_soc bzw. SoC-Berechnung ja/nein).
Im Code des Soc-Moduls wird diese Einstellung beim Initialisieren des Fahrzeuges als Parameter übergeben.
Ab da steuert die zentrale openWB 2.x-Logik, ob der SOC vom Hersteller-Server abgefragt oder berechnet wird.
Bisher ist das nicht implementiert, da der SoC des VW-Servers recht zuverlässig kommt.
Im Support-Thread zum VWID-Modul (viewtopic.php?t=4803) gíbt es seit langer Zeit auch kaum Klagen zur Zuverlässigkeit.
Das Berechnen könnte trotzdem ich bei Gelegenheit in den vwid Modul einbauen, wenn es "genügend positives Feedback" gibt.

Zu den weiteren Überlegungen: Der Code ist in github und es steht jedem frei, eigene Vorstellungen als PR umzusetzen.
Falls das in Frage kommt und die Änderungen "massiv" werden sollten würde ich vorschlagen, das erst mal als neues Modul zu erstellen, da sonst dauerhafte Pflege und Support des vwid Moduls schwierig werden könnte.
openWB-2 Standard+ | openWB EVU Kit v2 MID| 9,9kWp mit Kostal Plenticore 8.5 plus | VW ID.3, Kia EV6, Smart EQ forfour
Dobby
Beiträge: 6
Registriert: Mo Jun 17, 2024 6:29 pm

Re: Calculated SoC kombinieren mit SoC aus API

Beitrag von Dobby »

Vielen Dank für die Antwort. Der Einbau der Option wäre auf jeden Fall ein guter und willkommener Schritt. Ich sehe das hier aber eher nicht als Problem im VWID-Modul, sondern API-Modul-übergreifend. Die API-Module sollten von der zentralen Logik die Option bekommen, auch wenn der SoC berechnet wird, die Berechnungsgrundlage hin und wieder zu aktualisieren. Wenn ich das richtig sehe, gibt es aktuell nur die Option "einmal abrufen und dann nur noch berechnen".

Wie gesagt, das Hauptproblem ist nicht, dass der SoC von VW nicht zuverlässig ankommt, sondern dass auch der VW-Server den SoC oft nicht aktuell hat (s. Screenshot). Abrufintervall war dort alle 5min und laut SoC-Log immer erfolgreich, der SoC steigt aber nur alle 60min. SoC in der VW-App ist auch jeweils verzögert.
SoC.PNG
SoC.PNG (26.21 KiB) 513 mal betrachtet

Im Online-Modus des Autos war (und ist) das nicht immer so, führt aktuell aber öfter zu Problemen an mehreren Stellen (SoC-Limits jeglicher Art).
Die Problematik mit dem Offline-Modus und dass der von VW dann gelieferte SoC kompletter Quatsch ist, ist dann noch ein zusätzliches, aber
unabhängiges (aber auch prinzipiell lösbares) Problem.

Die Ladealgorithmen könnten auch insgesamt davon profitieren, wenn durch Berechnung eine Interpolation zwischen den Abrufen stattfinden würde (Sägezahnmuster der Leistung beim Zielladen wegen der diskreten SoC Sprünge).

Ich kann mich tatsächlich auch mal daran setzen und etwas entsprechendes zusammenbauen, habe aber mangels Wallbox und Auto (die sind bei meinen Eltern zuhause) nur begrenzte Testmöglichkeiten.
rleidner
Beiträge: 1144
Registriert: Mo Nov 02, 2020 9:50 am
Has thanked: 9 times
Been thanked: 63 times

Re: Calculated SoC kombinieren mit SoC aus API

Beitrag von rleidner »

Ich habe die calculate_soc Option in diesen offenen PR eingebaut: https://github.com/openWB/core/pull/2210
und einen PR für das Settings-UI dazu gemacht.
Der PR wird vermutlich erst in 2.1.8 in den master kommen, da momentan wohl die Release 2.1.7 finalisiert wird.

Ich habe übrigens auch gesehen, dass die Updates vom Fahrzeug seit einiger Zeit nicht mehr laufend erfolgen, sondern in größeren Zeitabständen. Mich stört das nicht wirklich, da ich die SoC-Begrenzung im ID benutze und nicht die in der openWB.
openWB-2 Standard+ | openWB EVU Kit v2 MID| 9,9kWp mit Kostal Plenticore 8.5 plus | VW ID.3, Kia EV6, Smart EQ forfour
Antworten