This is a work in progress but I wanted a place to archive the questions I’ve been answering on Reddit and Mastodon. My thinking is that if they’ve been asked once, they’ll probably be asked again, and having a place to point people to might be helpful.
Question: I have some smart devices already but they all have their own app and none of them talk to each other. I heard about Home Assistant and I’ve done a little tinkering before with self-hosting but I don’t know where to start.
Answer: Get Home Assistant up and running on your Pi and start adding devices. The automation editor is amazingly easy to use given the complexity of the automations you can make, just start playing with it.
Plug it into your router. Unless you go into your router’s settings and specifically forward ports, no one from the outside will be able to see your Home Assistant instance even though Home Assistant will be able to get out to the internet to check for updates, grab weather data, etc…
Vastly simplified, your router will only let outside packets through into your home network if it already has a record of one of your devices requesting that packet. Look up NAT routers if you want more information but the point I’m trying to make is that this is a low-risk high reward, learn-by-doing situation. Have fun and rest easy knowing that by the time you are able to start doing some serious damage, you will likely have gained at least the basic knowledge to know a bad idea from a good.
I talked above about the idea of NAT routers and how they only allow incoming connections when they already have a record of an outgoing request from a device inside your network. Port forwarding bypasses this and allows incoming connections from the internet to a designated device inside your network even if there is no pre-established connection between those two devices.
Again I’m really simplifying this here but think of a port as an extension in a corporate phone system. You know the main number (IP address), but you have to know the extension (port) in order to get to the proper department (service) within the company. When you forward a port, you would essentially be forwarding all calls to the main corporate number directly one extension.
To wrap up the idea of ports you have to know that there are some services that are always expected to be on the same port, no matter the device. Web servers for example are by default on port 80, this lets web browsers always jump to the correct service when they’re asked to talk to a server. Home Assistant uses port 8123 by default so if you were to go into your router and forward all external requests for your-home-ip-address@port8123 to Home Assistant, everyone on the web would be able to see your Home Assistant login page (and potentially attack it). So we don’t normally do this, in the case of Home Assistant we set up a VPN, or we subscribe to NabuCasa (a pre-configured and virtually zero config method of remote access run and maintained by the founders of Home Assistant).
So to finally answer the second part of your question, no there is nothing you need to do in the beginning to make remote access possible later.
Device communications: Zigbee, Z-wave, Thread, and wi-fi are all just different networking protocols that smart home devices can use to talk to each other. Each has its own pros and cons. The beauty of Home Assistant is that we don’t really care which one a device uses, Home Assistant can “speak” to all of them (you just might need an extra radio stick for some). I’m not going into detail on this section because this kind of information is really available within the Home Assistant community and on the web in general.
Wow okay, I got a little carried away there. If you read all that please just bear with me a little longer because this is the important part. You need to just dive in and get started. You sound like you’re a bit paralyzed by what you don’t know and that’s understandable, this is a huge topic. But I’ll warn you, you’re starting to ask kind of broad, and unfocused questions and that tends to make people around here frustrated. I don’t think it’s because you’re unwilling to go out and look for information, it’s just that there’s so much and it’s hard to know where to start. So install Home Assistant on your Pi, do not configure remote access yet, set up a dashboard, and make some automations. Getting that far will start to teach you the vocabulary you will need to ask more focused questions (either of the community or of Google) and get much higher-quality answers. This is a fun hobby but you just have to get started. Get this up and running and play around a bit. DM me after a month of playing around and if you’re still really stuck we can set up a discord chat and hash it out.