Smart Thermostat




Introduction: Smart Thermostat

In this instructable we look at how to build a Smart Thermostat. What makes this thermostat so smart you ask? Here is a list of some of its smart features:

  • It can be controlled by your Android device, which gives you one less reason to get up from the couch or get out of bed.
  • High accuracy temperature measurement capability. The cheap thermostats that are in most homes can have error ranges of +/- 2 degrees!
  • High resolution temperature settings to go with the great temperature accuracy, if you have a very slim temperature comfort zone this will give you the temperature setting resolution to hit your zone.
  • No more trying to change the temperature or search for a setting with only one or two buttons and a tiny screen, this thermostat comes with a lot of buttons and a large display for making easy and quick changes.

The project is laid out in a series of three videos. The Arduino code can be found on GitHub (link provided in video). You can access the Andriod App .aia file using this link:



    • Creative Misuse Contest

      Creative Misuse Contest
    • Metalworking Contest

      Metalworking Contest
    • Water Contest

      Water Contest

    22 Discussions


    Question 5 months ago

    I LOVED your videos. However, in the second video you "promised" that you were going to show how to include a power supply for all the digital electronics, but it wasn't in the third video. I'm very interested in an easy way to power the digital section off the available 24VAC. Have you done that for this design or some other version?

    Seems that the dropbox link is not working anymore.

    plz send me this project aia file on my mail '

    Hi friend,

    I need temperature in Celsius not Fahrenheit, can you give me conversion string to do this??


    2 replies

    but code in not complete!!

    // start RF24 communication layer
    RF24 radio(9,10);

    // start RF24 network layer
    RF24Network network(radio);

    // Coordinator address
    const uint16_t thisNode = 00;

    // Structure of our payload coming from router and end devices
    struct Payload
    float aDCTemp; //temperature from onboard sensor
    bool batState; //bool to communicate battery power level, true is good and false means battery needs to be replaced

    void setup(void)
    Serial.println("Coordinator is online.....");

    network.begin(90, thisNode);

    void loop(void)
    //check network communication regularly

    RF24NetworkHeader header; //create header variable
    Payload payload; //create payload variable
    // Any data on the network ready to read
    while ( network.available() )
    // If so, grab it and print it out,&payload,sizeof(payload));
    Serial.print("The node this is from: ");
    Serial.print("Temperature: ");
    Serial.print(" Battery status: ");

    Thanks, I am actually thinking of upgrading this project to add WiFi. Let me know if you get it up and running with the ESP8266

    Awesome project!

    nice project, scratch cmon man learn you some c! jk :)

    great project! Because my home contains 3 thermistor stats, I would want to go with a WiFi approach. This way you do not have to Bluetooth attach to each module and you could also potentially do this remotely / away from home. Sort of like the AT&T Digital Life. I love this.

    1 reply

    Thanks! Yeah with the recent release / availability of the low cost ESP8266 WiFi to serial module I may have to do an upgrade to WiFi in the future.

    A good way, I do not know if my phone can support this

    Yeah, I went back and forth on WiFi versus Bluetooth on this project. Settled on Bluetooth most likely because I already had some Bluetooth modules ;-)