System Air Ventilation ESP32 Bridge

Clone this source
System Air Ventilation ESP32 Bridge

When I bought my house in 2013, it came equipped with a System Air ventilation system. However, the remote control was mounted on the first floor, and my family and I spent most of our time on the second floor. This sparked my interest in creating a mobile application that could connect to the ventilation system and adjust the temperature and air flow from anywhere in the house.

At the time, there were no affordable solutions available, so I decided to try and create my own. I found the System Air’s modbus specification document online and attempted to connect a RS-485 to RS-232 component I had bought from eBay. However, after several failed attempts, I put the project on hold for a few years.

Over time, I continued to experiment with different RS-485 adapters and cables, but still couldn’t get the system to work. It wasn’t until I borrowed a FTDI USB to RS-485 cable from a colleague in 2020 that I finally had success. It was only then that I realized that I had been overlooking the fact that the ventilation modbus system was terminated with a 120Ohm resistor, which is necessary to properly close the RS-485 lane (RS-485 basics). Every component I had tried previously did not have this termination resistor, which was the reason for my previous failures.

After successfully connecting the FTDI USB to RS-485, I set up a Raspberry Pi with the Airiana software, written by Daniel Halling. Airiana has some great features like weather forecasting and shower detection. However, I wanted a smaller form factor, so I built a circuit board with RS-485 and an ESP32 microcontroller, which has WiFi and Bluetooth capabilities.

Since Airiana runs on python code, I had to implement the modbus and ventilation control software myself. However, I plan to port the Airiana code to work on my setup in the future. The software uses MQTT to publish and listen on a queue, which allows me to change the fan speed, heating element and turn it on or off. I also wrote a simple PID controller to set the target temperature that the ventilation system should maintain.

Since I’m using MQTT, it was easy to integrate into my Home Assistant setup. Here are some screenshots of my Home Assistant setup:

Climate control

Climate control, set target temperature and change modes (Off, heat only, automatic, fan only).

Climate control details

Climate control, set target temperature, change mode and fan speed.

Filter state

Filter state, how long current filter has been installed, and percentage left.

Inlet

Temperature debug information.

This project is still a work in progress, but if you’re interested, you can check out my repository or my notes for more information.