Support: SoC Leaf

Alles rund um SoC (Ladezustand des Fahrzeuges). Probleme, Fragen, Fehlfunktionen gehören hier hin
Dd62
Beiträge: 18
Registriert: Sa Okt 05, 2019 3:19 pm
Been thanked: 1 time

Re: Support: SoC Leaf

Beitrag von Dd62 »

Hallo Phase1

Hast Du einen Linux-PC? Stecke die SD-Karte dort rein. So kannst Du pycarwings2.py editieren. Einfach zum Schluss noch

Code: Alles auswählen

chmod 777 pycarwings2.py
. Hatte bei der eben beschriebenen Methode die schlechte Erfahrung gemacht, dass derart modifizierte Files plötzlich Root gehörten.
Phase1
Beiträge: 44
Registriert: Do Okt 14, 2021 9:01 pm
Has thanked: 1 time
Been thanked: 6 times

Re: Support: SoC Leaf

Beitrag von Phase1 »

Dd62 hat geschrieben: Mo Jul 21, 2025 5:46 am Hallo Phase1
Hast Du einen Linux-PC? Stecke die SD-Karte dort rein. So kannst Du pycarwings2.py editieren. ....
Hallo Dd62,
Danke für den Hinweis mit Linux etc.
Ich konnte so in pycarwings2 die zwei Typdeklarationen löschen und danach im Pi testen.
Es kommt die gleiche Fehlermeldung mit dem fehlenden Padding Modul in Crypto.Util.Padding

Code: Alles auswählen

  File "/var/www/html/openWB/modules/soc_leaf/pycarwings2.py", line 74, in <module>
    from Crypto.Util.Padding import pad
ImportError: No module named Padding
Ich schaue jetzt, was in V1.9.304 noch für ein Crypto installiert ist und warum Padding fehlt.
Dd62
Beiträge: 18
Registriert: Sa Okt 05, 2019 3:19 pm
Been thanked: 1 time

Re: Support: SoC Leaf

Beitrag von Dd62 »

Hallo Phase1,

ich habe die Lösung für das nicht vorhandene Crypto.Util.Padding gefunden.

Falsch war

Code: Alles auswählen

sudo pip3 install pycryptodome
.

Es wird nämlich von openWB 1.9 für den Aufruf von soc.py nicht die Phython 3.x genutzt sondern Python 2.7.

Richtig ist folglich

Code: Alles auswählen

sudo pip install pycryptodome
.

Weiter muss die pycarwings2.py wie bereits diskutiert angepasst werden.

Code: Alles auswählen

# def encrypt_aes_password(password: str) -> str:
def encrypt_aes_password(password):
Und auch die soc.py braucht noch eine Anpassung.

Code: Alles auswählen

