Seite 10 von 21

Re: EVNotiPi

Verfasst: So Aug 08, 2021 8:08 pm
von ragnaroek
Hi Jonny,
du scheinst auf der richtigen Spur zu sein!
Ich füge dir hier ein Template TEMP_EV.py bei, das ich an meinem KONA getestet habe und das soweit entrümpelt ist, dass eine Anpassung dir leichter fallen sollte. Ich hatte seinerzeit an den Modulen von evNotiPi keinerlei Änderungen vorgenommen, da ich erwartete, dort zusätzlich auftauchende Module dann problemlos in evSoc übernehmen zu können.

Schieb die Datei ins Unterverzeichnis cars und wähle dann in der config.yaml TEMP_EV aus. Mit eingeschaltetem DEBUG sollte das dann etwa so aussehen:

Code: Alles auswählen

loglevel:      10 # Debug
#loglevel:      20 # Inf0
#loglevel:      30 # Warning
car:
   #type: IONIQ_BEV
   type: TEMP_EV
   #type: KONA_EV
   #type: NIRO_EV
   #type: ZOE_Q210
Dann den Dienst evSoc mit

Code: Alles auswählen

systemctl stop evSoc
deaktivieren und im Verzeichnis /opt/evSoc folgendes eingeben:

Code: Alles auswählen

sudo ./evSoc.py
Beim derzeit darin festgelegten Kona gibt es dann folgende beispielhafte Ausgabe:

Code: Alles auswählen

pi@openwb:/opt/evSoc $ sudo ./evSoc.py
INFO:evSoc:MQTT subscribed
INFO:evSoc:Charging started
INFO:evSoc:Plugged
INFO:evSoc:bindBT passed
ELM INIT
INFO:EVNotiPi/AtBaseDongle:Initializing PiOBD2Hat
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATZ
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'\r\rELM327 v1.5\r\r')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATE0
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'ATE0\rOK\r\r')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATL1
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATS0
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATH1
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATSTFF
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATFE
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:evSoc:BT link is open
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATSP6
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATSH7E4
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATCF7EC
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: ATCM7FF
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'OK\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:Send command: 220105
DEBUG:EVNotiPi/AtBaseDongle:Received: bytearray(b'7EC102E620105003FFF\r\n7EC2190000000000000\r\n7EC22000016937B0142\r\n7EC2368426800496414\r\n7EC248803E800000000\r\n7EC25880000C2C20100\r\n7EC261500000000AAAA\r\n\r\n')
DEBUG:EVNotiPi/AtBaseDongle:7EC102E620105003FFF first frame
DEBUG:EVNotiPi/AtBaseDongle:7EC2190000000000000 consecutive frame
DEBUG:EVNotiPi/AtBaseDongle:7EC22000016937B0142 consecutive frame
DEBUG:EVNotiPi/AtBaseDongle:7EC2368426800496414 consecutive frame
DEBUG:EVNotiPi/AtBaseDongle:7EC248803E800000000 consecutive frame
DEBUG:EVNotiPi/AtBaseDongle:7EC25880000C2C20100 consecutive frame
DEBUG:EVNotiPi/AtBaseDongle:7EC261500000000AAAA consecutive frame
0x88
INFO:evSoc:SoC=68.0
Du müsstest natürlich deine PID und Register etc in TEMP_EV.py stattdessen eintragen.
Vermutlich müsste canIDtx=0x761, canIDrx=0x762 sein.
Weiter würde ich cmd=bytes.fromhex('2101') versuchen.
index müsste dann wohl =3 sein, gezählt wird ab 1 unmittelbar hinter der Länge (hier 0x3D).
Bei mir selektiert index=34 die '88' in 7EC25880000C2C20100.
Laut Forum muss man jetzt nur noch den hex Wert z.B. 01 5E in dez umrechnen und durch 10 teilen.
Mich würde wundern wenn der Soc in mehr als einem (1) Byte stände. In https://www.myoutlanderphev.com/forum/v ... =10&t=1796 steht:
SOC in % would be:

