Guide: Vallox Digit Ventilation to Home Assistant (Part 1/2 – hardware)

I have four years old basic Vallox 121SE ventilation machine doing the ventilation of my house, controlled by small display with few buttons. By doing some research, it seems like there’s a RS485 bus running from machine to the controller.

After googleing a bit, I even found the protocol specifications and some DIY stuff related to it, so I thought it would be nice to have it connected to Home Assistant as well. So, if you are having a Vallox ventilation machine (I have Vallox 121 SE, but this should work with any Vallox with Digit protocol) this guide is for you.

This guide gives you a briefing how to integrate your Vallox Digit protocol ventilation machine into your Home Assistant software through MQTT.

Materials needed

Optional (for easier installation):

Software & flashing:

The build – overview

ESP-01 works with 3.3v (signal and voltage) and RS485 is a serial BUS with 5v. We therefore need the level converter (luckily there’s a ready made alternative that fits directly in the ESP-01).

Also Vallox is outputting 24v as voltage and we want to power ESP-01 & RS485 module directly from it without using an external power supply. That’s where buck converter comes handy.

So, RS485 module converts the signal provided by Vallox into a TTL signal understood by ESP-01. Buck converter lowers the voltage to 5v that powers the ESP-01 (through level converter) and RS485 module.

Keep on reading if you want to see step-by-step guides πŸ™‚

The build – soldering

Start by soldering pin headers into RS485-TTL converter.

Cut two (preferrably black & red) dupont wires into two and solder those into buck convert output (red into + and black into -).

Solder JST connector (male) into buck converter input (red into + and black into -).

Cut one of the servo cables from the root of female head and solder the wires into RS485 A, B and GND (red A, orange B and brown GND.. of course depending on your cable colours, but just remember the correct order later).

The build – ventilation connections

Cut the second servo cable from the root of male head and take multimeter, cutted servo cable, JST male cable and buck converter with you to the Vallox ventilation unit and unplug the ventilation machine from main power.

Now open the ventilation control unit and open it (screw is behind the top plastic covering). After opening the cover, unscrew two left connectors from the top right corner and connect power (JST) cables into it with the existing ones. Red to left and black to the next one (verify + and -). Tighten the two screws.

Next connect the signal cable (servo). Unscrew next three cables and connect red (A) to left, orange (B) to middle and black (GND) to the right. If having different colors, just be sure that connections matches to the solders of RS485-TTL connector. Again, ensure A, B and GND from the machine.

You can now close the ventilation controller.

The build – setting the buck converter voltage

Next we need to set the buck convert to proper voltage. Vallox machine is outputting DC 24V and we need to convert it to 5V.

Connect your buck converter to the JST female you just installed. Take your multimeter and set it to 200V or 20V mode. Connect your ventilation machine back to main power and turn it on. Now the red (or blue) light should also be lit on your buck converter.

Measure output voltage from the buck converter and screw the small screw until you get 5V reading on the multimeter. Now we have proper voltages.

Unplug the buck converter and head back to finish your build.

The build – finalizing electronics

Now let’s finalize the hardware.

Connect output + (red) dupont from the buck converter into RS485 module VNC pin. Connect output – (black) dupont from the buck converter into RS845 module GND pin.

Now do the same for the ESP-01 adapter. Connect another output+ (red) dupont from the buck convert into ESP-01 adapter VNC pin. Connect output- (black) dupont from the buck converter into ESP-01 adapter GND pin.

Now connect new dupont cable from RS485 RX pin to ESP-01 adapter RX pin. Same to the TX pins.

All done! Next step, software.

Flashing the software

I presume that you have basic knowledge of Arduino and flashing software. If not, you can find tons of information from the google.

To flash ESP-01 you can use e.g. this adapter.

Software to be flashed can be downloaded from https://github.com/kotope/valloxesp

Before flashing, be sure to set following values into valloxesp.h:

  • ota_password (password used for OTA updated) (optional)
  • ssid (your wifi SSID)
  • password (your wifi password)
  • mqtt_server (your mqtt server address)
  • mqtt_username (your mqtt server username)
  • mqtt_password (your mqtt server password)

When successfully flashed the software, just connect the ESP-01 module into ESP-01 adapter. All done.

Printing the case (optional)

Of course to make the installation of the module good looking, a case should be created. Since I have a 3D printer I’ve designed a 3D model to fit all the parts inside. You can get the model from https://www.thingiverse.com/thing:4579311

If you do not have usage to a 3D printer, you could try to fit the parts inside some generic plastic cases. Go and experiment πŸ™‚

Installation

Now that everything is ready and we do have everything set up in a case, it’s time to do the final installation.

You should now have two connector already hanging from the ventilation control unit. Just connect your power (JST) and RS485 (Servo) into the hanging connectors and you’ll be ready to go.

After connection, you should see events dropping into your MQTT gateway.

If having issues, feel free to drop a comment below and I’ll try to help as much as I can.

Integration to Home Asisstant

continue to part 2/2

25 Replies to “Guide: Vallox Digit Ventilation to Home Assistant (Part 1/2 – hardware)”

  1. Thanks for the guide. I’ll write in english because your blog is in this language. I think that ability to connect to (non-smart) HVAC equipment is the difference between playing around and actually useful home automation. Even though I was unable to get this working with Wemos D1 mini today I will get the same hardware as you and connect to my Vallox 096SE using these instructions.

    1. Thanks for the feedback.

      I don’t know if Wemos D1 is 5v compatible on signal levels. If not, probably will cause issues on RX signal by not getting any packets.

      You could try sending ‘{ “DEBUG”: true }‘ (json message) on the “vallox/set” topic through mqtt.
      After that, if packets are received, you should see something like following on MQTT pipe:
      vallox/debug {“packetRecv”:”01 21 11 00 a3 d6 “}
      vallox/debug {“packetRecv”:”01 11 21 a3 01 d7 “}
      vallox/debug {“packetRecv”:”01 21 11 00 71 a4 “}
      vallox/debug {“packetRecv”:”01 11 21 71 00 a4 “}
      vallox/debug {“packetSent”:”01 22 11 00 08 3c “}

      If you are receiving packets, most probably the protocol is not 100% compatible with your ventilation unit and the code needs some tweaks.
      If not, then I’d suggest either by putting 5v level converter between Wemos and RS485 module or using the same components I did.

      Please keep me posted about your progress as well if possible πŸ™‚

  2. I already disconnected Wemos from Vallox for now because I have less sophisticated control running. It is Pi with USB RS485 converter running HA that just sends shell commands to control the speed of the fan based on co2 and humidity sensor readings in the house. Nevertheless once you get used to automatic air conditioning it is hard to go back to full manual.

    I did try to send some messages from my PC though but I was unable to receive any packets. It is possible that my USB serial stick is broken though. MQTT is up because I saw my debug command with MQTT Lens and I am also able to ping Wemos.

    I will update my progress once I get some new toys from China or if I get this Wemos working properly. Thanks for the help with troubleshooting also!

    1. Hi. Do you have any project page on your on how to setup pi with rs485? I got already pi and rs485 usb adapter.

      1. Hi,
        Unfortunately I have not done RS485 integration with RaspberryPi so can’t help on that matter πŸ™
        Also in my opinion, it would be kind a overkill to put raspberry pi just for RS485.
        If you are using home assistant with that rpi, I’d suggest to put it just as a headless server and create a esp8266 based RS485<->MQTT adapter with these instructions πŸ™‚

        EDIT: Sorry, I think your comment was meant for Sami.

      2. Short answer: Nope.

        Long answer:

        What I did is simply use bash commands. I use HassOS (Home Assistant) but they should work for any Linux type of OS. USB type RS485 adapter doesn’t require much configuration. You can experiment in console.

        For example:

        echo -en “\x01\x22\x20\x29\x01\x6d\x01\x22\x10\x29\x01\x5d\x01\x22\x11\x29\x01\x5e” > /dev/ttyUSB0′

        That will set the fan on speed 1. Reading the manufacturers communication protocol multiple times was necessary for me to learn how to command the unit.

        I would send the command twice because Raspberry seemed to be lagging a lot with serial communication on. I also had sensor reading abilities but they stopped working after some Home Assistant updates. Serial sensor in Home Assistant seems to be half finished and not working at all for me. Again I would also recommend something else for this purpose.

        For reading sensor data I used xxd-command:

        xxd -l 0x100 -g 1 /dev/ttyUSB0

        The explanation for bytes you see is explained in protocol.

  3. I promised to report my progress and now is a good time. Today the RS485 to TTL converter arrived and I plugged it between my Wemos and Vallox since ESP-01 is yet to arrive. Turns out the 5VDC voltage from Vallox bus was too much for Wemos because the communication started working immediately. Home assistant is now receiving all the data and I was able to change fan speed. Needs some further testing but looks great so far!

  4. Do you have information if this will also work with Vallox Digit2 SE? I have received both bus specifications from Vallox but have not yet started the project to implement controlling my Digit2.

    Both are using same control panel but I have the impression that the protocol is a bit different

    1. What I’ve heard also is that Digit2 might have a bit different protocol, but can’t be sure since don’t know anyone that has the device.
      Anyhow, most probably only just minor modifications are needed to make it work with it.

      Do you have the “other” digit2 protocol? If so, could you send it and I’ll have a look and could even do the implementation (no possibility to test though, since I don’t have such a device myself). πŸ™‚

      1. Sure I can share the protocols. Can you send me s email? I did not locate yours here on this page…

        1. Thanks for the specifications!

          I did a quick comparison between those 4 and 5 sensor machines (vallox digit2), and it seems that it should work with the same software.
          There’s an extra sensor in your machine that is not implemented in my code and also fireplace activate was missing from the specifications. I think the fireplace missing is a bug in specifications though, since other values were there in same program variable and no other message to enable fireplace mode was found.

  5. I have now finally implemented this to my Vallox Digit 2 SE. Fully according to your instructions and it is working great!

    Only thing I am missing is the humidity sensor reading. Currently showing constant -999. Will have to check what is the problem with that.

    Thank you for very detailed instructions and great project!

    1. Good to hear it works πŸ™‚

      As I said on some other comment, I don’t have RH sensor myself so the RH feature is not tested at all.
      I can try to make it work, if you can take some debug logs and send them to me?

      You can enable logs by sending ‘{“DEBUG”: true}’ message to ‘vallox/set’ topic. After that messages to ‘vallox/debug’ should start dropping.
      20-30 packet messges should be enough to find out the issue πŸ™‚

      Of course if you are familiar with the Arduino and programming you can fix it yourself. If you do that, please make a pull request to my repository so that we get the working RH into master branch aswell.

      1. Finally got the time to log the debug messages. These are the received values:
        “packetRecv”: “01 11 20 2c 00 5e ”
        “packetRecv”: “01 11 20 2b 00 5d ”
        “packetRecv”: “01 11 21 71 00 a4 ”
        “packetRecv”: “01 21 11 00 71 a4 ”
        “packetRecv”: “01 11 21 a3 0d e3 ”
        “packetRecv”: “01 21 11 00 a3 d6 ”
        “packetRecv”: “01 11 21 35 91 f9 ”
        “packetRecv”: “01 21 11 00 35 68 ”
        “packetRecv”: “01 11 21 29 0f 6b ”
        “packetRecv”: “01 21 11 00 29 5c ”
        “packetRecv”: “01 11 21 a3 0d e3 ”
        “packetRecv”: “01 21 11 00 a3 d6 ”
        “packetRecv”: “01 11 21 71 00 a4 ”
        “packetRecv”: “01 21 11 00 71 a4 ”
        “packetRecv”: “01 11 21 a3 0d e3 ”
        “packetRecv”: “01 21 11 00 a3 d6 ”
        “packetRecv”: “01 11 21 35 91 f9 ”
        “packetRecv”: “01 21 11 00 35 68 ”
        “packetRecv”: “01 11 21 29 0f 6b ”
        “packetRecv”: “01 21 11 00 29 5c ”
        “packetRecv”: “01 11 21 a3 0d e3 ”
        “packetRecv”: “01 21 11 00 a3 d6 ”
        “packetRecv”: “01 11 21 71 00 a4 ”
        “packetRecv”: “01 21 11 00 71 a4 ”
        “packetRecv”: “01 11 21 a3 0d e3 ”
        “packetRecv”: “01 21 11 00 a3 d6 ”
        “packetRecv”: “01 11 21 35 91 f9 ”
        “packetRecv”: “01 21 11 00 35 68 ”
        “packetRecv”: “01 11 21 29 0f 6b ”
        “packetRecv”: “01 21 11 00 29 5c ”
        “packetRecv”: “01 11 21 a3 0d e3 ”

        Humidity measured is roughly 27% during this trial.

        1. Hi and thanks,

          Seems like this log misses all the information about RH. If it’s possible, could you take even longer log and send it through email creatingsmarthome [at] gmail.com ?

          However, even without further logs, I noticed that the RH variable is different than the specifications say. So by fixing that it might start working. I’ll try to make it today and if you can test it some day it would be great πŸ™‚

        2. Hi,

          I corrected the RH feature and added also support for second RH sensor.
          It’s currently in a separate branch until tested with a machine that has RH sensor(s) installed.

          If you could, please flash new firmare to your ESP8266 πŸ™‚
          Branch name is ‘feature_rh’ and you can clone the full branch with
          git clone --branch feature_rh https://github.com/kotope/valloxesp.git

    1. Hi,

      You are absolutely right, level converter needs to be bidirectional. The item you linked should work fine, however, please note that for that you need to have separate 3.3v and 5v lines i.e. you need to “power” both sides of that converter with proper voltages. If using some premade ESP8266 dev boards (e.g. Wemos D1), you have those power levels already available so should not be a problem.

      The reason I chose ESP-01 module was because it was basically plug-and-play, no need to do any extra wirings πŸ™‚

  6. Thanks for the extremely comprehensive tutorial!

    I’m just getting to know Home Assistant and originally one use cases I had in mind when setting up the server was to use a simple relay to control the “fireplace booster switch”.

    Then as I was searching the pinout from the user manual, I found that the controller supports RS-485, and after some googling I stumbled across this tutorial. I’m lacking some bits and pieces of the required setup, but this surely saved me countless nights of tinkering! Thanks in advance, I’ll report how I manage to get this working.

    1. Thanks for the feedback πŸ™‚

      I’d be glad to hear how it works after you get it done.
      What model of Vallox you have? I could add it to “tested devices” list after you’ve finished your build.

    1. Wow, very nice and clean installation!

      Maybe I’ll do the same some rainy day πŸ™‚

  7. Just finished the setup and all working OK. Thank for your help and work with this one! Only thing i am not sure is “Ventilation Summer mode” When i turned the power on, first state was “Turned on”, as i think it should be. But then around 5 minutes later, it when to a off state and staying there.

    Also now during writing this one, i noticed that “Ventilation Motor out” went from On to Off and then back On. Not sure if it really did, as power consumption didn’t changed. I have Vallox Digit2SE.

    1. Good job πŸ™‚

      The summer mode switches on and off very frequently on hot summer days. Don’t know why though, but I think it could have something to do with cooling the air if inside is colder than outside. I.e. cooling the cell with cooler indoor air and incoming air flowing through the cell.
      On a bit cooler day the summer mode seems to be active all the time (depending on settings of course).
      ..and summer mode = sheet of metal that bypasses the cell

      For the motor out status I don’t know, I haven’t seen any status off/on switches randomly unless anti-freeze kicks in or fireplace mode is switched on.
      Let’s keep on monitoring and see if any weird behaviour happens πŸ™‚

      1. Thanks for the reply! I can now report after few full days of use, that no more on/off/on reports from neither the summer mode or motor out, so maybe it was just some glitch at the beginning. So all good for now! Thank you!

Leave a Reply

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