Unter dem Namen "Chinese Diesel Heater" hat sich eine Standheizung auf dem Markt etabliert, welche unter verschiedensten Namen vertrieben wurde. Der bekannteste davon ist der Name Vevor. Die Standheizung ist mit Vorsicht zu genießen, da sie in Deutschland nicht für Fahrzeuge zugelassen ist. Durch ihren günstigen Preis ist sie dennoch sehr verbreitet und in diesem Tutorial wollen wir euch zeugen, wie ihr sie einfach mit dem VANPI OS betreiben könnt.
1. Kommunikation zur Heizung.
Die Heizung kommuniziert mit dem Bedienteil via serieller Schnittstelle. Jedoch wird hierfür nicht wie üblich mit RX und TX gearbeitet, sondern mit einer halfduplex Kommunikation. Alle Daten werden also über eine Leitung gesendet.
Die Signalleitung ist meistens blau oder grün.
Unsere Aufgabe besteht also darin, das Bedienteil nachzubauen und die richtigen Steuerbefehle auszuwerten und an die Heizung zu senden.
2. Hardware
Die Auswertung der Daten findet in Node-Red statt, von hier kommen auch die Steuerbefehle. Wir benötigen also am besten einen "USB-Hafduplex-Adapter" mit einem Signalpegel auf 5V.
Und hier kommt wieder ein Arduino Nano ins Spiel. Dieser besitzt einen Atmega 8bit MCU und einen USB-Seriell-Wandler. Um den Arduino nun in ein Seriell-zu-halfduplex Konverter zu verwandeln, müssen wir ein kleines Programm für den Atmega Chip schreiben.
Den passenden Sketch findet ihr in den Anhängen.
Mithilfe der Library "SoftwareSerialWithHalfDuplex", bauen wir uns eine ganz einfache Weiterleitung von Software-Serial "sOne" auf den normalen USB-Serial.
Für den Software Serial "sOne" geben wir die Baudrate der Chinese Diesel Heizungen von 25000 ein und für die normale USB-Serial Verbindung lassen wir 9600 als Baudrate eingestellt.
Alle Daten werden nun über den Arduino (PIN2) per USB auf die nötige "OneWire" Kommunikation der Heizung weitergeleitet. Es ist zu empfehlen in die Signal Leitung einen 470 Ohm Widerstand einzulöten um Signalstörungen vorzubeugen.
Neben der Signalleitung müsst ihr auch die Masseleitung (schwarz) der Heizung an den Arduino anschließen.
ACHTUNG!
Ihr müsst dabei bedenken, dass hier evtl. Masse zu Batterie vorhanden ist, auch wenn ihr das Hauptmassekabel der Heizung trennt. Denkt hier an eine weitere Sicherung, sonst kann euch das Kabel wegbrennen.
ACHTUNG!
2. Einbindung in Node-Red
Über unser Userinterface könnt ihr nun in der Config die China Standheizung einstellen und den passenden USB-Port auswählen. Doch was passiert jetzt genau.
Connection Flow
Als Erstes wird im Connection Flow die Datenweitergabe, also das Routing zum passenden Flow gesetzt, in unserem Fall die Weitergabe zum Flow "Heater Chinese Diesel" und die Baudrate für den jeweiligen Port wird weiterunten im Flow gesetzt.
Chinese Diesel - Flow
Im unteren Teil des Flows kommen die Datenpakete mit den Zustandsinformationen der Heizung nun an und werden über die "buffer split" Node in ein json objekt umgewandelt. Das Protocol wurde dabei von Ray Jones analysiert. Seine Arbeit und das genaue Protokoll findet ihr im Anhang.
Nachdem wir die Daten in ein Json-Objekt aus einem SerialBuffer umgewandelt haben. Werden sie nur noch den globalen Variablen zugeordnet und an die Anzeigen im UI geschickt.
Beim Startvorgang der Heizung kommt der Startbefehl vom Flow "HeaterController". Dieser ist übergeordnet und sammelt die Bedienelemente für die verschiedenen Heizungsflows. Je nachdem, ob die Heizung eingeschaltet oder ausgeschaltet werden soll, wird der entsprechende Buffer an die Heizung gesendet.
Eine Implementierung von Temperatur oder Stufe ist bei dieser Heizung noch nicht passiert. Schaut euch dazu aber gerne das Protokoll genauer an.
Der im Flow sich befindende TimeStamp ist ein automatisiertes Senden des StatusRequest aller 2s an die Heizung. Ohne diesen kommen keine Werte aus der Heizung.
Da es bei manchen Systemen zu Abbrüchen der USB-Verbindung kam, haben wir einen Reset der USB-Verbindung eingebaut. Danach blieb die Verbindung zu Heizung stabil.
Habt ihr Fragen oder Wünsche? Schreibt uns gerne in die Kommentare. Ansonsten hoffen wir, wir konnten euch hier kurz zusammengefasst erklären, wie ihr eure "Chinese Diesel" Heizung anbinden könnt.
USB RESET:
https://www.computerhilfen.de/info/usb-reset-am-raspberry-pi-usb-ports-zuruecksetzen.html
Heater-Teamp-Module.ino Datei:
https://share.12-s.de/s/G4dBm2mHtk7zWAM
Hacking the Chinese Diesel Heater
Communications Protocol Datei: