I also have an Aprilaire humidifier that I want to integrate into HA. Mine is a digital controller with the optional hookup for an outdoor temperature sensor (which I don’t have), so my ideas below may not apply to the analog humidistat. (Model is an older version of this: Amazon.com)
Bypassing the unit with a relay is an option as @thezfunk mentioned, but I would prefer not to do that as there are several more considerations that need to be made when controlling the solenoid directly:
- the blower should be running
- how long to activate solenoid to saturate water panel with the appropriate amount of moisture?
- how often to cycle solenoid to keep water panel saturated while fan is running?
I think that automating the input to the humidifier will be a more robust solution, however, power cycling the humidifier (and probably keeping it at the max humidity target) as @patmans mentioned should also work. I am essentially doing this with a portable humidifier for specific rooms in my house currently.
In my case for the Aprilaire though, I want to use the built-in humidity sensor on the air coming through the return, so power cycling the unit will not work for this. It is necessary to control the target of the humidistat directly.
I see two possible ways to do this, but both are essentially the same solution in the end.
First, I could spoof the value of the outdoor temperature sensor to make the humidistat target the humidity that I want. Aprilaire lists the following as the target humidity levels based on outdoor temperature and the dial setting on the unit:
So, if I set the dial to 5, I could send humidity commands between 20% and 45% by sending the corresponding temperatures from -10 to 40 degF (regardless of the actual outdoor temperature). I could just send the actual outdoor temperature to use the recommended humidity levels, but sending a “control temperature” instead gives the option of setting something above or below that recommended humidity, so I would prefer to have more control. I will use this table as a reference when creating my target humidity template sensor in HA, though.
I also found the following as the specs for the temperature sensor the humidistat is expecting:
I haven’t done something like this before, but I think the correct solution here would be to use a digital potentiometer, or a resistor ladder to control the correct resistance.
The second solution would be to bypass the dial on the humidistat and just control the humidity target directly. This may be a good option if the humidistat does not have ODT terminals to use. My unit has dial settings from 1-7 (shown in the table above), as well as 0 (off) and 8 (test/reset for water panel replacement timer), which is a simple potentiometer. This is running at 5V DC, and seems to go up to about 4.5kΩ. So again, using a digital poteniometer would be the solution here. This would require removal of the dial potentiometer, and soldering the digital replacement in, so if the same level of control can be achieved with the ODT method, it seems much easier (and also probably won’t void your warranty).
A couple things I am unsure of:
Is the precision only controlled in steps of 5%? The digital nature of the display on the unit (showing 1-7 from the dial) would indicate such, but the fact that both the dial and temperature sensor are analog would make me think it is not.
The true limits of my unit are 10%-45%, but the table above does not show any single dial setting which could use this full range. This may be because the table is only for reference. I am wondering though, if I set the dial at 4, and the temperature increases above 40degF, or below -10degF, will the humidistat actually command 45% or 10%, as those values are not listed on the row for a dial setting of 4?
Additional thoughts:
The type of digital potentiometer would be different depending on whether the ODT sensor is being spoofed or the dial is being bypassed. First, the resistance ranges are completely different. Additionally, the behavior is different: the dial is a linear type pot, whereas the temperature sensor would probably be better replaced with a logarithmic pot.
Once the right component is found, this seems like a good job for ESPHome.
Am I overcomplicating this?