BMW i3 SOC [gelöst]
Re: BMW i3 SOC
Die alte API ist mit geänderten URLs scheinbar noch zu erreichen:
https://www.goingelectric.de/forum/view ... 2#p1754992
Das dort erwähnte Javascript habe ich zum laufen gebracht.
Leider komme ich mit den CURL-Aufrufen in openWB nicht so richtigt zurecht, meine Vermutung ist, dass die URLs hier nur anders zusammengebaut werden und es deswegen nicht fluppt.
Es besteht aber Hoffnung, dass die API nicht gleich neu gebaut werden mussen, so dass vielleicht jemand mit Entwicklungskenntnissen mal auf den PHP-Code schauen könnte?
https://www.goingelectric.de/forum/view ... 2#p1754992
Das dort erwähnte Javascript habe ich zum laufen gebracht.
Leider komme ich mit den CURL-Aufrufen in openWB nicht so richtigt zurecht, meine Vermutung ist, dass die URLs hier nur anders zusammengebaut werden und es deswegen nicht fluppt.
Es besteht aber Hoffnung, dass die API nicht gleich neu gebaut werden mussen, so dass vielleicht jemand mit Entwicklungskenntnissen mal auf den PHP-Code schauen könnte?
Re: BMW i3 SOC
Jepp. Danke für den Hinweis.
Hat bei mir funktioniert (nachdem ich auch noch eine Debug Ausgabe deaktiviert habe, die das ausgegebene JSON unlesbar machte).
PR ist erstellt: https://github.com/snaptec/openWB/pull/1836
Re: BMW i3 SOC
Danke für den superschnellen Fix. Bei mir funzt es leider noch nicht. Muss ich in der main.sh im soc_i3 - Modul noch was machen? In dem PR wurde nur die Änderung der index.php in den Code-Master übernommen.
In der main.sh steht noch
...
socDebug=$debug
# for developement only
socDebug=1
Oder ist das nur eine Randbaustelle und ich habe woanders meine Installation vermurkst?: Aus dem Debug-Log ...
...
2021-12-20 16:05:03: ##### cron5min.sh finished ##### (LV0)
2021-12-20 16:05:01: ##### cron5min.sh started ##### (LV0)
thrown in /var/www/html/openWB/modules/soc_i3/index.php on line 66
#3 {main}
#2 /var/www/html/openWB/modules/soc_i3/index.php(260): Battery_API->__construct('1', 'meinBenutzername', 'meinPasswort', 'WBY8meineVIN')
#1 /var/www/html/openWB/modules/soc_i3/index.php(27): Battery_API->get_token()
#0 /var/www/html/openWB/modules/soc_i3/index.php(88): Battery_API->get_cached_token()
Stack trace:
PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /var/www/html/openWB/modules/soc_i3/index.php:66
thrown in /var/www/html/openWB/modules/soc_i3/index.php on line 66
#3 {main}
...
Re: BMW i3 SOC
Ja, hat keine Auswirkung und kann ignoriert werden.
Ganz anders jedoch das hier:
Das liegt an einem kaputten bzw. unlesbaren Token-File (in dem das vom BMW-Server erhaltene Identifikationstoken gespeichert wird).SU-N_i3 hat geschrieben: ↑Mo Dez 20, 2021 3:15 pm thrown in /var/www/html/openWB/modules/soc_i3/index.php on line 66
#3 {main}
#2 /var/www/html/openWB/modules/soc_i3/index.php(260): Battery_API->__construct('1', 'meinBenutzername', 'meinPasswort', 'WBY8meineVIN')
#1 /var/www/html/openWB/modules/soc_i3/index.php(27): Battery_API->get_token()
#0 /var/www/html/openWB/modules/soc_i3/index.php(88): Battery_API->get_cached_token()
Stack trace:
PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /var/www/html/openWB/modules/soc_i3/index.php:66
thrown in /var/www/html/openWB/modules/soc_i3/index.php on line 66
#3 {main}
...
Ich hatte das genau einmal. Dachte aber, ich hätte das in der R&D-Umgebung versehentlich zerschossen.
Scheint jedoch ein generelles Problem zu sein. Ich weiß nur noch nicht wann das auftritt.
Solltest Du Shell-Zugang zu Deiner openWB haben, kannst Du einfach die Datei "/var/www/html/openWB/modules/soc_i3/token.json" löschen.
Ich schau aber auch, wie ich das "automatisiert" heilen kann.
Re: BMW i3 SOC
Eine potentielle Lösung (https://github.com/snaptec/openWB/pull/1841) ist gerade in die openWB Nightly eingeflossen.
Ich kann das geschilderte Fehlverhalten aber leider durch keine noch so kreative "Zerstörung" des gespeicherten Tokens hervorrufen.
Daher @SU-N_i3 die Bitte: Kannst Du auf die aktuelle Nightly aktualisieren und schauen ob der SOC dann bei Dir da ist?
Ich kann das geschilderte Fehlverhalten aber leider durch keine noch so kreative "Zerstörung" des gespeicherten Tokens hervorrufen.
Daher @SU-N_i3 die Bitte: Kannst Du auf die aktuelle Nightly aktualisieren und schauen ob der SOC dann bei Dir da ist?
Re: BMW i3 SOC
Super cool, funktioniert wieder (mit Update der Nighlty).
Was mir aufgefallen ist:
Token löschen, Reboot war erfolglol. Token löschen, Soc-Update per WebGui auch erfolglos.
Aber: Die Berechtigungen beim nach dem Löschen automatisch wiederhergestellten token.json (vor dem Nighlty-Update) waren anders. Und vermutlich bei dem fehlerhaften Token vorher auch. Hier durfte nur der Owner schreiben, alle anderen nur lesen. Nach dem Nighlty-Update dürfen das jetzt alle auf der Datei (0777).
Ich hatte auch schon ein Backup wieder eingespielt, vielleicht läuft das unter einem anderen User und wechselt beim Restore den Owner?
-
- Beiträge: 7737
- Registriert: Mo Okt 08, 2018 4:51 pm
- Has thanked: 15 times
- Been thanked: 31 times
Re: BMW i3 SOC
Komisch - hier (1.9.250 nightly 21.12.2021) wird der i3 SoC leider noch nicht aktualisiert.
Code: Alles auswählen
thrown in /var/www/html/openWB/modules/soc_i3/index.php on line 75
#3 {main}
#2 /var/www/html/openWB/modules/soc_i3/index.php(286): Battery_API->__construct('1', USERDATEN...')
#1 /var/www/html/openWB/modules/soc_i3/index.php(27): Battery_API->get_token()
#0 /var/www/html/openWB/modules/soc_i3/index.php(109): Battery_API->get_cached_token()
Stack trace:
PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /var/www/html/openWB/modules/soc_i3/index.php:75
Re: BMW i3 SOC
Der "Heilungs"-Prozess funktioniert , bei mir eventuell erst in zwei Stufen:
Ich habe die funktionierende token.json umbenannt. Es wir ein neues Token angelegt, Besitzer ist nun root und nur root kann schreiben.
Die SOC-Azeige verblieb erstmal bei dem alten Wert: Nach dem Reboot blieb der SOC-Wert wie gehabt, fiel dann auf 0 und war eine Minute später wieder da. Die Token-Datei gehört immer noch Root, aber es darf sie jetzt jeder neu schreiben. Damit funktioniert es wieder: Möglich wäre auch, dass ich vor ein paar Monaten nach einem SD-Karten-Defekt die OpenWB nicht mit dem richtigen User aufgesetzt da bin ich nicht wirklich sicher im Umgang mit Linux. Die anderen Dateien, Module etc. gehören zumindest dem PI-User.
Re: BMW i3 SOC
Ich fürchte, dann ist das keine Exception sondern ein "error". Das macht in PHP wohl einen Unterschied ;-(
Auf den muss man dann wohl mit "set_error_handler" los gehen. Oder vorher prüfen, ob es ein array ist. Aber Letzteres würde dann nur genau diesen einen Fall lösen.
Das mit den Rechten ist eine gute Idee. Ich fürchte nur, dass wir das ausschließen können, weil das php-Skript aus dem "main.sh" heraus immer mit "sudo" aufgerufen wird und somit unweigerlich root-Rechte hat.SU-N_i3 hat geschrieben: ↑Di Dez 21, 2021 2:33 pm Die Token-Datei gehört immer noch Root, aber es darf sie jetzt jeder neu schreiben. Damit funktioniert es wieder:
Möglich wäre auch, dass ich vor ein paar Monaten nach einem SD-Karten-Defekt die OpenWB nicht mit dem richtigen User aufgesetzt da bin ich nicht wirklich sicher im Umgang mit Linux. Die anderen Dateien, Module etc. gehören zumindest dem PI-User.
Ich schau's mir bei nächster Gelegenheit nochmal an.
Re: BMW i3 SOC
Bei mir funktioniert das nicht, oder muss ich nach dem Update der Nighly noch etwas umbenennen oder löschen?