thermostat 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +8 -0
- data/README.rdoc +41 -15
- data/Rakefile +5 -3
- data/lib/pdp/constants.rb +30 -1
- data/lib/pdp/network.rb +4 -1
- data/lib/pdp/oid.rb +12 -1
- data/lib/thermostat.rb +39 -1
- data/test/test_network.rb +1 -1
- data/website/index.html +26 -4
- data/website/index.txt +2 -2
- data/website/stylesheets/screen.css +12 -4
- data/website/template.html.erb +9 -2
- metadata +61 -23
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 1.2.0 2011-01-16
|
2
|
+
* fix rakefile so readme is correct
|
3
|
+
* added support for aux heat/aux heat offset/system time (Mark Flocco)
|
4
|
+
|
5
|
+
|
6
|
+
=== 1.1.1 2010-03-11
|
7
|
+
* update examples
|
8
|
+
|
1
9
|
=== 1.1.0 2010-03-10
|
2
10
|
* relatively complete unit test coverage
|
3
11
|
* add a simulation mode to the network layer so it's easier to test
|
data/README.rdoc
CHANGED
@@ -9,30 +9,47 @@ the web services provided by the Proliphix line of network
|
|
9
9
|
thermostats. Their API is documented at
|
10
10
|
http://www.proliphix.com/Documentation.aspx.
|
11
11
|
|
12
|
-
The code is tested on the NT20e unit, which is what I own
|
12
|
+
The code is tested on the NT20e unit, which is what I own (the NT10e
|
13
|
+
is the same hardware, just can't handle remote sensors). It should
|
13
14
|
react that same across all their network accessible units.
|
14
15
|
|
15
16
|
== FEATURES/PROBLEMS:
|
16
17
|
|
17
|
-
|
18
|
+
=== Pholiphix Quirks
|
18
19
|
|
19
|
-
|
20
|
+
There is an important notice in the manual which states that you
|
21
|
+
shouldn't make more than 1 request to the thermostat per 60 seconds
|
22
|
+
for any sustainable period of time. Because of that Thermostat.rb
|
23
|
+
does internal caching. If you have a long lived Thermostat.rb object,
|
24
|
+
it will fetch attributes on demand, and only refresh them after they
|
25
|
+
are more than 60 seconds old.
|
20
26
|
|
21
|
-
|
27
|
+
Set calls obviously still have to hit the thermostat, but the rate at
|
28
|
+
which you are going to use those calls should be much less. Because
|
29
|
+
the thermostat appears to be single threaded to some degree, I've
|
30
|
+
found that after a set, an immediate get fails. To get around this,
|
31
|
+
I've made the set call wait 1 second, then do a get off all values
|
32
|
+
again. This means the value map should be right after the set, so all
|
33
|
+
attribute gets should reflect the new state of the world.
|
22
34
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
35
|
+
=== Future Todo
|
36
|
+
|
37
|
+
Unit detection. There is no API to figure out if you are in degrees C
|
38
|
+
or degrees F, so I'm currently assuming F (though none of the code
|
39
|
+
really cares). I'd like to both detect that correctly, and use my
|
40
|
+
Temperature module to ensure you've values have units.
|
41
|
+
|
42
|
+
Day Classes and Activity Periods. These are in the plumbing but not
|
43
|
+
exposed yet. The API won't let you set them, but at least you could
|
44
|
+
get the current versions.
|
45
|
+
|
46
|
+
If anyone else has different thermostats they think could plug into
|
47
|
+
this interface, I'd be happy to work with them to do so. The code
|
48
|
+
isn't overly generic because I don't like premature abstractions.
|
32
49
|
|
33
50
|
== SYNOPSIS:
|
34
51
|
|
35
|
-
thermostat =
|
52
|
+
thermostat = Thermostat.new("hostname", "admin", "password")
|
36
53
|
|
37
54
|
# get the current temperature
|
38
55
|
current_temp = thermostat.temp
|
@@ -43,17 +60,26 @@ request and subsequent get request.
|
|
43
60
|
# set the thermostat to 69F (units are set in the thermost)
|
44
61
|
thermostat.heat_to = 69
|
45
62
|
|
63
|
+
== DOCUMENTATION
|
64
|
+
|
65
|
+
Complete API documentation can be found at http://sdaguegems.rubyforge.org/thermostat/rdoc
|
66
|
+
|
46
67
|
== REQUIREMENTS:
|
47
68
|
|
48
69
|
== INSTALL:
|
49
70
|
|
50
71
|
sudo gem install thermostat
|
51
72
|
|
73
|
+
== AUTHORS:
|
74
|
+
|
75
|
+
* Sean Dague
|
76
|
+
* Mark Flocco
|
77
|
+
|
52
78
|
== LICENSE:
|
53
79
|
|
54
80
|
(The MIT License)
|
55
81
|
|
56
|
-
Copyright (c) 2008-
|
82
|
+
Copyright (c) 2008-2011 Sean Dague
|
57
83
|
|
58
84
|
Permission is hereby granted, free of charge, to any person obtaining
|
59
85
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: US-ASCII
|
1
2
|
require 'rubygems'
|
2
3
|
gem 'hoe', '>= 2.1.0'
|
3
4
|
require 'hoe'
|
@@ -12,10 +13,11 @@ Hoe.plugin :website
|
|
12
13
|
|
13
14
|
# Generate all the Rake tasks
|
14
15
|
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
15
|
-
$hoe = Hoe.spec
|
16
|
+
$hoe = Hoe.spec "thermostat" do
|
16
17
|
self.developer 'Sean Dague', 'sean@dague.net'
|
17
|
-
self.
|
18
|
-
self.
|
18
|
+
self.rubyforge_name = "sdaguegems"
|
19
|
+
self.extra_rdoc_files = ["README.rdoc"]
|
20
|
+
self.readme_file = "README.rdoc"
|
19
21
|
self.extra_deps = [['temperature', '>= 1.0.0']]
|
20
22
|
# self.extra_deps = [['activesupport','>= 2.0.2']]
|
21
23
|
end
|
data/lib/pdp/constants.rb
CHANGED
@@ -2,7 +2,19 @@
|
|
2
2
|
module Proliphix
|
3
3
|
# a whole crap load of constants for the proliphix API
|
4
4
|
|
5
|
-
#
|
5
|
+
# This is the user setable mode for what state the thermostat is
|
6
|
+
# in. This could be one of Off, Heat, Cool, or Auto. These
|
7
|
+
# really mean which setback values the thermostat is going to pay
|
8
|
+
# attention to.
|
9
|
+
#
|
10
|
+
# In Off, obviously, it ignores them all. In Heat mode, it only
|
11
|
+
# cares if you are below SetbackHeat. In Cool mode, it only cares
|
12
|
+
# if you are above SetbackCool. In Auto mode it will both heat
|
13
|
+
# and cool to keep within some target range.
|
14
|
+
#
|
15
|
+
# Unless you are storing great works of art, Auto mode is
|
16
|
+
# overkill, and probably going to cost you a lot of money on
|
17
|
+
# Spring and Fall days.
|
6
18
|
ThermHvacMode = OID.new("HVAC Mode",
|
7
19
|
"4.1.1",
|
8
20
|
false,
|
@@ -126,5 +138,22 @@ module Proliphix
|
|
126
138
|
ThermLastUsageReset = OID.new("Last Usage Reset",
|
127
139
|
"4.5.6",
|
128
140
|
false, nil, false) # we're going to have to be tricky about this one
|
141
|
+
|
142
|
+
ThermSystemTimeSecs = OID.new("System Time (seconds since epoch)",
|
143
|
+
"2.5.1",
|
144
|
+
false, nil, false)
|
145
|
+
|
146
|
+
ThermAuxHeatMode = OID.new("Aux Heat Mode",
|
147
|
+
"4.2.30",
|
148
|
+
false,
|
149
|
+
{
|
150
|
+
1 => "Disabled",
|
151
|
+
2 => "Enabled with Compressors",
|
152
|
+
3 => "Enabled without Compressors"
|
153
|
+
})
|
154
|
+
|
155
|
+
ThermAuxHeatOffset = OID.new("Aux Heat Offset (degrees F)",
|
156
|
+
"4.1.24",
|
157
|
+
true)
|
129
158
|
|
130
159
|
end
|
data/lib/pdp/network.rb
CHANGED
data/lib/pdp/oid.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
1
|
module Proliphix
|
2
2
|
# This is the basic encapsulation class for OIDs used by the Proliphix thermostat.
|
3
|
-
|
3
|
+
|
4
4
|
class OID
|
5
|
+
# Create a new OID. It takes 5 parameters
|
6
|
+
# * name - some name you want to make up
|
7
|
+
# * oid - the oid that Proliphix uses in it's web service call
|
8
|
+
# * readonly - is the attribute read only (prevents us from
|
9
|
+
# ever trying to do a set call
|
10
|
+
# * valuemap - if the return is fundamentally an enumeration,
|
11
|
+
# provide a hash that we can map these to strings that make sense
|
12
|
+
# * scale - degrees are sent back as ints which are degrees * 10.
|
13
|
+
# If scale is set to true these are automatically divided by 10 before
|
14
|
+
# returned so that you get the answer in degrees
|
15
|
+
|
5
16
|
def initialize(name, oid, readonly, valuemap = nil, scale = true)
|
6
17
|
@name = name
|
7
18
|
@oid = oid
|
data/lib/thermostat.rb
CHANGED
@@ -4,7 +4,7 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
4
4
|
# This is the main class for controlling the Proliphix Thermostat.
|
5
5
|
# You must first initialize it with the control point credentials
|
6
6
|
class Thermostat
|
7
|
-
VERSION = '1.
|
7
|
+
VERSION = '1.2.0'
|
8
8
|
|
9
9
|
require 'pdp/oid'
|
10
10
|
require 'pdp/constants'
|
@@ -123,6 +123,44 @@ class Thermostat
|
|
123
123
|
self[ThermFanMode] = 1
|
124
124
|
self[ThermFanState]
|
125
125
|
end
|
126
|
+
|
127
|
+
# Get the thermostat system time
|
128
|
+
def system_time
|
129
|
+
self[ThermSystemTimeSecs]
|
130
|
+
end
|
131
|
+
|
132
|
+
# Set the thermostat system time
|
133
|
+
def system_time=(value)
|
134
|
+
self[ThermSystemTimeSecs] = value.to_i
|
135
|
+
system_time
|
136
|
+
end
|
137
|
+
|
138
|
+
# Get the aux heat mode
|
139
|
+
def aux_heat
|
140
|
+
self[ThermAuxHeatMode]
|
141
|
+
end
|
142
|
+
|
143
|
+
# Set the aux heat mode
|
144
|
+
def aux_heat=(value)
|
145
|
+
if (value == "1") or (value == "2") or (value == "3") then
|
146
|
+
self[ThermAuxHeatMode] = value.to_i
|
147
|
+
end
|
148
|
+
aux_heat
|
149
|
+
end
|
150
|
+
|
151
|
+
# Get the aux heat offset
|
152
|
+
def aux_heat_offset
|
153
|
+
self[ThermAuxHeatOffset]
|
154
|
+
end
|
155
|
+
|
156
|
+
# Set the aux heat offset
|
157
|
+
def aux_heat_offset=(value)
|
158
|
+
if (value >= 0) and (value <= 10)
|
159
|
+
self[ThermAuxHeatOffset] = value.to_i
|
160
|
+
end
|
161
|
+
aux_heat_offset
|
162
|
+
end
|
163
|
+
|
126
164
|
end
|
127
165
|
|
128
166
|
|
data/test/test_network.rb
CHANGED
@@ -18,7 +18,7 @@ class TestThermostatNetwork < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_get_query_generate
|
21
|
-
base_query = "http://foo/get?OID4.1.1=&OID4.1.2=&OID4.1.3=&OID4.1.4=&OID4.1.5=&OID4.1.6=&OID4.5.1=&OID4.5.3=&OID4.5.5=&OID4.1.13="
|
21
|
+
base_query = "http://foo/get?OID4.1.1=&OID4.1.2=&OID4.1.3=&OID4.1.4=&OID4.1.5=&OID4.1.6=&OID4.5.1=&OID4.5.3=&OID4.5.5=&OID4.1.13=&OID2.5.1=&OID4.2.30=&OID4.1.24="
|
22
22
|
|
23
23
|
@@t.heat_to
|
24
24
|
assert_equal(base_query, query)
|
data/website/index.html
CHANGED
@@ -24,17 +24,23 @@
|
|
24
24
|
}
|
25
25
|
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
26
26
|
versionBox.applyCornersToAll();
|
27
|
+
var mainBox = new curvyCorners(settings, document.getElementById("main"));
|
28
|
+
mainBox.applyCornersToAll();
|
29
|
+
var titleBox = new curvyCorners(settings, document.getElementById("title"));
|
30
|
+
titleBox.applyCornersToAll();
|
27
31
|
}
|
28
32
|
</script>
|
29
33
|
</head>
|
30
34
|
<body>
|
31
35
|
<div id="main">
|
32
36
|
|
33
|
-
<
|
37
|
+
<div id="title">
|
38
|
+
<h1>thermostat</h1>
|
39
|
+
</div>
|
34
40
|
<div class="sidebar">
|
35
41
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sdaguegems"; return false'>
|
36
42
|
<p>Get Version</p>
|
37
|
-
<a href="http://rubyforge.org/projects/sdaguegems" class="numbers">1.
|
43
|
+
<a href="http://rubyforge.org/projects/sdaguegems" class="numbers">1.1.1</a>
|
38
44
|
</div>
|
39
45
|
</div>
|
40
46
|
<h2>What</h2>
|
@@ -45,15 +51,30 @@ of some simple home temperature monitoring.</p>
|
|
45
51
|
<p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">thermostat</span></pre></p>
|
46
52
|
<h2>The basics</h2>
|
47
53
|
<h2>Demonstration of usage</h2>
|
54
|
+
<p><pre class='syntax'>
|
55
|
+
<span class="ident">thermostat</span> <span class="punct">=</span> <span class="constant">Thermostat</span><span class="punct">.</span><span class="ident">new</span><span class="punct">("</span><span class="string">hostname</span><span class="punct">",</span> <span class="punct">"</span><span class="string">admin</span><span class="punct">",</span> <span class="punct">"</span><span class="string">password</span><span class="punct">")</span>
|
56
|
+
|
57
|
+
<span class="comment"># get the current temperature</span>
|
58
|
+
<span class="ident">current_temp</span> <span class="punct">=</span> <span class="ident">thermostat</span><span class="punct">.</span><span class="ident">temp</span>
|
59
|
+
|
60
|
+
<span class="comment"># get the current setback heat value</span>
|
61
|
+
<span class="ident">current_target_temp</span> <span class="punct">=</span> <span class="ident">thermostat</span><span class="punct">.</span><span class="ident">heat_to</span>
|
62
|
+
|
63
|
+
<span class="comment"># set the thermostat to 69F (units are set in the thermostat)</span>
|
64
|
+
<span class="ident">thermostat</span><span class="punct">.</span><span class="ident">heat_to</span> <span class="punct">=</span> <span class="number">69</span>
|
65
|
+
</pre></p>
|
48
66
|
<h2>Documentation</h2>
|
49
67
|
<p>Full module level documentat can be found here:http://sdaguegems.rubyforge.org/thermostat/rdoc</p>
|
50
68
|
<h2>How to submit patches</h2>
|
51
|
-
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a
|
69
|
+
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a></p>
|
52
70
|
<p>You can fetch the source from</p>
|
53
71
|
<ul>
|
54
72
|
<li>github: <a href="http://github.com/sdague/thermostat.rb/tree/master">http://github.com/sdague/thermostat.rb/tree/master</a></li>
|
55
73
|
</ul>
|
56
74
|
<pre>git clone git://github.com/sdague/thermostat.rb.git</pre>
|
75
|
+
<p>To send me code updates, fork the tree on github, make your changes,<br />
|
76
|
+
then send me a pull request. That will make it easy for me to<br />
|
77
|
+
integrate your patches.</p>
|
57
78
|
<h3>Build and test instructions</h3>
|
58
79
|
<pre>cd thermostat
|
59
80
|
rake test
|
@@ -63,9 +84,10 @@ rake install_gem</pre>
|
|
63
84
|
<h2>Contact</h2>
|
64
85
|
<p>Comments are welcome. Send an email to <a href="mailto:sean@dague.net">Sean Dague</a></p>
|
65
86
|
<p class="coda">
|
66
|
-
<a href="
|
87
|
+
<a href="http://dague.net">Sean Dague</a>, 12th March 2010<br>
|
67
88
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
68
89
|
</p>
|
90
|
+
|
69
91
|
</div>
|
70
92
|
|
71
93
|
<!-- insert site tracking codes here, like Google Urchin -->
|
data/website/index.txt
CHANGED
@@ -15,7 +15,7 @@ h2. The basics
|
|
15
15
|
h2. Demonstration of usage
|
16
16
|
|
17
17
|
<pre syntax="ruby">
|
18
|
-
thermostat =
|
18
|
+
thermostat = Thermostat.new("hostname", "admin", "password")
|
19
19
|
|
20
20
|
# get the current temperature
|
21
21
|
current_temp = thermostat.temp
|
@@ -23,7 +23,7 @@ h2. Demonstration of usage
|
|
23
23
|
# get the current setback heat value
|
24
24
|
current_target_temp = thermostat.heat_to
|
25
25
|
|
26
|
-
# set the thermostat to 69F (units are set in the
|
26
|
+
# set the thermostat to 69F (units are set in the thermostat)
|
27
27
|
thermostat.heat_to = 69
|
28
28
|
</pre>
|
29
29
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
body {
|
2
|
-
background-color: #
|
2
|
+
background-color: #666666;
|
3
3
|
font-family: "Georgia", sans-serif;
|
4
4
|
font-size: 16px;
|
5
5
|
line-height: 1.6em;
|
@@ -15,8 +15,15 @@ h1 {
|
|
15
15
|
font-size: 4em;
|
16
16
|
line-height: 0.8em;
|
17
17
|
letter-spacing: -0.1ex;
|
18
|
-
|
18
|
+
margin: 5px 0px;
|
19
|
+
color: white;
|
20
|
+
padding: 20px;
|
21
|
+
|
19
22
|
}
|
23
|
+
#title {
|
24
|
+
background-color: #B30000;
|
25
|
+
margin-bottom: 30px;
|
26
|
+
}
|
20
27
|
li {
|
21
28
|
padding: 0;
|
22
29
|
margin: 0;
|
@@ -24,7 +31,6 @@ li {
|
|
24
31
|
}
|
25
32
|
a {
|
26
33
|
color: #5E5AFF;
|
27
|
-
background-color: #A1DDB1;
|
28
34
|
font-weight: normal;
|
29
35
|
text-decoration: underline;
|
30
36
|
}
|
@@ -40,8 +46,10 @@ blockquote {
|
|
40
46
|
|
41
47
|
#main {
|
42
48
|
width: 55em;
|
43
|
-
|
49
|
+
background-color: white;
|
50
|
+
padding: 20px;
|
44
51
|
margin: 0 auto;
|
52
|
+
margin-bottom: 30px;
|
45
53
|
}
|
46
54
|
.coda {
|
47
55
|
text-align: right;
|
data/website/template.html.erb
CHANGED
@@ -24,13 +24,19 @@
|
|
24
24
|
}
|
25
25
|
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
26
26
|
versionBox.applyCornersToAll();
|
27
|
+
var mainBox = new curvyCorners(settings, document.getElementById("main"));
|
28
|
+
mainBox.applyCornersToAll();
|
29
|
+
var titleBox = new curvyCorners(settings, document.getElementById("title"));
|
30
|
+
titleBox.applyCornersToAll();
|
27
31
|
}
|
28
32
|
</script>
|
29
33
|
</head>
|
30
34
|
<body>
|
31
35
|
<div id="main">
|
32
36
|
|
33
|
-
<
|
37
|
+
<div id="title">
|
38
|
+
<h1><%= title %></h1>
|
39
|
+
</div>
|
34
40
|
<div class="sidebar">
|
35
41
|
<div id="version" class="clickable" onclick='document.location = "<%= download %>"; return false'>
|
36
42
|
<p>Get Version</p>
|
@@ -39,9 +45,10 @@
|
|
39
45
|
</div>
|
40
46
|
<%= body %>
|
41
47
|
<p class="coda">
|
42
|
-
<a href="
|
48
|
+
<a href="http://dague.net">Sean Dague</a>, <%= modified.pretty %><br>
|
43
49
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
44
50
|
</p>
|
51
|
+
|
45
52
|
</div>
|
46
53
|
|
47
54
|
<!-- insert site tracking codes here, like Google Urchin -->
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thermostat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 31
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Sean Dague
|
@@ -9,56 +15,81 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2011-01-16 00:00:00 -05:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: temperature
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 23
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 0
|
33
|
+
- 0
|
23
34
|
version: 1.0.0
|
24
|
-
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
25
37
|
- !ruby/object:Gem::Dependency
|
26
38
|
name: rubyforge
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
30
42
|
requirements:
|
31
43
|
- - ">="
|
32
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 9
|
46
|
+
segments:
|
47
|
+
- 2
|
48
|
+
- 0
|
49
|
+
- 3
|
33
50
|
version: 2.0.3
|
34
|
-
|
51
|
+
type: :development
|
52
|
+
version_requirements: *id002
|
35
53
|
- !ruby/object:Gem::Dependency
|
36
54
|
name: gemcutter
|
37
|
-
|
38
|
-
|
39
|
-
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
40
58
|
requirements:
|
41
59
|
- - ">="
|
42
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 19
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
- 3
|
65
|
+
- 0
|
43
66
|
version: 0.3.0
|
44
|
-
|
67
|
+
type: :development
|
68
|
+
version_requirements: *id003
|
45
69
|
- !ruby/object:Gem::Dependency
|
46
70
|
name: hoe
|
47
|
-
|
48
|
-
|
49
|
-
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
50
74
|
requirements:
|
51
75
|
- - ">="
|
52
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 27
|
78
|
+
segments:
|
79
|
+
- 2
|
80
|
+
- 5
|
81
|
+
- 0
|
53
82
|
version: 2.5.0
|
54
|
-
|
83
|
+
type: :development
|
84
|
+
version_requirements: *id004
|
55
85
|
description: |-
|
56
86
|
Thermostat.rb is an attempt to build an easy to use ruby api around
|
57
87
|
the web services provided by the Proliphix line of network
|
58
88
|
thermostats. Their API is documented at
|
59
89
|
http://www.proliphix.com/Documentation.aspx.
|
60
90
|
|
61
|
-
The code is tested on the NT20e unit, which is what I own
|
91
|
+
The code is tested on the NT20e unit, which is what I own (the NT10e
|
92
|
+
is the same hardware, just can't handle remote sensors). It should
|
62
93
|
react that same across all their network accessible units.
|
63
94
|
email:
|
64
95
|
- sean@dague.net
|
@@ -71,6 +102,7 @@ extra_rdoc_files:
|
|
71
102
|
- Manifest.txt
|
72
103
|
- PostInstall.txt
|
73
104
|
- website/index.txt
|
105
|
+
- README.rdoc
|
74
106
|
files:
|
75
107
|
- History.txt
|
76
108
|
- Manifest.txt
|
@@ -105,28 +137,34 @@ has_rdoc: true
|
|
105
137
|
homepage: http://github.com/sdague/thermostat.rb
|
106
138
|
licenses: []
|
107
139
|
|
108
|
-
post_install_message:
|
140
|
+
post_install_message:
|
109
141
|
rdoc_options:
|
110
142
|
- --main
|
111
143
|
- README.rdoc
|
112
144
|
require_paths:
|
113
145
|
- lib
|
114
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
115
148
|
requirements:
|
116
149
|
- - ">="
|
117
150
|
- !ruby/object:Gem::Version
|
151
|
+
hash: 3
|
152
|
+
segments:
|
153
|
+
- 0
|
118
154
|
version: "0"
|
119
|
-
version:
|
120
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
121
157
|
requirements:
|
122
158
|
- - ">="
|
123
159
|
- !ruby/object:Gem::Version
|
160
|
+
hash: 3
|
161
|
+
segments:
|
162
|
+
- 0
|
124
163
|
version: "0"
|
125
|
-
version:
|
126
164
|
requirements: []
|
127
165
|
|
128
166
|
rubyforge_project: sdaguegems
|
129
|
-
rubygems_version: 1.3.
|
167
|
+
rubygems_version: 1.3.7
|
130
168
|
signing_key:
|
131
169
|
specification_version: 3
|
132
170
|
summary: Thermostat.rb is an attempt to build an easy to use ruby api around the web services provided by the Proliphix line of network thermostats
|