Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SoC nur speichern wenn abgerufener SoC neuer ist #1454

Open
MartinRinas opened this issue Mar 4, 2024 · 1 comment · May be fixed by #2000
Open

SoC nur speichern wenn abgerufener SoC neuer ist #1454

MartinRinas opened this issue Mar 4, 2024 · 1 comment · May be fixed by #2000
Assignees

Comments

@MartinRinas
Copy link
Contributor

Ich hab mit meinem e2008 über Tronity noch etwas Probleme, leider gibts hier hin und wieder Latenzen in der Datenaktualität. Was u.a. auch daran liegt dass PSA keinen aktualisierten SoC während des Laden lieferts, sondern erst nach Abschluss des Ladevorgangs. Der muss dann zu Tronity, und wird dort von der openWB abgerufen.

Beim Zeitladen mit SoC Limit erfolgt der Abruf manchmal zu schnell, so dass noch der alte SoC geliefert wird. Was dann zu einem weiteren, unnötigen Ladevorgang führt. z.b. so:

image

Ich bekomme von Tronity einen Zeitstempel des Datensatzes, den könnte ich gut mit dem letzten SoC Zeitstempel in der openWB abgleichen - und den SoC nur dann übernehmen wenn er neuer ist.

Vermutlich müsste das hier rein, allerdings konnte ich nicht entdecken wie ich hier Zugriff auf den aktuellen Carstate bzw. den SoC Zeitstempel bekomme.
https://github.com/openWB/core/blob/master/packages/modules/common/configurable_vehicle.py#L66

@LKuemmel bin ich da grob richtig unterwegs? Hast Du einen Tipp wie ich hier den aktuellen CarState bzw. SoC Zeitstempel bekommen kann?

@LKuemmel LKuemmel self-assigned this Mar 14, 2024
@rleidner
Copy link
Collaborator

rleidner commented May 30, 2024

Hi Martin,
ich habe mal eine Möglichkeit implementiert:

from control import data
from modules.common.component_state import CarState
from modules.common.configurable_vehicle import ConfigurableVehicle


def get_CarState(self, vehicle: int) -> CarState:
    for ev in data.data.ev_data.values():
        if ev.num == vehicle:
            evGet: ConfigurableVehicle.EvData.Get = ev.data.get
            carState: CarState = CarState(evGet.soc, evGet.range, evGet.soc_timestamp)
            break
    else:
        carState: CarState = CarState(None, None, None)
    return carState

Ich arbeite an einem soc-utility Modul mit Funktionen, die in meinen SOC-Modulen immer wieder benötigt werden.
Da wird das dann auch enthalten sein, wird aber noch dauern.

Grüsse
Rainer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants