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

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

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 πŸ™‚


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

41 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] ?

          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

    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!

  8. Thanks for sharing this great project. It will be a nice addition to our smart home.

    A little note on the need for level converters: ESP pins are 5V tolerant on digital input pins (source: I can confirm, I used an ESP32 with MAX1348 RS485-to-TTL and it all worked great. This chip sees a high from 2.8V (if I recall correctly), so 3.3V is enough.

    1. Yes, ESP-01 is 5v tolerant, but the problem comes in the output part of the module. TX will be 3.3v max and at least my RS485 module did not register those signals, it required 5v in πŸ™‚

      Maybe MAX1348 works differently πŸ™‚

  9. Hi,
    I’m having problems that software sends only Connect and Subscribe vallox/set topic after installation. No temperature or other statuses.
    Broker acknowledges connect and subscribe fine and also responds to MQTT pings that goes in background when ESP is powered on.
    So MQTT side is working as far as I understand.

    I think there is something wrong with my RS485 – TTL converter and ESP doesn’t get anything from it.
    I can see RXD lights blinking on converter, when I change for example speed in Vallox controller.
    So I think RS485 side is working.

    I disconnected TTL side leads from adapter but when I connect oscilloscope to those, RS485 bus hangs and I get soon “VΓ€ylΓ€vika” on controller.
    It’s actually same if I try to measure TTL leads with multimeter voltage measurement.

    Do you think it should be possible to measure TTL line with oscilloscope or does it generate resistance, that causes converter to pull line down?
    Or with multimeter? And in which case there should be 5 volts? When somebody is sending something or in idle?
    I should have bought 2 converters from China, but I just have this one πŸ˜€

    Does someone have ideas how to troubleshoot? πŸ™‚

    1. Hi!

      In theory you should be able to measure RS485 with oscilloscope, but have not tried it so I’m not 100% sure.
      With multimeter it’s impossible to measure the data lines.

      Few things comes in my mind that might be wrong:
      – RS485 module is broken (I’ve had one broken one as well) .. if you wish to try with another one, send me your address by email to creatingsmarthome (at) and I can send you one, since I still got few in my closet.
      – RX/TX are set in wrong order between ESP8266 and RS485 module. Try switching them another way around, it shouldn’t break anything.

      Few follow up questions as well:
      – Are you using ESP-01 or something else? Do you have the level converter set between ESP8266 and RS485? ESP8266 is 3.3v so it won’t understand the 5v voltage level that is being used by the RS485 module.
      – Is the TX led blinking at all?


    2. This was simple fix. Rx and Tx pins were printed in wrong order on board.
      I reversed them and now I got everything working πŸ™‚
      However I couldn’t find possibility to change fan speed from HA. Have to look that a bit more.

  10. What do I have to change on code that this would work on ESP32?

    What I figured out on code these should be changed:


    Is there something else?

    Now days these ESP32 begins to be more popular

    1. Hi!

      At least the board needs to be changed and most probably some libraries as well.
      I haven’t tried the ESP32 with this project yet myself, but I will have a look on it very soon!

      ..and just to remind you, that the RS485 module is 5v compatible only, so the ESP32 needs to be 5v tolerant on signal (both rx and tx) for it to work. If not, then a level converter is needed between the ESP32 and RS485 module.

      1. Thank you for adwise. I have plenty of RS485, step down converters and logic level converters. I try to bash my head to keyboard to get this working πŸ˜€

  11. Thank you, I have a working installation for our Vallox SE150.

    I even ordered your plastic enclosure from a 3D printshop

    As I had no previous hardware experience before, I made the jump and it worked out fine thanks to your clear setup instructions.

    Next phase I will try to come up with a pid controller in node red to make the ventilation demand controlled by using external CO2 and humidity sensors. I will also try to take into account the actual heat recovery rates of the exhaust and incoming air. I was wondering if I the vallox would allow centigrades temperatures (eg. 17.3Β°C) to have more precise input for the controller.

    Thank you for your great work. Enjoying it for some time now!

    1. Thanks for you very nice words, always makes me happy when I can provide something useful πŸ™‚

      Unfortunately Vallox modbus only provides full digits, so centigrades are out of the table.

      When you are done with your PID controlled I would love to hear out how it works!

  12. Hi! Managed to run the project with Vallox system. I connected the controller directly into the Vallox ventilation electronic board. For my suprise controller worked since first trial. Thank for your good instructions!

    1. Good morning!

      Great to hear these instructions worked for you πŸ™‚
      Can I ask you, which Vallox model do you have? Some already on the verified list (on the GitHub page) or some other model?

  13. I’ll add another success story here too, working nicely with Vallox 110 SE! I also installed the system near the machine itself, it had a junction box there with all the necessary connections nicely labeled.

    I went with esphome version of the software, as it integrates so simply to home assistant.

    I used Wemos D1 mini with MAX3485 based rs485 module – no level converter was required. I also used a fixed 5V step-down converter, lot smaller than the adjustable buck converter. All of these can be sourced from Finland, so didn’t have to wait for delivery from China. πŸ™‚

    Big thanks to you, this is something I’ve wished for years!

  14. Super project, I own a Vallox 270 se, I’ve been looking for a way to connect it to ha for a long time. Since I unfortunately can’t do something like that myself, would you build and sell it too?

    1. I might have some extra parts lying around in the closet so I might be able to build one and send it for you.
      The main problem with that approach is that secure WiFi+Mqtt information is needed during compile time of the code so if I’m also flashing the ESP for you, I need to have that secure information πŸ™
      Better approach would be if you can fill the information and flash it yourself (I can still build the hardware).

      Please mail me to creatingsmarthome (at) and let’s see what we can come up to.

Leave a Reply to Tiele Defrancq Cancel reply

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