Connected Vaillant to Home Assistant

Introduction

I bought a new Vaillant ( Hr-ketel ecoTEC plus) central heating boiler a few months back, my old boiler from 2001 still worked, but I rather had it replaced, before it broke. When ordering there was an option to make it connected with the vSMART for about €200 extra. It sounded a bit to much and saw no integration with Home Assistant (HA) directly (at that time). So I tried an alternate way.

eBUS

Vaillant uses a protocol called eBUS for external communication. This protocol is based on UART but at different voltage levels, so be able to use this protocol we need some hardware to do the translation. Although there were some solutions available online, I couldn’t find a tiny and SMD variant. This is why I decided to create my own PCB in KiCAD. My design is based on the following project: https://ebus.github.io/adapter/. My project can be found here: https://gitlab.com/fromeijn/ebuzzz-adapter

This PCB uses a USB to UART converter board with an CP2102, e.g this one. It is electrically isolated so no harmful ground loops or other issues can occur. There are also some helpfull LEDs to show you what is going on.

Home Assistant Integration

To integrate with Home Assistant I used ebusd running on an Raspberry Pi I had laying around. The ebusd has an MQTT client integrated, this is an easy way to hook it up to Home Assistant. I used it in the following configuration for ebusd:

# add custom config for the vrt350 thermostat
cd /home/pi/
git clone https://github.com/john30/ebusd-configuration.git
cd ebusd-configuration/
cp ebusd-2.1.x/en/vaillant/15.370.csv ebusd-2.1.x/en/vaillant/15.350.csv

# you can change the r; at the beginning of the lines by r1; so it will be read out automatically and pushed on MQTT

# edit /etc/default/ebusd
EBUSD_OPTS="--scanconfig 
--configpath=/home/pi/ebusd-configuration/ebusd-2.1.x/en --mqtthost=<homeassistant_ip> --mqttport=1883 --mqttuser=<user> --mqttpass=<passwd>"

In Home Assistant I used the MQTT HVAC integration and set is up as follows:

climate:
  - platform: mqtt
    name: CV
    modes:
     - auto
     - heat
     - cool
     - 'off'
    mode_state_template: >-
      {% set values = { 'auto':'auto', 'on':'heat',  'night':'cool', 'summer':'off'} %}
      {{ values[value] if value in values.keys() else 'off' }}
    mode_command_topic: "convert/modeset"
    mode_state_topic:  "ebusd/350/Hc1OPMode"
    temperature_state_topic: "ebusd/350/DisplayedHc1RoomTempDesired"
    temperature_low_state_topic: "ebusd/350/Hc1NightTemp"
    temperature_high_state_topic: "ebusd/350/Hc1DayTemp"
    temperature_low_command_topic: "ebusd/350/Hc1NightTemp/set"
    temperature_high_command_topic: "ebusd/350/Hc1DayTemp/set"
    current_temperature_topic: "ebusd/350/DisplayedRoomTemp"

Sadly my Valliant / ebusd doesn’t understand heat, cool. Also my heater can not cool (of course), but it has a night mode (low temperature setting), we use that instead. So we need to translate heat to on and cool to night, we do this with this automation:

- id: 1234
  alias: Convert HVAC Mode
  trigger:
  - platform: mqtt
    topic: convert/modeset
  action:
  - data_template:
      payload: '{% set mode_name = trigger.payload %} {% set modes = { ''off'':''summer'',
        ''heat'':''on'', ''cool'':''night'', ''auto'':''auto'' } %} {{ modes[mode_name]
        if mode_name in modes.keys() else ''auto'' }}'
      topic: ebusd/350/Hc1OPMode/set
    service: mqtt.publish

Conclusion

With this integration we can control the temperature remotely or automatically. I’ve added presence detection and a google calendar so no energy is wasted which is a big plus for me. This project was fun to get my home automation kick stared and I learned something one the way. Hope this helps some of you as well!

13 Replies to “Connected Vaillant to Home Assistant”

  1. Hey Chris,

    I do have some PCB’s and parts, so if you want I can make one and send it to you. Do you want to solder them yourself?

  2. Hi Floris,

    nice job! I’ve just got around to connecting my Vaillant EcoTec Plus heater to Home Assistant.
    Thank you for sharing your configuration. I will definitly use parts of your configuration.

    1. Wow. Looks really nice. Possible to purchase one? 🙂 I really want to know what the f.. is going om within my heatpump, and the APP is completely rubbish!

  3. Hello Floris,

    I’m Dirk from Belgium, I am also interested in this project.
    I have a ecoVIT VKK SWE 366/4 with a actoSTOR VIH K 300 ‘Boiler’, we have a calorMATIC 430f thermostat.

    Inside of the VKK366
    https://photos.app.goo.gl/DjjkBmPLUHEhxo4N7

    I am wondering if this would work with my installation also, if this is true then I’m interested in the pcb and components, soldering is no problem.

    Alvast bedankt!
    Dirk

  4. Looks quite elegant indeed. Have a Brink B16HRD air heater which communicates with its thermostat using that eBUS protocol. Also got a Rarpberry Pi 3B+ with Domoticz, MQTT and Node Red running. I would like to more closely monitor that Brink air heater in order to verify its parameters ans possibly optimize those.
    So your eBUS PCB, a UART and the ebusd daemon on the Pi ought to be able to publish eBUS data to MQTT. With Node Red it would be easy to filter and channel the data towards Domoticz virtual devices for display.
    Given the 2 optocouplers this board provides bidirectional albeit simplex communication. Does it support the Wemos extension board?
    Makes me wonder if you still have such board available?
    If so please contact me. Of course some reimbursement for your costs will be in order.

    1. No the board has no Wemos support, you can probably also interface directly on a raspberry pi or some sorts, with the ebusd via other options. I will make a few boards this month, and will contact if you when it’s ready, i am waiting for a few parts.

  5. I have integrated Vailant gas boiler from 2002 with netatmo and then did HA integration. It works perfectly. Now, I don’t care did I turn off heating as HA know when I’m at home.

  6. Hi Floris,

    I’ve build one of your PCB’s and I can confirm that the ebus part is working. But I only get device info and the date/time of the thermostat (vrt350). I have a ecoTEC VHR 30-34/5-5 heatpump. Are you using a thermostat? And how do you write to ebus? Have you changed the CSV files?

    Thanks in advance!

    Corjan

    1. Hey Corjan,

      I have the same thermostat, i forgot to mention that I changed the config a bit. I have used the 370 thermostat config for the 350, do not aks why but it works. so do the follwing:

      cd /home/pi/
      git clone https://github.com/john30/ebusd-configuration.git
      cd ebusd-configuration/
      cp ebusd-2.1.x/en/vaillant/15.370.csv ebusd-2.1.x/en/vaillant/15.350.csv

      you can change the r; at the beginning of the lines by r1; so it will be read out automatically

      write is done via MQTT via the ebusd/350/Hc1OPMode/set topic

  7. Helo Floris

    Really nice job, I am looking for a Vaillant Boiler integration and your solution looks pretty good, where can I buy your PCB to get it to Spain? Could you provide it? regards.

Leave a Reply

Your email address will not be published. Required fields are marked *