public
Rubygem
Description: Ruby gem to control a Rock's Bar-B-Que Stoker
Clone URL: git://github.com/tbuser/stoker.git
Click here to lend your support to: stoker and make a donation at www.pledgie.com !
fixing bugs... setting fan to sensor still isn't working right yet...
tbuser (author)
Fri Jun 27 14:01:05 -0700 2008
commit  7e376814c1fa98a421f6c9513f8a67377b0848bb
tree    23ba6b27821b37b83b8dd5428a09004033a5d65a
parent  f2e1ca6c69ede318d6910fd46e10559006e1cd8c
0
...
1
2
3
4
 
5
6
...
 
 
1
 
2
3
4
0
@@ -1,5 +1,3 @@
0
-* figure out how to communicate with and kill a spawned rails process
0
-* find a good chart library
0
 * finish web interface :)
0
-* resolve gem dependencies (hpricot, rails 2.1, sqlite3-ruby, will_paginate, scruffy?)
0
+* resolve gem dependencies (hpricot, rails 2.1, sqlite3-ruby, will_paginate, mechanize)
0
 * maybe make a shoes app to make it as easy as possible to install stoker gem and then start/stop web interface
0
\ No newline at end of file
...
5
6
7
8
 
 
9
10
11
...
21
22
23
24
 
 
 
 
25
26
27
...
35
36
37
38
 
39
40
41
...
49
50
51
52
 
53
54
55
56
57
58
59
60
61
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
64
65
66
67
68
69
70
 
 
 
 
 
71
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
74
 
75
76
77
 
 
 
 
 
 
78
79
80
81
...
5
6
7
 
8
9
10
11
12
...
22
23
24
 
25
26
27
28
29
30
31
...
39
40
41
 
42
43
44
45
...
53
54
55
 
56
57
58
59
60
 
 
 
 
 
 
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
 
 
 
 
 
 
80
81
82
83
84
85
 
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
106
107
108
 
109
110
111
112
113
114
115
116
117
118
0
@@ -5,7 +5,8 @@ module Net
0
     attr_reader :stoker
0
 
0
     FORM_PREFIXES = {
0
- "name" => "n2"
0
+ "name" => "n2",
0
+ "sensor_serial_number" => "sw"
0
     }
0
 
0
     def initialize(stoker, options = {})
0
@@ -21,7 +22,10 @@ module Net
0
     end
0
 
0
     def sensor_serial_number=(str)
0
- if @sensor_serial_number = @stoker.sensor(str).serial_number
0
+ if str.to_s == "" or str == "None"
0
+ @stoker.post(@stoker.sensor(self.sensor.serial_number).form_variable("blower") => "None") rescue nil
0
+ @sensor_serial_number = nil
0
+ elsif @sensor_serial_number = @stoker.sensor(str).serial_number
0
         @stoker.blowers.each do |b|
0
           if b.sensor_serial_number == @sensor_serial_number
0
             s.change_without_update("blower_serial_number", nil) unless b == self
0
@@ -35,7 +39,7 @@ module Net
0
     end
0
 
0
     def sensor=(s)
0
- self.sensor_serial_number = s.serial_number
0
+ self.sensor_serial_number = s.serial_number rescue nil
0
     end
0
 
0
     def sensor
0
@@ -49,32 +53,65 @@ module Net
0
 
0
     # updates internal state of object variable without posting an update to the stoker
0
     def change_without_update(var, val)
0
- eval("@#{var} = val")
0
+ eval("@#{var.to_s} = val")
0
     end
0
 
0
     def update_attributes(params)
0
       variables = {}
0
- params.each do |k,v|
0
- if k.to_s == "sensor"
0
- k = v.form_variable("blower")
0
- v = self.serial_number
0
- else
0
- k = self.form_variable(k.to_s)
0
+
0
+ tp = params
0
+ params = {}
0
+ tp.each{|name,value| params[name.to_s] = value}
0
+
0
+ params.each do |name, value|
0
+ case name
0
+ when "sensor"
0
+ name = "sensor_serial_number"
0
+ if value.to_s == ""
0
+ value = "None"
0
+ else
0
+ value = value.serial_number
0
+ end
0
+ when "sensor_serial_number"
0
+ if value.to_s == ""
0
+ value = "None"
0
+ end
0
         end
