mfi 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +9 -9
- data/Rakefile +18 -7
- data/lib/mfi.rb +1 -1
- data/lib/mpower.rb +16 -4
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f5d5816c63b83b138ebed2c36a15e508c201ad7
|
4
|
+
data.tar.gz: 2b114ec46eb7cea740801a1b4aa0c652297dd296
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9274c5435c0eb10bd153bf0cbbc6c5d7134bd0aa3ed51cf5a52a0a56513e294308f61b4adeffc9f18618d0b4e080aa4cf955eb35ca77537f9753158be2ad5880
|
7
|
+
data.tar.gz: 8f521bec537ca166d7a8b9352756108181511a1fe66dc98fdb03883bed897adea5d845cdddb186bfbf100d84bd7a68552a54ff60399609f3b573804efff52c67
|
data/.gitignore
ADDED
@@ -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
|
-
|
16
|
+
mpower = MFi::MPower.new(
|
17
17
|
:host => "hostname",
|
18
18
|
:user => "username",
|
19
19
|
:pass => "password"
|
20
20
|
)
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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.
|
17
|
-
|
18
|
-
|
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.
|
24
|
-
|
32
|
+
@mpower.exec { |m|
|
33
|
+
m.switch_off
|
34
|
+
}
|
25
35
|
end
|
26
36
|
|
27
37
|
task :switch_on => :env do
|
28
|
-
@mpower.
|
29
|
-
|
38
|
+
@mpower.exec { |m|
|
39
|
+
m.switch_on
|
40
|
+
}
|
30
41
|
end
|
data/lib/mfi.rb
CHANGED
data/lib/mpower.rb
CHANGED
@@ -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
|
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
|
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.
|
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
|