In my new house with underfloor heating, an air source heat pump was installed that turned out to have a controller that switches it on and off over 80 times per day which reduces its lifespan significantly. I decided to see if I could improve on this so I started reading lots of papers regarding temperature control.
Since this is a tricky problem to solve, I built a quick fix solution while I work on the "real" version. The quick fix measures the average indoor temperature in the house using zigbee sensors and uses a number of weather forecast APIs to calculate the amount of heat lost from the house in a day based on the difference of outdoor / indoor temperature and the amount of solar irradiation. It runs at midnight and creates a 24h schedule based on the forecast energy price and expected COP. The heat pump is controlled with a relay from an ESP32. The algorithm/app runs on a raspberry pi and is written in Rust.
It worked surprisingly well last winter with some tweaking needed during very cold periods. And the heat pump only switches a few times per day now and makes very long efficient runs, theoretically greatly increasing its lifespan and simultaneously reducing my energy bill.
I'm still planning on building the better version I had planned based on a thermal model of my house, but that will require more studying and now that the quick&dirty version works so well the pressure is off a bit.
I noticed the same problem with my heat pump. It was cycling every 5 minutes when we first moved in. I replaced the thermostat with one that supports Zigbee, with plans to drive the setpoint up and down using a second level controller in order to reduce this behavior.
Actually, the new thermostat entirely solved the problem, by allowing a 2°F deadband instead of the 0.5° that the previous thermostat used. Now it will run roughly once an hour instead of ~12 times. This is not as good as your solution, but considerably better than it was.
I still use the Zigbee control to ramp the thermostat up and down at morning and night less aggressively than a native schedule on the thermostat, but it isn't truly necessary.
Yep that is a good solution that is popular as far as I've read. I've tried this as well initially but in my case this didn't work out due to the fact that the heat pump is too powerful for the house (about a factor of 2). And due to how slow the underfloor heating responds, I get huge overshoots when I use a controller like that.
So I had to figure out a way to switch it off earlier than reaching the setpoint, which lead to my poor man's solution of just calculating the house's heat loss.
Interesting question! The swing is about 0,5 to 1 degree C (1 - 2 degrees F) over the day. If it's very cold out the controller makes sure to spread out the heating in a few blocks during the day instead of a single block at the most efficient timespan.
So it's much less stable than with the original PID controller which kept the temperature very stable, but surprisingly it doesn't bother us, proved by the fact that WAF is high. Which to be honest I did not expect.
I still have plans to improve on it by modeling the temperature drop in the house and making sure it stays within certain bounds. But that is for "later".
I think there is a lot of value in what you describe. But it’s hard to build a UI for, and hard to market AFAICT. [im thinking of a more generalized HVAC AI product.]
My name is Gerard and I am a senior software developer. I specialize in Java/Spring web development. Mostly backend but I also usually work on the frontend (React/Angular).
Software has been a hobby since I was 8 years old and I graduated 'cum laude' from university with a software engineering masters degree. During my career so far I have worked mostly for large corporations including banks and large tech companies.
Besides regular feature development and bug fixing I also embrace things like making releases / scripting / enabling other developers. I also join and facilitate design and architecture discussions. I will pick up anything that needs doing in a project.
My rate is 98 eur/hour on a full-time basis.
Shoot me a message at info [at] aridane.nl if I can help! I'm available from January 2023.
Since this is a tricky problem to solve, I built a quick fix solution while I work on the "real" version. The quick fix measures the average indoor temperature in the house using zigbee sensors and uses a number of weather forecast APIs to calculate the amount of heat lost from the house in a day based on the difference of outdoor / indoor temperature and the amount of solar irradiation. It runs at midnight and creates a 24h schedule based on the forecast energy price and expected COP. The heat pump is controlled with a relay from an ESP32. The algorithm/app runs on a raspberry pi and is written in Rust.
It worked surprisingly well last winter with some tweaking needed during very cold periods. And the heat pump only switches a few times per day now and makes very long efficient runs, theoretically greatly increasing its lifespan and simultaneously reducing my energy bill.
I'm still planning on building the better version I had planned based on a thermal model of my house, but that will require more studying and now that the quick&dirty version works so well the pressure is off a bit.