Request address = 761
Response address = 762
Mode + PID = 2101
Relevant Data Items = 0
Formula = Total / 2 - 5
EDIT: Du müsstest aus deinem
2101 2101 762 10 3D 61 01 5D 5C 0F 34
also mit index=3 den Wert 5D auswählen. hex(5d)/2-5 = 93/2-5=41.5[%];
denn
0x762 is the 'reply' address of the BMU. 0x10 means something like first line. 0x37 is the length of the message. 0x61 is an indicator (this is always requested MODE + 0x40 on success). 0x01 is the requested PID. Then the actual data follows.
Und das wäre dann 5D für den QoS-Rohwert.

Viel Erfolg.

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 7:45 am
von Jonny
Hallo Ragnarorek,

danke für das Testfile.

Irgendwas scheint noch nicht zum stimmen.
Die canIDtx = 0x761 und canIDrx = 0x762 waren richtig.
Bei cmd = bytes.fromhex habe ich 2101 eingetragen.

Ich bekomme bei laufender Ladung immer siehe Dateianhang.
(Was mich irritiert ist die Meldung Data length Mismatch)

Beim EIntrag von Index = 3 erhalte ich folgenden Fehler (Anhang index)
Allerdings läuft es nach mehrmaligem Start irgendwann durch und ich bekomme wieder den
Data length Mismatch Fehler.


Bei meinem vorigen Post mit einem Terminalprogramm konnte man eine mehr oder weniger ständige Änderung der Antworten sehen.

2101 762 XX XX 01 5E 5D 0F 3A
2101 762 XX XX 01 5E 5D 0F 3C
2101 762 XX XX 01 63 62 0F 45
2101 762 XX XX 01 64 63 0F 46
2101 762 XX XX 01 65 64 0F 48
2101 762 XX XX 01 66 65 0F 49


Danke

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 8:56 am
von ragnaroek

Code: Alles auswählen

Data length missmatch. 
Du empfängst nur 6 Bytes statt der angekündigten 0x3D=61.
Offenbar empfängt das Dongle nur 6 Bytes und hört dann auf. Dies erzeugt die o.g. Fehlermeldung in deinem Log.

In deinem Terminalfenster-Beispiel hattest du ja auch schon nicht die richtige Anzahl Bytes empfangen. Ich dachte bisher, du hättest das raus editiert. Zunächst wäre also zu klären, WIE du alle Bytes empfangen kannst, damit die Fehlermeldung nicht auftritt.

Vielleicht liegt das an der Flow-Control atfcsd300000, die in deinem Terminalfenster-Beispiel eingeschaltet wurde. Ich würde erst mal den Dongle kurz ab- und anstecken, um den Flow-Control sauber auf default zu setzen, und es mit evSoc wiederholen.

Was mich verwundert: In deinem Terminalfenster-Beispiel hatte das ATFCSM1 ja nicht geklappt, obwohl es vorschriftsmäßig einem ATFCSDxxxxxx folgt (siehe Seite 61 im beigefügten ELM327-Manual). Deshalb das "?"
Dongle oder EV passen hier also nicht zu den Erfahrungen aus https://www.myoutlanderphev.com/forum/v ... =10&t=1796

Vielleicht müsstest du stattdessen mit ATCFCS0 den FC deaktivieren. Mit dem Terminalfenster-Beispiel mal ausprobieren (oder als dirty-hack in ELM327.py einbauen, aber dann dürfte die Kompatibilität verloren sein!). Sonst könnte es natürlich auch daran liegen, dass dein Dongle mit v1.2 doch inkompatibel ist und die langen Messages nicht richtig unterstützen kann.

Zum index-Wert hatte ich mein Posting zuvor mehrfach editiert.

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 9:57 am
von Jonny
Also,
Dongle abgezogen und neu gesteckt.
Terminal wurde jetzt nicht verbunden, nur der Pi mit evSoc.

Bei openWB habe ich den orangenen Stecker.

Das Debug sagt jetzt:

Device not available.


Was ich nicht versteheist, das ich trotz des Fehlers bei der Terminaleingabe (ATFCSM1) meine Daten bekommen habe.

2101 762 10 3D 61 01 7B 7D 0F 7C
2101 762 10 A2 61 02 0F 7B 0F 7B
2101 762 10 34 61 03 58 57 58 58
2101 762 10 0C 61 04 XX XX XX XX

Oder interpretiere ich das falsch ?

PS: der vLinker MC kann lt. Hersteller alle OBD2 Protokolle unterstützt MS-CAN und SW-CAN.

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 12:00 pm
von ragnaroek
Ein Bisschen nebelig alles, leider.
Deine 5 Zeilen sehen ganz anders aus als bei den Ergebnissen unter www.myoutlanderphev.com/forum/viewtopic.php?f=10&t=1796.
Einmalig dort "2101" eingegeben, ergab als Antwort

Code: Alles auswählen

    2101<enter>
    2101
    762 10 37 61 01 82 83 0F 8B
    762 21 24 0F 88 03 0C 6E 52
    762 22 03 4D 1C 01 99 00 00
    762 23 00 00 00 01 00 01 30
    762 24 0F 0F 01 54 00 CC 9C
    762 25 FE 00 03 0F 88 86 8B
    762 26 64 00 00 00 00 00 00
    762 27 00 00 0F 8A 00 02 00 
Gehe ich recht in der Annahme, dass du jedoch 5 mal hintereinander im Terminal "2101" eingegeben hattest, um die 5 Zeilen zu erhalten?

Die erste Zeile einer Antwort hat stets 10 nach 762, alle Fortsetzungszeilen zählen ab 21 aufwärts. Dies sind die Sequenznummern einer Multiline-Antwort. So ist das auch bei meinem Kona. Bei dir sind dort alle Zeilen aber ==10. Da stimmt also schon mal irgend etwas nicht. Daher meine Vermutung, dass du immer nur die erste Zeile übertragen bekommst und der Rest blockiert ist (z.B. wegen Flow Control-Problemen) und du 5* "2101" eingegeben hattest. Du müsstest in deinen Beschreibungen also präziser werden, damit ich verstehen kann, was dir passierte. Mit anderen Worten: dein Fehler-"?" aufgrund von ATFCSM1 ist vielleicht ein früher Hinweis, weshalb du eben gerade NICHT auch die Fortsetzungszeilen mit höheren Sequenznummern 21,22,23... bekommst.

Ich bin überrascht, dass du jetzt nicht mehr die Fehlermeldung "Data length missmatch" bekommst. Das kann unterschiedlichste Gründe haben:
  • Hattest du an evSoc etwas verändert und dies nicht beschrieben?
  • beeinflusst deine Terminaleingabe tatsächlich die Ergebnisse eines späteren evSoc. Das solltest du ggf. alles mal in Ruhe experimentell ergründen, denn wir brauchen reproduzierbare Verhältnisse!
  • Vielleicht ist die ECM zwischenzeitlich im powerdown. Dann müsste das EV einmal ein/aus geschaltet werden, um die ECM wieder zu erwecken.

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 2:30 pm
von Jonny
Ich dokumentiere Schrittweise:
Jetzt das script gestartet, und während des laufes die Ladung gestartet.
Anhang (Unbenannt)

Ohne Änderung noch eine Ausführung siehe Anhang (Unbenannt-1)

Jetzt noch eine Ausführung des Scripts mit strg+c für den Screen (Unbenannt-2)

Gehe ich recht in der Annahme, dass du jedoch 5 mal hintereinander im Terminal "2101" eingegeben hattest, um die 5 Zeilen zu erhalten? --> Ja habe ich

Hattest du an evSoc etwas verändert und dies nicht beschrieben? --> Nein, keine Änderung

beeinflusst deine Terminaleingabe tatsächlich die Ergebnisse eines späteren evSoc. Das solltest du ggf. alles mal in Ruhe experimentell ergründen, denn wir brauchen reproduzierbare Verhältnisse! --> Diese Screen sind ohne vorherige Eingaben über das Terminal. Rein nur Pi und evSoc.

Vielleicht ist die ECM zwischenzeitlich im powerdown. Dann müsste das EV einmal ein/aus geschaltet werden, um die ECM wieder zu erwecken. --> Nach dem zweiten start von evSoc.py verbindet es sich wie es aussieht von alleine. Aber soweit ich feststellen konnte nur wenn man vorher bei der WB auf Laden geht.

Und zum Schluss noch ein weiterer Screen, nach nochmaligem stoppen und starten. (Ubenannt-3)

Also irgendwie macht hier alles was es will........ :o

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 3:49 pm
von ragnaroek
Nach dem zweiten start von evSoc.py verbindet es sich wie es aussieht von alleine. Aber soweit ich feststellen konnte nur wenn man vorher bei der WB auf Laden geht.
So muss das auch sein, denn sonst ist die 12V Batterie bald leer.

Deine anderen Logs sind wie erwartet. Dein Dongle gibt genau wie ich vermutet hatte nur die erste Zeile einer Mutiline-Ausgabe aus. Das ist nicht genug aus für evSoc.

Du musst herausbekommen, weshalb bei dir im Terminal weniger Zeilen ausgegeben wird, als unter www.myoutlanderphev.com/forum/viewtopic.php?f=10&t=1796. beschrieben. Dabei kann ich nicht helfen.
Ich würde nach wie vor einen anderen Dongle nehmen, den von mir empfohlen - einfach, um diese Fehlermöglichkeit auszuschließen.

Re: EVNotiPi

Verfasst: Mo Aug 09, 2021 4:08 pm
von Jonny
Ich habe es gerade noch einmal versucht übers Terminal.
bei der Eingabe von atfcsm1 kommt anstelle ok ein ?

Jetzt habe ich in der Anleitung geschaut, und es so eingegeben.
Im Terminal bekomme ich dann ein OK. Ob es richtig ist weis ich allerdings nicht :?
Könnte man die zusätzliche Zeile beim ELM327.py eintragen ?

ATZ --> OK
ATSP6 --> OK
ATH1 --> OK
ATFCSH761 --> OK
ATFCSD300000 --> OK
ATFCSH7E8 --> Diese als Zusatz siehe Seite 61 BA
ATFCSM1 --> OK
ATSH761 --> OK

Im Anhang sieht man einmal den abgesetzten Befehl in Hex Ansicht, und die zweite im Terminal Ansicht Modus.
ich denke das uns in der Terminal Ansicht dieses Zeichen ">" sagen möchte, das da noch mehr Infos dahinter stecken.

Auf Seite 61 und 62 BA steht was über diese Moduse. Leider reichen da weder mein Englisch noch meine Programmierkenntnisse aus. :cry:

Re: EVNotiPi

Verfasst: Di Aug 10, 2021 10:57 am
von ragnaroek
ATFCSH7E8 --> Diese als Zusatz siehe Seite 61 BA
Zugriff auf CAN-ID 7E8 ? Ich hätte erwartet, du nimmst dann 761 für den outlander.

Das ">" am Ende der Datenzeile dürfte das Prompt-Zeichen für die Eingabe im Terminal zu sein.

ELM Dongle stoppt das Warten auf weitere Zeichen vom EV nach default 200ms. mit ATSTxx kann man dies mit Werten>32 verlängern.
Wäre vielleicht mal einen Versuch wert,

Code: Alles auswählen

> ATST7F
oder gar

Code: Alles auswählen

> ATSTFF
vor der ">2101" zu senden.

Re: EVNotiPi

Verfasst: Di Aug 10, 2021 1:02 pm
von Jonny
Hallo,

genau jetzt mein Verständnis Problem los... :?

ATFCSH7E8 ---> diese habe ich eingefügt lt BA. wie muss ich das auf 761 ändern ?
Und ist das an der richtigen Stelle eingetragen ? (Siehe Anhang)

> ATSTFF ---> Dieser Eintrag war schon vorhanden.

Danke