Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

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

Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Gerold »

Wie bereits angekündigt viewtopic.php?p=330053#p330053[/url] hier die Beschreibung meiner Tasmota Lösung zur Interpretation der CAN-Bus Daten des Silence S01/Seat Mo 125.

Die Tasmota Software https://www.tasmota.info/ wurde ursprünglich entwickelt, um die Firmware von Sonoff Komponenten zur ersetzen. Die original Sonoff Firmware arbeitet auf einem ESP8266 Chip und ermöglicht die Steuerung der Sonoffs (Relais/Stechdosen/Lampen) per App über eine chinesische Cloudanbindung. Die Tasmotaanwendung ermöglicht dagegen die Steuerung dieser Geräte ohne Cloudanbindung direkt über den eigenen Webbrowser bzw. per mqtt auch über die gängigen Open Source Smarthomeanwendungen. Die Daten werden dazu über das eigene Wlan Netz übertragen.

Die Software wird ständig weiterentwickelt, um auch Geräte mit ESP8266 anderer Hersteller oder um auch allgemein Sensoren zu betreiben, die an den ESP anschließbar sind. Tasmota ist modular aufgebaut, d.h. neue Sensoren können durch Hinzufügen eines neuen Moduls integriert werden. Neuerdings wird auch der ESP32 unterstützt, ich selbst aber habe Tasmota bisher noch nicht auf diesem Chip getestet.

Mittlerweile wurde auch ein Modul entwickelt, welches über einen MCP2515 die CAN-Bus Daten eines Freedom Won Akkus ausliest und diese an einen Webbrowser bzw. mqtt-Server weitergibt. Dieses Modul kann durch einfache Anpassung auch für das Lesen der CAN-Bus Daten des Silence/Seat verwendet werden. Ich habe dazu in diesem Modul die Freedom Won Daten durch die Silencespezifischen ersetzt.

Hardware:

Zum Betrieb der Anwendung wird ein Entwicklungsboard (Nodemcu oder Wemos D1), das mit einem ESP8266 Chip bestückt ist und eine MCP2515 benötigt. Zur Verbindung des MCP mit dem Roller ist ein OBD-Stecker hilfreich. Die Verkabelung des Boards mit dem MCP ist im Netz beschrieben. Da der ESP mit einer Betriebsspannung von 3,3V, der MCP aber mit 5V arbeitet, muss dies bei der Verkabelung berücksichtigt werden. Es gibt aber auch MCP's https://joy-it.net/de/products/SBC-CAN01, die direkt an 3,3V Chips angeschlossen werden können. Zum Flashen der Software wird das Board über USB an einen Rechner angeschlossen, über USB erfolgt während des Betriebs auch die Stromversorgung des Boards.

Tasmota:

Der Tasmota Code kann von hier https://github.com/arendst/Tasmota/tree/prerelease-13.1 in Form einer Zip-Datei heruntergeladen werden. Die entpackte Zip enthält im Ordner ".../Tasmota-Master/tasmota/xsns-sensors" die Datei xsns_87_mcp2515.ino. Diese enthält das Modul zum Lesen der CAN Daten und muss vor dem Flashen von Tasmota durch die im Amhang beigefügte Datei xsns_87_mcp2515.ino.txt (die Endung .txt vorher entfernen) ersetzt werden.

In dieser Datei wurden die silencespezifischen Anpassung in den Funktionen MCP2515_Read und MCP2515_Show vorgenommen. In MCP2515_Read werden aus den gelesenen CAN-Daten die ID's selektiert, welche die gewünschten darzustellenden Werte enthalten und die Parameter aus den zugehörigen Datenbytes der jeweiligen ID selektiert. Die Dekodierung erfolgte an Hand der Tabelle aus dem Post viewtopic.php?p=286516#p286516. In MCP2515_Show werden die Parameter für die Darstellung über mqtt (Jason-Zweig) bzw. auf dem Browser (Webserver-Zweig) aufbereitet.
Will man weitere/andere CAN-Daten des Rollers anzeigen, muss man beide Funktionen entsprechend anpassen.

