In about 2014, I went with a full-house Insteon makeover, replacing pretty much every lightswitch and a bunch of other stuff, and adding some door openers and motion detectors. I use the "Power Linc Modem" - something like that - attached to an Intel NUC computer, and my code attaches to the PLM via a USB cable - it might be USB to serial - I have to check.
It worked great for a long time, but recently it seems to have been degrading - lights don't go on/off when they're supposed to, mainly, and I think maybe the PLC is showing its age and is unable to transmit at the same power that it did when it was new. This irritates me quite a bit - I can replace it (but I'll ahve to re-associate my entire house with the new PLM, which is some work).
I'll complain most bitterly about the thermostats (I wrote an earlier dedicated hate-post about those) and the "light bulbs" - these are LED light bulbs with Insteon functionality built in. First, the two light bulbs I have seem to have degraded themselves to the point of rarely working, but maybe more importantly, the premise is bad - there's no way to turn them on or off without sending Insteon commands to them (OK you can always turn them off by unplugging them of course). This caused untold frustration for my wife, who only recently has been accessing the app to control things.
What I still can't understand is why there's not a smart light bulb that couples with the lamp touch capcitative sensor technology that you can use to turn on and off lamps by touching them (provided they have metal surface which attaches to the capacitative sensor). These touch sensors have been around since at least the 1980s. I have tried a couple of times to make one of my own by Frankenstein grafting a sensor with an Insteon in-line switch, but never got comfortable that I could really do it without creating a fire hazard of some sort.
Another thing I don't like too much about Insteon is that I've been unable to find a dedicated Insteon thermometer (note, not thermostat). Seems pretty basic, but it's just not there, as far as I can tell.
That apparent deficit got me looking at the world of Z-Wave, which I guess I might have considered in 2014 before I put all this Insteon stuff in. But... The API documentation for Z-Wave is pretty sparse and it seems tilted toward a commercial-only approach, albeit with multiple vendors. In 2014 (OK, I did consider it) the paucity of documentation and open code seemed like a complete non-starter for me, but since then there have been a few developers who have pushed into the space - likely requiring reverse engineering, etc.
A while back, I picked up an Aotec Z-Stick, which was completely useless until I bought a Z-wave compatible device, which I did recently - the Aotec Multi-sensor 6, which includes a thermometer and other stuff. I have high hopes, but I'm a little apprehensive that I'm stepping into a lot of work trying to read the thing from a perl script. Hopefully not.