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

PSA Car Controller SoC #2046

Merged
merged 11 commits into from
Jan 2, 2025
Merged

PSA Car Controller SoC #2046

merged 11 commits into from
Jan 2, 2025

Conversation

andlem74
Copy link
Contributor

@andlem74 andlem74 commented Dec 2, 2024

Requests SoC from PSA Car Controller via http, SoC is calculated while charging.
This approaches reduces the number of PSA API calls compared to MQTT as PSA API is only called when openWB requests SoC values rather than generating a stream of samples pushed to openWB by MQTT.

Matching .vue file PR will follow.

@MartinRinas
Copy link
Contributor

Das Modul scheint ja ein reiner HTTP Abruf zu sein. Ein HTTP SoC Modul gibts ja bereits, wäre es nicht ggf. geschickter das um die Möglichkeit JSON Felder auszuwerten zu erweitern? Die Funktionalität gibts in den Zählermodulen ja schon, sollte sich ja einfach übertragen lassen.

PSA servers are slow, therefore timeout had to be increased.
@andlem74
Copy link
Contributor Author

andlem74 commented Dec 6, 2024

Das Modul scheint ja ein reiner HTTP Abruf zu sein. Ein HTTP SoC Modul gibts ja bereits, wäre es nicht ggf. geschickter das um die Möglichkeit JSON Felder auszuwerten zu erweitern? Die Funktionalität gibts in den Zählermodulen ja schon, sollte sich ja einfach übertragen lassen.

Dafür müsste das HTTP-Modul so erweitert werden, dass es konfigurierbar nur einen Request macht (nicht zwei wie jetzt!) und daraus per JSON die zwei Datenfelder SoC und Reichweite auf einmal extrahiert. Außerdem müssten Optionen hinzugefügt werden für SoC-Berechnung während Ladung und ein Feld für das verlängerte Timeout. Der Datastore müsste eine Update-Funktion erhalten, die die neuen Einstellungen in bestehenden Konfigurationen hinzufügt. Außerdem müsste für PSA-Controller-User irgendwo ein umfangreicher Hilfetext angelegt werden, den die auch finden. Das schien mir alles zusammen unnötig kompliziert und benutzerunfreundlich.

Im Zweifel würde man wohl eher noch ein generisches JSON-Modul inkl. Optionen "Berechnung während Ladung" und Timeout hinzufügen und das HTTP-Modul so lassen. So ist es ja auch bei den Zählern. Das hätte immer noch den Nachteil, dass für PSA-Controller-User irgendwo ein Hilfetext hinterlegt werden muss, damit die wissen, dass sie den PSA-Controller damit anbinden können und wie das konfiguriert werden muss.

Ich werde dieses Modul für meine Zwecke so lassen, weil die Lösung auf meiner openWB gut funktioniert und keinerlei Seiteneffekte auf andere Teile der openWB-SW hat. Wenn ihr den PR ablehnen wollt, ist das kein Problem, das Modul läuft ja bei mir trotzdem weiter, kann dann nur von sonst niemandem genutzt werden.

@andlem74 andlem74 marked this pull request as draft December 16, 2024 17:53
@LKuemmel
Copy link
Contributor

Wenn das json-Modul für die Fahrzeuge gemergt ist, könnte das dein Modul erben (ähnlich wie bei Benning für die Geräte).

@andlem74 andlem74 marked this pull request as ready for review December 20, 2024 19:09
@andlem74
Copy link
Contributor Author

Wenn das json-Modul für die Fahrzeuge gemergt ist, könnte das dein Modul erben (ähnlich wie bei Benning für die Geräte).

Erledigt.

@andlem74 andlem74 marked this pull request as draft December 30, 2024 06:37
@andlem74
Copy link
Contributor Author

@LKuemmel Leider funktioniert das Modul in dieser Form nicht wie erwartet. Ich verstehe aber nicht, warum. Könnt ihr mir weiterhelfen?
Fehlerbild ist, dass zwar im SoC-Logfile die richtigen Einträge sind, etwa dieser:

2024-12-30 04:53:32,684 - {modules.common.store._api:31} - {INFO:store soc_ev1} - Saving CarState(soc=67.0, range=198, soc_timestamp=0)

Diese Werte werden aber trotzdem nicht in den Gesamtstatus des Fahrzeugs (sichtbar im MQTT oder in der GUI) übernommen. soc_timestamp=0 ist hier richtig, weil ich das System auf 2.1.6 Release laufen lasse.

Die ursprüngliche direkte Variante meines Moduls ohne Vererbung vom JSON-SoC-Modul hat problemlos funktioniert. Ebenso funktioniert es problemlos, wenn ich das JSON-SoC-Modul direkt verwende.

Was habe ich falsch gemacht?

@andlem74
Copy link
Contributor Author

@LKuemmel Leider funktioniert das Modul in dieser Form nicht wie erwartet. Ich verstehe aber nicht, warum. Könnt ihr mir weiterhelfen? Fehlerbild ist, dass zwar im SoC-Logfile die richtigen Einträge sind, etwa dieser:

2024-12-30 04:53:32,684 - {modules.common.store._api:31} - {INFO:store soc_ev1} - Saving CarState(soc=67.0, range=198, soc_timestamp=0)

Diese Werte werden aber trotzdem nicht in den Gesamtstatus des Fahrzeugs (sichtbar im MQTT oder in der GUI) übernommen. soc_timestamp=0 ist hier richtig, weil ich das System auf 2.1.6 Release laufen lasse.

Die ursprüngliche direkte Variante meines Moduls ohne Vererbung vom JSON-SoC-Modul hat problemlos funktioniert. Ebenso funktioniert es problemlos, wenn ich das JSON-SoC-Modul direkt verwende.

Was habe ich falsch gemacht?

Ich habe den Fehler gefunden und gefixt. Ich habe wohl in meinem Leben zu viel C gelesen und geschrieben ...

@andlem74 andlem74 marked this pull request as ready for review December 30, 2024 16:52
@LKuemmel LKuemmel added this to the 2.1.7 milestone Jan 2, 2025
@LKuemmel LKuemmel merged commit ece3cf7 into openWB:master Jan 2, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants