Floppy-currentcost 0.2.2 → 0.2.3

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.
Files changed (3) hide show
  1. data/README +3 -1
  2. data/bin/currentcost_tray_monitor.rb +45 -2
  3. metadata +2 -2
data/README CHANGED
@@ -36,6 +36,8 @@ usage. To use the program, run:
36
36
  currentcost_tray_monitor.rb -p your_serial_port_name
37
37
 
38
38
  The program requires the Gtk2 libraries for Ruby (available from
39
- http://ruby-gnome2.sourceforge.jp/).
39
+ http://ruby-gnome2.sourceforge.jp/). If the EEML gem (http://github.com/Floppy/eeml-ruby)
40
+ is installed, it can also serve your power data over an HTTP connection to a system like
41
+ Pachube (http://www.pachube.com).
40
42
 
41
43
  For more details, see http://github.com/Floppy/currentcost-ruby/wikis/currentcosttraymonitor
@@ -8,15 +8,29 @@ require 'rubygems'
8
8
  require 'currentcost'
9
9
  require 'optparse'
10
10
 
11
+ # If EEML is available, start a simple server which will serve power information
12
+ begin
13
+ require 'eeml'
14
+ require 'webrick'
15
+ $eeml_server_enabled = true
16
+ rescue LoadError
17
+ $eeml_server_enabled = false
18
+ end
19
+
20
+
11
21
  # Command-line options
12
22
  options = {:port => '/dev/ttyS0'}
13
23
  OptionParser.new do |opts|
14
24
  opts.on("-p", "--serial_port SERIAL_PORT", "serial port") do |p|
15
25
  options[:port] = p
16
- end
26
+ end
27
+ if $eeml_server_enabled == true
28
+ opts.on("-h", "--http_port HTTP_PORT", "http port") do |h|
29
+ options[:http_port] = h
30
+ end
31
+ end
17
32
  end.parse!
18
33
 
19
-
20
34
  # Pixbuf images - generated from PNG files with gdk-pixbuf-csource --raw
21
35
  GREY =
22
36
  # Pixbuf magic (0x47646b50)
@@ -300,6 +314,7 @@ about_item.signal_connect('activate') {
300
314
 
301
315
  quit_item.signal_connect('activate') {
302
316
  $meter.close
317
+ $eeml_server.shutdown if $eeml_server_enabled && $eeml_server.status == :Running
303
318
  Gtk.main_quit
304
319
  }
305
320
 
@@ -326,6 +341,11 @@ class MeterObserver
326
341
  end
327
342
  # Set tooltip
328
343
  $tray.tooltip = "#{watts} watts"
344
+ # Update EEML data
345
+ if $eeml_server_enabled && $eeml_server.status == :Running
346
+ $eeml_environment[0].value = watts
347
+ $eeml_environment.set_updated!
348
+ end
329
349
  rescue
330
350
  $tray.pixbuf = $grey_pixbuf
331
351
  end
@@ -336,5 +356,28 @@ $meter = CurrentCost::Meter.new(options[:port])
336
356
  obs = MeterObserver.new
337
357
  $meter.add_observer(obs)
338
358
 
359
+ # Create EEML HTTP server if options are set
360
+ if $eeml_server_enabled && options[:http_port]
361
+ # Create EEML environment
362
+ $eeml_environment = EEML::Environment.new
363
+ # Create data object
364
+ data = EEML::Data.new(0)
365
+ data.unit = EEML::Unit.new("Watts", :symbol => 'W', :type => :derivedSI)
366
+ $eeml_environment << data
367
+ # Create WEBrick server
368
+ $eeml_server = WEBrick::HTTPServer.new( :Port => options[:http_port] )
369
+ # Create a simple webrick servlet for index.eeml
370
+ class EEMLServlet < WEBrick::HTTPServlet::AbstractServlet
371
+ def do_GET(request, response)
372
+ response.status = 200
373
+ response['Content-Type'] = "text/xml"
374
+ response.body = $eeml_environment.to_eeml
375
+ end
376
+ end
377
+ $eeml_server.mount("/index.eeml", EEMLServlet)
378
+ trap("INT") {$eeml_server.shutdown}
379
+ Thread.new{$eeml_server.start}
380
+ end
381
+
339
382
  # Go
340
383
  Gtk.main
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Floppy-currentcost
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Smith
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-22 00:00:00 -07:00
12
+ date: 2008-08-27 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency