brewer 0.0.60 → 0.0.70
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/brewer.gemspec +1 -1
- data/lib/brewer.rb +196 -15
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c655c6d8ba7ce57f7c070c08ab1e91522bfbaca
|
4
|
+
data.tar.gz: 00e256b45d4a5c69d90f162e72a4204a00c8fbcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a1c5a24b3fcd10c61699c07581e0e9a61d59b26ddc18f17e413f4998a2e28b2444d181655ce2ad73e61b2d267085eb5603f0cfbbcc205815a997c63a5faa0ac
|
7
|
+
data.tar.gz: 012545ecda2b43f92014e6bbc226c6ec767e0461639a192f9220803f70d5ea8eeb4239fab439146e80683308ebc5c1445b497a36c0cbdeeec334177fe66cc1f7
|
data/brewer.gemspec
CHANGED
data/lib/brewer.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# TODO: Test monitor method
|
1
2
|
require_relative 'helpers'
|
2
3
|
require_relative 'adaptibrew'
|
3
4
|
require_relative 'settings'
|
@@ -115,6 +116,7 @@ class Brewer
|
|
115
116
|
|
116
117
|
def relay(relay, state)
|
117
118
|
script("set_relay", "#{relay} #{state}")
|
119
|
+
wait(10)
|
118
120
|
end
|
119
121
|
|
120
122
|
def all_relays_status
|
@@ -133,13 +135,20 @@ class Brewer
|
|
133
135
|
|
134
136
|
# :nocov:
|
135
137
|
def watch
|
136
|
-
until pv.
|
138
|
+
until pv.to_f >= sv.to_f do
|
137
139
|
wait(8)
|
138
140
|
end
|
139
141
|
true
|
140
142
|
end
|
141
143
|
# :nocov:
|
142
144
|
|
145
|
+
def monitor
|
146
|
+
while true do
|
147
|
+
ping("#{puts pid}")
|
148
|
+
wait(10)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
143
152
|
# WaterVolInQuarts, GrainMassInPounds, GrainTemp, MashTemp
|
144
153
|
# :nocov:
|
145
154
|
def get_strike_temp
|
@@ -169,66 +178,238 @@ class Brewer
|
|
169
178
|
end
|
170
179
|
# :nocov:
|
171
180
|
|
181
|
+
# Relays ----------
|
182
|
+
def rims_to(location)
|
183
|
+
if location == "mash"
|
184
|
+
# we ended up swapping this relay, so the name is backwards
|
185
|
+
relay($settings['rimsToMashRelay'], 0)
|
186
|
+
elsif location == "boil"
|
187
|
+
relay($settings['rimsToMashRelay'], 1)
|
188
|
+
end
|
189
|
+
true
|
190
|
+
end
|
191
|
+
|
192
|
+
def hlt_to(location)
|
193
|
+
if location == "mash"
|
194
|
+
relay($settings['spargeToMashRelay'], 0)
|
195
|
+
elsif location == "boil"
|
196
|
+
relay($settings['spargeToMashRelay'], 1)
|
197
|
+
end
|
198
|
+
true
|
199
|
+
end
|
200
|
+
|
201
|
+
def hlt(state)
|
202
|
+
if state == "open"
|
203
|
+
relay($settings['spargeRelay'], 1)
|
204
|
+
elsif state == "close"
|
205
|
+
relay($settings['spargeRelay'], 0)
|
206
|
+
end
|
207
|
+
true
|
208
|
+
end
|
209
|
+
|
172
210
|
# Master Procedures -----------------------------------------------------
|
173
211
|
# The main steps in the brewing proccess
|
174
212
|
def boot
|
175
213
|
# These are the states required for starting. Should be called on boot.
|
176
214
|
# Print PID status at end
|
215
|
+
ping("booting...")
|
177
216
|
pid(0)
|
178
217
|
pump(0)
|
179
|
-
|
218
|
+
rims_to('mash')
|
219
|
+
hlt_to('mash')
|
180
220
|
all_relays_status
|
181
221
|
puts pid
|
182
222
|
|
183
223
|
clear
|
184
224
|
puts "Boot successful!"
|
185
|
-
@out.unshift("successful boot")
|
225
|
+
@out.unshift("successful boot at #{Time.now}")
|
226
|
+
ping("🍺 boot successful 🍺")
|
186
227
|
true
|
187
228
|
end
|
188
229
|
|
189
230
|
# :nocov:
|
190
231
|
def heat_strike_water
|
232
|
+
puts "heat-strike-water procedure started"
|
233
|
+
# Confirm strike water is in the mash tun
|
191
234
|
print "Is the strike water in the mash tun? "
|
235
|
+
# -> response
|
192
236
|
confirm ? nil : abort
|
193
237
|
|
238
|
+
# confirm return manifold is in the mash tun
|
194
239
|
print "Is the return manifold in the mash tun? "
|
240
|
+
# -> response
|
241
|
+
confirm ? nil : abort
|
242
|
+
|
243
|
+
print "Is the mash tun valve open? "
|
195
244
|
confirm ? nil : abort
|
196
245
|
|
197
|
-
relay
|
246
|
+
# confirm RIMS relay is on
|
247
|
+
rims_to('mash')
|
198
248
|
puts "RIMS-to-mash relay is now on"
|
199
249
|
|
250
|
+
# turn on pump
|
200
251
|
pump(1)
|
201
252
|
puts "Pump is now on"
|
202
253
|
|
254
|
+
# wait ~30 seconds
|
203
255
|
print "How long do you want to wait for the water to start circulating? (30) "
|
204
256
|
time = gets.chomp
|
205
257
|
if time == ""
|
206
258
|
time = 30
|
207
259
|
end
|
208
|
-
|
209
260
|
puts "Waiting for #{time} seconds for strike water to start circulating"
|
210
|
-
puts "(ctrl-c to
|
261
|
+
puts "(ctrl-c to exit proccess now)"
|
211
262
|
wait(time.to_i)
|
212
263
|
|
264
|
+
# confirm that strike water is circulating well
|
213
265
|
print "Is the strike water circulating well? "
|
266
|
+
# -> response
|
214
267
|
confirm ? nil : abort
|
215
268
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
puts ""
|
220
|
-
puts "--- Calculate strike temp ---"
|
221
|
-
# this sets PID to strike temp
|
269
|
+
|
270
|
+
# calculate strike temp & set PID to strike temp
|
271
|
+
# this sets PID SV to calculated strike temp automagically
|
222
272
|
get_strike_temp
|
223
|
-
# turn on
|
273
|
+
# turn on RIMS heater
|
224
274
|
pid(1)
|
225
275
|
|
226
|
-
#
|
276
|
+
# measure current strike water temp and save
|
277
|
+
@temps['starting_strike_temp'] = pv.to_i
|
278
|
+
puts "current strike water temp is #{pv}. Saved."
|
279
|
+
puts "Heating to #{sv}"
|
280
|
+
|
281
|
+
ping("Strike water beginning to heat. This may take a few minutes.")
|
282
|
+
|
283
|
+
# when strike temp is reached, ping slack
|
227
284
|
watch
|
228
|
-
ping("
|
285
|
+
ping("Strike water heated to #{pv}. Maintaining temperature.")
|
286
|
+
ping("Next step: dough in")
|
287
|
+
puts "Next step: dough in"
|
288
|
+
puts "command: brewer.dough_in"
|
229
289
|
|
230
290
|
true
|
231
291
|
end
|
232
292
|
# :nocov:
|
233
293
|
|
294
|
+
def dough_in
|
295
|
+
ping("dough-in procedure started")
|
296
|
+
puts "dough-in procedure started"
|
297
|
+
# turn pump off
|
298
|
+
# turn PID off
|
299
|
+
pump(0)
|
300
|
+
ping("Ready to dough in")
|
301
|
+
puts "Ready to dough in"
|
302
|
+
|
303
|
+
print "Confirm when you're done with dough-in (y): "
|
304
|
+
confirm ? nil : abort
|
305
|
+
|
306
|
+
ping("next step: mash")
|
307
|
+
puts "Next step: mash"
|
308
|
+
puts "command: brewer.mash"
|
309
|
+
# pour in grain
|
310
|
+
true
|
311
|
+
end
|
312
|
+
|
313
|
+
def mash
|
314
|
+
print "Enter mash temperature (#{@temps['desired_mash'].to_s} F): "
|
315
|
+
temp = gets.chomp
|
316
|
+
|
317
|
+
if temp != ""
|
318
|
+
@temps['desired_mash'] = temp.to_i
|
319
|
+
end
|
320
|
+
|
321
|
+
sv(@temps['desired_mash'])
|
322
|
+
|
323
|
+
print "Enter mash time in seconds (3600 seconds for 1 hour). This timer will start once mash temp has been reached: "
|
324
|
+
mash_time_input = gets.chomp
|
325
|
+
|
326
|
+
puts "This will take a while. You'll get a slack message next time you need to do something."
|
327
|
+
ping("Mash started. This will take a while. You'll get a slack message next time you need to do something.")
|
328
|
+
|
329
|
+
if mash_time_input == ""
|
330
|
+
mash_time = 3600
|
331
|
+
else
|
332
|
+
mash_time = mash_time_input.to_i
|
333
|
+
end
|
334
|
+
|
335
|
+
rims_to('mash')
|
336
|
+
|
337
|
+
pump(1)
|
338
|
+
pid(1)
|
339
|
+
|
340
|
+
watch
|
341
|
+
ping("Mash temp (#{pv} F) reached. Starting timer for #{mash_time} seconds. You'll get a slack message next time you need to do something.")
|
342
|
+
puts "Mash temp (#{pv} F) reached. Starting timer for #{mash_time} seconds. You'll get a slack message next time you need to do something."
|
343
|
+
wait(mash_time)
|
344
|
+
ping("🍺 Mash complete 🍺. Check for starch conversion. Next step: mashout")
|
345
|
+
puts "Mash complete"
|
346
|
+
puts "Check for starch conversion"
|
347
|
+
puts "next step: mashout"
|
348
|
+
puts "command: brewer.mashout"
|
349
|
+
end
|
350
|
+
|
351
|
+
def mashout
|
352
|
+
puts "mashout procedure started"
|
353
|
+
|
354
|
+
print "Enter mashout temp (172 F): "
|
355
|
+
mashout_temp_input = gets.chomp
|
356
|
+
|
357
|
+
ping("Start heating sparge water")
|
358
|
+
|
359
|
+
if mashout_temp_input == ""
|
360
|
+
mashout_temp = 172.0
|
361
|
+
else
|
362
|
+
mashout_temp == mashout_temp_input.to_f
|
363
|
+
end
|
364
|
+
|
365
|
+
sv(mashout_temp)
|
366
|
+
|
367
|
+
pump(1)
|
368
|
+
pid(1)
|
369
|
+
|
370
|
+
ping("Heating to #{sv}... this could take a few minutes.")
|
371
|
+
watch
|
372
|
+
ping("Mashout temperature (#{pv}) reached. Mashout complete.")
|
373
|
+
end
|
374
|
+
|
375
|
+
def sparge
|
376
|
+
print "Is the sparge water heated to the correct temperature? "
|
377
|
+
confirm ? nil : abort
|
378
|
+
|
379
|
+
hlt_to('mash')
|
380
|
+
hlt('open')
|
381
|
+
|
382
|
+
puts "Waiting for 30 seconds. Regulate sparge balance."
|
383
|
+
puts "(ctrl-c to abort proccess)"
|
384
|
+
wait(30)
|
385
|
+
|
386
|
+
rims_to('boil')
|
387
|
+
pump(1)
|
388
|
+
|
389
|
+
ping("Please check the sparge balance and ignite boil tun burner")
|
390
|
+
|
391
|
+
puts "Waiting until intervention to turn off pump (y): "
|
392
|
+
confirm ? nil : abort
|
393
|
+
|
394
|
+
pid(0)
|
395
|
+
pump(0)
|
396
|
+
|
397
|
+
hlt('close')
|
398
|
+
|
399
|
+
ping("Sparge complete")
|
400
|
+
end
|
401
|
+
|
402
|
+
def top_off
|
403
|
+
hlt_to('boil')
|
404
|
+
|
405
|
+
hlt('open')
|
406
|
+
|
407
|
+
print "waiting for intervention to turn off hlt (y): "
|
408
|
+
confirm ? nil : abort
|
409
|
+
|
410
|
+
hlt('close')
|
411
|
+
|
412
|
+
ping('Topping off completed')
|
413
|
+
end
|
414
|
+
|
234
415
|
end
|