The Short Version
I ran Home Assistant in a virtual machine on my Windows 10 laptop for over a year. Updates didn’t cause problems every time, but they caused them often enough that I was checking on it more than I was actually using it. YouTube (which is dangerous for people like me) convinced me to buy a Home Assistant Yellow. The migration was a breeze and it has been working like a charm ever since.
It Seemed Reasonable at the Time
In the first dispatch from the basement, I mentioned that Home Assistant was the thing that started this whole spiral. This is the longer version of that story.
I had a laptop that was on all the time anyway. Hyper-V was free. Home Assistant ran in a VM. It worked.
The first thing I automated was the outside lights. Then a custom timer for the driveway light so my wife has lights when she leaves early for work. Then came the family room. Automations for movie night. Turn on the projector, fire up the stereo, dim the lights. Reverse the whole thing when we’re done.
Then I started looking at the pellet stoves.
We have two pellet stoves in the house, and I wanted to be able to schedule them. Finding a smart thermostat that worked with pellet stoves meant needing power at the wall thermostat and paying way too much for the privilege. So of course I had to build something. Why? Because I can.
I wired up Tuya dry contact relay modules in project boxes with bypass switches on each one. The bypass switches were supposed to be “just in case.” They got used more than I’d like to admit.
That opened the door to the shop. It’s a big shop, 40x52, and keeping it above freezing in the winter without running the electric bill through the roof took some creativity. The diesel heater is cheaper to run than the electric heaters, so it kicks on first. The electrics are backup for when it can’t keep up. I put SwitchBots on the electric heaters because their built-in thermostats wouldn’t set low enough for what I wanted.
The diesel heater was the fun one. Its thermostat only has a low mode, so it just runs whenever it’s on. I built an ESP32 device with a 433MHz receiver/transmitter to decode and duplicate the wireless remote signal, so Home Assistant could turn it off and on based on readings from three thermometers spread around the shop. Overkill? Probably. But I really didn’t want anything in the shop dropping below freezing, and three thermometers meant no cold spots hiding behind the boat.
All of this, running in a VM, on a Windows laptop, that Microsoft really, really wanted me to reboot.
The Problem Was Annoying, Not Catastrophic
Nobody froze. Nothing caught fire. The updates didn’t break things every single time. But they broke things occasionally, and that was enough to make me watch the whole setup way more than I wanted to.
Sometimes I’d find out the VM was down because an automation didn’t fire. You go to watch a movie and the lights don’t dim. Or the pellet stove schedule didn’t kick in and you’re flipping the bypass switch again. Nothing dramatic. Just the annoyance of doing manually what the system was supposed to handle.
The shop heaters were less of a worry than you’d think. The SwitchBots and the Tuya relays still had their own apps, so I could control everything from my phone. It just wasn’t automated. Which, for a system called “Home Assistant,” felt like a contradiction.
In the summer it was a low-grade weekly thing. Is there an update pending? Should I reboot now before it decides to reboot itself? Did everything come back? But winter was the worst. I felt like I was always checking on it. The whole point of home automation is that it runs itself. If you’re checking on it constantly, you’ve just created a new chore. With more steps.
(Yes, I probably could have disabled automatic updates. I know. Let’s move on.)
YouTube Made Me Do It
I’d been watching a lot of Home Assistant content on YouTube. Seeing what other people were doing with dedicated hardware. Clean installs, fast boot times, no VM layer in the middle of everything.
The Home Assistant Yellow kept coming up. Purpose-built hardware. Zigbee radio included. Designed to do one thing and not get in the way. And the Home Assistant community is genuinely one of the best parts about the whole ecosystem. Helpful, active, and always building something new. Watching what other people were doing with proper hardware made it pretty clear I was making things harder than they needed to be.
I wasn’t fed up enough to rage-quit Windows. It was more that I could see what the experience was supposed to look like, and what I had wasn’t it.
So I ordered one.
Assembly Required (But Barely)
The Yellow comes as a kit. You assemble it, flash the compute module with the Raspberry Pi Imager, and boot it up. If you can follow instructions, you can handle it. They even have pictures.
I restored my Home Assistant backup onto the Yellow and everything came back. The Zigbee devices reconnected. The automations picked up where they left off. Pellet stove relays, the ESP32 diesel heater controller, SwitchBots, lights, movie night setup. All of it, running on hardware that doesn’t need Windows to function.
That was months ago. It hasn’t gone down once. No update reboots. No VM recovery. No weekly “is there an update” check. It just runs. That’s all I wanted. Yellow delivered.
While I was at it, I cancelled my Nabu Casa subscription. Nabu Casa is Home Assistant’s built-in remote access service and it works great. But it isn’t free, and it only gives you remote access to Home Assistant. I saw one of the many amazing videos from NetworkChuck showing how easy Twingate was to set up. It’s a zero-trust VPN. Took maybe 20 minutes. Gives me secure remote access to everything on my network, not just HA. Free for personal use.
The Ripple Effect
Once the Yellow was handling Home Assistant, the laptop had nothing to do. Flashing the Yellow’s compute module with the Pi Imager had been so straightforward that I ordered a Raspberry Pi 5 just to see what else I could do. I didn’t know what yet. (Spoiler: it became a NAS. That’s the next post.)
That’s how it starts. You fix one thing. Then there’s an empty machine. Then you’re ordering parts.
What I Figured Out the Hard Way
Start with the thing that hurts.
I didn’t plan any of this. I didn’t sketch out a homelab architecture or decide to “go all in on self-hosting.” I had one specific annoyance (Windows keeps making me babysit my automations) and I fixed it with one specific purchase (dedicated hardware that doesn’t run Windows).
Everything else happened because fixing that one thing freed up a machine, and a free machine is dangerous in the hands of someone who tinkers.
If you’re running HA in a VM on your daily driver and it mostly works, it’ll keep mostly working. But if you’re babysitting it, that’s the thing that hurts. Fix that first. The rest will follow whether you planned it or not.
Subscribe here for dispatches from the basement a few times a month. Next up: I built a NAS for $0 with parts I already had.
— Mike