My first encounter with home automation was to measure temperatures and later switching power sockets working with 433 MHz radio these and these). To be able to view the temperatures and to control the outlets I wrote a small web server in python. But To do real home automation it is better to use a system which is already used by many people and you have some kind of community who can help you if there are problems. My choice for this is Home Assistant.
Home Assistant is based on python and open source. It allows to control many home automation devices from different manufactures. These devices are used as Components. For these components you can create automations which can be executed automatically in case triggers and conditions (Trigger) are matched. For example you can play music automatically when you get home. The section Components gives you an overview about which devices Home Assistant supports (e.g. Sonos). Systems similar to Home Assistant are openHAB, ioBroker and FHEM.
You have different options of how to install Home Assistant. For starters it is very popular to use a Raspberry Pi (if possible a Raspberry Pi 3 B+). At least for a first test the Raspberry Pi has enough resources. If more resources are needed later you can always switch to a more powerful system. For the installation on a Raspberry Pi there basically 3 different options:
Hassbian Here also a complete Image is written to a SD card. But this time it is an image of Raspbian which automatically installs Home Assistant when it first boots.
Manual installation You can use any linux distribution for a manual installation. This also makes it rather easy to switch to a more powerful system than a Raspberry Pi if it is really necessary. The Link above describes how to do this.
I chose option 3, the manual installation. I think with this option you are very flexible and it also allows you to use components like LIRC. With option 1 I think there is no way to use LIRC yet.
To automate the complete installation I use Ansible. A role for Home Assistant already exists which supports Debian/Raspbian and Fedora). But I did not know about this role in the first place, so I created my own. My role only supports Debian/Raspbian. Together with some other roles (e.g. mosquitto and lirc) I am able to install my complete Home Assistant installtion with ansible. Some of these roles I plan to show you in future posts.