mfi 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (7) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +9 -9
  4. data/Rakefile +18 -7
  5. data/lib/mfi.rb +1 -1
  6. data/lib/mpower.rb +16 -4
  7. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b14de77104a8ccb5ed5ed50f6794ac40404d83ee
4
- data.tar.gz: 32a1abe857da69e501019df8477cca705e2e9901
3
+ metadata.gz: 5f5d5816c63b83b138ebed2c36a15e508c201ad7
4
+ data.tar.gz: 2b114ec46eb7cea740801a1b4aa0c652297dd296
5
5
  SHA512:
6
- metadata.gz: 39f02f69df4aa53648e38278362518f3578f1f627ca7fdd7d1cc1f93ea4a9f3a4c8aca9a00abebbe36181f9b91a1a51eb73e05b3fa8c2e8a0e950ee81e2174da
7
- data.tar.gz: 7129e7eed14410e49a89940d54a396b50cc155dd5aaeaeea4395684fbbd29174591636b0442978484a18358bede997ccac178279bf0b1ebdcac82f94f5418bac
6
+ metadata.gz: 9274c5435c0eb10bd153bf0cbbc6c5d7134bd0aa3ed51cf5a52a0a56513e294308f61b4adeffc9f18618d0b4e080aa4cf955eb35ca77537f9753158be2ad5880
7
+ data.tar.gz: 8f521bec537ca166d7a8b9352756108181511a1fe66dc98fdb03883bed897adea5d845cdddb186bfbf100d84bd7a68552a54ff60399609f3b573804efff52c67
@@ -0,0 +1 @@
1
+ *.gem
data/README.md CHANGED
@@ -13,20 +13,20 @@ gem install mfi
13
13
  mPower ports are linux based wifi-enabled power strips. Each port has sensors for amps, voltage, and power factor. Additionally each port has a relay. Here is a script that samples all powers, and disables a port if the energy exceeds 10kWh.
14
14
 
15
15
  ```ruby
16
- device = MFi::MPower.new(
16
+ mpower = MFi::MPower.new(
17
17
  :host => "hostname",
18
18
  :user => "username",
19
19
  :pass => "password"
20
20
  )
21
21
 
22
- device.connect!
23
-
24
- device.sample.each { |reading|
25
- puts reading.to_s
26
- if reading.energy > 10
27
- puts "Port #{reading.port} has consumed >= 10 kWh. Switching off..."
28
- device.switch_off(reading.port)
29
- end
22
+ mpower.exec { |remote|
23
+ remote.sample.each { |reading|
24
+ puts reading.to_s
25
+ if reading.energy > 10
26
+ puts "Port #{reading.port} has consumed >= 10 kWh. Switching off..."
27
+ remote.switch_off(reading.port)
28
+ end
29
+ }
30
30
  }
31
31
  ```
32
32
 
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  $: << File.dirname(__FILE__) + "/lib"
2
2
 
3
3
  require "mfi"
4
+ require "pp"
4
5
 
5
6
  task :default => :sample
6
7
 
@@ -12,19 +13,29 @@ task :env do
12
13
  )
13
14
  end
14
15
 
16
+ task :enable => :env do
17
+ @mpower.exec { |m|
18
+ pp m.enable_read
19
+ pp m.enable_write
20
+ }
21
+ end
22
+
15
23
  task :sample => :env do
16
- @mpower.connect!
17
- @mpower.sample.each { |reading|
18
- puts reading
24
+ @mpower.exec { |m|
25
+ m.sample.each { |reading|
26
+ puts reading
27
+ }
19
28
  }
20
29
  end
21
30
 
22
31
  task :switch_off => :env do
23
- @mpower.connect!
24
- @mpower.switch_off
32
+ @mpower.exec { |m|
33
+ m.switch_off
34
+ }
25
35
  end
26
36
 
27
37
  task :switch_on => :env do
28
- @mpower.connect!
29
- @mpower.switch_on
38
+ @mpower.exec { |m|
39
+ m.switch_on
40
+ }
30
41
  end
data/lib/mfi.rb CHANGED
@@ -4,7 +4,7 @@ require "net/ssh"
4
4
  require "json"
5
5
 
6
6
  module MFi
7
- Version = "0.9.0"
7
+ Version = "0.9.1"
8
8
  end
9
9
 
10
10
  require "mpower"
@@ -46,6 +46,14 @@ module MFi
46
46
  @ssh = Net::SSH.start(@host, @user, :password => @pass)
47
47
  end
48
48
 
49
+ # execute commands in a given execution context
50
+ def exec &block
51
+ connect!
52
+ yield self
53
+ ensure
54
+ disconnect!
55
+ end
56
+
49
57
  # Sample all metrics from the mPower device
50
58
  # +port+ the port option, default is all
51
59
  def sample port=-1
@@ -61,14 +69,14 @@ module MFi
61
69
 
62
70
  # Write enable port, allowing relay toggling
63
71
  # +port+ the port option, default is all
64
- def enable port=-1
65
- run(:func => "enableWrite", :port => port)
72
+ def enable_write port=-1
73
+ run(:func => "enableWrite", :port => port, :value => 1)
66
74
  end
67
75
 
68
76
  # Write disable port, disabling relay toggling
69
77
  # +port+ the port option, default is all
70
- def disable port=-1
71
- run(:func => "enableRead", :port => port)
78
+ def enable_read port=-1
79
+ run(:func => "enableRead", :port => port, :value => 1)
72
80
  end
73
81
 
74
82
  # Switch off, or disable power on a given port
@@ -85,6 +93,10 @@ module MFi
85
93
 
86
94
  private
87
95
 
96
+ def disconnect!
97
+ @ssh.close
98
+ end
99
+
88
100
  def run opts
89
101
  env = opts.map { |k,v| "#{k}=#{v}" }.join(" ")
90
102
  cmd = "#{env} cgi -q /usr/www/mfi/io.cgi"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mfi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Simpson
@@ -44,6 +44,7 @@ executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
+ - .gitignore
47
48
  - Gemfile
48
49
  - Gemfile.lock
49
50
  - README.md