Beta release of new NEST plugin - Moved to http://forums.indigodomo.com/viewforum.php?f=170
Chameleon
With the recent release of Indigo 6.1 we've been able to get access to python 2.6. This is great news as it means that it's possible to develop plugins for secure sites (https) without getting the dreaded "vSSL23 Handshake error.
So with this new access I've developed a NEST plugin to manage both Nest Thermostats and Nest Protects from the same plugin using direct access through the Nest public API. This means that I'll be releasing an Alpha solution within the next week or so and I was looking for some Alpha testers who could help me get it ready for the wild. I've been testing version 0.01 for a couple of weeks now and it seems stable enough for an Alpha release but I know that there are many different NEST configurations out there which I can't replicate at home. I also know that a general release will generate a whole pile of questions and requests and I'd rather start with a small group to speed things up. Actually I've been able to do a bit more testing than I originally thought because Google released a Nest Developer plugin for Chrome that allows you to set up a virtual configuration of Thermostats and Protects to test against. You can find this app on the Mac App Store. I've also been able to keep the code to standard python 2.6 libraries to minimise any set up required.
The plugin gives access to both of the NEST device APIs and includes these data fields:
Nest Thermostat (those in bold are read & write)
- device_id
- locale
- software_version
- name
- name_long
- last_connection
- is_online
- can_cool
- can_heat
- has_fan
- fan_timer_active
- fan_timer_timeout
- has_leaf
- temperature_scale
- target_temperature_f
- target_temperature_c
- target_temperature_high_f
- target_temperature_high_c
- target_temperature_low_f
- target_temperature_low_c
- away_temperature_high_f
- away_temperature_high_c
- away_temperature_low_f
- away_temperature_low_c
- ambient_temperature_f
- ambient_temperature_c
- hvac_mode
- away
- country_code
- postal_code
- time_zone
Nest Protect
- device_id
- locale
- software_version
- name
- name_long
- last_connection
- is_online
- battery_health
- co_alarm_state
- smoke_alarm_state
- is_manual_test_active
- last_manual_test_time
- ui_colour_state
Because the plugin uses the Nest API you'll need to register as a Nest Developer to get an API authorisation token but I'll explain the process to anyone who's using the plugin - it's free and it's not that difficult. I looked at ways of doing this but decided that this registration approach was a) simpler and b) more secure as you're not sharing your Nest Username or ID over the internet.
As a developer I'm a python noob although I worked on many other development languages in the past. I'm fully expecting our community to come up with lots of improvement & ideas for the actual coding. I've made sure that the code is fully documented internally and any python person should be able to see how it all works. I will release the solution onto GitHub once we're past the beta stage but until now I'll be sharing the plugin using dropbox to keep it under control.
Thanks to Matt & Jay for their support and others on the forum for helping me get to this stage.
Respond to this post if you'd like to join the Alpha testing group and I'll work with a smallish team to get it ready for wider adoption.
Mike