mfi 0.9.0 → 0.9.1

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 (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