I have been thinking of starting this thread for awhile now. After a year using Home Assistant I have a few things that I wish I would have known along the way. I figure collectively this community can make a pretty good thread on this topic.
Lets try to keep this to ideas only and limit the discussion so it can be read through without scrolling through a hundred pages to find the good stuff. If you have a question or want to know how to implement something start a thread and ask on the forum. Googling always works to.
So to kick things off…
Place any item connected to Home Assistant on a static IP Address
Most of the time your hardware will maintain the same internal/local IP address. However, this is not guaranteed as your router is the controller of what addresses are handed out. Setting up fixed IPs allows your Home Assistant connected devices to always have the same address. One time this can become an issue is after a power outage when everything is requesting a new IP from the router again. This allows Home Assistant to always be able to find that device and can help during troubleshooting.
If you don’t know how to setup static IPs on your router good some combination of your router model and IP reservation / static IP and you will likely find a how to. It quick and easy and has saved me a lot of headaches.
Keep items that don’t need a internet connection from phoning home
This is more of a security item than anything. My edimax switches and yeelights both work over wifi and have an phone app for remote control. This requires that the item have a connection back to the server that provides the connection to your phone. Beyond initial setup and connection to Home Assistant these devices no longer need that connection to function.
Using your router/firewall block these devices from outside communication. This allows them to still function within your network but doesn’t allow them to connect to the internet. This lowers the attack profile of your network and keeps your data local. With the recent rise in attacks on home automation devices this is really something that needs to be taken seriously.
Most routers have this functionality. Some may present it as parental controls. Treat that wifi automation device like a kid that didn’t eat its broccoli and cut off its internet privileges. If you have a more advanced router you likely know how to do this already.
Keep device names generic - Customize the name through…Customize
When I first started I would name a bulb so the resulting entity ID was “light.front_porch” which works just fine. However, when I moved that bulb from the front porch light to another location it doesn’t really make since. If you rename the light in the basic config it has to be carried through everything.
I now use generic names so I get “light.yeelight1”, I then mark a 1 on the back of that bulb so I can identify it later. Now if I move that bulb I simply update it location in groups (copy/paste not typing a new name) and change the friendly name in customize. When working with automations changing all the 1s to 2s at the end of yeelight is also easy to do.
Backups, Backups, Backups. Did I mention backups?
Your SD card, hard drive or whatever you keep your configuration files on, is going to die. Keep a backup of your configuration files somewhere. The .yaml files are tiny and take up little space. Put them on a USB drive, upload to github, upload to google drive, move them to another drive. Search any storage device and you will find someone who has had one die and lost data. There are a number of Home Assistant method provided which I will link to below. Having a known ‘good’ version of your files is also helpful when you really screw up. I used to back up before I started working on my HA setup before I got more comfortable with troubleshooting. It was nice when I screwed something up and didn’t want to troubleshoot to just load my good config back in and restart Home Assistant.