Jump to content

Control your Nest Thermostat with the ISY *Multi-Thermostat*


Recommended Posts


Weather data: Temperature, Weather Conditions (number coded, read below), heat index, length of day and, request data from ISY.


With each of the items listed above, you will need to add a variable to your ISY Variable table if you don't currently have them. Then follow the instructions below.


All major weather conditions are coded in numbers:

Clear = 0

Partly Cloudy = 1

Mostly Cloudy = 2

Drizzle = 3

Rain = 4

Snow = 5

Thunderstorms = 6


If you want to turn a light on several minutes before sunset if the weather is "dark" you could set a program like this:


WeatherCondition > 2


It's 2 hours and 30 minutes before sunset


Turn L/R Lamp to 40%


All the rest of the weather objects are pretty self-explanatory, feel free to use these in any programs you'd like.

My new favorite program is:


$Ambient_Temp is not 0

And $AtHome is not 0

And $Sleeping is 0

And From Sunrise

To Sunset (same day)

And (

$Outdoor_Temp > 89

Or $Heat_Index > 99




$Temp_Difference = 0

$Temp_Difference -= $Set.Temp

$Temp_Difference += $Ambient_Temp


Also, the program to read the temperature difference:


$Temp_Difference > 1



$Set.Temp += 1

$Temp_Difference = 0


The new and old news......


Currently, there is no official API with the Nest Thermostat. However, that hasn't been inhibiting development on other platforms.


Yesterday, I finalized some macros to use with EventGhost and a specialized ISY plugin that I modified to allow control of your Nest Thermostat. This plugin watches the ISY's events and, the macros I wrote translate these into ways to control your Nest thermostat.


Any experienced person with Python knowledge could easily alter this script to watch for other variable changes but I'm not going to go into that.


So, here we go!



  1. To start with, download EventGhost from


  • Next download the "NestISYv80" zip file from
http://www.tinozplace.com/Nestv80.zip, then extract it a new folder.
Link to comment

Home/Away is definitely doable...


The scripts are attached to this post..


In the "Read ISY Event" Python Script, you need to change "if VarNum == "1":" to the variable number that you have for your home/away status


In the "Set Away Status to Nest" Python Script, you'll need to change:


if awaystatus == "0":



You need to change the awaystatus == "0": to your value when you are away from home


And here:


if awaystatus == "1":



You need to change the awaystatus == "1": to your value when you are at home





I had a feeling that someone would ask for this, and it was easy in comparison to the things you can actually do with that Nest Plugin.




I hope you enjoy it.

Link to comment

Thanks for the updated script. For some reason I still can get it to toggle between home/away. Does the variable have to be a 'state' or an 'integer'? Currently I have it as a state with the variable ID of 8. I updated "if VarNum == "8":" as directed. When I toggle the variable between 0 and 1 nothing happens to the state of the Nest (and yes in-between toggles I wait a minimum of 5 mins).


Looking at the log it appears everything is communicating ok. I'm getting a constant stream of Insteon.command and Insteon.heartbeat from the ISY, and I get the "Login to Nest Successful" entry. Also when I change the variable I get "Insteon.Command 'VAR 2 8:1'" or "Insteon.Command 'VAR 2 8:0'" depending if its a 1 or 0.


In the Nest plugin settings I have the 'device' set to 0 by default. Do I need to set it to something else? I only have 1 Nest.


Any help would be much appreciated... I feel like I'm getting close!

Link to comment

Take a look at all the things the Nest plugin can do..


If you want a quick python script:


Change object 38 to your desired object (obtained from the nest plugin)


testvar = str(eg.plugins.Nest.get_object(38))

print testvar


that will print (on the log) any of the values.. If you try to execute them on their own you don't get a returned value

Link to comment
  • 1 month later...

If you have an "at home" variable that is triggered by a geofence (AutoLocation with Tasker on Android or MobiLinc and an iPhone) you can use that variable to set away mode on the thermostat when the variable reaches a point that you aren't home.. Mine would be AtHome=0


I would be more then happy to help if you'd like. If you have Android, I'm very experienced with that, if we run into issues on an iPhone, we can always ask InsteonNut for help.


I also wrote a script on eventghost for away mode triggered by a non-pingable IP address if you'd like to go that route.


Sent from my DROID RAZR HD using Tapatalk

Link to comment

abuttino, thanks for the quick reply. I'm still kind of blurry on the details in setting up the away mode with the Nest. I have a "Home" variable configured in Mobilinc HD with geofencing that opens my garage door, and depending if it's day or night, turns on/off some my lights. I just got that working today after reading some helpful tips in this forum, and that's when I found your cool eventghost setup. I followed your step by step and have the Set_Temp and Ambient_Temp variables working. I would like to have the Nest's away mode control my lights when I leave and return. Do I need to make another state variable for away mode?

Link to comment

Good.. And now the answer to your question :)


Yes, you make another State variable. Then edit the next to last line to reflect the actual number of the variable and the variable value.


Do you understand Python?


Sent from my DROID RAZR HD using Tapatalk

Link to comment

Here is the translation...


In that Away line on the next to last line of "ISY Event"; the VarNum is the ISY variable number you assigned to awaymode. The VarVal is the actual value that states you are away.


Sent from my DROID RAZR HD using Tapatalk

Link to comment
  • 3 weeks later...
  • 2 weeks later...


This topic is now archived and is closed to further replies.

  • Create New...