Honestly, most things more powerful than an RPi4 will be good enough for quite some time. I started on RPi2 and have used every subsequent RPi version before upgrading to a i5 NUC (8GB RAM), then an IBM X series server w. 128 GB RAM and dual Xeon processors.
The only difference I’ve really noticed was restart time, which was MUCH faster on the “real” computers. But nowadays, you can just reload many things from the UI without even restarting, so it might be less important. Though keep in mind I ditched the RPis back in 2017, and have only used the RPi4s as “remotes” to have Bluetooth radios around the house (read: almost nothing running on them), so performance might be different today.
I’ve had issues with both Zigbee and Z-wave, but after a lot of optimization, such as making sure the radios are on an extension, making sure they’re not close to any powerful APs (I had some Ubiquiti APs in the same room, and that messed everything up for ZigBee), they both seem to work quite well.
One thing I’ll say is that for ZigBee, I used to use deCONZ, and moved to ZHA. I would not recommend this! I’m too lazy to go back, but there are some major drawbacks. I wrote about some of my experience here. I’m leaning more and more towards that I probably wouldn’t make the change, knowing what I do now. But certainly look at that post before choosing.
Make sure you get a Zigbee stick with enough RAM (and Zigbee 3.0), see this post for a few recommendations. Also keep in mind that you might want to think about Matter (well, Thread) compatibility! I’m on a ConBee II, but that is old now, and I’m pushing the limit of network size (60+ devices atm), so might need to upgrade soon. I’d recommend that you future-proof!
In my experience, the Zwavejs2MQTT and Zwavejs works quite well. A lot better than what I was using a few years ago. Again, make sure you get a newer coordinator (I have an Aeotec Gen5, and it works fine, but no reason to get old tech when starting).
One thing here is to maybe avoid the cheapest of devices. Most things work well for me, but a lot of us a complaining about the Neo CoolCam plugs (see this, and many other posts).
I certainly will echo @templeton_nash’s advice here! Never remove functionality. I made that mistake early on (well, choice, as I back then didn’t have the option to install smart switches for lights). I’ve circumvented this by adding Philips Hue Dimmer switches/remotes on the walls, but if doing over, I would probably only use smart bulbs where I need color change or couldn’t replace the wall switch.
I’d recommend that you hard-wire as much as possible in place of either ZigBee or Zwave. I know it’s not feasible for most lights, but if you get into ESPHome, you can get PoE devices, the same for cameras, etc. So wired when you can, wireless to fill in the holes.
HACS is your friend, but anything you can do without is probably better, since occasionally you will have issues (developers might, justifiably, have other things to do than keeping an obscure HACS integration up to date). So I’d say that if you can, only rely on it for non-essentials, i.e., “nice-to-have” things.
Make sure you set up
people first, then add to
Allow person to log in. This is a small thing, but in my HA instance, ever family member has a
person, which is not (and now cannot become, for some reason) associated with the
user they need to log in with. I don’t think it’s relevant for the first user you set up, but for all subsequent ones.
If you’re up for writing some Python, I’d recommend taking a look at AppDaemon if you find any functionality in Home Assistant lacking (mostly automation-wise). The UI automations, scripts, templating, etc. are getting infinitely better and more comprehensive than a few years ago, but there are still quite a lot of things you simply cannot do. I’m not personally familiar with Node-RED, but I see a lot of people loving it, so maybe check out if that’s something for you as well.