0
- variables[k] = v unless k.to_s == "serial_number"
0
-
0
- if k.to_s == "sensor"
0
- @stoker.blowers.each do |b|
0
- if b.sensor_serial_number == v
0
- b.change_without_update("sensor_serial_number", nil) unless b == self
0
- end
0
+
0
+ if name == "sensor_serial_number"
0
+ # update internal state of any other sensors that have this blower
0
+ @stoker.sensors.each do |s|
0
+ s.change_without_update("blower_serial_number", nil) if s.blower_serial_number == self.serial_number
0
           end
0
- self.change_without_update("sensor_serial_number", v)
0
+
0
+ # set the specific sensor blower to myself
0
+ if value != "None"
0
+ @stoker.sensor(value).blower_serial_number = self.serial_number
0
+ end
0
+ end
0
+
0
+ variables[name] = value unless name == "serial_number"
0
+ end
0
+
0
+ # update internal state
0
+ variables.each do |name, value|
0
+ self.change_without_update(name, value)
0
+ end
0
+
0
+ params = {}
0
+ variables.each do |name, value|
0
+ if name == "sensor_serial_number" and value != "None"
0
+ params[self.sensor.form_variable("blower_serial_number")] = self.serial_number
0
         else
0
- self.change_without_update(k, v)
0
+ params[self.form_variable(name)] = value
0
         end
0
       end
0
- @stoker.post(variables)
0
+
0
+ @stoker.post(params)
0
+ end
0
+
0
+ def to_s
0
+ @name || @serial_number
0
     end
0
   end
0
 end
0
\ No newline at end of file
...
10
11
12
13
 
 
14
15
16
...
62
63
64
65
 
 
 
 
66
67
68
69
70
71
72
 
73
74
75
...
91
92
93
94
95
96
97
98
99
100
101
102
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
105
106
107
108
109
 
 
110
111
 
 
 
 
 
 
 
 
 
 
 
 
112
 
 
 
 
113
114
115
...
10
11
12
 
13
14
15
16
17
...
63
64
65
 
66
67
68
69
70
71
72
73
74
75
 
76
77
78
79
...
95
96
97
 
 
 
 
 
 
 
 
 
 
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
 
 
137
138
139
140
 
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
0
@@ -10,7 +10,8 @@ module Net
0
       "target" => "ta",
0
       "high" => "th",
0
       "low" => "tl",
0
- "blower" => "sw"
0
+ "blower" => "sw",
0
+ "blower_serial_number" => "sw"
0
     }
0
 
0
     def initialize(stoker, options = {})
0
@@ -62,14 +63,17 @@ module Net
0
     end
0
 
0
     def blower_serial_number=(str)
0
- if @blower_serial_number = @stoker.blower(str).serial_number
0
+ if str.to_s == "" or str == "None"
0
+ @blower_serial_number = nil
0
+ @stoker.post(self.form_variable("blower") => "None")
0
+ elsif @blower_serial_number = @stoker.blower(str).serial_number
0
         self.blower.change_without_update("sensor_serial_number", @serial_number)
0
         @stoker.sensors.each do |s|
0
           if s.blower_serial_number == @blower_serial_number
0
             s.change_without_update("blower_serial_number", nil) unless s == self
0
           end
0
         end
0
- @stoker.post(self.form_variable("blower") => @blower_serial_number)
0
+ @stoker.post(self.form_variable("blower_serial_number") => @blower_serial_number)
0
       else
0
         raise "Blower not found"
0
       end
0
@@ -91,24 +95,65 @@ module Net
0
     
0
     def update_attributes(params)
0
       variables = {}
0
- params.each do |k,v|
0
- if k.to_s == "blower"
0
- v = v.serial_number
0
- end
0
- variables[self.form_variable(k.to_s)] = v unless k.to_s == "serial_number"
0
-
0
- if k.to_s == "blower"
0
- @stoker.sensors.each do |s|
0
- if s.blower_serial_number == v
0
- s.change_without_update("blower_serial_number", nil) unless s == self
0
+
0
+ tp = params
0
+ params = {}
0
+ tp.each{|name,value| params[name.to_s] = value}
0
+
0
+ params.each do |name, value|
0
+ case name
0
+ when "blower"
0
+ name = "blower_serial_number"
0
+ if value.to_s == ""
0
+ value = "None"
0
+ else
0
+ value = value.serial_number
0
+ end
0
+ when "blower_serial_number"
0
+ if value.to_s == ""
0
+ value = "None"
0
+ end
0
+ when "alarm"
0
+ value = Net::Stoker::ALARMS.index(value.capitalize)
0
+ end
0
+
0
+ if name == "blower_serial_number"
0
+ if value != "None"
0
+ # update internal state of any other sensors that have this blower
0
+ @stoker.sensors.each do |s|
0
+ s.change_without_update("blower_serial_number", nil) if s.blower_serial_number == value
0
+ end
0
+
0
+ # update the blower's internal state to this sensor
0
+ @stoker.blower(value).change_without_update("sensor_serial_number", self.serial_number)
0
+ end
0
+
0
+ # update internal state of any blowers pointing to this sensor if we're setting to None
0
+ if value == "None"
0
+ @stoker.blowers.each do |b|
0
+ b.change_without_update("sensor_serial_number", nil) if b.sensor_serial_number == self.serial_number
0
             end
0
           end
0
- self.change_without_update("blower_serial_number", v)
0
- else
0
- self.change_without_update(k, v)
0
         end
0
+
0
+ variables[name] = value unless name == "serial_number"
0
       end
0
- @stoker.post(variables)
0
+
0
+ # update internal state
0
+ variables.each do |name, value|
0
+ self.change_without_update(name, value)
0
+ end
0
+
0
+ params = {}
0
+ variables.each do |name, value|
0
+ params[self.form_variable(name)] = value
0
+ end
0
+
0
+ @stoker.post(params)
0
     end
0
+
0
+ def to_s
0
+ @name || @serial_number
0
+ end
0
   end
0
 end
0
\ No newline at end of file
...
3
4
5
 
6
7
8
...
278
279
280
 
 
 
 
 
281
282
283
284
285
286
 
 
 
 
287
288
289
 
290
291
292
...
309
310
311
 
 
 
312
313
314
...
3
4
5
6
7
8
9
...
279
280
281
282
283
284
285
286
287
288
289
 
 
 
290
291
292
293
294
295
 
296
297
298
299
...
316
317
318
319
320
321
322
323
324
0
@@ -3,6 +3,7 @@
0
 require "rubygems"
0
 require "hpricot"
0
 require "net/http"
0
+require "mechanize"
0
 require "cgi"
0
 require "open-uri"
0
 require "net/telnet"
0
@@ -278,15 +279,21 @@ module Net
0
 
0
       warn "Posting #{post_url}?#{q}"
0
 
0
+ # agent = WWW::Mechanize.new
0
+ # agent.read_timeout = 120
0
+ # page = agent.post(post_url, params)
0
+ # puts page.body
0
+
0
       # res = HTTP.post_form(URI.parse(post_url), params)
0
       url = URI.parse(post_url)
0
       req = Net::HTTP::Post.new(url.path)
0
- req["Keep-Alive"] = 300
0
- req["Connection"] = "keep-alive"
0
- req["Referer"] = "http://#{@host}:#{@http_port}/index.html"
0
+ # req["Keep-Alive"] = false
0
+ # req["Keep-Alive"] = 300
0
+ # req["Connection"] = "keep-alive"
0
+ # req["Referer"] = "http://#{@host}:#{@port}/index.html"
0
       req.set_form_data(params)
0
       http = Net::HTTP.new(url.host, url.port)
0
- http.read_timeout = 600
0
+ # http.read_timeout = 0
0
       res = http.start {|http| http.request(req)}
0
       case res
0
       when Net::HTTPSuccess, Net::HTTPRedirection
0
@@ -309,5 +316,8 @@ module Net
0
       @blowers.find{|b| b.name.downcase == str or b.serial_number.downcase == str}
0
     end
0
       
0
+ def to_s
0
+ @name || @host
0
+ end
0
   end
0
 end
0
\ No newline at end of file
...
11
12
13
 
 
 
 
 
 
 
14
15
16
...
21
22
23
24
 
 
 
 
25
26
27
...
11
12
13
14
15
16
17
18
19
20
21
22
23
...
28
29
30
 
