INSTEON does a solid job. Their protocol is proprietary, but the devices aren't cloud dependent. You can either use a cloud hub device, or just a serial adapter to a PC or third party controller. They have no ability to take away my Insteon thermostat's functionality, or mine data from it. Because all translation of it's communication protocol goes through my computer, and is interpreted by open source software.
I would stay away from anything Zigbee. It has become a complex mess