Need help on Thermostat control design


#1

1) Give a description of the problem
Trying to write a simple time-based thermostat control for my GoControl thermostat. I mostly keep the house at ~64 or 65 degrees because heating is expensive, and I don’t have AC to control.

It occurs to me that I don’t know much about what is “best” for how to efficiently and economically control a thermostat, however, so I was wondering if those who have already done it would mind talking through the different approaches/logic?

I also use GPS to control the heat (phone presence).

I have that in CoRE, but it’s time to move it all over to WebCoRE. I don’t see any other posts that seem to cover what I’m doing.

Thanks!


#2

I have separate heating and cooling pistons which are essentially identical except for the setpoints and a > vs < here or there. The first check I do is for the weather. If it is going to be above a certain temperature, I use turn the heat off. Next I look if the time is in a certain range in the middle of the day. During that range, if no-one is home (based on presence sensors or a guest mode virtual switch) then I turn the thermostat down to the same as I use while sleeping. once this check is done, I set the thermostat temperature based on mode: home, night, or away. Home is during the day when I am up and about, night is for when I am sleeping and I prefer the temps a little cooler to save energy. Away, I set the thermostat to the minimum just to be sure pipes in the house don’t freeze. I basically have all the logic up front to select the temperature to implement and then one command at the end to set the thermostat. It has taken a while and a lot of learning but I think it is all working correctly now.


#3

This is roughly what I have in CoRE:

  • AM
  • Late AM
  • Afternoon
  • Evening
  • Sleep

All of them controlled by presence.

Is it worth the effort to combine them into one piston?


#4

I put all mine into one piston controlled by a combination of presence, time, and mode. I also threw in a virtual switch for if there is a guest staying to alter some of the logic (keep the temperatures high during the day, e.g.)


#5

Thanks for the info!

Any chance you’d want to share what you have? It sounds roughly like what I am looking to do.

Thanks!


#6

Sorry, was out of town for the weekend. Here is my Heat Control piston. Let me know if you have any questions. I also included my Anybody Home piston which sets the global variable SomeoneIsHome. Of course you can implement that any way you like.


#7

Thanks a lot for that. I will try to adapt it for me (or at least crib the design).

I love community projects.

-SR