I have the GoControl zwave thermostat. It’s very barbones and has no real smarts on it’s own but can be fully controlled by zwave. This is what I was looking for as I wanted full control over the algorithm, but if you want to it have more intelligence without having to write the code yourself you should consider other options.
We run this at work so we have forever copies of image tags and to reduce dockerhub rate limit issues. Works well even for a large dev team.