31
32
33
34
35
36
37
0
@@ -11,6 +11,13 @@ stoker = Net::Stoker.new("10.1.1.8", :connection => "http")
0
 puts "Getting data..."
0
 stoker.get
0
 
0
+# 530000112A584E30: Yellow
0
+# 440000112A621E30: Pit Temp
0
+# 0E0000112A5D1630: Blue
0
+# 9C00001195DEE430: Red
0
+
0
+# 140000002AA65105: Fan
0
+
0
 puts "Listing blowers:"
0
 stoker.blowers.each do |blower|
0
   puts "#{blower.serial_number}, #{blower.name}, #{blower.sensor.name rescue ''}"
0
@@ -21,7 +28,10 @@ stoker.sensors.each do |sensor|
0
   puts "#{sensor.serial_number}, #{sensor.name}, #{sensor.temp}, #{sensor.target}, #{sensor.alarm}, #{sensor.low}, #{sensor.high}, #{sensor.blower.name rescue ''}"
0
 end
0
 
0
-# sensor = stoker.sensors[0]
0
+sensor = stoker.sensor("530000112A584E30")
0
+res = sensor.update_attributes(:name => "Yellow Foo", :blower_serial_number => stoker.blower("140000002AA65105").serial_number)
0
+puts res.to_s
0
+
0
 # name = sensor.name
0
 # serial_number = sensor.serial_number
0
 #
...
1
2
3
4
 
5
6
7
...
12
13
14
15
 
16
17
18
19
20
21
22
23
24
25
 
26
27
 
28
29
30
...
36
37
38
39
 
40
41
42
...
1
2
 
 
3
4
5
6
...
11
12
13
 
14
15
 
 
16
17
18
19
20
21
 
22
23
 
24
25
26
27
...
33
34
35
 
36
37
38
39
0
@@ -1,7 +1,6 @@
0
 class Blower < ActiveRecord::Base
0
   belongs_to :stoker
0
-
0
- has_one :sensor
0
+ belongs_to :sensor
0
   
0
   has_many :adjustments
0
   
0
@@ -12,19 +11,17 @@ class Blower < ActiveRecord::Base
0
 
0
   def update_net_stoker
0
     if !Stoker.skip_update and (self.changed & ["name", "sensor_id"]).size > 0
0
- spawn do
0
+ # spawn do
0
         begin
0
- self.stoker.net.get
0
-
0
           params = {}
0
           
0
           ["name", "sensor_id"].each do |field|
0
             if self.changed.include?(field)
0
               if field == "sensor_id"
0
                 if self.sensor_id.to_s == ""
0
- params[:sensor] = nil
0
+ params[:sensor_serial_number] = nil
0
                 else
0
- params[:sensor] = self.stoker.net.sensor(self.sensor.serial_number)
0
+ params[:sensor_serial_number] = self.sensor.serial_number
0
                 end
0
               else
0
                 params[field] = self.send(field)
0
@@ -36,7 +33,7 @@ class Blower < ActiveRecord::Base
0
         rescue Exception => e
0
           raise "#{e.message}\n#{e.backtrace.to_yaml}"
0
         end
0
- end
0
+ # end
0
     end
0
   end
0
 
...
1
2
3
 
 
4
5
 
 
6
7
8
...
11
12
13
 
 
 
14
15
16
 
 
 
 
17
18
19
20
21
22
23
24
25
26
 
 
27
28
29
30
31
32
33
 
34
35
 
36
37
38
39
40
41
42
 
43
44
45
46
47
 
48
49
50
...
64
65
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
68
...
1
2
3
4
5
6
 
7
8
9
10
11
...
14
15
16
17
18
19
20
 
 
21
22
23
24
25
26
27
28
29
30
 
 
 
 
31
32
33
34
35
36
37
38
 
39
40
 
41
42
43
44
45
46
47
 
48
49
50
51
52
 
53
54
55
56
...
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
0
@@ -1,8 +1,11 @@
0
 class Sensor < ActiveRecord::Base
0
   ALARMS = ["None", "Food", "Fire"]
0
   
0
+ attr_accessor :blower_id
0
+
0
   belongs_to :stoker
0
- belongs_to :blower
0
+
0
+ has_one :blower
0
   
0
   has_many :events
