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?
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.
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.
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?
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.