As I transitioned away from X10, I started looking for a replacement for my X10 thermostat. Since I last looked, there have been a lot of advances with thermostats so I took some time to research all of them. I was initially drawn to some of the ones with cool graphical interfaces that connected to the Internet and allowed it to show the current outside weather. Also, the NEST devices were pretty cool and boasted the ability to learn. However, one critical requirement for me was to select one with a well documented API set so I could interface it with my Watchdog home automation system. I was surprised to see that this requirement dropped most of the options out of the race.
In the end, I selected the Flitrete WiFi thermostat. Filtrete was one of many companies that has re-packaged the RadioThermostat platform which provides basic WiFi connectivity that includes a large, back-lit, touch-screen interface with easy-to-read numbers. I found it to be the least expensive of all the vendors re-packaging the solution, and was able to drive out to Home Depot and pick one up without delay. While it lacked the frills of the other thermostats, it did provide excellent documentation on the API that allowed me to perform true 2-way communication with the device.
The setup was quick and painless once I removed my X10 thermostat. I initially had some difficulty connecting it to my WiFi network because I filter on MAC addresses, and the code that appeared to be the MAC printed on the thermostat was not really the MAC address. I was a bit concerned that others who had reviewed the product complained about intermittent WiFi connectivity issues, but I’ve never had a problem.
I then made some modifications to the Watchdog applications. I replaced the logic in the Watchdog NetChecker module for the X10 thermostat with new logic using the provided API set. I included some basic retry logic and also some verification steps so I didn’t run into the issues I did with the X10 thermostat being set incorrectly because it receive too many or too few signals. I also added a database table to act as a temperature change request queue. This gave me a stateful storage space for the queue so I could continue to retry and even survive a reboot.