0
   has_many :adjustments
0
@@ -11,40 +14,43 @@ class Sensor < ActiveRecord::Base
0
   validates_inclusion_of :alarm, :in => ALARMS
0
   validates_uniqueness_of :serial_number
0
   validates_uniqueness_of :name, :scope => :stoker_id, :unless => Proc.new {|s| s.stoker_id.to_s == ""}
0
+
0
+ before_update :set_blower
0
+ before_update :update_net_stoker
0
   
0
- after_update :update_net_stoker
0
-
0
+ def blower_id
0
+ self.blower.id rescue nil
0
+ end
0
+
0
   def temp
0
     self.events.find(:first, :order => "created_at DESC").temp rescue nil
0
   end
0
 
0
   def update_net_stoker
0
     if !Stoker.skip_update and (self.changed & ["name", "target", "alarm", "high", "low", "blower_id"]).size > 0
0
- spawn do
0
- begin
0
- self.stoker.net.get
0
-
0
+ # spawn do
0
+ begin
0
           params = {}
0
           
0
           ["name", "target", "alarm", "high", "low", "blower_id"].each do |field|
0
             if self.changed.include?(field)
0
               if field == "blower_id"
0
                 if self.blower_id.to_s == ""
0
- params[:blower] = nil
0
+ params[:blower_serial_number] = nil
0
                 else
0
- params[:blower] = self.stoker.net.blower(self.blower.serial_number)
0
+ params[:blower_serial_number] = self.blower.serial_number
0
                 end
0
               else
0
                 params[field] = self.send(field)
0
               end
0
             end
0
           end
0
-
0
+
0
           self.stoker.net.sensor(self.serial_number).update_attributes(params)
0
         rescue Exception => e
0
           raise "#{e.message}\n#{e.backtrace.to_yaml}"
0
         end
0
- end
0
+ # end
0
     end
0
   end
0
 
0
@@ -64,5 +70,24 @@ class Sensor < ActiveRecord::Base
0
     
0
     alarm_status
0
   end
0
+
0
+ private
0
+
0
+ def set_blower
0
+ Stoker.no_update do
0
+
0
+ puts "Updating blower assignment in sensor model"
0
+ if b = self.blower
0
+ if @blower_id.to_s == ""
0
+ b.sensor_id = nil
0
+ else
0
+ b.sensor_id = self.id
0
+ end
0
+ b.save!
0
+ end
0
+
0
+ end
0
+ true
0
+ end
0
   
0
 end
...
25
26
27
28
29
30
31
32
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
35
36
...
43
44
45
 
46
47
48
...
54
55
56
 
57
58
59
...
66
67
68
69
70
 
 
 
 
71
72
 
73
74
75
...
25
26
27
 
 
 
 
 
 
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
...
71
72
73
74
75
76
77
...
83
84
85
86
87
88
89
...
96
97
98
 
 
99
100
101
102
103
104
105
106
107
108
0
@@ -25,12 +25,40 @@ class Stoker < ActiveRecord::Base
0
   end
0
   
0
   def net
0
- @net ||= Net::Stoker.new(host,
0
- :connection => self.connection_type,
0
- :port => self.port,
0
- :output_port => self.output_port,
0
- :telnet_port => self.telnet_port
0
- )
0
+ if @net.nil?
0
+ @net = Net::Stoker.new(host,
0
+ :connection => self.connection_type,
0
+ :port => self.port,
0
+ :output_port => self.output_port,
0
+ :telnet_port => self.telnet_port
0
+ )
0
+
0
+ self.sensors.each do |s|
0
+ @net.sensors << Net::Sensor.new(@net,
0
+ {
0
+ :serial_number => s.serial_number,
0
+ :name => s.name,
0
+ :blower_serial_number => (s.blower.serial_number rescue nil),
0
+ :alarm => s.alarm,
0
+ :high => s.high,
0
+ :low => s.low,
0
+ :target => s.target
0
+ }
0
+ )
0
+ end
0
+
0
+ self.blowers.each do |b|
0
+ @net.blowers << Net::Blower.new(@net,
0
+ {
0
+ :serial_number => b.serial_number,
0
+ :name => b.name,
0
+ :sensor_serial_number => (b.sensor.serial_number rescue nil)
0
+ }
0
+ )
0
+ end
0
+ end
0
+
0
+ @net
0
   end
