IMPORTANT: These Python scripts DO NOT replace the wall control device. A wall control device is still required to be connected to the ERV.
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
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.
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:
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.