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