Most programmers (those doing fancy GUIs and C# programming on a PC) would be seriously out of their league if they ever actually tried to program such a thermostat. Or any other embedded system. You really need a special skillset and hardware knowledge to even get a simple embedded system running. This is what my trainee just learned the hard way in the last weeks…
Which are all things you can easily do with an RPi and some simple python. My response was to OP stating that embedded systems are hard.
If you’re using a specific embedded system and want to make it pretty, sure that could pose some issues, but if you want to make something functional that matches what a smart thermostat can do, there’s not much behind it.
Programmers love to oversimplify things; “do easily with an RPi and some simple Python” is kinda meaningless. Like, yes, an RPi is a general purpose computer and Python is turing complete, thanks.
For one, UI/UX is actually hugely important for a consumer device and definitely nontrivial, but on top of that, there is way more that goes into creating custom hardware than a bill of materials (which isn’t just saying “Raspberry Pi”) and choosing a programming language…
A thermostat is controlling a very expensive device that runs on a highly flammable gas that costs me real money to use. I want 0 serious bugs. I also want 100% uptime. A poorly made “smart thermostat” is way worse then the old school analog metallic ones imo. I also want my partner to be able to control the temperature in the house. These devices are actually not simple at all and I assume that’s the reason there isn’t a good open source/open hardware solution.
Embedded systems aren’t some mystical impossible thing - contrary to the previous commenter I actually find working with them easier then designing GUIs - but the commercially available devices are definitely nontrivial to recreate
For one, UI/UX is actually hugely important for a consumer device and definitely nontrivial
Hugely agreed.
I’m a huge proponent of DIY / open-source / self-hosting / repurposing etc…but also I realize if I duct-tape-engineer something that “requires a little fiddling until it works” and I’m the only one who can competently use it, I’m setting up the rest of my household for failure when (not if), for whatever reason, I’m not there to babysit it or walk them through it.
Which are all things you can easily do with an RPi and some simple python.
Just like anyone can “easily” rebuild their transmission or patch a piece of leaky copper pipe or bake an apple pie from scratch or hit a bullese from 50 yards out.
Raspi is overkill. Mine runs off an esp32 using code I wrote in Arduino. The web interface takes up more space than the code.
Only reason it’s an esp32 instead of an Atmega 328p is the wifi support
my high efficiency HVAC unit would like a word with you.
what you’re saying is basically you can replace anything with a RPI. yes, in theory, you are correct. but, unfortunately for you, there are nuances that you didn’t take into account. such as, startup/shutdown procedures, cool down cycles, heat pumps, dual compression ac units, etc.
What about thermal runaway protection? I’m betting that might be easily overlooked in a custom “smart device” if, for whatever reason, the temperature sensor were to fail and keep reporting “Hey it’s still only (below_target_F_degrees) in here! Keep that heat on full blast!”
This was an issue that made jank 3D printers catch fire and burn houses down until it was mitigated with open source firmware.
Point being, unless there’s a “custom smart thermostat project” that’s vetted and trusted, stuff like this might be overlooked in someone’s Python project, wherein it’s bog standard, low level, possibly redundant, in consumer devices. (Especially thanks to safety standards.)
Should there be an open-source smart thermostat project that’s looked over by thousands of HVAC turbo-nerds and engineers? Yes. Yes there should! Might already be?
All of that is handled by the HVAC (if there’s anything to handle) and not the thermostat
Thermostats can be (and most often are) a bimetallic strip that bends one way as it cools and bends the other way as it warms, and that flips some switches that you set for temperature ranges which then demands cool or hot from your hvac
That is the simplest possible thermostat and works great for setting a temperature, but that’s not the ideal thermostat. The temperature your house “feels like” also depends on humidity. You may also care about the temperature more in a spot further from the thermostat and getting accurate measurements in that location can save you money and waste less gas. There is also the decision of how long you should run a furnace and, in the case of multiple stages, which stage you should run, although some furnaces control the stages themselves. Then there is air flow. Controlling the fan separately is useful if the house doesn’t evenly heat. Sometimes you can just have the fan turn on more often and use the actual furnace less, saving gas again.
Also sometimes it makes sense to heat your house slightly more during high demand hours to save money. I dunno there is just a lot that could be done with an intelligent thermostat, it’s one of the few things that makes sense to make smart to me.
Those are all very nice things to have in an improved thermostat, I agree completely
The point I was replying to was making the erroneous claim that basic operation of an HVAC isn’t possible with an RPI thermostat because of things the thermostat doesn’t handle
I think what you’re failing to understand is that newer HVAC units are designed to be run in a specific way. if you disregard that, and run it like a unit from the 1980s you will halve the life of the unit.
yes, most of the “brains” are on the unit itself but without proper “eyes” the brains are useless.
I’m not even an HVAC tech but I’ve worked on them enough to know it’s a dumb idea to just replace your thermostat with “a raspberry pi and a bunch of 24v relays”. there’s just too much risk of things to go terribly wrong and multiple people literally die.
I think what you’re failing to understand is that newer HVAC units are designed to be run in a specific way
Not missing that, as I and yourself said it’s done via the actual HVAC unit and not the thermostat
but without proper “eyes” the brains are useless.
No, the nicer features just don’t get used, it doesn’t make the entire unit not work
there’s just too much risk of things to go terribly wrong and multiple people literally die.
Lol, people aren’t going to die if you replace your thermostat with an RPI unless you wired the thermostat so poorly that you somehow manage to schock someone touching the thermostat
Again: thermostats just tell the HVAC to run and which part to run, any other advanced features are not required to be catered to in order to work. My brand new fancy schmancy heat pump with all those cool features listed runs off the same $2 Honeywell thermostat my old heater did, if I want the advanced features like zone sensing I can upgrade my thermostat, but my heat pump works without them just fine
That will get you a really shitty thermostat. Sure, even modern boilers can be controlled with a simple on/off signal but you really don’t want that, because it sucks. At the very least you need to make something that speaks OpenTherm. That allows you to modulate the boiler. With a simple on/off style thermostate you get relatively large temperature swings, with a modulating boiler/thermostat you can achieve very constant temperatures, which is way more comfortable, but requires both a more complicated protocol as well as more complicated logic.
Most programmers (those doing fancy GUIs and C# programming on a PC) would be seriously out of their league if they ever actually tried to program such a thermostat. Or any other embedded system. You really need a special skillset and hardware knowledge to even get a simple embedded system running. This is what my trainee just learned the hard way in the last weeks…
Except thermostats. You literally could do it with a Raspberry Pi, some 24V relays and a temperature sensors. Thermostats are not that hard.
Smart thermostats do way more than just set the temperature: that’s just table stakes and of course easy. Off the top of my head the ecobee will:
Set the temperature also taking the room’s humidity into account
Communicate with sensors throughout your house
Can change things via the Internet in case you accidentally forget to set it to a better temperature when you’ll be gone for a few days
Tweak your schedule based on demand
I’m probably missing things, but they’re actually pretty useful, and I’m someone who thinks most IoT is shit.
Which are all things you can easily do with an RPi and some simple python. My response was to OP stating that embedded systems are hard.
If you’re using a specific embedded system and want to make it pretty, sure that could pose some issues, but if you want to make something functional that matches what a smart thermostat can do, there’s not much behind it.
Programmers love to oversimplify things; “do easily with an RPi and some simple Python” is kinda meaningless. Like, yes, an RPi is a general purpose computer and Python is turing complete, thanks.
For one, UI/UX is actually hugely important for a consumer device and definitely nontrivial, but on top of that, there is way more that goes into creating custom hardware than a bill of materials (which isn’t just saying “Raspberry Pi”) and choosing a programming language…
A thermostat is controlling a very expensive device that runs on a highly flammable gas that costs me real money to use. I want 0 serious bugs. I also want 100% uptime. A poorly made “smart thermostat” is way worse then the old school analog metallic ones imo. I also want my partner to be able to control the temperature in the house. These devices are actually not simple at all and I assume that’s the reason there isn’t a good open source/open hardware solution.
Embedded systems aren’t some mystical impossible thing - contrary to the previous commenter I actually find working with them easier then designing GUIs - but the commercially available devices are definitely nontrivial to recreate
Hugely agreed. I’m a huge proponent of DIY / open-source / self-hosting / repurposing etc…but also I realize if I duct-tape-engineer something that “requires a little fiddling until it works” and I’m the only one who can competently use it, I’m setting up the rest of my household for failure when (not if), for whatever reason, I’m not there to babysit it or walk them through it.
Just like anyone can “easily” rebuild their transmission or patch a piece of leaky copper pipe or bake an apple pie from scratch or hit a bullese from 50 yards out.
What’s easy for you isn’t easy for everyone.
Inputs and outputs mapping sure is hard /s
Raspi is overkill. Mine runs off an esp32 using code I wrote in Arduino. The web interface takes up more space than the code. Only reason it’s an esp32 instead of an Atmega 328p is the wifi support
my high efficiency HVAC unit would like a word with you.
what you’re saying is basically you can replace anything with a RPI. yes, in theory, you are correct. but, unfortunately for you, there are nuances that you didn’t take into account. such as, startup/shutdown procedures, cool down cycles, heat pumps, dual compression ac units, etc.
This made me think:
What about thermal runaway protection? I’m betting that might be easily overlooked in a custom “smart device” if, for whatever reason, the temperature sensor were to fail and keep reporting “Hey it’s still only (below_target_F_degrees) in here! Keep that heat on full blast!”
This was an issue that made jank 3D printers catch fire and burn houses down until it was mitigated with open source firmware.
Point being, unless there’s a “custom smart thermostat project” that’s vetted and trusted, stuff like this might be overlooked in someone’s Python project, wherein it’s bog standard, low level, possibly redundant, in consumer devices. (Especially thanks to safety standards.)
Should there be an open-source smart thermostat project that’s looked over by thousands of HVAC turbo-nerds and engineers? Yes. Yes there should! Might already be?
All of that is handled by the HVAC (if there’s anything to handle) and not the thermostat
Thermostats can be (and most often are) a bimetallic strip that bends one way as it cools and bends the other way as it warms, and that flips some switches that you set for temperature ranges which then demands cool or hot from your hvac
That is the simplest possible thermostat and works great for setting a temperature, but that’s not the ideal thermostat. The temperature your house “feels like” also depends on humidity. You may also care about the temperature more in a spot further from the thermostat and getting accurate measurements in that location can save you money and waste less gas. There is also the decision of how long you should run a furnace and, in the case of multiple stages, which stage you should run, although some furnaces control the stages themselves. Then there is air flow. Controlling the fan separately is useful if the house doesn’t evenly heat. Sometimes you can just have the fan turn on more often and use the actual furnace less, saving gas again.
Also sometimes it makes sense to heat your house slightly more during high demand hours to save money. I dunno there is just a lot that could be done with an intelligent thermostat, it’s one of the few things that makes sense to make smart to me.
Those are all very nice things to have in an improved thermostat, I agree completely
The point I was replying to was making the erroneous claim that basic operation of an HVAC isn’t possible with an RPI thermostat because of things the thermostat doesn’t handle
Ah sorry yea agreed, at least for the units I know about
I think what you’re failing to understand is that newer HVAC units are designed to be run in a specific way. if you disregard that, and run it like a unit from the 1980s you will halve the life of the unit.
yes, most of the “brains” are on the unit itself but without proper “eyes” the brains are useless.
I’m not even an HVAC tech but I’ve worked on them enough to know it’s a dumb idea to just replace your thermostat with “a raspberry pi and a bunch of 24v relays”. there’s just too much risk of things to go terribly wrong and multiple people literally die.
Not missing that, as I and yourself said it’s done via the actual HVAC unit and not the thermostat
No, the nicer features just don’t get used, it doesn’t make the entire unit not work
Lol, people aren’t going to die if you replace your thermostat with an RPI unless you wired the thermostat so poorly that you somehow manage to schock someone touching the thermostat
Again: thermostats just tell the HVAC to run and which part to run, any other advanced features are not required to be catered to in order to work. My brand new fancy schmancy heat pump with all those cool features listed runs off the same $2 Honeywell thermostat my old heater did, if I want the advanced features like zone sensing I can upgrade my thermostat, but my heat pump works without them just fine
That will get you a really shitty thermostat. Sure, even modern boilers can be controlled with a simple on/off signal but you really don’t want that, because it sucks. At the very least you need to make something that speaks OpenTherm. That allows you to modulate the boiler. With a simple on/off style thermostate you get relatively large temperature swings, with a modulating boiler/thermostat you can achieve very constant temperatures, which is way more comfortable, but requires both a more complicated protocol as well as more complicated logic.