0
   
0
   def sync!
0
@@ -43,6 +71,7 @@ class Stoker < ActiveRecord::Base
0
       net_stoker.get
0
 
0
       Stoker.no_update do
0
+ puts "Updating blowers"
0
         net_stoker.blowers.each do |nb|
0
           if blower = Blower.find_or_create_by_serial_number(nb.serial_number)
0
             blower.update_attributes!(
0
@@ -54,6 +83,7 @@ class Stoker < ActiveRecord::Base
0
           end
0
         end
0
 
0
+ puts "Updating sensors"
0
         net_stoker.sensors.each do |ns|
0
           if sensor = Sensor.find_or_create_by_serial_number(ns.serial_number)
0
             sensor.update_attributes!(
0
@@ -66,10 +96,13 @@ class Stoker < ActiveRecord::Base
0
             )
0
 
0
             if ns.blower_serial_number.to_s != ""
0
- sensor.blower = Blower.find_by_serial_number(ns.blower_serial_number)
0
- sensor.save!
0
+ b = Blower.find_by_serial_number(ns.blower_serial_number)
0
+ puts "Sensor #{sensor.name} assigning to blower #{b.name}"
0
+ b.sensor_id = sensor.id
0
+ b.save!
0
             end
0
         
0
+ puts "Creating events"
0
             Event.create!(
0
               :stoker => self,
0
               :sensor => sensor,
...
11
12
13
 
 
 
 
 
14
15
16
...
11
12
13
14
15
16
17
18
19
20
21
0
@@ -11,6 +11,11 @@
0
 </p>
0
 
0
 <p>
0
+ <b>Sensor</b><br />
0
+ <%= f.collection_select :sensor_id, Sensor.find(:all), :id, :name, {:include_blank => true} %>
0
+</p>
0
+
0
+<p>
0
   <b>Stoker</b><br />
0
   <%= f.collection_select :stoker_id, Stoker.find(:all), :id, :name %>
0
 </p>
...
1
 
2
3
4
...
1
2
3
4
5
0
@@ -1,4 +1,5 @@
0
 <%= error_messages_for :sensor %>
0
+<%= error_messages_for :blower %>
0
 
0
 <p>
0
   <b>Serial number</b><br />
...
9
10
11
12
 
13
14
15
...
34
35
36
 
37
38
39
...
76
77
78
79
80
81
82
83
84
85
86
87
88
89
...
9
10
11
 
12
13
14
15
...
34
35
36
37
38
39
40
...
77
78
79
 
80
81
82
83
84
85
 
86
87
88
0
@@ -9,7 +9,7 @@
0
 #
0
 # It's strongly recommended to check this file into your version control system.
0
 
0
-ActiveRecord::Schema.define(:version => 20080626215857) do
0
+ActiveRecord::Schema.define(:version => 20080627181229) do
0
 
0
   create_table "adjustments", :force => true do |t|
0
     t.integer "cook_id"
0
@@ -34,6 +34,7 @@ ActiveRecord::Schema.define(:version => 20080626215857) do
0
     t.integer "stoker_id"
0
     t.datetime "created_at"
0
     t.datetime "updated_at"
0
+ t.integer "sensor_id"
0
   end
0
 
0
   add_index "blowers", ["stoker_id"], :name => "index_blowers_on_stoker_id"
0
@@ -76,14 +77,12 @@ ActiveRecord::Schema.define(:version => 20080626215857) do
0
     t.string "alarm", :default => "None"
0
     t.integer "low"
0
     t.integer "high"
0
- t.integer "blower_id"
0
     t.integer "stoker_id"
0
     t.datetime "created_at"
0
     t.datetime "updated_at"
0
   end
0
 
0
   add_index "sensors", ["alarm"], :name => "index_sensors_on_alarm"
0
- add_index "sensors", ["blower_id"], :name => "index_sensors_on_blower_id"
0
   add_index "sensors", ["stoker_id"], :name => "index_sensors_on_stoker_id"
0
   add_index "sensors", ["name"], :name => "index_sensors_on_name"
0
   add_index "sensors", ["serial_number"], :name => "index_sensors_on_serial_number"

Comments

    No one has commented yet.