HA is a hell of YAML and more and more things doable only from the WebUI, this means you can't nor automate nor document your setup, so you can't replicate it.
It's a common issue in modern software: devs are so inhabited to use cloud stuff not knowing what's behind they are mentally unable to comprehend why doing so it's a totally absurd thing. Software MUST REPLICATE with easy, your home infra should be replicated from scratch without much more than booting a custom live. You shouldn't need to re-do the same step again. In *nix we have this concept since decades, those from Windows land simply do not understand because replication for them it's a myth.
Give NixOS or Guix System a try and you'll understand: your setup is just a single or few text files, a command read them and generate a new deploy for you. No need to traveling ever changing UIs by hand, no YAML hell.
At another level it's the same for those from stratis/mdraid/lvm/btrfs vs zfs. Zfs is done for the operation, as a storage should be, flexible, simple, effective, the others are a pile of CRAP those who develop them do not even recognize why, because they have no real idea of automation even if they are core devs of some very low level system stuff. Another example: "systemctl status something" is a CLI designed by some who have no idea of the real world needs, otherwise it would be "systemctl something status" because typically when you look for a service status you might want thereafter reload/restart/stop it, if not the word exchange does change nothing to you. These are the sign of devs born on Windows that have never go behind their desktop or someone else cloud service so they have no idea about how to build an infra.
For HA most of it's devs I suppose have no p.v. at home, or they have no personal automation to maximize self-consumption so they do not know how many lines of YAML and wasted time on their UI such design imply. Instead with "dumb end users" in mind, people who NEVER EVER use HA seriously simply because they lack too much knowledge even if someone gives the a ready made system, they focus on "visual code" like Node Red, augmenting them messiness level while still no option exists to establish sensor data retention and pruning, you need aside InfluxDB so another dependency for next to nothing and an issue at a time HA became just a part of a system with NO UI at all because to use InfluxDB you need for instance Grafana and so you entirely replace HA slick UI. In the end you have done A MONSTER to handle simple automation of many stuff due to wrong design ideas, while it could perfectly be a single simple app, HA itself, for instance exposed in python directly.
At some level many start to understand and from UIs they tend to REPL, from disappearing menus to "dashes", from widgets to NotebookUIs for some scientific software, LLM prompts and so on, but even with that most still have to understand a decades old IT principle.
Sir. You Win teh Internets today. This has been my gripe with HA for the longest time. That YAML / GUI-only / etc. approach is just atrocious.
Unfortunately it works well enough, and there are little or no alternatives to it as far as I can tell. Were there a reasonable alternative, with a configuration as an actual code (YAML isn't), I would dump HA in a heartbeat. I mean I could even live without the GUI - just configuration as a code, and stable support for Zigbee (and BLE etc devices). But then again HA mostly works. And if it works, then...shrug.
My use case is mostly to be able to 1) monitor/understand our electricity consumption, 2) be able to turn off all/selected electrical devices when leaving house etc., 3) automatically lower/raise outside shutters based on weather/where sun is(!) to keep house cooler, 4) and as a bonus, have leak detectors send me a text if there is a leak. My setup is some 30 zigbee smart switches / sockets, couple of IKEA badring leak sensors, solar inverter and something zigbee in main electric panel to get total electric consumption. And five door/window sensors (that aren't really used for anything, but you know how one goes down the rabbit hole with these things...).
How I've made it somewhat manageable is that I run it in a following manner (first in Pi5, now in N100 -- no difference between those observed regarding HA):
- have /opt/homeassistant/config mounted to zram
- on boot unpack /opt/homeassistant/backup/latest.tar.zst -> /opt/homeassistant/config
- run HA from docker (where /opt/homeassistant/config is now on zram)
- cron will make a backup of /opt/homeassistant/config weekly (or I can run backup manually if I've made changes/addedd devices) and then these are backed up 'offsite'.
So now whenever HA goes bonkers, or more likely I've messed something up with it, end result being the same, I simply roll back to some earlier known good configuration. Docker is wonderful in this regard. Really, I don't know how else people live with the HA, other than backing up their entire config, and then re-installing.
Running it on my home-server via pip (no containers for me, thanks) I do not try the "kind-of-firmware approach, just different zfs volumes, with auto-snapshots and backups for bin (python venv), data and config. Mostly I have had issues upgrading HA but still even with my config at hand, written in org-mode and tangle-ed anyway to be less of a hell and to embed docs/references in the YAML hell, the main issue came from integrations only configurable from the WebUI. In most case it's just a matter of remove the configured part from the running config, add the integration from the WebUI, add back the config, reload etc. But it's still a PAINFUL process. Less hard than configuring via NixOS, but still hard.
As you rightly say HA works well enough and have less issues than OpenHAB, but as long as something less yaml-illish and webui-tied appear I'll switch instantaneously. My setup have probably far less devices than you, bus some have a gazillion of sensors (i.e. my main battery inverter a Victron MultiPlus with ECV charging station have at least 1248 lines of yaml, NOT counting the template code for many sensors usages) while it could be a simple python data structure of 1/5 of the size. My main usage is just monitoring and a bit of automation to maximize self-consumption like piloting hot water heater, running A/C etc, videosurveillance and co are managed separately.
It's a common issue in modern software: devs are so inhabited to use cloud stuff not knowing what's behind they are mentally unable to comprehend why doing so it's a totally absurd thing. Software MUST REPLICATE with easy, your home infra should be replicated from scratch without much more than booting a custom live. You shouldn't need to re-do the same step again. In *nix we have this concept since decades, those from Windows land simply do not understand because replication for them it's a myth.
Give NixOS or Guix System a try and you'll understand: your setup is just a single or few text files, a command read them and generate a new deploy for you. No need to traveling ever changing UIs by hand, no YAML hell.
At another level it's the same for those from stratis/mdraid/lvm/btrfs vs zfs. Zfs is done for the operation, as a storage should be, flexible, simple, effective, the others are a pile of CRAP those who develop them do not even recognize why, because they have no real idea of automation even if they are core devs of some very low level system stuff. Another example: "systemctl status something" is a CLI designed by some who have no idea of the real world needs, otherwise it would be "systemctl something status" because typically when you look for a service status you might want thereafter reload/restart/stop it, if not the word exchange does change nothing to you. These are the sign of devs born on Windows that have never go behind their desktop or someone else cloud service so they have no idea about how to build an infra.
For HA most of it's devs I suppose have no p.v. at home, or they have no personal automation to maximize self-consumption so they do not know how many lines of YAML and wasted time on their UI such design imply. Instead with "dumb end users" in mind, people who NEVER EVER use HA seriously simply because they lack too much knowledge even if someone gives the a ready made system, they focus on "visual code" like Node Red, augmenting them messiness level while still no option exists to establish sensor data retention and pruning, you need aside InfluxDB so another dependency for next to nothing and an issue at a time HA became just a part of a system with NO UI at all because to use InfluxDB you need for instance Grafana and so you entirely replace HA slick UI. In the end you have done A MONSTER to handle simple automation of many stuff due to wrong design ideas, while it could perfectly be a single simple app, HA itself, for instance exposed in python directly.
At some level many start to understand and from UIs they tend to REPL, from disappearing menus to "dashes", from widgets to NotebookUIs for some scientific software, LLM prompts and so on, but even with that most still have to understand a decades old IT principle.