# logging.basicConfig(stream=sys.stdout, filename='/var/www/html/openWB/ramdisk/soc.log', level=5, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') #
logging.basicConfig(filename='/var/www/html/openWB/ramdisk/soc.log', level=5, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') #
Kannst Du es bitte mal versuchen? Bei mir kann ich nun den SOC-Wert von meinem Nissan Leaf erfolgreich abholen.
Phase1
Beiträge: 44
Registriert: Do Okt 14, 2021 9:01 pm
Has thanked: 1 time
Been thanked: 6 times

Re: Support: SoC Leaf

Beitrag von Phase1 »

Hallo Dd62,
Danke für Deine Versuche. Mein paralleles Stöbern auf der SD-Karte bringt letztlich das gleiche Ergebnis:

In V1.9.304 ist nur das alte PyCrypto Paket installiert. Im dortigen Crypto.Util Ordner gibt es kein Padding.py. Ergo kann pycarwings2 das auch nicht finden.

Das Paket pycryptodome (inkl. Padding.py) fehlt, muss aber installiert sein. Davor muss erst PyCrypto deinstalliert werden, weil es den gleichen Ordner Crypto anlegt. Dein Versuch zeigt, dass das der richtige Weg ist. Und am besten tauscht man beide Versionen für Python 2.7 und 3 aus.

Aus meiner Sicht greift das aber viel zu tief in V1.9.304 ein. Das behindert evtl. auch andere SoC-Module, die noch PyCrypto brauchen. Daraus wird also kein offizieller Pull Request mehr, zumal für V1.9.304 eh Redaktionsschluss ist. Deshalb höre ich an dieser Stelle auf.

Deine Beschreibung ist letztlich bereits eine Anleitung zum patchen der eigenen V1.9.304 für Leaf-Fahrer, die partout nicht auf V2 wechseln wollen /können. Du kannst ja noch mal sauber untereinander schreiben, was alles zu tun ist, wenn man die allerletzte V1.9.304 Version bereits auf SD installiert hat.

PS: Auf meiner openWB series2+ läuft die neue V2.1.8-Alpha2 inkl. aktualisiertem pycarwings3 ohne Auffälligkeiten. Der SoC vom Leaf wird regelmäßig abgerufen. Auf die Kooperation können wir stolz sein.
Dd62
Beiträge: 18
Registriert: Sa Okt 05, 2019 3:19 pm
Been thanked: 1 time

Re: Support: SoC Leaf

Beitrag von Dd62 »

Hier kommt die vollständige Anleitung, die zeigt, wie das Modul soc_leaf von openWB 1.9.304 lauffähig gemacht wird.

Hintergrundinformation:
  • Weiter verlangt Nissan neu, dass die Passwortübermittlung nicht mehr mit der Blowfish-Verschlüsselung durchgeführt wird sondern mit AES.
  • Am 17.07.2025 hat das openWB-Team mitgeteilt, dass die Weiterentwicklung von openWB 1.9 und der kostenfreie Support mit sofortiger Wirkung eingestellt wird.
  • Die wegen der Punkte 1 und 2 erforderlichen Anpassungen haben es gerade noch in den letzten nächtlichen Build von openWB 1.9.304 geschafft, leider jedoch noch nicht ganz fehlerfrei.
  • Aus diesem Grund muss nach dem Upgrade auf openWB 1.9.304 Nightly noch manuell gepatcht werden. Das Vorgehen wird hier beschrieben.
Annahme: Es ist openWB 1.9.304 oder älter installiert.

Zuerst werden hier einige optionale Schritte erklärt. Es wird der Aufbau eines Raspberry Pi als openWB Standalone beschrieben.
--- Beginn optionale Schritte
  • Raspian Buster auf einem Windows-PC herunterladen und mittels Etcher oder Raspberry Pi Imager auf eine microSD schreiben.
  • microSD in einen Raspberry PI einstecken und mit angeschlossener Tastatur und Maus sowie Bildschirm booten.
  • Es werden beim Bootvorgang einige Fragen gestellt, die zu beantworten sind. Unter anderem muss für den User pi ein Passwort vergeben werden. Es wird auch gefragt, ob das Betriebssystem gleich auf den neuesten Stand gebracht werden soll. Dies bejahen. Zum Schluss wird ein Reboot durchgeführt.
  • Nach dem Reboot ein Terminal-Fenster öffnen und die Raspi-Konfiguration aufrufen:

    Code: Alles auswählen

    sudo raspi-config
    In der Raspi-Konfiguration zumindest SSH aktivieren und den gesamten Plattenspeicher nutzen lassen.
    Nach dem Verlassen der Raspi-Konfiguration muss ein Neustart durchgeführt werden.
  • Installation von openWB 1.9 in einem Terminal-Fenster:

    Code: Alles auswählen

    curl -s https://raw.githubusercontent.com/snaptec/openWB/master/openwb-install.sh | sudo bash
  • Danach muss im Terminal-Fenster noch die Crontab angepasst werden.

    Code: Alles auswählen

    crontab -e
    Folgendes am Ende einfügen und dann speichern:
    * * * * * /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
    * * * * * sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
    * * * * * sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
    * * * * * sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
    * * * * * sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
    * * * * * sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
  • Raspberry PI rebooten.
  • Im Browser vom Raspberry PI das openWB-Web-GUI aufrufen:

    Code: Alles auswählen

    http://localhost/openWB
    Die Konfiguration von openWB kann durchgeführt werden (inklusive die Eingabe vom Benutzername und dem Passwort für die Abfrage vom SOC-Wert des Nissan NV200 oder Leaf beim Nissan-Server).
-- Ende optionale Schritte
  • Im Web-GUI muss ein Update auf 1.9.304 Nightly durchgeführt werden. Nach Abschluss des Updates muss der Raspberry Pi neu gestartet werden.
--- Beginn Patching
Nach dem Neustart kann im Web-GUI festgestellt werden, dass das Auslesen des SOC-Wertes vom Nissan NV200 oder Leaf nicht klappt. Es wird sich in der Logdatei von openWB folgender Fehler finden:
Traceback (most recent call last):
File "/var/www/html/openWB/modules/soc_leaf/soc.py", line 4, in <module>
import pycarwings2
File "/var/www/html/openWB/modules/soc_leaf/pycarwings2.py", line 85
def encrypt_aes_password(password: str) -> str:
^
SyntaxError: invalid syntax

Lesen der Logdatei im Terminal-Fenster mit folgendem Befehl:

Code: Alles auswählen

tail -n 80 /var/log/openWB.log
Die Datei /var/www/html/openWB/modules/soc_leaf/pycarwings2.py muss mit Hilfe eines Editors korrigiert werden.
Die Zeile mit
def encrypt_aes_password(password: str) -> str:
muss korrigiert werden auf
def encrypt_aes_password(password):

Danach wird sich in der Logdatei /var/log/openWB.log noch ein weiterer Fehler finden, nämlich:
Traceback (most recent call last):
File "/var/www/html/openWB/modules/soc_leaf/soc.py", line 4, in <module>
import pycarwings2
File "/var/www/html/openWB/modules/soc_leaf/pycarwings2.py", line 74, in <module>
from Crypto.Util.Padding import pad
ImportError: No module named Padding

Das Modul muss nachinstalliert werden.

Code: Alles auswählen

sudo pip install pycryptodome
--- Ende Patching

Danach einen Neustart durchführen. Nun sollte die SOC-Abfrage klappen.
Antworten