Tasmota wird mit Hilfe der PlatformIO ([url]ttps://platformio.org/[/url] kompiliert und auf den ESP8266 geflasht. Anleitungen zur Installation und Bedienung der PlatformIO findet man im Netz, sowie in der Tasmota Doku https://tasmota.github.io/docs/.


Vor dem Flashen müssen noch folgende Konfigurationsanpassungen vorgenommen werden:

- Der MCP besitzt einen Quartz, der mit 8 bzw. 16 Mhz getaktet ist. Die Taktfrequenz wird in Zeile 45 von xns_87_mcp2515.ino eingetragen.

- In der Datei ".../Tasmota-Master/tasmota/my_user_cofig.h" müssen in den Zeilen 364, 765 und 781 jeweils die beiden Schrägstriche ("//") am
Zeilenanfang entfernt werden. Damit wird die deutsche Sprachunterstützung eingestellt und die Moduldatei xsns_87_mcp2515.ino beim
Kompilieren von Tasmota mitberücksichtigt.

- in der Datei ".../Tasmota-Master/tasmota/user_config_overide.h" können in den Zeilen 46 und 49 die SSID und das Passwort des Hausnetzes
eingegeben werden. Damit wird die Anbindung in das Hausnetz vereinfacht.

Nach dem Flashen muss Tasmota noch konfiguriert werden. Dazu wird im Webbrowser unter dem Reiter "Einstellungen --> Gerät konfigurieren" die Geräte-Einstellung wie folgt vorgenommen. Falls der CS-Pin des MCP nicht am GPIO5 des ESP's angeschlossen wurde, muss dies hier geändert werden.

Bildschirmfoto vom 2023-09-13 14-52-42.png
Dateianhänge
xsns_87_mcp2515.ino.txt
(29.45 KiB) 76-mal heruntergeladen

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

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Rudi Ratlos »

Coole Arbeit - sehe ich das richtig, dass bisher "nur" Werte aus dem BMS berücksichtigt werden?

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

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Gerold »

Das ist richtig. Ich nutze Tasmota hauptsächlich, um gelegentlich den Ladevorgang des Akkus zu beobachten. Man erhält hier im Moment folgende Informationen:

Bildschirmfoto vom 2022-08-15 21-55-37.png
Bildschirmfoto vom 2022-08-15 21-55-37.png (75.21 KiB) 1524 mal betrachtet

Interessant für mich sind vor allem die Spannungen der einzelnen Zellblöcke. Auch die Änderungen in den Flags sind interessant, so kann man an Hand des CC- und CV-Flags sehen, wann die CC-Phase endet und die CV-Phase beginnt. Es gibt auch ein BAL-Flag, das vermutlich während des Balancings aktiv ist, dies ist bis jetzt bei mir aber noch nicht aufgetaucht.

Benutzeravatar
Pfriemler
Moderator
Beiträge: 2250
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: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Pfriemler »

ceterum censio: Zwar lernt man bei dem Projekt eine Menge dazu, aber mal eben platform.io installieren, den Quellcode adaptieren und das Ergebnis mal schnell auf einen Wemos D1 schieben ist nicht, zumindest klappt das bei mir nicht, vor allem wenn man schon mit anderen Projekten unterwegs ist, ständig ist irgendeine Lib nicht kompatibel. Fertige Binarys wären deutlich einfacher, was spricht eigentlich dagegen?
Ich hatte mal eine frühe Version von Gerold testweise laufen, das war wirklich sehr einfach und komfortabel. Das gleiche verlinkte Joy-It-Modul mit den zwei Spannungsversorgungen (5V für den CAN-Wandler, 3,3V für den MCP mit kompatiblen Logikpegeln ohne Zusatzbauteile) ist bei mir übrigens aus unbekannten Gründen "gestorben" (es reagiert auf dem SPI schlicht nicht). Ich wünsche Euch allen mehr Glück ...
SuperSoco CUx '19-'21 (36Wh/km in 2000 km), Piaggio Medley 125 '20-'22 (26,6 ml/km in 5000 km). Seat Mó: Bild

Benutzeravatar
Klaona
Beiträge: 211
Registriert: Fr 30. Sep 2022, 12:00
Roller: 2 x Seat Mò 125
PLZ: 13xxx
Kontaktdaten:

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Klaona »

Gefällt mir auch sehr gut, hab zwar versucht mich einzulesen, ist aber doch etwas hoch für mich. Hardware ist zwar komplett vorhanden, aber das war es auch schon. Aber warten wir mal ab.

cubase
Beiträge: 2
Registriert: Fr 29. Sep 2023, 13:55
PLZ: 98
Kontaktdaten:

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von cubase »

Hallo Gerold

Bin bei der Suche nach CAN+tasmota auf Deinen interessanten Beitrag gestossen und hätte da mal ne Frage:
Ich möchte gern, quasi artverwand, einen Ladegerät https://www.beyondlogic.org/review-huaw ... -5vdc-3kw/ per CAN und Tasmota auslesen und die Stromstärke steuern.
Wäre es möglich den Treiber für das Ladegerät anzupassen?
Hier hat das jemand in c gemacht:
https://github.com/craigpeacock/Huawei_ ... in/r4850.c
und hier für esphome:
https://github.com/mb-software/esphome-huawei-r4850

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

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Gerold »

Was vermutlich gehen wird, ist das Auslesen des Ladegerätes. Ich wüsste aber nicht, wie man dann die Stromstärke über Tasmota steuert.

cubase
Beiträge: 2
Registriert: Fr 29. Sep 2023, 13:55
PLZ: 98
Kontaktdaten:

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von cubase »

Na Auslesen wäre doch was!
Zum Setzen muss man laut Doku :
tHHcz02.png
Im c code sieht das so aus:

Code: Alles auswählen

int r4850_set_current(int s, float current, bool nonvolatile)
{
	struct can_frame frame;

	uint16_t value = current * MAX_CURRENT_MULTIPLIER;
	//printf("Current = 0x%04X\n",value);

	uint8_t command;

	if (nonvolatile) command = 0x04;	// Off-line mode
	else		 command = 0x03;	// On-line mode

	frame.can_id = 0x108180FE | CAN_EFF_FLAG;
	frame.can_dlc = 8;
	frame.data[0] = 0x01;
	frame.data[1] = command;
	frame.data[2] = 0x00;
	frame.data[3] = 0x00;
	frame.data[4] = 0x00;
	frame.data[5] = 0x00;
	frame.data[6] = (value & 0xFF00) >> 8;
	frame.data[7] = value & 0xFF;

	if (write(s, &frame, sizeof(struct can_frame)) != sizeof(struct can_frame)) {
		perror("Write");
		return 1;
	}
Allerdings bin ich überfragt, wie man den Befehl über die Konsole oder über eine (Script)-Variable setzen kann.

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

Re: Silence S01/Seat Mo: CAN-Bus mit Tasmota auslesen

Beitrag von Gerold »

Ich bin da leider auch überfragt.

Antworten

Zurück zu „Silence / SEAT“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 88 Gäste