I got into home automation with an environment known as SmartThings when I read about them on Kickstarter back in 2013. As you can read here, over the years we went from just SmartThings with its proprietary UI and migrated towards Apple Homekit in our ever expanding home Applesphere.
We've finally abandoned SmartThings in favour of Hubitat Elevation. My objective was to get better and more consistent behaviour from our Zwave devices using Apple Siri voice commands.
In our setup, we have been using our NAS to run Homebridge which allows us to integrate smart devices that are not natively supported by Apple HomeKit. In our model, Homebridge communicates with a controller (SmartThings or Hubitat). The controller in turn registers each of our Zwave devices and creates the radio signal mesh across the house and outbuildings. I monitor heat, humidity and lighting in the greenhouse.
The technology of SmartThings required that each light switch it controlled communicate via the internet and back. In contrast, Hubitat controls these devices directly from within our home. The Hubitat seems to get constant development and has a depth of support that I found helpful getting started.
One change in this setup has been in Homebridge. We started by running Homebridge in a Docker image. At this time, we run Homebridge as a native app on Synology DSM 7.