My house has an Energy Recovery Ventilator (ERV) which brings in fresh air from outdoors. It has a heat exchanger to capture heat (or cool) from the outgoing air. Until recently, it was controlled by a controller in the family room that allowed me to manually adjust what percentage of time it runs. I run it more when there are more people in the house and less when there are fewer - if I remember to adjust it. Sometimes, I forget to bump it up when we have visitors, or forget to set it back when they leave or when the house is empty for days. I never bothered adjusting it for going to work each day.
I now control it via a smart plug and a Hubitat rule that adjust the run time per hour based on the number of people in the house. Determining the number of people in the house is partially automated. My wife and I use Life360 to let Hubitat know when we are home. With regard to visitors, I created a numeric variable that I can change via a Dashboard. This is an improvement over the old system because I only need to make adjustments for visitors. Also, I can do that from anywhere as opposed to only when I am in the living room. So, if I realize later that I forgot to adjust it, I can do it then. Our most frequent visitors are our college age children. In theory, they could be included in the Life360 app, but that was too invasive to their privacy. When it gets warm enough to star leaving windows open, I will modify the rule to not run the ERV when the sliding door is left open for more than a few minutes.
Fixing a second problem with the original setup took some additional hardware and wiring. The fresh air goes into the return duct of our forced air system, which has three zones. If the furnace blower is running, that distributes the fresh air to whichever zone is being served. If the blower isn't running, there is very little control over which rooms get the fresh air. Ideally, the blower would send the fresh air to the zone that the people are in.
If my thermostats were integrated with Hubitat, it would have been pretty easy to ensure that the blower is on whenever the ERV is running. However, I didn't want to buy three new thermostats. I used a ZOOZ Zen16 multi-relay to send fan commands to the zone controller. The Zen16 can be powered by a 24V AC, which is what the zone controller uses, so I just tapped into that. Fan signals take the form of connecting a 24V AC terminal to a fan control terminal. The Zen16 has three ZWave controlled on/off switches, so I one for each zone. I disconnected the connections from the thermostat's fan signal, so I can no longer turn on the blower with the thermostats. I never did anyway. I think I could have left them connected and created a wired-or.
In Hubitat, I modified my ERV rule to send a fan signal for zones that are most likely occupied when the ERV is being run. When in Night mode, I turn on the zone that includes the master bedroom. In Day, Morning, or Evening modes, I turn on the zone that includes the family room and kitchen. (In Away mode, the ERV only runs for 5 minutes per hour with no fan turned on.) The challenge was the basement zone where my kids bedrooms are. I turn the fan on for that zone whenever any guests are in the house.
Commanding the fan for the zone with the people doesn't guarantee that the fresh air goes to that zone, because heating and cooling calls take precedence over fan commands. However, on average, a high percentage of it goes to the correct space. Ideally, the ERV run times would be linked with the heating and cooling calls for the target zone because to ensure that the fresh air went to the correct zone without additional blower runtime. The logic for accomplishing that would be pretty complicated.