I let a local LLM control my thermostat to see if it could beat Nest and Ecobee

I let a local LLM control my thermostat to see if it could beat Nest and Ecobee

Published Nov 1, 2026, 6:30 PM EST Adam has a degree in Engineering and has a life-long interest in technology. He has been writing for over a decade for various print and online publications, with a focus on consumer tech. He joined How-To Geek in 2024 while working at Pocket-lint. As well as being a long-term fan of Apple products, he also has a strong interest in smart home tech, running a Home Assistant server at home to automate all his smart home devices. He believes that the ideal smart home should work with minimal interaction from the user, with automations running as if by magic rather than requiring you to push buttons on a control panel. You can find more of his work on Muck Rack. Smart thermostats can learn your habits, but if your routine changes, you can't just tell them what's different and expect them to adapt. If a Large Language Model (LLM) were running my heating, I'd be able to do exactly that. I decided to let an LLM take control of my heating for a week to see how it compared to popular smart thermostats. I gave a local LLM the keys to my heating A simple brief instead of a learning algorithm I have a Tado smart heating system in my home. It has a module that controls the boiler, which supplies the hot water to my radiators, and there are also smart thermostats on some of the radiators that can control the heating for individual rooms. The system is integrated into Home Assistant, so I knew that I'd be able to get an LLM to control my heating by sending the relevant commands to my smart home. The idea was to create a brief for the LLM to follow, with an explanation of the layout of my home, how quickly each room warms up based on past data, my typical weekday and weekend routine, and more. The plan was that every 30 minutes, the LLM would run and look at the current data, such as room temperatures and humidity levels. It would also be able to check things such as the geolocation from our phones to determine who was home, as well as data from motion sensors, presence sensors, and Bluetooth proxies around my home, which could provide information about which rooms were in use and which were empty. The model would then decide which rooms needed heat, when they needed it, and how warm they needed to be. A small script would then figure out how to make this happen by determining when heating would need to start based on the previous warm-up rate data. The script would then send the relevant commands to my Tado system via Home Assistant. A few small LLMs were put to the test Thinking models were no use at all The first thing I needed to do was choose a model to run. I only have modest hardware to use, so I wasn't going to be able to run a huge AI model with tens of billions of parameters. This was fine, as I really wanted to see what a local LLM running on typical hardware could manage, so I set up Ollama on my old Dell OptiPlex with 16GB of RAM. I tested various models with scenarios built using real past data from my Tado system as well as some hypothetical situations. Models such as Granite 4 7B and Nemotron 3 Nano 4B got fewer than half the decisions right, and models with thinking enabled took more than 20 minutes to make a decision, which was no use at all. The winner ended up being Qwen 3.5 9B, which got 74% of the decisions right and took between two and five minutes to come to a decision. This was plenty fast enough, since the setup didn't require split-second decisions. The LLM took over my heating for four full days The results were a mixed bag With the model chosen and the prompt and script in place, I spent the weekend doing shadow testing, where the model said what it wanted, but the commands were never actually sent to my Tado. With a few tweaks to the prompt, I was ready to hand over the keys. From Monday to Thursday, the LLM was in complete control. Every 30 minutes, the model ran its prompt, looked at the data, and made decisions about where heating was required and when, which the script then sent to Home Assistant. Tado ran its usual schedule, but the LLM could take over in manual mode, overriding the normal schedules. Over those four days, the LLM failed to make a decision on three occasions, but all the other times, decisions were made. The results were sometimes good but often very bad. On Monday, the model correctly identified the electric blanket being turned on as a signal that we would soon be going to bed, but instead of warming the bedroom immediately, it told Tado to turn the heating on two hours later, and then moved this even later still in a subsequent decision. On Tuesday morning, it came up with a perfect plan for the circumstances, but then half an hour later, it completely forgot about that plan, so the heating came on late. I was forced to update the prompt to make it consider previous decisions. On Wednesday, it heated an empty house because an old device that was still registered in Home Assistant was stuck on "Home," which was my fault, not the LLM's. On Thursday, I tested the feature that I hoped would be the most useful. You can't tell a Nest or Ecobee that your kids are off school and have it figure out a different heating schedule, but that's exactly what I could do with my LLM. The setup had a text input option, where I explained that the kids were off school all day and would either be in one of the kids' bedrooms where the Nintendo Switch is located, or in the living room. The LLM factored this into its reasoning but then did exactly the opposite of what it should have done and kept the other bedroom warm instead of the bedroom where the Switch is. The idea is sound, but it requires more work or better hardware I'm limited by the models I can run Not everything was a complete failure. The pre-heat timing from the supplied warm-up rates was good; when asked, rooms reached their desired temperatures reasonably close to schedule. There were issues on Tuesday and Wednesday with rooms not heating up, but this turned out to be an issue with my boiler and not the LLM. What fell apart was the key part of the LLM's job: working out who is using which room and when, and deciding which rooms require heat based on this information. It understood what it needed to do, but very often just failed to act on it. Adjusted for the milder weather, I ended up using more energy than I would have done over a typical four days, but not by a huge amount. The LLM was pretty good at keeping rooms in a reasonable range, and it also factored in humidity and the risk of mold in deciding whether to heat empty rooms. The problem was that models I can run on my hardware just weren't capable of making the required decisions accurately. On better hardware with larger models, this might be a genuinely effective way to heat a home, and even reduce heating costs, but my version definitely isn't. It might be possible to improve things by only asking the LLM to change the preset schedule now and again rather than being in complete control. I may try that in the future, but with energy prices at the levels they are, I don't feel any great urge to experiment more right now. Smart thermostats can do a pretty good job In my experiment, my smart thermostat did a far better job than the local LLM could. The idea of being able to use information from devices such as presence sensors and Bluetooth proxies to only heat rooms that are in use is a good one, but not with the models I can run. For now, my Tado will stay in charge.

Original Source

Read the full article at Howtogeek →

KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.