what do you want to do? and how much work do you want to put in yourself?
so many things exist that you could use in so many ways.
as a bare minimum you could drive up the road and buy a bunch of things today like wifi light bulbs, and plug them in, get them on your network, and set them up with their manufacturers apps/accounts then maybe tie them into amazon/google for some kind of overall control capability...but do you want to do more than that?
as well as just thinking about what you want to achieve, maybe also have a bit of a think about how you want things to behave if your net connection goes down for a day.
I'd suggest for a start you could have a bit of a look at OpenHAB. this is a linux setup that basically runs on a local network device (pi will do it) it's designed to be very extensible so could connect to pretty much anything you want with a bit of work - also it will connect to the internet in various ways to give you remote control/monitor capabilities if you want that... while also giving you local control of your locally connected things, which would be good if you're trying to make lots of different things work together in specific ways.
https://www.openhab.org/you could also get into node red. which AFAIK won't give you very much structure for home automation up front but is very flexible and very well supported for interfacing to all sorts of stuff... It's a generic message routing tool that you can use to build a system that runs across a bunch embedded linux boards and cloud services all together...
https://nodered.org/