Seite 5 von 27

Re: BMW i3 SOC

Verfasst: Sa Dez 18, 2021 4:25 pm
von SU-N_i3
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?

Re: BMW i3 SOC

Verfasst: Sa Dez 18, 2021 5:15 pm
von truckl
SU-N_i3 hat geschrieben: Sa Dez 18, 2021 4:25 pm Die alte API ist mit geänderten URLs scheinbar noch zu erreichen:
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

Verfasst: Mo Dez 20, 2021 3:15 pm
von SU-N_i3
truckl hat geschrieben: Sa Dez 18, 2021 5:15 pm
SU-N_i3 hat geschrieben: Sa Dez 18, 2021 4:25 pm Die alte API ist mit geänderten URLs scheinbar noch zu erreichen:
Hat bei mir funktioniert (nachdem ich auch noch eine Debug Ausgabe deaktiviert habe, die das ausgegebene JSON unlesbar machte).
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

Verfasst: Mo Dez 20, 2021 3:23 pm
von truckl
SU-N_i3 hat geschrieben: Mo Dez 20, 2021 3:15 pm
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 ...
Ja, hat keine Auswirkung und kann ignoriert werden.

Ganz anders jedoch das hier:
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}
...
Das liegt an einem kaputten bzw. unlesbaren Token-File (in dem das vom BMW-Server erhaltene Identifikationstoken gespeichert wird).
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

Verfasst: Mo Dez 20, 2021 7:24 pm
von truckl
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?

Re: BMW i3 SOC

Verfasst: Di Dez 21, 2021 11:07 am
von SU-N_i3
:D :D :D

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?

Re: BMW i3 SOC

Verfasst: Di Dez 21, 2021 12:23 pm
von aiole
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

Verfasst: Di Dez 21, 2021 2:33 pm
von SU-N_i3
truckl hat geschrieben: Mo Dez 20, 2021 3:23 pm ...
Scheint jedoch ein generelles Problem zu sein. Ich weiß nur noch nicht wann das auftritt.
...
Ich schau aber auch, wie ich das "automatisiert" heilen kann.
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:
openWB_i3soc.JPG
Nach dem Reboot blieb der SOC-Wert wie gehabt, fiel dann auf 0 und war eine Minute später wieder da.
openWB_i3soc_3.JPG
Die Token-Datei gehört immer noch Root, aber es darf sie jetzt jeder neu schreiben. Damit funktioniert es wieder:
openWB_i3soc_2.JPG
Möglich wäre auch, dass ich vor ein paar Monaten nach einem SD-Karten-Defekt die OpenWB nicht mit dem richtigen User aufgesetzt :roll: 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

Verfasst: Di Dez 21, 2021 2:47 pm
von truckl
aiole hat geschrieben: Di Dez 21, 2021 12:23 pm Komisch - hier (1.9.250 nightly 21.12.2021) wird der i3 SoC leider noch nicht aktualisiert.
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.
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 :roll: da bin ich nicht wirklich sicher im Umgang mit Linux. Die anderen Dateien, Module etc. gehören zumindest dem PI-User.
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.

Ich schau's mir bei nächster Gelegenheit nochmal an.

Re: BMW i3 SOC

Verfasst: Di Dez 21, 2021 5:44 pm
von Sandstern
Bei mir funktioniert das nicht, oder muss ich nach dem Update der Nighly noch etwas umbenennen oder löschen?