Closed niniob closed 6 months ago
/c @ReneNulschDE
Kannst Du bitte noch den Log output eines start mit "sudo systemctl start evcc" hinzufügen. Ich vermute, deine Datenbank bei start als Service ist eine andere als mit sudo evcc. In der /root/.evcc/evcc.db ist der korrekte Token und in der anderen ein alter/falscher/keiner...
Mich interessiert folgende Zeile:
[db ] INFO 2024/04/10 23:33:58 using sqlite database: /root/.evcc/evcc.db
Wenn es dort eine andere DB ist, kannst du in der evcc.yaml einen festen pfad zur /root/.evcc/evcc.db
eintragen.
Kannst Du bitte noch den Log output eines start mit "sudo systemctl start evcc" hinzufügen. Ich vermute, deine Datenbank bei start als Service ist eine andere als mit sudo evcc. In der /root/.evcc/evcc.db ist der korrekte Token und in der anderen ein alter/falscher/keiner...
Mich interessiert folgende Zeile:
[db ] INFO 2024/04/10 23:33:58 using sqlite database: /root/.evcc/evcc.db
Wenn es dort eine andere DB ist, kannst du in der evcc.yaml einen festen pfad zur
/root/.evcc/evcc.db
eintragen.
Ok, alles klar ... aber wie erzeuge ich den Log ouput beim Start mit "sudo systemctl start evcc"?
sudo journalctl -u evcc --since "yesterday"
zeigt die Logeinträge seit gestern
Vielen Dank! Du hast Recht, es werden wohl unterschiedliche Datenbanken genutzt.
Apr 11 11:33:03 evcc evcc[1873]: [db ] INFO 2024/04/11 11:33:03 using sqlite database: /var/lib/evcc/evcc.db
Woher kommt es das unterschiedliche Datenbanken verwendet werden bzw. was ist "richtig"? Sollte ich /root/.evcc/evcc.db
oder /var/lib/evcc/evcc.db
verwenden?
Ich bin kein evcc spezie, kenne mich nur mit der MB-vehicle integration aus. Meine Vermutung ist, dass die Datenbank im Pfad des aktuellen Benutzers angelegt wird und dieser Pfad ist bei sudo-Nutzung und systemd-service unterschiedlich. Daher kannst Du den pfad in der evcc.yaml definieren.
Aktuell hast du in der /root/.evcc/evcc.db
den richtigen Token zum Zugriff auf die MB-API.
# database configuration for persisting charge sessions and settings
database:
type: sqlite
dsn: /root/.evcc/evcc.db
@andig : Hast Du etwas hinzuzufügen?
Die DB über cli (mit sudo) und Service ist laut Logs oben identisch:
using sqlite database: /root/.evcc/evcc.db
using sqlite database: /root/.evcc/evcc.db
Damit sollte da auch das gleiche Token verwendet werden und das identisch funktionieren.
Ah, ich sehe schon. Das Log aus dem Issue ist nicht das Log vom Service, sagt also nichts über die verwendete DB aus...
@ReneNulschDE & @andig : vielen Dank für eure schnelle Hilfe!
Es funktioniert jetzt wieder alles wie zuvor. Habe evcc.yaml um den Pfad zur Datenbank ergänzt. Jetzt wird immer /var/lib/evcc/evcc.db
verwendet. Ein Update des MB Token habe ich in dieser DB aber irgendwie nicht hinbekommen. evcc token EQV
hat zwar funktioniert, nach Einfügen dieser generierten Tokens in evcc.yaml kam aber immer die Meldung, dass der token ungültig ist. Da die Installation eh erst seit ein paar Wochen läuft und die Historie nicht so wichtig war, habe ich evcc.db dann komplett gelöscht. Mit dem nächsten Start wurde sie dann neu angelegt und jetzt läuft alles wie gewünscht.
Danke, schliesse das issue bitte.
Danke, schliesse das issue bitte.
Ist die Lösung dann jetzt, dass jeder der vor der 0.125.0 einen aktiven Mercedes Token hatte, seine Datenbank wegwerfen muss? Der aktuelle Assistent für die Tokengenerierung bzw. vermutlich eher das Skript/die Routine für das Auslesen der evcc.yaml arbeitet hier ja dem Anschein nach nicht korrekt, wenn der Token aus der YAML in der falschen Datenbank landet. (Vielleicht auch ein Linux/Rechteproblem, wenn der systemd-Aufruf anders arbeitet als der sudo Aufruf.)
Ich fände es toll, wenn man diesem Fehler auf den Grund gehen könnte und das auch für bestehende Installationen wieder reparieren kann. Wenn ich das richtig verstehe, dann müsste ja beim YAML auslesen "nur" darauf geachtet werden, dass die Token in den korrekten evcc.db-Pfad kopiert werden und dieser Pfad auch per systemd-Aufruf verwendet wird, korrekt? Nicht jeder möchte seine Ladehistorie einfach so wegwerfen und auch nicht jeder ist so bewandert, dass er einfach irgendwelche Datenbank-Dateien rauslöscht.
Daher wäre das Issue aus meiner Sicht noch nicht wirklich geschlossen. @andig @ReneNulschDE wie seht ihr das?
Meiner Ansicht nach: Du musst Dich nur entscheiden eine Datenbank zu nehmen und nicht zwei... Wie schon mehrfach geschrieben, lautet meine Empfehlung einen db-pfad in der Config zu setzen.
Die Tokens werden in der Datenbank erstellt, die im aktuellen Kontext vom evcc system vorgegeben ist. Meine Komponente nutzt die Standard-Setting-APIs von evcc.
Man kann diskutieren ob der aktuelle Weg von evcc optimal ist wie der default-db pfad ermittelt wird. Aktuell ist es der Homepath des aktuellen users + /evcc/evcc.db. Und dieser ist bei Service/sudo/user Aufruf halt unterschiedlich je nach Umgebung. Meiner Meinung wäre es besser die DB im Pfad der Config Datei zu managen, wenn kein Pfad in der config definiert ist - aber ich bin weder ein evcc-spezie noch user.
Die Datenbankdaten können mit dem Befehl evcc settings set mercedes.[account]-[region] ""
gelöscht werden. (Sofern man die richtige evcc.yaml und damit evcc.db nutzt.
Ich selbst kann und werde hier nichts weiter machen. Das Problem hat ja nicht nur diese Integration sondern wurde auch von den Tesla usern schon angesprochen. Für mich ist dies etwas für das Core-Team. Oder etwas für Pro-User die mit eigenen PRs die Doku verbessern können.
Grüße Rene
Hi Rene, Danke dir fürs Feedback, genau das meinte ich auch mit "wie evcc.yaml ausgelesen und in Datenbank übertragen wird" bzw. Welche Datenbank bei welchem Aufruf genutzt wird. So wie ich das verstehe, liegt das nicht an der Mercedes-Integration, sondern an der Art und Weise wie EVCC hier funktioniert und mit seinen Datenbankzugriffen umgeht. --> Das sollte behoben werden, dann funktioniert Mercedes-Integration (und die jedes anderen Herstellers) auch wieder sauber. Daher meine Frage: Ist das Problem schon gelöst oder müsste da nicht EVCC in den Basisfunktionen nachbessern? @andig
Welches Problem?! Wenns eins gibt bitte Issue dazu.
Welches Problem?! Wenns eins gibt bitte Issue dazu.
Done #13479
Prima. Ich hab da mal kommentiert um Klarheit in die Zusammenhänge zu bringen. Da ist nichts fehlerhaft oder unklar sondern Bedienfehler. Die Frage ist wie wir solche Fehler unterbinden können.
Describe the bug
Seit dem Upgrade auf 0.125.0 wird unser Mercedes nicht mehr von evcc erkannt. Nach dem Verbinden mit der Wallbox erscheint in evcc zunächst "Gastfahrzeug" (Verbunden). Wenn man das Fahrzeug dann manuell ändert, bekommt man einen roten Balken und eine durchgestrichene Wolke mit dem Tooltip "Fahrzeug war nicht erreichbar. Versuche evcc neu zu starten". Neustart ändert aber leider nichts.
Mit
sudo evcc vehicle
werden die aktuellen Daten aber ohne Fehler angezeigt:ABER: Wenn evcc zunächst gestoppt wird (
sudo systemctl stop evcc
) und übersudo evcc --log debug
wieder gestartet wird, dann funktioniert es.Steps to reproduce
sudo systemctl stop evcc
sudo evcc --log debug
--> funktioniertConfiguration details
Log details
What type of operating system are you running?
Linux
Version
0.125.0