<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -85,12 +85,26 @@ module Net
         
         # restart_bbq
 
-        warn &quot;Connecting to #{@host} on port #{@port}&quot;
-        @socket = Net::Telnet.new(&quot;Host&quot; =&gt; @host, &quot;Port&quot; =&gt; @port, &quot;Timeout&quot; =&gt; @timeout, &quot;Prompt&quot; =&gt; /ok\:0/)
-        @socket.cmd(&quot;op=#{@output_port}&quot;) {|c| print c}
+        # warn &quot;Connecting to #{@host} on port #{@port}&quot;
+        @socket = Net::Telnet.new(&quot;Host&quot; =&gt; @host, &quot;Port&quot; =&gt; @port, &quot;Timeout&quot; =&gt; @timeout, &quot;Prompt&quot; =&gt; /ok\:/)
+        # @socket.cmd(&quot;op=#{@output_port}&quot;) {|c| print c}
+        response = @socket.cmd(&quot;op=#{@output_port}&quot;)
         
-        warn &quot;Connecting to #{@host} on port #{@output_port}&quot;
-        @output_socket = Net::Telnet.new(&quot;Host&quot; =&gt; @host, &quot;Port&quot; =&gt; @output_port, &quot;Timeout&quot; =&gt; @timeout)
+        # sleep(1)
+        
+        # warn &quot;Connecting to #{@host} on port #{@output_port}&quot;
+        tries = 0
+        until tries &gt; 4
+          begin
+            @output_socket = Net::Telnet.new(&quot;Host&quot; =&gt; @host, &quot;Port&quot; =&gt; @output_port, &quot;Timeout&quot; =&gt; @timeout)
+            break
+          rescue
+            tries += 1
+            # warn &quot;trying again to connect to output socket&quot;
+            raise &quot;output port not responding&quot; if tries == 4
+          end
+        end
+          
       end
     end
 
@@ -117,42 +131,83 @@ module Net
     end
 
     def get_socket
+      # warn &quot;getting socket data&quot;
+      
       @sensors      = []
       @blowers      = []
       @sensor_opts  = []
       @blower_opts  = []
 
-      response      = @socket.cmd(&quot;zx&quot;) {|c| print c}
+      # response      = @socket.cmd(&quot;zx&quot;) {|c| print c}
+      response      = @socket.cmd(&quot;zx&quot;)
       sensor_ids    = response[/^SensorID:(.*)BlowerID:.*$/, 1].split(/ /) rescue []
       blower_ids    = response[/BlowerID:(.*)$/, 1].split(/ /) rescue []
 
-      blower_ids.each do |i|
-        response = @socket.cmd(&quot;ge#{i}&quot;) {|c| print c}
-        response =~ /^Name:(.*) Sensor:(.*)$/
-        @blower_opts &lt;&lt; {
-          :serial_number  =&gt; i,
-          :name           =&gt; $1.strip
-        }
-      end
+      ids           = sensor_ids + blower_ids
+      get_str       = ids.collect{|id| &quot;ge#{id}&quot;}.join(&quot;&amp;&quot;)
       
-      sensor_ids.each do |i|
-        response = @socket.cmd(&quot;ge#{i}&quot;) {|c| print c}
-        response =~ /^Name:(.*) Blower:(.*) Alarm Mode:(.*) Alarm Hi:(.*) Alarm Lo:(.*) Target:(.*)$/
-        blower_serial_number = $2 == &quot;null&quot; ? nil : @blower_opts.find{|bo| bo[:name] == $2.strip}[:serial_number]
-        @sensor_opts &lt;&lt; {
-          :serial_number        =&gt; i,
-          :name                 =&gt; $1.strip,
-          :blower_serial_number =&gt; blower_serial_number,
-          :alarm                =&gt; $3,
-          :high                 =&gt; $4.to_f.to_fahrenheit,
-          :low                  =&gt; $5.to_f.to_fahrenheit,
-          :target               =&gt; $6.to_f.to_fahrenheit
-        }
+      # response    = @socket.cmd(get_str) {|c| print c}
+      response    = @socket.cmd(get_str)
+      name_lines  = response.scan(/^(Name:.*)$/).join(&quot;\n&quot;).collect{|line| line.chomp}
+
+      if blower_ids.size &gt; 0
+        count = 0
+        name_lines[(sensor_ids.size)..-1].each do |line|
+          line =~ /^Name:(.*) Sensor:(.*)$/
+          @blower_opts &lt;&lt; {
+            :serial_number  =&gt; blower_ids[count],
+            :name           =&gt; $1.strip
+          }
+          count += 1
+        end
+      end
+
+      if sensor_ids.size &gt; 0
+        count = 0
+        name_lines[0..(sensor_ids.size-1)].each do |line|
+          line =~ /^Name:(.*) Blower:(.*) Alarm Mode:(.*) Alarm Hi:(.*) Alarm Lo:(.*) Target:(.*)$/
+          blower_serial_number = $2 == &quot;null&quot; ? nil : @blower_opts.find{|bo| bo[:name] == $2.strip}[:serial_number]
+          @sensor_opts &lt;&lt; {
+            :serial_number        =&gt; sensor_ids[count],
+            :name                 =&gt; $1.strip,
+            :blower_serial_number =&gt; blower_serial_number,
+            :alarm                =&gt; $3,
+            :high                 =&gt; $4.to_f.to_fahrenheit,
+            :low                  =&gt; $5.to_f.to_fahrenheit,
+            :target               =&gt; $6.to_f.to_fahrenheit
+          }
+          count += 1
+        end
       end
+      
+      # blower_ids.each do |i|
+      #   warn &quot;sending ge#{i}&quot;
+      #   response = @socket.cmd(&quot;ge#{i}&quot;) {|c| print c}
+      #   response =~ /^Name:(.*) Sensor:(.*)$/
+      #   @blower_opts &lt;&lt; {
+      #     :serial_number  =&gt; i,
+      #     :name           =&gt; $1.strip
+      #   }
+      # end
+      # 
+      # sensor_ids.each do |i|
+      #   warn &quot;sending ge#{i}&quot;
+      #   response = @socket.cmd(&quot;ge#{i}&quot;) {|c| print c}
+      #   response =~ /^Name:(.*) Blower:(.*) Alarm Mode:(.*) Alarm Hi:(.*) Alarm Lo:(.*) Target:(.*)$/
+      #   blower_serial_number = $2 == &quot;null&quot; ? nil : @blower_opts.find{|bo| bo[:name] == $2.strip}[:serial_number]
+      #   @sensor_opts &lt;&lt; {
+      #     :serial_number        =&gt; i,
+      #     :name                 =&gt; $1.strip,
+      #     :blower_serial_number =&gt; blower_serial_number,
+      #     :alarm                =&gt; $3,
+      #     :high                 =&gt; $4.to_f.to_fahrenheit,
+      #     :low                  =&gt; $5.to_f.to_fahrenheit,
+      #     :target               =&gt; $6.to_f.to_fahrenheit
+      #   }
+      # end
 
       @sensor_opts.size.times do
         line = @output_socket.readline
-        # puts line
         parts = line.split(&quot; &quot;, 11)
         parts[0] = parts[0].chop
         @sensor_opts.find{|so| so[:serial_number] == parts[0]}[:temp] = parts[8].to_f.to_fahrenheit
@@ -168,7 +223,7 @@ module Net
     end
   
     def get_http(attempt = 1)
-      warn &quot;Requesting http://#{@host}:#{@port}&quot;
+      # warn &quot;Requesting http://#{@host}:#{@port}&quot;
 
       @sensors    = []
       @blowers    = []</diff>
      <filename>lib/stoker.rb</filename>
    </modified>
    <modified>
      <diff>@@ -29,11 +29,11 @@ def get_sensors(connection=&quot;http&quot;)
   # stoker.sensors.each do |sensor|
   #   puts &quot;#{sensor.serial_number}, #{sensor.name}, #{sensor.temp}, #{sensor.target}, #{sensor.alarm}, #{sensor.low}, #{sensor.high}, #{sensor.blower.name rescue ''}&quot;
   # end
-  sleep 5
 end
 
 Benchmark.bm do |x|
   x.report(&quot;http&quot;) { get_sensors(&quot;http&quot;); }
+  sleep(3)
   x.report(&quot;socket&quot;) { get_sensors(&quot;socket&quot;); }
 end
 </diff>
      <filename>test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>28b1ba759a1f9d310db62ec64f8924f4ceb36f39</id>
    </parent>
  </parents>
  <author>
    <name>Tony Buser</name>
    <email>tbuser@gmail.com</email>
  </author>
  <url>http://github.com/tbuser/stoker/commit/6fa95384f9819b1861e7d235c94794d0000cec98</url>
  <id>6fa95384f9819b1861e7d235c94794d0000cec98</id>
  <committed-date>2008-08-25T12:35:03-07:00</committed-date>
  <authored-date>2008-08-25T12:35:03-07:00</authored-date>
  <message>removed some debug messages and found you could combine multiple commands in socket interface, so that socket interface is now a bit faster then scraping the web page</message>
  <tree>f245cebaa20a7306a9bfddf9ca152ec693b9fa76</tree>
  <committer>
    <name>Tony Buser</name>
    <email>tbuser@gmail.com</email>
  </committer>
</commit>
