A parking heater called "Chinese Diesel Heater" has established itself on the market and has been sold under a variety of names. The best known of these is Vevor. The parking heater should be used with caution as it is not approved for vehicles in Germany. However, due to its low price, it is very popular and in this tutorial we want to show you how you can easily operate it with the VANPI OS.
1. Communication with the heating system .
The heater communicates with the control unit via a serial interface. However, this does not work with RX and TX as usual, but rather with half-duplex communication. All data is therefore sent over one line.
The signal line is usually blue or green.
Our task is to recreate the control unit and evaluate the correct control commands and send them to the heater.
2. Hardware
The data is evaluated in Node-Red, and the control commands also come from here. So we ideally need a "USB high-duplex adapter" with a signal level of 5V.
And this is where an Arduino Nano comes into play again. This has an Atmega 8bit MCU and a USB-serial converter. To turn the Arduino into a serial-to-half-duplex converter, we need to write a small program for the Atmega chip.
You can find the corresponding sketch in the attachments.
Using the library "SoftwareSerialWithHalfDuplex", we build a very simple forwarding from software serial "sOne" to the normal USB serial.
For the software serial "sOne" we enter the baud rate of the Chinese diesel heaters of 25000 and for the normal USB-Serial connection we leave 9600 set as the baud rate.
All data is now forwarded via the Arduino (PIN2) via USB to the necessary "OneWire" communication of the heater. It is recommended to solder a 470 Ohm resistor into the signal line to prevent signal interference.
In addition to the signal line, you also have to connect the ground line (black) of the heater to the Arduino.
DANGER!
You have to remember that there may be a ground connection to the battery here, even if you disconnect the heater's main ground cable. Think about another fuse here, otherwise the cable could burn out.
DANGER!
2. Integration into Node-Red
You can now use our user interface to configure the China auxiliary heater and select the appropriate USB port. But what exactly happens now?
Connection Flow
First, the data forwarding, i.e. the routing to the appropriate flow, is set in the connection flow, in our case the forwarding to the flow "Heater Chinese Diesel" and the baud rate for the respective port is set further down in the flow.
Chinese Diesel - Flow
In the lower part of the flow, the data packets with the status information of the heater arrive and are converted into a JSON object via the "buffer split" node. The protocol was analyzed by Ray Jones. His work and the exact protocol can be found in the appendix.
After we have converted the data into a JSON object from a SerialBuffer, it is only assigned to the global variables and sent to the displays in the UI.
When the heater starts up, the start command comes from the "HeaterController" flow. This is the higher-level flow and collects the control elements for the various heating flows. Depending on whether the heater should be switched on or off, the corresponding buffer is sent to the heater.
An implementation of temperature or level has not yet happened with this heater. But please take a closer look at the protocol.
The time stamp in the flow is an automated sending of the status request to the heater every 2 seconds. Without this, no values come from the heater.
Since the USB connection was interrupted on some systems, we installed a reset of the USB connection. After that, the connection to the heater remained stable.
Do you have any questions or requests? Feel free to write to us in the comments. Otherwise, we hope we were able to briefly explain how you can connect your "Chinese Diesel" heater.
USBRESET:
https://www.computerhilfen.de/info/usb-reset-am-raspberry-pi-usb-ports-zurueckstellen.html
Heater-Teamp-Module.ino file:
https://share.12-s.de/s/G4dBm2mHtk7zWAM
Hacking the Chinese Diesel Heater
Communications Protocol file: