Basically it is the role of a home automation system to tie together systems that normally don't communicate with each other. Of course each HA system is unique and each one covers a specific set of devices that it can tie together. So you first need to figure out what systems/devices you already have that you need to communicate with, and then research to see if there are any systems that can communicate with all of your existing systems. If not, you will be forced to decide if you want to replace an existing system/device with another one that can communicate with your HA system, or if you just want to leave it out and not have that system/device be a part of the larger HA system.
The more complex a HA software is, the harder it is usually to set up, but usually will have a larger set of features and systems/devices that it can tie into. A simple HA software might be very easy to set up, but have limited functionality and may only communicate with a very limited number of systems/devices.
Hopefully that all makes sense!
Personally I use CQC (Charmed Quark Controller) which is a pretty robust HA system that recently moved to open source status. While it use to be a paid software, it is now available free of charge (with full functionality). There are lots of other options, but I have been using CQC for so long (over 15 years now) that I have no idea what other systems offer today.