https://github.com/ericboehs/nest_thermostat
Control your nest thermostat through a ruby gem
https://github.com/ericboehs/nest_thermostat
Last synced: 8 months ago
JSON representation
Control your nest thermostat through a ruby gem
- Host: GitHub
- URL: https://github.com/ericboehs/nest_thermostat
- Owner: ericboehs
- License: mit
- Created: 2012-06-05T00:34:23.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2015-12-03T03:05:39.000Z (over 10 years ago)
- Last Synced: 2025-04-02T11:07:08.232Z (about 1 year ago)
- Language: Ruby
- Homepage:
- Size: 108 KB
- Stars: 95
- Watchers: 13
- Forks: 40
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Nest Thermostat
[](https://gitter.im/ericboehs/nest_thermostat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
This gem allows you to get and set the temperature of your [Nest Thermostat](https://nest.com/thermostat). You can also get and set the away status and get the current temperature and target temperature time.
## Installation
Add this line to your application's Gemfile:
gem 'nest_thermostat'
And then execute:
$ bundle
Or install it yourself as:
$ gem install nest_thermostat
## Usage
Get some useful info:
```ruby
nest = NestThermostat::Nest.new(email: ENV['NEST_EMAIL'], password: ENV['NEST_PASS'])
puts nest.current_temperature # => 75.00
puts nest.current_temp # => 75.00
puts nest.temperature # => 73.00
puts nest.temp # => 73.00
puts nest.temp_high # => 77.00
puts nest.temp_low # => 71.00
puts nest.temperature_high # => 77.00
puts nest.temperature_low # => 71.00
puts nest.target_temperature_at # => 2012-06-05 14:28:48 +0000 # Ruby date object or false
puts nest.target_temp_at # => 2012-06-05 14:28:48 +0000 # Ruby date object or false
puts nest.away # => false
puts nest.leaf # => true # May take a few seconds after a temp change
puts nest.humidity # => 54 # Relative humidity in percent
```
Change the temperature or away status:
```ruby
puts nest.temperature # => 73.0
puts nest.temperature = 74.0
puts nest.temperature # => 74.0
puts nest.temperature_high # => 75.0
puts nest.temperature_high = 74.0
puts nest.temperature_high # => 74.0
puts nest.temperature_low # => 65.0
puts nest.temperature_low = 67.0
puts nest.temperature_low # => 67.0
puts nest.away? # => false
puts nest.away = true
puts nest.away? # => true
```
By default, temperatures are in `:fahrenheit`, but you can change this to `:celsius` or `:kelvin`:
```ruby
nest = NestThermostat::Nest.new(..., temperature_scale: :celsius)
# -- OR --
nest.temperature_scale = :kelvin
```
And of course if you want to get *lots* of other goodies, like scheduling and every diag piece of info you'd ever want:
```ruby
p nest.status
# -- OR --
require 'yaml'
yaml nest.status
# -- OR my favorite --
require 'ap' # gem install awesome_print
ap nest.status
```
Feel free to implement anything you see useful and submit a pull request. I'd love to see other information like scheduling or multiple device/location support added.
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request