Well, I finally did it! I have completed first version of my ESPHome thermostat controller. This is not your just another thermostat. This thing is crazy it is actually replacing my Goodman Heatpump controller that I mentioned in this old Home Assistant post.
What makes it different?
Most thermostats simply control furnace controller in systems that have a heatpump with a gas or electric furnace as a backup. Thermodynamics dictates what temperature outside is the minimum that will allow a heatpump to pull heat out of the air. Anyway, not to bore you with the details of this it is important to know the outside air temp and then determine to run the heatpump or just run the furnace. Also, heatpumps require a defrost cycle. This climate controller is capable of watching this signal from the heatpump and then turn on the furnace to perform the needed defrost operations. My heatpump also has an outside temp sensor that it monitors and uses to determine if heatpump should run or just the furnace to perform heating action. Also, this controller is using triacs and no more relays so I do not have to listen to them click on and off! So, it is important to remember this design is ONLY for 24 volt AC systems. Now, from what I can tell that is like 90 percent of all furnaces. They run on 24 AC and all control signals are 24 volt AC.
Here is the Furnace Controller
So, the reality of this is it is more than a thermostat this thing does it all. It has been running strong since October 17, 2024 and I have slowly added firmware changes to bring it fully online over the last few weeks. Right now, I have completely removed the old Goodman controller.
Now there is a new version that adds yet one more triac to separate the low cool from furnace and heatpump. Version 1 has these tied to the same triac. For my setup this was fine, but I wanted this to be generic to work against many different furnaces and heatpumps so now they are separate. This may be critical in some systems that would have a problem turning on low cool and low heat mode at the same time. This is needed for defrost mode to work correctly. This goes against everything in the system in normal operation as it would allow the heatpump or air conditioning on with low heat mode on the furnace. See the problem heat on with the heatpump running could be bad! Except, this is the exact thing that must happen for the defrost mode to work correctly. See, in defrost mode the furnace actually helps defrost the heatpump outside coils. To be clear, defrost mode is the normal air conditioning mode where the reversing valve is on and the heatpump is running in cool mode to force heat into the outside coils and melt any condensation on the outside coils.
Other Things to Consider
This controller board is for typical heating systems changes could be made to work with any system. However, the controller is designed to integrate with ESPHome and Home Assistant. So, if not running Home Assistant it will not be very functional. I have plans to expand the furnace controller firmware to run independently from Home Assistant (HA). However, that is low on the list since I recommend everyone to look at Home Assistant it is awesome. My whole home is automated and you can find many posts speaking about my home. Also, now that I am running this controller there is no thermostat. It is all running via home assistant. So, changing thermostat settings is all handled via that system below is a picture of that HA panel.
ESPHome has released the LVGL panels just recently and so now I am in process of building a thermostat display. Below is the example I have of that current CrowPanel 5.0 display running ESPHome
The Code
So now, the meat and potatoes! I will be releasing the full schematics one I get easyeda fully configured for this discussion I need to move it over to OSHWLab. I plan to do this the next week or so maybe even tonight. Anyway it will be soon.
Code on Github
For simplicity I have published it on github. So go there to get the code and current schematics. Let me know what you think! If you have any suggestions or recommendations I am all ears this is a open project for anyone to contribute just let me know if you need any help integrating it into your systems.