Depending on your heat source, it may be fairly easy to make your own thermostat. Although I have a heat pump, which is much more efficient than electrical resistance heaters, I have found that I can actually save money in winter by closing a couple interior doors and putting up a couple of interior curtains to somewhat separate the room I spend 99% of my time in and one bathroom from the rest of the house thermally, and then heat just that room with an electric space heater. The heat pump thermostat is in that room, so the heat pump stays off. I check the rest of the house now and then, and when it gets too cold I open the doors and curtains, turn off the space heater, and let the heat pump get the whole house back in range.
That's a net win because although the heat pump is more efficient, the gains from that are more than made up for by heating parts of the house I'm not in.
I dialed the space heater temperature setting way up so that it would be on whenever it had power, and plugged it into a DLI IoT Relay [1], and hooked a Raspberry Pi up to the IoT relay's control interface. I added a DS18B20 temperature sensor [2] to the Pi. The only other parts needed are a 4.7 K resistor, and whatever you want to use to connect things (I used a small solderless breadboard [3] and premade jumper wire [4]).
Wiring is easy. GPIO06 to Relay Control+, Ground to Relay Control -, 3.3 V to DS18B20 Vcc, GPIO04 to DS18B20 DATA, Ground to DS18B20 Ground. 4.7 K resistor between DATA and Vcc on the DS18B20.
Then it's just a matter of some Python code to watch the temperature [5][6], and turn the space heater on and off via the relay to keep it in range. I went for simplicity, and just have a print statement that periodically prints the time and temperature, the min and max setting, and whether the heater is on or not, and I can check that via ssh. The min and max settings come from a text file, which I can ssh in and change. It would not be hard to add to this generating a graph and making it available on the web, and making a web interface to change the range, but I don't need that.
Interface is whatever you want to build on top of that.
[1] https://www.amazon.com/gp/product/B00WV7GMA2
[2] https://www.amazon.com/TOOGOO-DS18B20-Digital-Temperature-Ar...
[3] https://www.amazon.com/gp/product/B01EV640I6
[4] https://www.amazon.com/gp/product/B00M5WLZDW
[5] https://pastebin.com/JaakzGsZ
[6] As with many projects of this type, that code started out as quick experimenting, reached a point where although it was still ugly throw away code it actually did what I needed, and so I never got around to then writing a writing a proper production version with comments, good error handling, and so on.