Lots of smart devices these days require you to use the cloud and have an active internet connection in order to use the device. This is pretty crazy because in my opinion my smart home shouldn't stop functioning just because the internet is down. Especially since the functionality is super basic and doesn't really need the internet. Not only that but also these devices phoning home means the device manufacture can sell your data. I'm all about self-hosting and owning my own data so I wanted to find a thermostat that would work for me.
I found Radio Thermostat CT50 to be a perfect solution for this. It is really cheap on Amazon right now and is a great budget buy for a home automation enthusiasts that are privacy focused. You can also buy a z-wave module if you would rather use that instead of WiFi. You can use their cloud service for free if you want but I ended up blocking access to the internet from this device using my firewall since it doesn't need it and I don't really want the manufacture getting my data.
Note: I am not getting paid by Radio Thermostat for this post. I am creating this just to help other home automation enthusiasts with privacy or budget concerns that want a decent wireless thermostat working with HA. This is what I found to work best after doing plenty of research.
You will want to make sure that wherever you place your thermostat it gets good WiFi coverage. I was having some issues with the thermostat disconnecting and the issues were resolved when I bought a new WiFi AP and placed it near the thermostat (I went with Ubiquiti Unifi Ap-AC Long Range). My old router just wasn't up to the task of broadcasting through various walls.
Also another thing this thermostat requires is 18~24V AC power connected to it to work. It will not work with WiFi on just batteries (The batteries are just for saving memory during power outages). I thought my house had the "C wire" for powering the thermostat but it did not and I ended up having to buy a cheap 24v AC/AC power adapter off Amazon and wait for it to arrive before I could set the device up. So make sure to buy that at the same time as the thermostat if necessary. Here is the quote from the manual on this:
IMPORTANT: The CT50 runs on 3 AA alkaline batteries and/or the C wire if available. If you do not have a C wire you can run a new wire from the HVAC or use a standard 18-24V [AC or DC] wall transformer. A constant power source is required when using a radio module
Setting it up in Home Assistant
Setting up the thermostat in Home Assistant is super easy. I wont go over how to get the thermostat on your WiFi since that is pretty trivial and covered in their installation guide that comes with the device. I recommend you give it a static IP address so that it doesn't change and break the setup (you could also use a local domain name but I have had issues getting them to work). This is easily done by using the "advanced" settings from the thermostat web UI (My thermostat IP address is 192.168.1.32 so I go to
http://192.168.1.32/advanced.shtml for advanced settings).
Getting it to show up in Home Assistant just requires adding this to your
configuration.yaml file for HA:
Change the IP address to match the address of your device and save it then restart HA and you are good to go! You now have a HA controlled thermostat for super cheap that isn't selling your data :)
Local API documentation
If you want to do stuff on the thermostat that Home Assistant doesn't support you can do it yourself by hitting their API manually. You can then build something in Node-RED or something similar to do exactly what you want. A good example of this is being able to modify the automatic schedule over the local API which you can't do from HA yet.
The entire API actually has excellent documentation. I decided to self-host the documentation just-in-case it gets lost. You can access it from my site here (or at the original link I found it at here). Note that not all API endpoints work with all Radio Thermostat models and you will have to test it to see (generally most of them work).
One thing I wish Home Assistant did is return whether the current temperature is set to hold or not. You can actually get this information using the API so building a sensor using Node-RED is pretty trivial, I just feel like this should be exposed in HA to make life easier for people.
The web server is single threaded and connection requests are processed serially. Thus a new connection request is processed only after an existing connection has been terminated.
So make sure you aren't slamming the API too hard. You should be spacing out your API requests as much as possible.
Using remote temperature sensors
This thermostat actually has support for remote temperature sensors, you just have to build the tool to submit the data to the thermostat yourself. I may actually do a post on this because I have temperature sensors in various rooms around my house and could make a flow in Node-RED that takes the average of all of them and uses that as the temperature for the thermostat. This gives you the same functionality as having multiple temp sensors with the Ecobee/Nest but at a huge savings.
It would be cool to go even further and combine this with motion sensors so that you only average out the temperature of rooms that have had motion in the last X minutes. This way you are only factoring in areas of the house that are in-use.
Anyways, read more about this in the API docs under section 2.2.7. I haven't seen anyone use it but if I ever do build something with this I will make a post about it and link back here.
For the price this thermostat just can't be beat. Even if you don't want to use WiFi they have an optional z-wave module you can buy and use instead.
I was looking into the Nest or Ecobee and had issues with both of them:
- Ecobee requires you to create a developer account in order to use their API but does offer communication over LAN which is nice at least. If they ever shut down their developer site users will have to figure out things on their own.
UPDATE: Julz mentioned in the comments down below that you can actually get around using a developer account (or even having internet) by using the Ecobee with the HomeKit integration in Home Assistant rather than use the official Ecobee integration. Thanks for the tip Julz!
- Nest on the other hand closed down their developer program recently so new users cannot use Home Assistant with their devices (or any other third party software really). It also is worse in the fact that Nest requires an internet connection and Home Assistant communicates with Google servers instead of the thermostat directly.
These privacy concerns are the very reason I do not like those devices and opted for this Radio Thermostat device instead. Lets be honest, none of these companies can keep a secret.
I also extremely dislike the idea that my expensive thermostat can just stop working because the manufacture stops supporting it (Nest users really got hosed).
I was able to build all the smart features I wanted for the thermostat using Node-RED so I have everything Nest/Ecobee users have at a fraction of the cost. I've been using this thermostat for nearly 2 years now and it has been great.
If you end up building anything cool with their API or just build some awesome automations using this thermostat please do share below in the comment section. I am always interested in the things my readers come up with. You can also drop a comment if you need any help with any of this and I will do my best to help you out.