Skip to content

bgant/erv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

19c3d65 Â· Jul 16, 2024

History

45 Commits
Jul 16, 2024
Feb 8, 2024
Feb 8, 2024
Feb 14, 2024
Feb 14, 2024
Feb 29, 2024
Feb 15, 2024
Feb 15, 2024
Feb 25, 2024
Feb 25, 2024
Feb 16, 2024
Feb 15, 2024
Feb 15, 2024

Repository files navigation

Energy Recovery Ventilator (ERV) Control via Python

IMPORTANT: These Python scripts DO NOT replace the wall control device. A wall control device is still required to be connected to the ERV.

Software

The vautow.py and vttouchw.py Python scripts are written for Linux. Here is an example on a Raspberry Pi:

sudo apt install git python3-serial
git clone --depth=1 https://github.com/bgant/erv
python3 erv/vautow.py   <-- Shows example and list of available commands
python3 erv/vautow.py /dev/ttyUSB0 auto
python3 erv/vautow.py /dev/ttyUSB0 standby

If you are importing either script as a Python module, here is a vautow.py example:

from vautow import VAUTOW
erv = VAUTOW('/dev/ttyUSB0')
erv.commands()
erv.auto()
erv.standby()
erv.state
erv.status

Project Goal

Due to heavy smoke from wildfires in 2023, I wanted a way to automatically turn off the ERV (to avoid pulling smoke into the house) if the EPA Air Quality Index API value was too high. I contacted the ERV vendor and they recommended sending a 12V DC (high) signal to the OVR wire on the ERV. This would "override" the wall control and run the ERV at Maximum speed to clear the smoke out of the house...?!? 🤔

I realized this would be a fun project to learn how to view unknown digital signals. Even if I didn't know what the wall control was saying to the ERV, I should be able to isolate which bytes correspond with which button presses, and try sending those same bytes using Python. My end goal is a MicroPython device that automatically shuts off the ERV when the outside air is not optimal. The micropython folder in this repository contains my work for that project.

Hardware

I installed a B180E75RT ERV with a VTTOUCHW Touchscreen Wall Control. I then purchased a VAUTOW Automatic Wall Control to compare wall control signals.

Only one of these wall control devices should be connected to the ERV via 22/4 security cable to the 12V DC, D+, D-, and GND ports on both devices. The D+ and D- labels indicate that the devices are using RS485 serial communication which allows for multiple daisy-chained devices over long lengths of wire to talk to each other.

I purchased a cheap generic USB Logic Analyzer so that I could see what signals were being sent across the 1.5V DC D+ and D- wires. I watched a few Sigrok/PulseView tutorials and used their open-source software along with their open-source fxlafw firmware on the Logic Analyzer. I tried different UART baud rates on the D+ signal and it looks like it is 38400:

Image

Once I knew what the bytes on the wire should look like, I used a USB-to-RS485 adapter daisy-chained to D+, D-, and GND to look at the data on Linux (here is a cheaper adpater that would also work):

sudo chmod o+rw /dev/ttyUSB0
stty -F 38400 /dev/ttyUSB0
hexdump /dev/ttyUSB0

I wrote the watch_vautow.py and watch_vttouchw.py Python scripts to isolate which data frames are generated for each wall control button push. My research notes for this work are in notes_vautow.txt and notes_vttouchw.txt.

Image

About

ERV Control via Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages