Hallo zusammen,
mich würde sehr interressieren ob jemand erfolgreich seine Anlage mit ESPHome in Home Assistant eingebunden hat. @M_K z.B. scheint hier wohl zumindest zum Teil erfolgreich gewesen zu sein.
Das Projekt OpenE3 ist mir natürlich bewusst. Tolle Sache und über die typische (Linux-)Platform hinweg hilfreich. Habe auch schon über eine Stunde den entsprechenden Thread hier im Forum gewälzt und bin doch nicht durchgekommen. Ich würde hier gerne erfahren, ob das nicht noch einmal leichtgewichtiger realisiert werden kann, bewusst fokusiert auf Home Assistant und z.B. den sehr günstigen und stromsparenden ESP32 Microcontroller-Board.
Würde mich freuen wenn jemand seine Erfahrungen damit teilen würde. In wie weit funktioniert der Zugriff auf die Viessmanngeräte über Home Assistant über den CAN-Bbus und ESP-Home und was geht eher schlecht.
Grüße
Stefan
Hallo Stefan,
gerne teile ich meine Erfahrungen.
Ich nutze jetzt seit über einem Jahr meine ESPHome-Bastelei um Daten vom VX3 und E380 abzugreifen.
https://community.viessmann.de/t5/Konnektivitaet/CAN-Bus-Home-Automation-E3-Generation-lokal-und-kos... und die Community dort haben mir sehr geholfen.
Obwohl mich meine Umsetzung zufrieden stellt, ist sie keineswegs für jedermann zu empfehlen.
Im Gegensatz zu open3e gibt es einige Einschränkungen und natürlich andere Hardware-Anforderungen.
Meine Realisierung kann jedoch bestimmt noch optimiert werden.
Hardware-Anforderungen
An den ESP32 kann man nicht einfach die üblichen USB-to-CAN-Adapter anschließen.
Hierfür muss man sich also ein passendes ESP-Board mit (isolierter) CAN-Schnittstelle besorgen oder etwas selber basteln.
Ich habe es mit einem MCP2515-Board (+Levelshifter-Schaltung) gelöst und würde es heute jedoch mit dem integrierten CAN-Controller des ESPs versuchen und eine isolierte Schnittstelle realisieren.
Siehe dazu: https://esphome.io/components/canbus/.
Einschränkungen
Das Abfrageregime und Protokoll für die Datenpunkte vom VX3 (bzw. aller E3-Geräte) muss eigens in ESPHome (YAML) konfiguriert werden. Aktuell gibt es keine ESPHome-Komponente, welche diese Arbeit übernimmt. Kenntnisse von YAML und C sind daher empfehlenswert.
Für die Datenpunkte orientiere ich mich an https://github.com/abnoname/open3e/blob/master/src/open3e/Open3Edatapoints.py.
Für das Protokoll (UDS / ISO-TP) gibt es hier eine gute Erklärung: https://www.embeddeers.com/knowledge-area/jro-can-isotp-einfach-erklaert/ und https://www.csselectronics.com/pages/uds-protocol-tutorial-unified-diagnostic-services.
Problematisch sind hierbei in erster Linie die Datenpunkte, welche mehr als ein CAN-Frame als Antwort haben.
(das ist die Mehrheit aller Datenpunkte) Hier müssen nämlich zusätzlich zur eigentlichen Anfrage des Datenpunktes noch weitere "Flow Control Frames" gesendet werden. Da die darauf folgenden "Consecutive Frames" nicht mehr über eine ID zuordenbar sind, muss darauf geachtet werden, dass man diese nicht falsch interpretiert. Ein gutes Konzept für Timing und "Verriegelung" der Anfragen ist daher notwendig.
Der ESP an sich und dessen Auslastung durch andere Aufgaben schränkt die Anzahl/Aktualiserungsrate der Datenpunkte vermutlich ein. Hierzu kann ich jedoch keine genauen Angaben machen.
Eine ähnliche Performance wie mit open3e ist fraglich.
Fazit
Das ganze Unterfangen ist sicher nicht für Laien geeignet, sofern diese nicht auf eine fertige Implementierung zurückgreifen können. Mit etwas Programmier-Erfahrung und Geduld ist es aber einen Versuch Wert.
Sofern Interesse besteht, kann ich gerne ein Beispiel (ESPHome-YAML) bereitstellen.
Hier im Forum ist das anscheinend nicht so einfach möglich...?
Beste Grüße!
Vielen Dank @M_K für die ausführliche Antwort!
Ein wesentliches Problem scheint also auch in deinem Fall die Protokollschicht über den einfachen CAN-Paketen zu sein, soweit ich verstanden habe fehlt diese in der CAN Bus-Umsetzung von ESPHome. Würde das noch direkt auf dem Microcontroller laufen wäre es vermutlich anders.
Ich denke ich werde dann wohl auch erstmal den Weg über open3e mit raspi versuchen.
Aber mal schaun, vielleicht ist ja jemand anderes weiter und antwortet hier noch.
Vielen Dank!
Stefan
Guten Tag, ich möchte Sie bitten, mir den Code für ESPHome zur Verfügung zu stellen. Vielen Dank.
PM ist raus