Paul and the Quasi-Sentient Thermostat — Librato Blog

Paul and the Quasi-Sentient Thermostat

Oscar Wilde once said that "Conversation about the weather is the last refuge of the unimaginative". Wilde was from Ireland you see, where the weather is eternally in one of two states: raining or about to rain.

Also, somewhat tragically, he was born too early to meet Paul, one of Librato's in-house Rubyist and all around pretty awesome guy. Paul lives in Colorado, where the weather is anything but predictable, but being a data-driven kind of guy, he stays comfy with a Nest programmable thermostat, and a few lines of shell.

The Nest phones-home via wifi with somewhere around 190 different metrics. You can query these with several different tools, including this handy python script, but who among us could be satisfied by mere numbers? Not Paul; he wanted graphs.

The result, I think you'll agree, is pretty cool. The purple and green lines represent the current and target indoor temperature respectively. Humidity is depicted by the light-blue line, and the orange line is the HVAC Heater state. Note that the Librato UI has auto-scaled the metrics using three different color-coded Y-axis. One for degrees Fahrenheit, one for percent humidity, and one for HVAC State. The Librato UI doesn't make you do extra work to correlate metrics like these.

A few weeks ago, there was a several-days long natural-gas outage in Paul’s neck of the woods. If you've ever wondered what "broke" looks like to a quasi-sentient thermostat, Paul can help you out with that. Focusing on the green line, you can see where Paul turned the nest down below the current ambient temperature shortly after the outage, and the nest subsequently turning itself back up. When it became clear that the outage was going to persist, Paul manually shut off the furnace to save the ignitor from burning out, which cut power to the Nest. Its internal battery eventually died causing the "flat spot" visible on the graph from around 22:00 to 10:00.

If you long to visualize the inner workings of your own Nest, feel free to use this shell script. To install the dependencies, paste in the following:

git clone

sudo cp -a shellbrato /opt

export SBHOME=/opt/shellbrato

git clone

sudo cp pynest/ /usr/local/bin

Now export your librato credentials like so:

export LBUSER= #your librato username#

export LBTOKEN= #your librato token#

And you should be all set.  Have fun!