-
-
Notifications
You must be signed in to change notification settings - Fork 138
eBus with Raspberry Pi Serial
// repository owner comment: this page was contributed by a user, content is not checked/verified
It does seem to be possible to successfully use the Raspberry Pi's primary (PL011) UART to communicate with eBus, at least with my boiler (Vaillant ecoFIT pure).
The issue appears to be that the UART adds 15-18ms latency when transmitting. This doesn't seem to be affected by Linux's low_latency
option which you can set with setserial
. I haven't had time to check if this latency brings the protocol out of spec, but it does work reliably with my equipment.
The hardware in this case is a Pi Zero W, although the Pi3 shares the same hardware. First disable bluetooth and enable the main UART in /boot/config.txt
, then reboot:
dtoverlay=pi3-disable-bt
enable_uart=1
Secondly, tell ebusd to wait for an extra 20ms by adding the --latency=20
option into /etc/default/ebusd
, and change the serial device to /dev/ttyAMA0
.
Note: On Raspberry Pi 4 try with --latency=60
as the 20ms value seems to be not enough.
Note: Since wiring info is not complete please note that eBus has a working voltage of 0-20V as stated on https://en.wikipedia.org/wiki/EBUS_(serial_buses). Whereas the RPi works on 3.3V. Therefore for wiring a voltage divider or transceiver is required. It would be nice if the original author could elaborate exactly how he wired his Pi zero W to an eBus device
For more details on using the GPIO UART and pin layout, see the following links: