"Lauschangriff" am CAN-Bus - Theorie und Praxis

S01, S02, S03, Mó
Antworten
Gerold
Beiträge: 564
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Zeitanzeige im Display über CAN-Bus einstellen

Beitrag von Gerold »

Zunächst aber ein paar Worte zum ESP32.
Ich benutze ja zum Sniffen des CAN-Bus einen ESP32 zusammen mit einem SN65HVD230 CAN-Transceiver. Dieser wurde mit einem angepasstem Sketch aus den "examples" der esp32-can-demo-master Bibliothek der Arduino IDE. Dieser gibt die gescannten Bus-Daten über die serielle Schnittstelle an ein Terminalprogramm auf mein Laptop weiter. Dabei werden aber, wie bereits berichtet, eine ganze Menge Datenframes überlesen. Dies liegt aber, wie in diesem Thread https://esp32.com/viewtopic.php?t=13461#p53109 beschrieben, anscheinend nicht am ESP32, sondern am Datentransfer über die serielle Schnittstelle.

Mit ESP32RET https://github.com/collin80/ESP32RET habe ich eine Alternative zu dem Sketch aus den "examples" gefunden, die die Daten über Wifi sendet. Das Programm kann ferner Daten über Wifi empfangen und an über den CAN-Bus senden. Als Client auf dem Laptop habe ich SavvyCan installiert, welches neben der Darstellung der Daten eine ganze Reihe von Analysetools bietet. Der Datenverlust ist damit jetzt auf ein Minimum reduziert. Nachteilig ist, dass RTE Requests nicht angezeigt und auch nicht gesendet werden können.

Und nun zur Zeiteinstellung:
Die Uhrzeit erhält das Display vom BMS über die ID 0x200.

Code: Alles auswählen

13:35:06.465,->,Standard,ID:,0x200,7,Data:,0x03,0x13,0x20,0x55,0x07,0x11,0x21,
Das Datenframe enthält 7 Datenbytes. Das Erste ist immer 0x03, die nächsten 3 enthalten die aktuelle Uhrzeit und die letzten 3 das Datum. Etwas merkwürdig ist die Darstellung von Zeit und Datum, die Hexbytes werden nicht in Dezimalzahlen umgerechnet, sondern direkt zu Anzeige genutzt. Aus dem obigen Beispiel ergibt sich also eine Zeit von 13:20:55 Uhr am 07.11.21.

Korrigiert man die Uhrzeit im Display, so wird beim Abspeichern vom Display ein Frame mit der ID 0x201 über den CAN-Bus gesendet, welches nur die korrigierte Zeit enthält. Diese Zeit dient dann dem BMS zu Berechnung der aktuellen Uhrzeit.

Für eine korrigierte Zeit von z.B. 14:30:00 sieht das Frame wie folgt aus:

Code: Alles auswählen

ID:,0x200,4,Data:,0x04,0x14,0x30,0x00,
Dieses Datenframe enthält nur 4 Bytes. Das Erste ist immer 0x04, die nächsten 3 die Zeitangabe.
Damit kann die Zeitanzeige im Display mit jeder Anwendung geändert werden, die Frames über den CAN-Bus sendet kann, indem ein Frame mit der ID 0x201 gesendet wird.

Rudi Ratlos
Beiträge: 318
Registriert: Di 1. Nov 2022, 08:12
Roller: Seat Mo 125 (2022)
PLZ: 79
Kontaktdaten:

Re: Zeitanzeige im Display über CAN-Bus einstellen

Beitrag von Rudi Ratlos »

Gerold hat geschrieben:
So 15. Sep 2024, 18:14
Korrigiert man die Uhrzeit im Display, so wird beim Abspeichern vom Display ein Frame mit der ID 0x201 über den CAN-Bus gesendet, welches nur die korrigierte Zeit enthält. Diese Zeit dient dann dem BMS zu Berechnung der aktuellen Uhrzeit.

Dieses Datenframe enthält nur 4 Bytes. Das Erste ist immer 0x04, die nächsten 3 die Zeitangabe.
Damit kann die Zeitanzeige im Display mit jeder Anwendung geändert werden, die Frames über den CAN-Bus sendet kann, indem ein Frame mit der ID 0x201 gesendet wird.
Super! Weißt du auch schon, wie das Datum in den Akku kommt? Beim "Connected" sicherlich über das Telemetriemodul, aber bei einem Roller, der keins hat?

Gerold
Beiträge: 564
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von Gerold »

Nein, weiß ich leider nicht. Ich bin mir auch nicht sicher, ob das Astra Modul Zeit/Datumsinfos über den CAN-Bus sendet. In den Datensätzen, die das Modul an meinen Server sendet, sind die gesendeten Zeiten nämlich immer korrekt, während bei meinem Roller die BMS-Uhr ständig nachgeht.

Benutzeravatar
error
Beiträge: 1770
Registriert: Di 20. Dez 2022, 19:37
Roller: NIU GT, Silence S01, Vectrix vx-1, Horwin CR6, Twizy
PLZ: 2
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von error »

Rudi Ratlos hat geschrieben:
So 15. Sep 2024, 19:45
Super! Weißt du auch schon, wie das Datum in den Akku kommt? Beim "Connected" sicherlich über das Telemetriemodul, aber bei einem Roller, der keins hat?

Bildschirmfoto 2024-09-15 um 20.14.43.png

Silence weiß anscheinend dass die Zeit "a little slow" läuft

Gerold
Beiträge: 564
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von Gerold »

