brewer 0.0.43 → 0.0.45
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/brewer +1 -1
- data/brewer.gemspec +1 -1
- data/lib/brewer.rb +88 -15
- data/lib/settings.rb +13 -0
- 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: f16b7b9fb27e3bf8745e0f9ca0f676075dd61ec4
|
4
|
+
data.tar.gz: f666d434d21a5b920abdfc3919805b9cb2ec8bfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13fceb77a1f0bee56f8239218ab2461f89045ddf372f9b67304bbacc601bab59200acd7d1ce9b9dafd1c4cf6f6e0f7274813d4fcb91664f95646c0392fcd34e8
|
7
|
+
data.tar.gz: 5c92be2304da69a1f59209da50ccc03b76d8423c8698db9fad605a7dd550c54a676236ae7a2f8d4d63b57b5761fe86be477c6fb5e90285e33e7f2947a5f56b44
|
data/bin/brewer
CHANGED
data/brewer.gemspec
CHANGED
data/lib/brewer.rb
CHANGED
@@ -1,23 +1,26 @@
|
|
1
1
|
require_relative 'helpers'
|
2
2
|
require_relative 'adaptibrew'
|
3
|
+
require_relative 'settings'
|
3
4
|
|
4
5
|
include Helpers
|
5
6
|
|
6
7
|
class Brewer
|
7
8
|
|
8
9
|
attr_reader :base_path
|
9
|
-
attr_accessor :out, :log
|
10
|
+
attr_accessor :out, :log, :temps
|
10
11
|
|
11
12
|
def initialize
|
12
13
|
@base_path = Dir.pwd
|
13
14
|
# Output of adaptibrew
|
14
15
|
@out = []
|
15
16
|
@log = @base_path + '/logs/output'
|
17
|
+
@temps = {}
|
16
18
|
end
|
17
19
|
|
18
20
|
public
|
19
21
|
|
20
|
-
#
|
22
|
+
# Brewer methods ------------------------------------------------------
|
23
|
+
# general utilities for the brewer class
|
21
24
|
|
22
25
|
def wait(time=30)
|
23
26
|
sleep(time)
|
@@ -37,6 +40,8 @@ class Brewer
|
|
37
40
|
|
38
41
|
# Runs an adaptibrew script
|
39
42
|
# Output will be stored in @out
|
43
|
+
# you may see `echo` quite a bit. This will almost always be directly after calling a script
|
44
|
+
# It will be set to the output of the last script. I can't just return the output because i need to return self
|
40
45
|
def script(script, params=nil)
|
41
46
|
@out.unshift(`python #{@base_path}/adaptibrew/#{script}.py #{params}`.chomp)
|
42
47
|
self
|
@@ -50,16 +55,24 @@ class Brewer
|
|
50
55
|
self
|
51
56
|
end
|
52
57
|
|
58
|
+
# This lil' divider is default for large return blocks
|
59
|
+
def echo(string=nil)
|
60
|
+
if string == nil
|
61
|
+
return @out.first
|
62
|
+
end
|
63
|
+
string
|
64
|
+
end
|
65
|
+
|
53
66
|
|
54
|
-
# Adaptibrew methods
|
67
|
+
# Adaptibrew methods ----------------------------------------------
|
68
|
+
# for working with the rig
|
55
69
|
|
56
70
|
def pump(state=0)
|
57
71
|
if state == 1
|
58
|
-
|
72
|
+
script("set_pump_on")
|
59
73
|
else
|
60
|
-
|
74
|
+
script("set_pump_off")
|
61
75
|
end
|
62
|
-
script("set_pump_#{state_string}")
|
63
76
|
self
|
64
77
|
end
|
65
78
|
|
@@ -71,13 +84,18 @@ class Brewer
|
|
71
84
|
# Turns PID on or off, or gets state if no arg is provided
|
72
85
|
def pid(state="status")
|
73
86
|
if state == "status"
|
87
|
+
echo('----------')
|
74
88
|
script("is_pid_running")
|
75
|
-
puts
|
89
|
+
puts "PID is running? " + echo
|
90
|
+
sv.echo
|
91
|
+
pv.echo
|
76
92
|
end
|
77
93
|
|
78
94
|
if state == 1
|
79
95
|
script('set_pid_on')
|
80
96
|
puts "PID is now on"
|
97
|
+
pump(1)
|
98
|
+
puts "Pump is now on"
|
81
99
|
elsif state == 0
|
82
100
|
script("set_pid_off")
|
83
101
|
puts "PID is now off"
|
@@ -104,20 +122,57 @@ class Brewer
|
|
104
122
|
if temp
|
105
123
|
raise "Temperature input needs to be an integer" unless temp.is_a? Integer
|
106
124
|
script('set_sv', temp)
|
107
|
-
puts "SV set to #{temp}"
|
108
125
|
else
|
109
126
|
script('get_sv')
|
110
|
-
puts "SV is currently " + @out.first
|
111
127
|
end
|
112
128
|
self
|
113
129
|
end
|
114
130
|
|
115
|
-
|
131
|
+
def pv
|
132
|
+
script('get_pv')
|
133
|
+
self
|
134
|
+
end
|
135
|
+
|
136
|
+
def watch
|
137
|
+
until pv.out.first.to_i == sv.out.first.to_i do
|
138
|
+
wait(8)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# WaterVolInQuarts, GrainMassInPounds, GrainTemp, MashTemp
|
143
|
+
def get_strike_temp
|
144
|
+
print "Input amount of water in quarts: "
|
145
|
+
water = gets.chomp
|
116
146
|
|
147
|
+
print "Input amount of grain in lbs: "
|
148
|
+
grain = gets.chomp
|
149
|
+
|
150
|
+
print "Input current grain temp (#{pv.echo}): "
|
151
|
+
grain_temp = gets.chomp
|
152
|
+
if grain_temp == ""
|
153
|
+
grain_temp = pv.echo.to_i
|
154
|
+
end
|
155
|
+
|
156
|
+
print "Input desired mash temp (150): "
|
157
|
+
desired_mash_temp = gets.chomp
|
158
|
+
if desired_mash_temp == ""
|
159
|
+
desired_mash_temp = 150
|
160
|
+
end
|
161
|
+
@temps['desired_mash'] = desired_mash_temp
|
162
|
+
|
163
|
+
# this is where the magic happens
|
164
|
+
script('get_strike_temp', "#{water} #{grain} #{grain_temp} #{desired_mash_temp}")
|
165
|
+
@temps['strike_water_temp'] = @out.first.to_i
|
166
|
+
sv(echo.to_i)
|
167
|
+
puts "SV has been set to #{sv.echo} degrees"
|
168
|
+
end
|
169
|
+
|
170
|
+
# Master Procedures -----------------------------------------------------
|
171
|
+
# The main steps in the brewing proccess
|
117
172
|
def boot
|
118
173
|
# These are the states required for starting. Should be called on boot.
|
119
174
|
# Print PID status at end
|
120
|
-
pid(0).pump(0).relay(
|
175
|
+
pid(0).pump(0).relay($settings['rimsToMashRelay'], 1).all_relays_status.pid
|
121
176
|
|
122
177
|
@out.shift(4)
|
123
178
|
@out.unshift("Boot successful")
|
@@ -132,18 +187,36 @@ class Brewer
|
|
132
187
|
print "Is the return manifold in the mash tun? "
|
133
188
|
confirm ? nil : abort
|
134
189
|
|
135
|
-
relay(
|
136
|
-
puts "RIMS relay is now on"
|
190
|
+
relay($settings['rimsToMashRelay'], 1)
|
191
|
+
puts "RIMS-to-mash relay is now on"
|
137
192
|
|
138
193
|
pump(1)
|
139
194
|
puts "Pump is now on"
|
140
195
|
|
141
|
-
|
142
|
-
|
196
|
+
time = 30
|
197
|
+
puts "Waiting for #{time} seconds for strike water to start circulating"
|
198
|
+
puts "(ctrl-c to stop now)"
|
199
|
+
wait(time)
|
143
200
|
|
144
201
|
print "Is the strike water circulating well? "
|
145
202
|
confirm ? nil : abort
|
146
203
|
|
204
|
+
@temps['starting_strike_temp'] = pv.out.first.to_i
|
205
|
+
pv
|
206
|
+
puts "current strike water temp is #{echo}. Saved."
|
207
|
+
puts "Warning: if you exit this brewer shell, the strike water temp will be lost"
|
208
|
+
puts ""
|
209
|
+
puts "--- Calculate strike temp ---"
|
210
|
+
# this sets PID to strike temp
|
211
|
+
get_strike_temp
|
212
|
+
# turn on pid heater
|
213
|
+
# XXX: This?
|
214
|
+
pid(1)
|
215
|
+
|
216
|
+
# when strike temp is reached, ping
|
217
|
+
watch
|
218
|
+
ping("strike water is now at #{pv.echo} degrees")
|
219
|
+
|
147
220
|
self
|
148
221
|
end
|
149
222
|
|
data/lib/settings.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# This just parses the adaptibrew/settings.py
|
2
|
+
$settings = {}
|
3
|
+
|
4
|
+
File.open('adaptibrew/settings.py') do |file|
|
5
|
+
file.each_line do |line|
|
6
|
+
if line.match(/=/) == nil
|
7
|
+
next
|
8
|
+
end
|
9
|
+
key, value = line.match(/(.+)=(.+)/).captures
|
10
|
+
value.slice!(/#.+/)
|
11
|
+
$settings[key.strip.chomp] = value.strip.chomp
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brewer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.45
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Sweeney
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- lib/adaptibrew.rb
|
197
197
|
- lib/brewer.rb
|
198
198
|
- lib/helpers.rb
|
199
|
+
- lib/settings.rb
|
199
200
|
- lib/slacker.rb
|
200
201
|
- spec/adaptibrew_spec.rb
|
201
202
|
- spec/brewer_spec.rb
|