I started off down the road to use "simple" Wi-Fi devices and bought a couple of Kasa (by TP-Link) plugs and a switch. They were easy to install and setup and worked fine.
But every one of them was a separate device on my IoT Wi-Fi network. Long term, that could get to be a problem.
Then another problem opportunity arose. My alarm system went south. But it was 20+ years old.
My alarm company suggested a new system. As I was researching it, I noticed that it included a Z-Wave controller.
The alarm system uses alarm.com for an Internet interface. The Internet services costs $5 per month. To add Z-Wave service adds another $5 per month. At least alarm.com has a business plan unlike Insteon.
Adding the Z-Wave switches to alarm.com was easy.
alarm.com has a good system to create device scenes and schedule them but I wanted to concentrate my automating into my Amazon Alexas.
Amazon has TWO Alexa skills for alarm. com. One is for alarm settings, e.g. scenes, and the other one controls individual devices.
This one is for the alarm and scenes:
This one is for devices:
It would be nice if there was something more obvious to differentiate them other than inferring function from the terse text.
Anyway, initially I installed the alarm and scenes skill. With that, Alexa didn't see the individual devices. So on the alarm.com app, I created scenes for the each logical activity I wanted, e.g. "Outside Lights On".
This caused further complications in the Alexa routines. Notice that I had to use the syntax of "Alexa ask alarm.com to run outside lights on".
That works fine but there are undocumented syntax restrictions on the Alexa action command. It took lots of trial and error to get names that would clear the restrictions.
Then I discovered the Alexa skill for alarm.com devices. With that, Alexa could see the individual devices. I haven't undone my successful work and switched to the more direct constructs.
For thermostats, I'm going with Honeywell RTH6580WF.