nest_thermostat 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.env.example +2 -0
- data/.envrc +1 -0
- data/.gitignore +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -1
- data/README.md +1 -2
- data/lib/nest_thermostat/nest.rb +9 -9
- data/lib/nest_thermostat/version.rb +1 -1
- data/nest_thermostat.gemspec +2 -0
- data/spec/nest_thermostat_spec.rb +9 -1
- metadata +39 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0ecd5a762a529bd2d84c543a322e06a94efd8fba
|
4
|
+
data.tar.gz: c8e3344c2dc09dee5960d30f7fc249f34387961c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 233fb931a2d243fb28c4221b4060b3a1053051623865514e8f0ea7a4812d3414d12ade8d105111531d857f8389eff08ced9b64b7a8f74e286740727c9f616d71
|
7
|
+
data.tar.gz: 571cd38d59b7e4730196e7d5ad4e4d13307cb33d75e1bab10d8aa1aa0183cceca37b0881948c5c0726b57b376219f8ed21c2808ea351ceb96129bd7fadb3ad0b
|
data/.env.example
ADDED
data/.envrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
PATH_add vendor/bundle/bin
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -5,15 +5,22 @@ PATH
|
|
5
5
|
httparty (~> 0.8.3)
|
6
6
|
|
7
7
|
GEM
|
8
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
awesome_print (1.0.2)
|
11
|
+
coderay (1.0.9)
|
11
12
|
diff-lcs (1.1.3)
|
13
|
+
dotenv (0.6.0)
|
12
14
|
httparty (0.8.3)
|
13
15
|
multi_json (~> 1.0)
|
14
16
|
multi_xml
|
17
|
+
method_source (0.8.1)
|
15
18
|
multi_json (1.3.6)
|
16
19
|
multi_xml (0.5.1)
|
20
|
+
pry (0.9.12)
|
21
|
+
coderay (~> 1.0.5)
|
22
|
+
method_source (~> 0.8)
|
23
|
+
slop (~> 3.4)
|
17
24
|
rspec (2.10.0)
|
18
25
|
rspec-core (~> 2.10.0)
|
19
26
|
rspec-expectations (~> 2.10.0)
|
@@ -22,11 +29,14 @@ GEM
|
|
22
29
|
rspec-expectations (2.10.0)
|
23
30
|
diff-lcs (~> 1.1.3)
|
24
31
|
rspec-mocks (2.10.1)
|
32
|
+
slop (3.4.4)
|
25
33
|
|
26
34
|
PLATFORMS
|
27
35
|
ruby
|
28
36
|
|
29
37
|
DEPENDENCIES
|
30
38
|
awesome_print
|
39
|
+
dotenv
|
31
40
|
nest_thermostat!
|
41
|
+
pry
|
32
42
|
rspec (~> 2.10)
|
data/README.md
CHANGED
@@ -77,8 +77,7 @@ device/location support added.
|
|
77
77
|
If you use Alfred.app for OS X you may be interested in an extension.
|
78
78
|
[Download it](http://erc.bz/HtOe). You'll need ruby 1.9+ and this gem
|
79
79
|
installed. Then just enter your nest email/pass as the arguments in the
|
80
|
-
alfred extension (after you import it).
|
81
|
-
output so you'll need that installed as well.
|
80
|
+
alfred extension (after you import it).
|
82
81
|
|
83
82
|
![Screenshot of Alfred Extension](http://erc.bz/H9Hm/Image%202012.06.05%202:18:56%20PM.png) ![Screenshot of Alfred Extension Growl Output](http://erc.bz/H97m/Image%202012.06.05%202:34:49%20PM.png)
|
84
83
|
|
data/lib/nest_thermostat/nest.rb
CHANGED
@@ -10,7 +10,7 @@ module NestThermostat
|
|
10
10
|
:transport_host, :structure_id, :device_id, :headers
|
11
11
|
|
12
12
|
def initialize(config = {})
|
13
|
-
raise 'Please specify your nest email'
|
13
|
+
raise 'Please specify your nest email' unless config[:email]
|
14
14
|
raise 'Please specify your nest password' unless config[:password]
|
15
15
|
|
16
16
|
# User specified information
|
@@ -21,10 +21,10 @@ module NestThermostat
|
|
21
21
|
self.user_agent = config[:user_agent] ||'Nest/1.1.0.10 CFNetwork/548.0.4'
|
22
22
|
|
23
23
|
# Login and get token, user_id and URLs
|
24
|
-
|
25
|
-
self.token =
|
26
|
-
self.user_id =
|
27
|
-
self.transport_url =
|
24
|
+
perform_login
|
25
|
+
self.token = @auth["access_token"]
|
26
|
+
self.user_id = @auth["userid"]
|
27
|
+
self.transport_url = @auth["urls"]["transport_url"]
|
28
28
|
self.transport_host = URI.parse(self.transport_url).host
|
29
29
|
self.headers = {
|
30
30
|
'Host' => self.transport_host,
|
@@ -52,7 +52,7 @@ module NestThermostat
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def public_ip
|
55
|
-
status["
|
55
|
+
status["track"][self.device_id]["last_ip"].strip
|
56
56
|
end
|
57
57
|
|
58
58
|
def leaf
|
@@ -107,14 +107,15 @@ module NestThermostat
|
|
107
107
|
end
|
108
108
|
|
109
109
|
private
|
110
|
-
def
|
110
|
+
def perform_login
|
111
111
|
login_request = HTTParty.post(
|
112
112
|
self.login_url,
|
113
113
|
body: { username: self.email, password: self.password },
|
114
114
|
headers: { 'User-Agent' => self.user_agent }
|
115
115
|
)
|
116
116
|
|
117
|
-
self.auth
|
117
|
+
self.auth ||= JSON.parse(login_request.body) rescue nil
|
118
|
+
raise 'Invalid login credentials' if self.auth.has_key?('error') && self.auth['error'] == "access_denied"
|
118
119
|
end
|
119
120
|
|
120
121
|
def convert_temp_for_get(degrees)
|
@@ -154,6 +155,5 @@ module NestThermostat
|
|
154
155
|
def f2c(degrees)
|
155
156
|
(degrees.to_f - 32) * 5 / 9
|
156
157
|
end
|
157
|
-
|
158
158
|
end
|
159
159
|
end
|
data/nest_thermostat.gemspec
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
require 'dotenv'
|
2
|
+
require 'pry'
|
1
3
|
require 'nest_thermostat'
|
2
4
|
|
5
|
+
Dotenv.load
|
3
6
|
RSpec.configure do |c|
|
4
7
|
c.filter_run focus: true
|
5
8
|
c.run_all_when_everything_filtered = true
|
@@ -14,11 +17,16 @@ describe NestThermostat::Nest do
|
|
14
17
|
@nest.transport_url.should match /transport.nest.com/
|
15
18
|
end
|
16
19
|
|
20
|
+
it "detects invalid logins" do
|
21
|
+
expect { NestThermostat::Nest.new({email: 'invalid@example.com', password: 'asdf'})
|
22
|
+
}.to raise_error
|
23
|
+
end
|
24
|
+
|
17
25
|
it "gets the status" do
|
18
26
|
@nest.status['device'].first[1]['mac_address'].should match /(\d|[a-f]|[A-F])+/
|
19
27
|
end
|
20
28
|
|
21
|
-
it "gets the pubic ip address"
|
29
|
+
it "gets the pubic ip address" do
|
22
30
|
@nest.public_ip.should match /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/
|
23
31
|
end
|
24
32
|
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nest_thermostat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Eric Boehs
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-03-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: httparty
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,17 +41,43 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: awesome_print
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dotenv
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
60
81
|
- !ruby/object:Gem::Version
|
61
82
|
version: '0'
|
62
83
|
description: Control your nest thermostat
|
@@ -66,6 +87,8 @@ executables: []
|
|
66
87
|
extensions: []
|
67
88
|
extra_rdoc_files: []
|
68
89
|
files:
|
90
|
+
- .env.example
|
91
|
+
- .envrc
|
69
92
|
- .gitignore
|
70
93
|
- Gemfile
|
71
94
|
- Gemfile.lock
|
@@ -79,33 +102,26 @@ files:
|
|
79
102
|
- spec/nest_thermostat_spec.rb
|
80
103
|
homepage: http://github.com/ericboehs/nest_thermostat
|
81
104
|
licenses: []
|
105
|
+
metadata: {}
|
82
106
|
post_install_message:
|
83
107
|
rdoc_options: []
|
84
108
|
require_paths:
|
85
109
|
- lib
|
86
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
111
|
requirements:
|
89
|
-
- -
|
112
|
+
- - '>='
|
90
113
|
- !ruby/object:Gem::Version
|
91
114
|
version: '0'
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
hash: 3375862277283861610
|
95
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
116
|
requirements:
|
98
|
-
- -
|
117
|
+
- - '>='
|
99
118
|
- !ruby/object:Gem::Version
|
100
119
|
version: '0'
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
hash: 3375862277283861610
|
104
120
|
requirements: []
|
105
121
|
rubyforge_project:
|
106
|
-
rubygems_version:
|
122
|
+
rubygems_version: 2.0.0
|
107
123
|
signing_key:
|
108
|
-
specification_version:
|
124
|
+
specification_version: 4
|
109
125
|
summary: View and set temperature and away status for your Nest
|
110
126
|
test_files:
|
111
127
|
- spec/nest_thermostat_spec.rb
|