Fun project. Though it’s kind of unreal how complicated it is to set up HA and I literally do this for a living, both embedded sw and backend web dev.
Docker compose with a zwave management server, reverse proxies for TLS, vlan isolation for the server, macvlan for HA container so it does see the host network, etc, etc. All to turn on and off a lightbulb with the sun. All the while AI is telling me to configure things insecurely.
I think when I get some more spare time, I’d like to write a statically linked program that handles a zwave controller and basic automation scripting. No IP networking needed for my lightbulbs. Then it wouldn’t feel risky to just make a system user and udev rule to give it permissions to the controller, and run with systemd.
While you can run HA as a container. I think it's a mistake - Its more complicated and has reduced features.
I would instead recommend people use HAOS instead - either running on dedicated hardware OR as a VM. Just dont run it from an SD card if you go down the Raspberry Pi/SBC route - it will kill the card from IO cycles.
I have an IOT VLAN on my network that all the IOT bits sit in, including WIFI devices. What internet access it gets (if any) depends on the device profile.
I tried splitting things up into multiple VLANs but a whole lot of things assume just a flat network, so things stop working if you get too fancy.
It might not. I have a Raspberry Pi 2 that has been running a weather station for over 12 years, and it has been on the original SD card. I have other RPi's doing dumb things around the house and I have never had an SD card failure.
HA in particular creates a lot of log churn. It's not a 100% certainty, but after running for 4 years I finally had to copy the SD image to a new one because it had become unwritable.
Yeah, I haven't had issues with SD cards in a long time. Many years ago (maybe 10), I think they weren't quite as good and I probably skimped too much when buying a card. RPi 1 also had power regulation issues. Now I only use higher tier cards and make sure there's enough free space for wear leveling and operations.
My friend bought an ODROID and an SD card at the recommendation of some tech YouTuber for Home Assistant. Within 3 years the SD card was dead, and I had to help him re-set-up all of his stuff (this time, with a more resilient storage medium and remote backups).
YMMV certainly applies but I feel like the warning is important.
I wouldn't put running a weather station in the same class of disk activity as running Home Assistant. It is writing a fairly large amount of logs, plus statistics for every attribute/sensor for every device. The more devices you have, the more you will be writing.
There are regularly threads from people with "I restarted HA and now I get this weird boot error message", and it's because their SD card died.
You do you, but it's common enough of a problem that I think it's worth calling out as a "Don't do this".
On the weather station I wrote to the SD card 1,068,266 database records, along with all the nginx logs, etc...
> it's common enough of a problem
It's probably survivorship bias, where everyone complains about SD card corruption, while those with no issues really don't say anything. Well, except my comments today.
Fair point on survivorship bias. But, I think SD card being flash memory is technically expected to fail over time, with that failure compounded by the number of write cycles. These cycles are a spec of the SD card. If a section/page of the flash is being overwritten more frequently than the other, then surely it'll fail faster than an SD card whose erase/write cycles are distributed uniformly across all the sections/pages.
I go the container route, and have only had one issue: allowing HA to access my system's Bluetooth adapter. I had some ESP32s lying around, so I used ESPHome to make a Bluetooth proxy, which solved that issue.
I don't run addons though, which might be part of it.
I haven't done it either. But it should just be a case of passing the device to the container. You might need to disable the host from using it and pass admin rights to the container too.
But it was also quite easy to pass a USB device to the HAOS VM in Proxmox.
Yeah, I ended up buying a dedicated mini PC ($100 refurb) to install HAOS on. HA is pretty much useless without being able to run add-ons. I run everything on k8s in my home server, I don't have a VM system set up and didn't want to bother just for HA. It's funny, the pattern of a central application that uses docker containers to add plugins seems like a perfect fit for a Kubernetes Operator. I suppose it still misses out on some of the advantages of running everything "on metal" for integrating with physical components like USB dongles.
It's kind of silly since they're just containers it runs anyways. I'm sure there's other reasons. At least running it as a VM isn't too hard. Pretty easy to use their image and run from that.
I'm using OPNSense for the router, on their dedicated hardware - DEC750 iirc.
The switches are mostly Mikrotik, with some Unifi switches.
The wifi APs are all Unifi - they are all PoE and wired into the same network, no mesh. Even between buildings I ran fibre.
For the switching and routing, were I to do it again now I might go all Unifi. They recently implemented some much needed updates to make doing things like firewall rules and routing based on device much easier. I have a complicated set of rules in OPNsense to route IOT VLAN traffic out via a VPN connection, which require static IP assignments via DHCP, but under the new Unifi network I could do it with a few clicks and being able to use device attributes rather than a static IP.
I am also using an SLZB-MR1 for a ZigBee controller and Matter over Thread border router. I've got a bunch of IKEA and Mercator ZigBee light bulbs/fixtures that act as ZigBee routers. It's a strong enough mesh I rarely have issues with the ~180 devices on the net.
The happy path is to buy https://www.home-assistant.io/green/ and then go from there. That's what I did and it was a very smooth setup for everything. I've long resisted HA as I thought it's one extra thing to fiddle with but the whole process, the updates, adopting my devices was much nicer than expected.
I've since also bought https://www.home-assistant.io/connect/zwa-2/ and got rid of all my third party bridges (Ikea, Hue etc.). I also feel good about buying devices from them as it supports the project and the work they are doing on it.
I've never heard about "Home Assistant Green". Seems like another step down the slippery slope of "work on my machine". First docker, than a dedicated OS, now dedicated hardware. I wonder why is Home Assistant so complex as to require all this.
I have no problem with them offering a ready-to-run hardware solution for Home Assistant, but I am annoyed that it's probably a motivating factor for why there isn't a self-installing image for HA on BYO hardware...
This is what I've been running on my generic x86-64 system for a couple of years now, 0 issues. Even migrated to a newer system recently because I wanted something that was slightly faster for ESPHome compilations.
"self-installing" being the key point. Those instructions require you to use some other piece of software to write the image onto your boot disk. In my case I used an Ubuntu livecd to download and write the image to the machine. It's obviously not a showstopper but it is slightly annoying.
It's not that it's that complex to need all of this. It's about ease of use. Home Assistant OS makes life simpler for users (such as myself), it makes it easy to use adding that run as additional docker containers, it makes plugging in USB z-wave/zigbee devices a breeze.
While it is technically no longer supported, you can still install the whole kit and caboodle using pip in a Python virtual environment, but why would you?
> You can still install the whole kit and caboodle using pip in a Python virtual environment, but why would you?
This is how I did it, instead of the container or HA OS in a VM.
If you want the simplicity of everything preconfigured, managed, and hands-off, go with HA OS, whether in a VM on a beefier machine, standalone, or the HA Green/Yellow dedicated hardware.
But if you already have a home server and want to add HA, I found just pip installing to be easier than dealing with the container.
Maybe I'm just the silly type that enjoys fiddling with Linux, but I'd argue that it actually makes more sense to install HA bare metal over a container. HA doesn't actually have any major dependencies outside of what pip installs, so setup wasn't any more annoying than via container. And then you never have to deal with container annoyances like passing hardware through to it or weird failures and misconfigurations.
Contrast this with https://frigate.video/, which has so many fragile native dependencies and a super complex stack that trying to install manually is an exercise in futility. I gave up and used the container.
I've tried using HA a couple years ago and gave up. It was too complicated to run it in a Pi4 - I'm an experienced software engineer, familiar with containers and Linux.
I was trying to get some of the IoT I have at home like pool equipment, lights, HVAC, blinds, etc. Some of the setup were an uphill battle looking for more information in forums and trying to figure out what was broken.
Recently I decided over the weekend to use Claude and write a small app that controls my pool equipment and then deployed it using Cloudflare Zero Trust (kind of a reverse VPN). What a joy! Not only I had lots of fun reverse engineering my pool equipment API (I didn't want to depend on existing libraries - which I know exist) but I managed to create a fun and custom UI with React that my kids and wife love using. For example, whenever the pool heater is on, it adds an animated flame to the UI and change the background to a red-ish color. Plus it has a bar chart that shows the pool temp progression (takes hours to heat it up) with an animated volcano colors. The theme of the app is beach/pool vibe.
I don't think anyone here would be that excited if we were using the lower-denominator that HA turns out to be. I know it's a very cool automation tool, but just not very exciting and pretty obscure to configure every equipment I have at home.
I've been thinking about writing a blog post with the details of my fun project, let me know if anyone is interested in this. So far I've done the blinds and pool equipment. Next will be HVAC and lights. Took me 1-2 weeks total for each using Claude in my spare time.
"pretty obscure to configure every equipment I have at home"
HA actually makes configuring every piece of equipment and integrating them easy. If I have only 1 thing to control, then yeah, it's probably overkill.
HA is an absurdly heavyweight pile of Python and Docker. Get it a real computer — a used “thin client” with 8 GB of RAM is probably less expensive than an RPi4 plus case and power supply.
What’s the issue with new ones? Proxmox should work just fine on new hardware.
I’m rocking a Dell Wyse “thin client” that cost rather less than any comparable N150. It’s fanless, still gets firmware updates (via LVFS!), and takes about 5W at the wall plug.
> Though it’s kind of unreal how complicated it is to set up HA and I literally do this for a living, both embedded sw and backend web dev.
I had the same thought after I joined a local group for Home Assistant users.
Everyone always talks about a happy path where you pick the right choices, use the right setup, and everything just works immediately. More often when people come to this local group's shared Slack channel it's because they're 10s of hours into trying to set up something that appeared to be simple. Then all of the old timers remember that they, too, suffered through something similar once and share what they can remember.
I think HA can be a lot of fun for people who like to experiment and debug, but if you're not the kind to be entertained by debugging your home's operation then it can feel like a chore. Some have an easy time setting it up and then get trapped when an upgrade breaks something or they try to add a new device with less than mature support.
You're making it complicated with all the VLANs. HAOS in a VM (proxmox helper scripts for one-line install), and HA has plugins for all the other things.
Just deny WAN access to the IoT junk you don't trust at the router, or for things like cameras, a separate switch for those. That usually makes sense, since they're one of the few devices that must be powered with PoE and doesn't require gig+ bandwidth. A cheap 100mbit PoE switch will handle a good number of cameras.
I’m not giving untrusted devices unfettered access to my lan and an airgapped network sounds more complicated tbh. VLANs aren’t really that bad with good networking gear.
I have HASS running on a dedicated VLAN, IoT junk on its own, separate VLAN without internet access, through a managed switch. OPNsense sits in between and does the routing. Didn't have to mess around with anything, just ran the "vm appliance" or whatever it's called for hass and I was off to the races. Wireguard on the firewall gives me access from outside the house.
Actually, both OPNsense and Hass are VMs on the same machine, with the latter's network not even connected to any physical port outside the box. I'm not even running Proxmox or anything fancy, just libvirt on Arch. The only "fancy" thing is a 2nd hand Mellanox NIC I got off eBay for 30 €, which presents virtualized interfaces to the VMs, but HASS doesn't actually use those.
There's also no need to manually screw around with any reverse proxy for TLS; HASS does it with the Let's Encrypt add-on. The only missing piece when I set this up a while ago was something to regularly renew the cert (the add-on would only get started at boot-up).
HA on my RPI is just not reliable, requiring a reboot 4-6 times a year for reasons I don't understand. Frustration at being in the literal dark doesn't translate to the right mindset to root cause.
What I need is an opinionated guide on minimum viable virtualization, but so much of the resources online are from folks that are homelabing maximalists.
I feel the same temptation as parent to create a spartan solution.
2. Buy a relevant dongle/antenna for the protocol you want to use. I recommend the ones from Sonoff or from the Home Assistant foundation (I started with the sonoff for zigbee, but added the ZBT-2 for matter/thread. they are both good)
5. Plug in your dongle(s) and don't forget to assign them to the new VM. You should now be able to start using home assistant. If you're using zigbee, choose zigbee2mqtt rather than ZHA, it's more reliable overall.
My setup is around 2 years old and I haven't had to administrate it at all.
If you are at all comfortable with Linux system administration, manually setting up one or a handful of KVM/qemu powered virtual machines is not actually that hard at all (in my experience). If you like a GUI to guide your initial steps, "virt-manager" is pretty okay. I've been running 3-5 virtual machines for several years now based on a pretty vanilla Ubuntu Linux install (Debian would work just fine as well).
Now I do like a challenge every now and then, so I'm currently setting up Proxmox to gain live migrations and high availability for virtual machines, because I've become quite dependent on all of these services in virtual machines actually running successfully :-) even in the face of eventual hardware failure (like what happened to me in the past months).
IMO Linux system administration, KVM/Qemu, Docker, and virtual machines, and third-party tools in general are not something that should be involved in smart light bulb/sensor/pump etc management.
Task for an RTOS or no OS IMO. Or a single executable that runs on any OS without config. Should be simple, fast, "just work".
Home Assistant supports an absolutely massive number of both manufacturer and community maintained integrations that are necessary for a truly universal all-in-one home automation setup without vendor lock-in.
Plus, for the full HAOS experience (as a “server”) running add-ons that are convenient one-click installed Docker-based packages for popular 3rd party tools used for home automation (but not developed by Open Home Foundation themselves) like Zigbee2Mqtt, Frigate (DVR for IP cams), EspHome etc so you can manage everything in one central location.
You could definitely flip light switches and read sensors with a 20kb executable. But you’d sacrifice the core value-add of HA serving as the single lynchpin connecting every smart device you own today plus whatever you may add in the future.
I started with a 100% Philips Hue setup that forced me to use their app, and eventually wanted to add some unsupported Zigbee devices that Google Home didn’t do a good job exposing which pushed me to explore Home Assistant.
Since then I’ve added (and removed) countless different protocols, proprietary cloud integrations for robovacs or air purifiers, ESP32 boards I built myself, web cams, TVs, etc over the years with the only unchanging constant being Home Assistant at the center linking it all together.
I have had the opposite experience; I have an old trash intel NUC with a decent SSD and a moderate amount of RAM and it runs several services (on proxmox).
- Smokeping
- Nginx proxy manager (with tailscale and
- copyparty
- home assistant
- regular samba fileserver
I got myself a NUC. It's been worth it: tiny, has 16 GB of memory and 504 days of uptime.
I have servers for running VMs and containers but I felt like it would be nice to have this one as a separate device. It's also easy to plug in radio devices.
The minimum viable setup is the Home Assistant Green. I run it on a slightly better ODroid, since the green did not exist at the time. Any heavy task, like using Ollama, are passed over to my far more main computer.
Pass through what ever USB devices you need (or spring for POE devices ).
Enjoy your HA setup.
Proxmox is the way to go here. Once you have a working install dont over commit before you learn to: 1. back up, 2. restore. These should both be local and remote (HA can enable this to various sources).
As a bonus you now have a runtime (proxmox) that can do tons of other things (see the whole community scripts link).
I have been running HA for years now, and this method makes things a pleasure and is easy (at least if you're a nerd) and cheap (the solutions are lower power).
An enthusiastic two thumbs up to this approach. It's exactly what I run at home that has been working solidly. I run on an N100, which is just a hair smaller than an i5-8500, with 32GB DRAM and a 1TB SSD (total overkill). I keep it under proxmox; the box also runs my unifi SDN controller, pihole, and a linux VM for various little services. Two USB dongles for z-wave / zigbee / matter (because I'm a glutton for punishment). Backed up to a NAS. It's fast, easy, and has been very reliable.
HA on R-pi running for almost a decade without issues here, including moving house a few times. Sounds like you're making it difficult with that setup. Mine is connected to light switches, alarm, duckdns for outside network access, motorized blinds, garage door opener, hvac, landscape lighting. It's magically awesome and takes none of my time to maintain.
Sounds like the complexity is somewhat self-inflicted?
I set up HA from scratch on a new mini PC with Proxmox and HAOS in about 30 mins having never touched either before.
For VLANs, I just used port-based VLAN to attach it to the IoT VLAN, with firewall rule to allow UI access, but Proxmox has tagging support if preferred.
There’s like 10 replies telling me it’s not actually that complex then describe an equally or more complex solution that’s probably missing some of the security or features I have. I guess I wrote “complicated to set up” when I meant “complicated stack”.
A heavyweight blob of python running in a container talking to other containers running node-js on a Linux VM on a Linux host behind layers of networking to toggle 1 bit of information over a UHF link is really complex even if it only took 1 button click. My solution just removes the linux VM.
I’m not even saying I struggled, it took me like 1-4hrs depending on if you include the non HA stuff. I can clone the repo I made, populate the secrets/gateway, and type ‘make’ to rebuild my setup on a new machine. Everything is “zero-trust” with signed SSL certs, dynamic DNS+wireguard to tunnel in from a stable url, and room for more services. It’s cool, but it’s only toggled 1 light for years.
Well sure, with those requirements running any piece of software will be complicated. None of the complexity has anything really to do with HA.
My pretty minimal stack:
- Intel NUC running Ubuntu LTS.
- Zigbee dongle I bought off Aliexpress.
- Zigbee2MQTT installed via package manager configured to use the Dongle.
- One single container running HomeAssistant with net=host
That's it. Has worked for years. Whenever I feel like it I ssh into the box, docker pull the latest image, rerun my two line bash script to recreate the container and go on my merry way.
I went through a similar process with Home Assistant. And the kicker is that months or years down the line, you'll hit some feature that doesn't work with the Docker version (I've ran into a couple)
I spun up a VM on my proxmox server and loaded HAOS. Job done. The only added steps involved giving the HAOS IP to my reverse proxy, now it's reachable from the outside net.
This - the move is to grab some zigbee smart plugs. Once you have HA up and running there are so many applications for these.
I have a door sensor that monitors my kids bedroom door, and when it opens it turns on a desk lamp in my room. This allows me to get to him before he gets to my partner who's sleeping with the new born.
Exactly! I prefer the small power plugs that lets me control fans and other power systems as relays. Family has a habit if switching of light bulbs using light switches and i have not gotten the change approval to disable the physical switches in the house :)
For me the best solution was to use smart switches (mainly dimmers) and dumb lightbulbs. People can use the switches like any other if they want, but I can still have my automations and remote control.
I can recommend Shelly for light switches over smart bulbs. It's a relay that fits inside the wall switch with zigbee to sit between the light and the switch.
That's what I am doing too, though I did have to drill out some wall to fit it, in some cases.
There is another option that I don't think many people are aware of: You can put a battery powered relay downstream of the (dumb) switch, and have it broadcast events when power comes on and off, to control other smart devices, which just have to listen for the events (via a broker like HA).
They're not mutually exclusive. I have Shelly relays in my light fittings (not the switches) and use smart bulbs. When everything is working the wall switches just control stuff in HA. When HA is not working the switches control the relays in the Shelly directly, without HA.
This is the only solution I'm aware of that gets you all of:
* dimmable,
* colour temp and RGB control,
* regular switches that work as expected,
* no "forbidden" switches,
* lights always available for automations,
* lights go on and off with the switch when HA is down.
Philips Hue, and Zigbee direct-binding in general, can achieve this if you're willing to use their wall switches. Still works if the hub is offline.
Depends on your definition of "regular switches," I suppose -- but anyone with 3-way wiring (i.e. multiple light switches for a single socket) has given up on "up=on" for their switch.
As a another comment said, the smarter way to have a smart light is to replace the switch with a smart one or even better put a relay behind the existing dumb switch to smartify the switch. For me it's important to have a manual override; you shouldn't need an app for a thing as basic as turning the lights on.
The only rooms without a fully automated light on/off systems in our house are the bedrooms + living room.
And even the living room automatically adjusts lights based on the playing status of the AppleTV (playing = dim, pause = brighten up a bit).
Oh and the staircase, haven't found the motivation/courage to climb up 10m to the ceiling to switch out the ye olde light in there :D Maybe this year?
The Living room would need two presence sensors that talk to each other in a smart way (a big room, one isn't enough) and I haven't yet found the semi-manual way of adjusting the lights via phone/Siri to be too cumbersome to bother.
Disabling the physical light switch should usually only come after setting up a different way of controlling the light by hand, without a phone.
Most likely there is some sort of motion or presence sensor that turns on the lights which then turn themselves off after some time or no more presence is detected.
There are also small wireless switches that could be used in place of the actual wall switch.
I have done so in my apartment for example. Since the bedroom light switch is for some reason outside of the room I taped it down and put a wireless switch in a more reasonable spot.
Another example is the hallway light, which only turns on by motion sensing when the sun is starting to go down.
After years of doing this, I determined that dumb controllers are superior for my uses. A once a week irrigation with a simple rain sensor results in the same quality lawn/beds and better can run with pretty much zero maintenance burden on the sw/hw side. The vegetable garden is even dumber, just drip lines, a hose bib, and a dumb timer that flips daily in the morning powered by AS batteries. In my apartment days I just used an elevated water container and the same dumb timer to gravity feed my garden.
I find home lab stuff has far more return on investment for like automatic blinds, lights, etc. It’s not like you can just stay inside anyways and get amazing vegetables, you still need to be on top of thing like checking for pests and disease. The automatic garden is a myth.
I have almost everything in my house HA-automated, but anything touching the water supply is all on dumb physical valves and electrical timers. If my light switches don't work, that's annoying. If a robot vacuum doesn't run, that's frustrating. If a water valve is stuck open, that's catastrophic.
Yeah when I got to the point he was building a PC for this in the article it was a little shocking given the task at hand. I make do with a little $30 programmable dual zone unit that has lasted several seasons now. All I had to do was add a water hammer arrester.
I use Irrigation-V5 in combination with a flow meter to manage my sprinklers. Irrigation-V5 basically tracks the amount of moisture in the soil based on humidity, the amount of sunshine, temperature, rainfall, and of course when the sprinklers turn on and add water. It feels like magic. They can go for months in the winter without running, all on their own and then pop back on when things warm up and dry out, slowly decreasing the intervals between watering as summer approaches.
Really makes me want to integrate the whole thing into an ESP32 with a display so such a thing doesn't require HA.
I love HomeAssistant, and my second time on a new home, i'm slowly getting what i want in terms of interface and devices; doing it slowly helps you plan better and execute it perfectly.
I've also been watering my garden (sprinklers) and i even built my custom ESPHome device: https://github.com/mgarces/open-esp-sprinklers
I wanted home assistant compatible plant watering solution that works on a solar panel and does not require being connected to the water line and is Zigbee compatible. Unfortunately, I could not find any. So I did a DIY solution: a big barrel which I manually fill with water, a 12V pump (usually sold for camper vans), some rechargeable batteries, 10W solar panel, a solar charging controller, and Tuya ZG-2002-RF switch.
I dabbled in hydroponics for some years. Due to my inability to get my Rasberry Pi and Arduino working I ended up using a 12V pump and one of those cheap $10 electric timers on Aliexpress. I estimated how much time it took for my hydroponics system to drain and that's what I set on the timer. Other people I followed had all sorts of sensors rigged up, which I would have done if I had the time and skill but I failed, so in the end it was just the timer. I too had single solar panel and battery and the system worked for over 7 years with no issues. I just replaced the pump once or twice.
An art student of mine once needed a way to electrically control precise small amounts of water. We solved that using:
1. Water tank and gravity
2. Medical IV flow regulator¹
3. Servo hooked up to that IV flow regulator via a 3D-printed part
It worked very well. In medical applications off must be really off, so it was also quite safe in that regard as well. Her 3D-printed part had a little bit too much flex in it, but in principle this works quite well. If it is really, really safety critical I would still recommend a mechanical fallback that protects in case of power loss or when the servo fails open (e.g. bending the hose with the force of a spring if electricity is gone).
Your suggestions should be fine for hardware failure but I'd be more concerned about software failure: what if a bug in your software makes it unresponsive and stuck in the state with the flow open? Maybe a watchdog or some other system running in parallel checking for a heartbeat or a max amount of time water can be flowing?
Good point. In my case the program was so simple and the risk low enough that this wasn't needed. The worst thing thar could have bappened was some minor water damage to an exhibition space.
Also my track record of writing stable, bug free embedded software has been pretty solid as of now. But if human life would be on the line (for example) special precautions like multiple independent failsafe mechanisms are non-negotiable.
There are also irrigation controllers that use a ball valve and will work fine under gravity pressure e.g. raised rain barrel. Powered via battery that lasts months and months. No home assistant of course but water usage can be estimated from expected flow and programming.
HA is monstrously complex. cron just works. The same can’t be said for my homebrew esp32 pump relay controller, but at least scheduling is never the problem.
I have been using HA to water my garden for 4 summers. I setup a Tempest weather station this fall, and will have some fun experimenting with using rain and temperature data collected in my back yard to make watering decisions.
I made such a thing ten years ago with an ESP8226 and a basic iOS app built using HTML and javascript. It still works perfectly.
The valves were 12v solenoids from ali express, and the plumbing was from the hardware store. I almost guarantee it was far, far cheaper than this project.
Automation to determine that the thing watering the plants has failed is crucial.
This is especially true if the system is some form of setup in which there isn't a bunch of soil to buffer a couple of days of not watering correctly (like hydro- or aqua- ponics).
I love HA, after setting it up I used an old tablet as the dashboard to control and monitor the house, plus the app. It’s very easy to setup and work with, maybe a bit convoluted in the initial setup but once done, you barely do anything until you add new sensor. You can setup a whole SCADA-like system with it, controlling your garden, power grid/solar and monitoring it, integrating CCTV and all, and it’s free. A similar industrial project I did before, SCADA and RTUs that monitored and controlled many actuators and solenoid valves and sensors, cost wise was ~$9M, and all the functionalities were implemented can be done with HA on principle.
Pretty much yeah, that SCADA system was in 2012 and the complexity was off the charts: electric panels, Allen Bradley expensive hardware and software, ladder/C#/MSSQL/historianDB/etc tech stack, modbus/profibus/hart protocols, it is a nightmare to maintain, even editing the HMI was a process by itself. If that project would be done now, probably won’t cost 25% of the original cost.
Watering plants is also super easy once you do it regularly. You get a sense of how much water a plant needs just by looking at it and testing the soil (via moisture meter or just by touch). It's quite rewarding realizing how each plant differs.
It's nice to know the plants are getting the water at the right time when they need it, when the temp is right, etc. But agree obviously it does automate some of the fun.
Cost-wise, there's a solid chance that the Pi would have been more expensive. Jeff Geerling ran some numbers (^1) on this last year, before the current chip crisis we're in, and it was bad enough already.
Home Assistant does a surprising amount of Disk I/O, if for nothing than for logs. Sibling commenters are also advising not running it on the SD card to avoid wearing it out, so there's definitely some truth here. This means we're adding a Pi M.2 hat + SSD into the mix. The Pi5 SSD kit for 256 GB, when it was available, was around $60 USD. A Pi5 with 8 GB of RAM is $130 USD. Now we need a cooler, a case that will fit the Pi5 with said M.2 hat, and a power supply. We're already well north of $250 USD, encroaching on $300, and we're not even using the core benefits of the Pi's platform. No need for GPIO pins, tightly integrated cameras or other sensors, none of that.
For all we know, the blog author did this assessment (or trusted the assessment of others, eg: Jeff) and came to the came conclusion - it wasn't worth the price of entry.
I used to run HA on an RPi, but eventually migrated it to a similar NUC. The RPi eventually just wasn't powerful enough (peak compute needs), while the NUCs are still quite cheap. And you can run a surprising amount of Proxmox VMs and LXCs on barely a few cores and gigabytes of RAM.
The cool thing is that it's very easy to migrate it to better hardware. HA backup and restore system is highly reliable. For this reason I can definitely recommend an RPi to start with, and who knows perhaps it will be enough forever, but if not then moving is a matter of ~one evening.
Funny that I should run into this now... Just this past weekend I tried the Home Assistant backup/restore mechanism for the first time, and it failed miserably for me :-(.
First it took over an hour to create the backup, then I got a 4.42 GiB tar file, that of course failed to upload to the new Home Assistant install.
I investigated and found that the tarball was just a compressed copy of the complete installation directory of my Home Assistant setup, and that included multi gigabyte `.cache/pip` and `.cache/uv` directories :-s (my old Home Assistant install operates from a Python virtual environment that I created, and Home Assistant keeps nagging me that this installation method is deprecated, so I decided to migrate to HAOS in a VM).
When I deleted those directories the tarball was less than 200 MiB but the new HAOS VM still would not accept the upload. All I got was "500 Internal Server Error - Server got itself in trouble". And of course because HAOS is an "appliance" its kind of a black box so I couldn't find out how to get access to error logs with details :-(.
In the end I decided that the path of least resistance was to simply start from scratch based on the HAOS virtual machine and take some days/weeks to build up the new Home Assistant setup before it's mature enough to take over from the old Home Assistant setup (which is running on hardware that is close to failure).
Wow, not sure how to interpret your experience that a RPi wasn't powerful enough to manage watering a few plants. I can only suspect the overall software setup is massively bloated.
If you want to run EspHome inside HA, and you recompile the devices (every release of EH), you want a decent processor/disk. The ESP stuff is a surprisingly heavy compile for a puny microcontroller.
A recent RPi is sufficient to handle a few plants - though, yes, recompilation will take time. The ESP is a beautiful piece of software, hence I highly recommend it. My native language has an expression that describes this situation perfectly: the appetite grows with eating. Next thing you know you have 2k or more entities, and your HA even handles some video feeds.
The important thing is that it's pretty much always easy to make an upgrade thanks to the good design of the backup system. Don't forget to set up backups in either case, it's a sin to not use such a complete system :)
Recompilation has nothing, or should have nothing, to do with the requirements to run the system. If that is indeed a requirement then the system is indeed bonkers.
For a system handling sensors and actuators you should be able to run a farm off a RPi in terms of compute power. Quad-core at 2.4 GHz and up to 16 GiB RAM on a RPi 5, that's a crazy amount of compute for the use-case.
The way ESPHome works is that your device configuration is a yaml file that produces a compiled binary artifact and it can be updated OTA with wifi. The downside of this is that these updates are pushed via the device you are running HAOS and hence compiling can take a while.
HAOS is quite bloated but it's also very versatile and FOSS
There's no reason you have to run ESPHome on your Home Assistant server.
It's offered as a HA a̵d̵d̵o̵n̵ app for ease of use (makes it a one-click install), but you can also just `pip install esphome` or use the provided Docker image and get the exact same UI, but with everything (including compilation) running on your much beefier laptop.
So your binaries get compiled quickly and you can still do the OTAs directly from your laptop. HA needn't be involved.
Every time you make a change to your yaml it requires a recompile. I think now ESP Home allows you to change configurations and upload a bin compiled on your main machine so it's really not a limitation at all. Plus, once it recompiles it automagically uploads so just make your changes and forget about it
Home Assistant is indeed a massive pile of software, mostly Python. I couldn’t get it to work reliably (or, at least, usably - the web interface was painful to use) on a Pi Zero because of memory requirements and disk access speed.
…having said that, as the other poster alludes to, it’s peak requirements that are problematic. If your device can handle them, it’s not a massive power suck because idle requirmements are low.
Docker compose with a zwave management server, reverse proxies for TLS, vlan isolation for the server, macvlan for HA container so it does see the host network, etc, etc. All to turn on and off a lightbulb with the sun. All the while AI is telling me to configure things insecurely.
I think when I get some more spare time, I’d like to write a statically linked program that handles a zwave controller and basic automation scripting. No IP networking needed for my lightbulbs. Then it wouldn’t feel risky to just make a system user and udev rule to give it permissions to the controller, and run with systemd.
reply