US Conventional HVAC system customization

I did some reverse engineering on my former Honeywell Thermostats for my US standard HVAC system.
I find following rules for heating and cooling that is helpful for HestiaPi on conventional US HVAC unit:


  • Current: HestiaPi’s rule turns the fan relay on first, then turn heating relay on after 10s. This logic causes the US HVAC to turn off and then turn on again.
  • Customization: HestiaPi’s rule in this case should instead only turn the heat relay on. The HVAC fan will turn on by itself. No fan relay state change is required.
  • Code sample:
    if(items[“SystemType”] == “US”) {
    //commandIfDifferent(“FanMode”, “AUTO”);
    //commandIfDifferent(“FanCtrl”, OFF);
    // US HVAC only requires Heat relay on
    createTimerSecs(1, function(){ commandIfDifferent(“HeatingPin”, ON); });


  • Current: HestiaPi’s rule turns the fan relay on first, then turn cooling relay on after 10s. This logic cause the US HVAC to stagger a bit when the compressor is on.
  • Customization: HestiaPi’s rule in this case should instead turn on the cooling relay to kick on the compressor then turn on the fan relay without delay.
  • Code sample:
    if(command == ON){
    commandIfDifferent(“MainSwitch”, ON);
    commandIfDifferent(“CoolingPin”, ON); // US HVAC starts cool relay the same time as fan
    commandIfDifferent(“FanMode”, “AUTO”);
    commandIfDifferent(“FanCtrl”, OFF);
    //createTimerSecs(10, function(){ commandIfDifferent(“CoolingPin”, ON); });
    events.sendCommand(“CoolingMode”, items[“CoolingMode”]); // update the LCD

In both cooling and heating, it result in identical logic as the Honeywell’s heating and cooling ON logic.
My HVAC system can now turn on heating and cooling very smoothly. :grinning:


Great post. My system has been running for a couple of years and it suffers from the on/off/on symptoms you describe.

I have not tried to make any changes to the code on my system, so I don’t know where to make these changes. What are the full pathnames of the files you changed?

Also, how do you make the changes? I would do a backup and then edit the files directly and reboot. Thank you.

Under rule: select heating control.

Modify under: Control the HeatingPin and Heating2Pin.

Similarly, for the cooling control with slightly different logic.

No need to backup the original logic. No need to restart either. Just make sure your change is saved via the “paper UI”.

Keep us posted on whether your HVAC system now works better with the new logic.

I applied your changes this evening. It seems to be working but I need it to go through a few cycles until I am sure. I might miss those 10 second restarts. They were hard to miss. Now it acts like a “normal” thermostat.

1 Like

I had baseboard heat (aka radient heat, or hot water + radiators) and we never wanted the fan to come on when the heat comes on. The big advantage to us with radient heat was that it was nearly silent. The only noise was the small sounds of the metal expanding when it kicked on.

We still need the fan for the cooling system though, so just leaving thefan wire disconnected was not an option.

Unfortunately, the HestiaPi assumes that all systems in America have a fan that should be turned on with the heat.

Fortunately, the HestiaPi lets people change this via a web UI. So once I figured this out, I made my own personal notes on how to turn this off. The steps below will limit the fan to only turning on with the cooling:

  1. Go to the web interface
  2. Select paperui
  3. Go to rules
  4. Click on Fan Check
  5. Click the plus next to “but only if…”
  6. Select “an item has a given state” and click Next
  7. Set Item to “Control Cooling”, Operator “=”, and State “ON”, then click OK
  8. Click the blue checkbox at the top to save the rule
1 Like

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.