Die Diagnostic Tools kommunizieren ja mit Sicherheit auch über den CAN-Bus mit dem BMS. Es ist dann auch möglich, auch das Datum über den Bus zu ändern, man muss nur noch herausfinden wie.

Benutzeravatar
Pfriemler
Moderator
Beiträge: 2550
Registriert: Di 7. Mai 2019, 17:41
Roller: SEAT Mó 125 (Mj. 2021, Votol)
PLZ: 14513
Wohnort: Südrandberlin
Tätigkeit: Tonkünstler
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von Pfriemler »

Mir war bislang nicht klar, woher die Zeit im Roller kommt, aber ja - von der Uhr im BMS ergibt doch den meisten Sinn.
Seit meiner letzten Akkureparatur läuft die Zeit im Roller dramatisch mehr aus dem Ruder, jetzt ist mir auch klar warum.
Nein, auch beim "Connected" gibt es keine automatische Zeitkorrektur vom Astra.
Siehe auch den Thread zur Sommer/Winterzeit, da habe ich mich schon darüber ausgeko, äh ...-lassen.
Die Featureliste für ein pimp-your-silence-CAN-Bus-Zusatzmodul wird immer länger :-)
SuperSoco CUx '19-'21 (36Wh/km in 2000 km), Piaggio Medley 125 '20-'22 (26,6 ml/km in 5000 km). Seat Mó: Bild

Gerold
Beiträge: 564
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von Gerold »

Das Telemetriemodul kennt ja einige nicht dokumentierte Kommandos, wie $RCAN und $SCAN. Mit $RCAN können Datenframes des CAN-Bus ausgelesen werden, mit $SCAN Frames auch schreiben können.
Während $RCAN funktioniert, "$RCAN,200 "gibt z.B.

Code: Alles auswählen

$RCAN,200,07,03,10,11,33,16,09,24,00,OK
zurück, habe ich es noch nicht geschafft, über $SCAN Frames auf den Bus zuschreiben Alle versuche enden mit einem "$SCAN,ER". Falls jemand die Syntax des $SCAN Kommandos kennt, bitte hier posten.

Das $SCAN Kommando könnte man zur Zeitkorrektur der BMS Zeit verwenden. Ich könnte z.B. meine Apps so erweitern, dass beim Starten des Rollers über die App einmalig ein Zeitabgleich mit der Systemzeit des Smartphones erfolgt.
Als weitere Möglichkeit könnte ich meine Smarthome Anwendung so erweitern, dass bei jedem Ladevorgang, der von der Smarthomeanwendung gesteuert wird, ein auch automatischer Zeitabgleich angestoßen wird.

lorenzo.deluca
Beiträge: 23
Registriert: Sa 22. Mai 2021, 23:36
Roller: Silence S01
PLZ: ITA
Land: anderes Land
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von lorenzo.deluca »

Gerold hat geschrieben:
Mo 16. Sep 2024, 10:32
Das Telemetriemodul kennt ja einige nicht dokumentierte Kommandos, wie $RCAN und $SCAN. Mit $RCAN können Datenframes des CAN-Bus ausgelesen werden, mit $SCAN Frames auch schreiben können.
Während $RCAN funktioniert, "$RCAN,200 "gibt z.B.

Code: Alles auswählen

$RCAN,200,07,03,10,11,33,16,09,24,00,OK
zurück, habe ich es noch nicht geschafft, über $SCAN Frames auf den Bus zuschreiben Alle versuche enden mit einem "$SCAN,ER". Falls jemand die Syntax des $SCAN Kommandos kennt, bitte hier posten.

Das $SCAN Kommando könnte man zur Zeitkorrektur der BMS Zeit verwenden. Ich könnte z.B. meine Apps so erweitern, dass beim Starten des Rollers über die App einmalig ein Zeitabgleich mit der Systemzeit des Smartphones erfolgt.
Als weitere Möglichkeit könnte ich meine Smarthome Anwendung so erweitern, dass bei jedem Ladevorgang, der von der Smarthomeanwendung gesteuert wird, ein auch automatischer Zeitabgleich angestoßen wird.
Hello Gerold, sorry for english... very good thinking!
Maybe you already seen my open source private Silence/Seat server project https://github.com/lorenzo-deluca/silen ... ate-server
If we can find the CAN coding for the time update I can implement the command and do everything automatically via MQTT / Home Assistant :)

Benutzeravatar
error
Beiträge: 1770
Registriert: Di 20. Dez 2022, 19:37
Roller: NIU GT, Silence S01, Vectrix vx-1, Horwin CR6, Twizy
PLZ: 2
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von error »

Wieviel Aufwand wäre es den Datenverkehr vom Ixxat mitzuplotten? Geht das zeitgleich per API bzw. per Programm oder muss dafür zusätzliche Hardware her?

Ich hätte sonst noch einen PCAN+ Adapter von der Vectrix. - Müsste dann damit wohl irgendwo den Canbus anzapfen.

Ich bin aber nicht so sehr der Programmierspezie wie ihr.

Gerold
Beiträge: 564
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: "Lauschangriff" am CAN-Bus - Theorie und Praxis

Beitrag von Gerold »

Den CAN-Bus wird am einfachsten an der OBDII Buchse abgegriffen.

Ich kenne die beiden Adapter nicht, so wie es aussieht, braucht man zum Anschluss der Adapter an die Buchse noch einen DB9 nach OBDII Umsetzer.
Da die beiden Adapter wohl proprietär sind, muss man sich noch beim Hersteller schlau machen, mit welcher Software der Bus angezapft werden kann.

Antworten

Zurück zu „Silence / SEAT“

Wer ist online?

Mitglieder in diesem Forum: Pfriemler und 10 Gäste