HOWTO - Make a BrewPi Fermentation Controller For Cheap

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Status
Not open for further replies.
I'm pretty sure its the wiring, I have a 4.7K resistor in the it.

I am just looking to test the sensors and collect some data to start (fridge/beer control off) is there a simple schematic you are aware of that would illustrate that? I've tried a simplified version of the basic wiring from Fuzze's post.

It really doesn't get any easier than the 2 pictures on the first page of this thread.
All you need for testing is +5v, ground, and data.
 
These builds are incredible and I am working on mine now, unfortunately I am having trouble getting my sensors recognized by brewpi. Can anyone point me in the right direction? All that shows up for my RevC devices are digital pins with no device showing for temp sensor.
[...]

What colors are the wires on your sensors? If they're not red/white/black - which have been consistently pwr/signal/gnd - perhaps what you think is pwr/signal/gnd, isn't.

The red/green/yellow wiring scheme has been all over the map, for example...

Cheers!
 
What colors are the wires on your sensors? If they're not red/white/black - which have been consistently pwr/signal/gnd - perhaps what you think is pwr/signal/gnd, isn't.

The red/green/yellow wiring scheme has been all over the map, for example...

Cheers!


Mine were: Output lead:red (VCC), yellow(DATA) , black(GND)
 
I've got some where green is 5v yellow is ground and red is data... So I wouldn't just go with what seems logical.
 
My sensors are red, green, and yellow. I've had them wired up red(vcc), green (data), yellow (ground). I've even swapped the configuration at the risk of frying one.

I tried wiring up a DH11 with markings for inputs, no luck there. I have these wired into my breadboard likely in the wrong way
 
Bow-chicka-wow-wow...

After much wrangling, finagling, shenanigans, and all sorts of other psychosis, mine is finally up and running. Snagged a dual volt buck converter that outputs 5v and 12v from ebay, so everything is run from one plug coming in via a standard PC type connector, giving the Arduino it's own power should something happen to the Pi. Then the same connectors disappear off to control the heating and cooling. Colour coded them, because I tend to drink a lot and can't really see the etched labels anyways. And, of course, had to go get myself a custom laser-etched acrylic case to house it in. Gratuitous shots of front and back.

MASSIVE thanks to the community, especially Fuzzy and daytrippr for coming up with the LCD shield (and doomy for the nice addition of the transistor to shut off the backlight after 10 mins.)

Custom plexiglass case??? Who made that?
 
Hey folks, got my brewpi up and running thanks to all the great info here. I'm wondering if there is a setting to make the web interface graph auto refresh so I don't have to keep hitting the button?

Kindly
Jeff

EDIT: Solved kinda. I just downloaded an extension for chrome that will refresh my tab every x amount of time. Cheers.

BrewPi reporting for duty .png
 
The problem with auto refreshing the graph is, what if you are zooming in trying to read a specific part of the graph and ban it auto refreshes on you.
 
My sensors are red, green, and yellow. I've had them wired up red(vcc), green (data), yellow (ground). I've even swapped the configuration at the risk of frying one.

I tried wiring up a DH11 with markings for inputs, no luck there. I have these wired into my breadboard likely in the wrong way

Take the wires on your probe and get your multimeter. Set it to ohms and place your common lead on the wire you think is ground and test the other 2 wires 1 at a time. If you get an ohm reading then you know that is ground. If not the move your common wire to the next wire and try again. Once you get a reading (usually between 0.60 and 0.85 ohms) you can be sure that whatever wire your common lead is on is ground. Then its a 50/50 chance with the other 2.
 
Custom plexiglass case??? Who made that?

I designed it (well, was able to get the EPS files from the guy who did the official BrewPi case so used his joining system), and then had a company here in the Bay Area laser it out. Was actually not that expensive, an enclosure the same size would have been around $25, and this was just $10 more (since I was able to go pick it up) and would have had to cut everything out myself (in otherwords, hack the everloving crap out of a plastic box!)
 
So after much arseing about I've managed to get 2 knock off Chinese arduinos to take the hex code for brewpi. My question is when updates happen on the brewpi do new hex files get uploaded Or does the hex file pretty much stay as it is?

The reason I ask is that I could only upload the hex file by choosing the hex file as uno and the board type as Leonardo (despite it being sold as an uno)
 
BrewPi development is pretty much halted at this point as he moves his efforts towards the Spark as i understand it. That said there isnt really anything that i can think of that needs to be fixed, its a pretty solid bit of software.

That said most changes are likely to be on the RPI side not the Arduino at this point.
 
Hey all,

Thanks for all of the help getting this set up to make it a pretty easy process for me. I did notice a couple of things as i put it together and wanted to add my 2 cents where applicable.

First off the "Publicly accessible BrewPi" code linked in the first post appears to need some updating. I found that it would never actually display any graphs or fill out the LCD display. so I dug in and updated the code provided by FuzzeWuzze. See below:

  1. Goto /var/www
  2. Code:
    sudo mv index.php admin.php
    (this moves the default brewpi webpage to a new location)
  3. Create a file with vi or nano called index.php and add the contents of the code block below (Mostly fixes in the Javascript section of the file)

Code:
<?php
/* Copyright 2012 BrewPi/Elco Jacobs.
* This file is part of BrewPi.

* BrewPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.

* BrewPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License
* along with BrewPi. If not, see <http://www.gnu.org/licenses/>.
*/

// load default settings from file
$defaultSettings = file_get_contents('defaultSettings.json');
if($defaultSettings == false){
		die("Cannot open default settings file: defaultSettings.json");
}
$settingsArray = json_decode(prepareJSON($defaultSettings), true);
if(is_null($settingsArray)){
		die("Cannot decode defaultSettings.json");
}
// overwrite default settings with user settings
if(file_exists('userSettings.json')){
		$userSettings = file_get_contents('userSettings.json');
		if($userSettings == false){
		die("Error opening settings file userSettings.json");
		}
		$userSettingsArray = json_decode(prepareJSON($userSettings), true);
		if(is_null($settingsArray)){
		die("Cannot decode userSettings.json");
		}
		foreach ($userSettingsArray as $key => $value) {
		$settingsArray[$key] = $userSettingsArray[$key];
		}
}

$beerName = $settingsArray["beerName"];
$tempFormat = $settingsArray["tempFormat"];
$profileName = $settingsArray["profileName"];
$dateTimeFormat = $settingsArray["dateTimeFormat"];
$dateTimeFormatDisplay = $settingsArray["dateTimeFormatDisplay"];

function prepareJSON($input) {
//This will convert ASCII/ISO-8859-1 to UTF-8.
//Be careful with the third parameter (encoding detect list), because
//if set wrong, some input encodings will get garbled (including UTF-8!)
$input = mb_convert_encoding($input, 'UTF-8', 'ASCII,UTF-8,ISO-8859-1');

//Remove UTF-8 BOM if present, json_decode() does not like it.
if(substr($input, 0, 3) == pack("CCC", 0xEF, 0xBB, 0xBF)) $input = substr($input, 3);

return $input;
}

?>

<!DOCTYPE html >
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>BrewPi reporting for duty!</title>
		<link type="text/css" href="css/redmond/jquery-ui-1.10.3.custom.css" rel="stylesheet" />
		<link type="text/css" href="css/style.css" rel="stylesheet"/>
	</head>
<body>
	<div id="beer-panel" class="ui-widget ui-widget-content ui-corner-all">
		<?php
			include 'PublicBeerPanel.php';
		?>
	</div>

	<!-- Load scripts after the body, so they don't block rendering of the page -->
	<!-- <script type="text/javascript" src="js/jquery-1.11.0.js"></script> -->
		<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
		<script type="text/javascript" src="js/jquery-ui-1.10.3.custom.min.js"></script>
		<script type="text/javascript" src="js/jquery-ui-timepicker-addon.js"></script>
		<script type="text/javascript" src="js/spin.js"></script>
		<script type="text/javascript" src="js/dygraph-combined.js"></script>
		<script type="text/javascript">
			// pass parameters to JavaScript
			window.tempFormat = <?php echo "'$tempFormat'" ?>;
			window.beerName = <?php echo "\"$beerName\""?>;
			window.profileName = <?php echo "\"$profileName\""?>;
			window.dateTimeFormat = <?php echo "\"$dateTimeFormat\""?>;
			window.dateTimeFormatDisplay = <?php echo "\"$dateTimeFormatDisplay\""?>;
		</script>
		<script type="text/javascript" src="js/main.js"></script>
		<script type="text/javascript" src="js/device-config.js"></script>
		<script type="text/javascript" src="js/control-panel.js"></script>
		<script type="text/javascript" src="js/maintenance-panel.js"></script>
		<script type="text/javascript" src="js/beer-chart.js"></script>
		<script type="text/javascript" src="js/profile-table.js"></script>
	</body>
</html>
Next create another new file with vi or nano called PublicBeerPanel.php with these contents (Fixes display of BrewName variable with decoded URL formatting)
Code:
<?php
/* Copyright 2012 BrewPi/Elco Jacobs.
* This file is part of BrewPi.

* BrewPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.

* BrewPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License
* along with BrewPi. If not, see <http://www.gnu.org/licenses/>.
*/
?>
<div id="top-bar" class="ui-widget ui-widget-header ui-corner-all">
	<div id="lcd" class="lcddisplay"><span class="lcd-text">
		<span class="lcd-line" id="lcd-line-0">Live LCD waiting</span>
		<span class="lcd-line" id="lcd-line-1">for update from</span>
		<span class="lcd-line" id="lcd-line-2">script...</span>
		<span class="lcd-line" id="lcd-line-3"></span>
	</div>
	<div id="logo-container">
		<img src="brewpi_logo.png">
		<div id=beer-name-container>
			<span>Fermenting: </span><span><?php echo urldecode($beerName);?></span>
			<span class="data-logging-state"></span>
		</div>
	</div>
</div>
<div class="chart-container">
	<div id="curr-beer-chart-label" class="beer-chart-label"></div>
	<div id="curr-beer-chart" class="beer-chart" style="width:815px; height:390px"></div>
		<div id="curr-beer-chart-controls" class="beer-chart-controls" style="display: none">
		<div id="curr-beer-chart-buttons" class="beer-chart-buttons">
			<div class="beer-chart-legend-row">
					<button class="refresh-curr-beer-chart" title="Refresh"></button>
				<div class="beer-chart-legend-label">Refresh Chart</div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row last">
					<button class="chart-help" title="Help"></button>
				<div class="beer-chart-legend-label">Help</div>
				<br class="crystal" />
			</div>
			</div>
		<div id="curr-beer-chart-legend" class="beer-chart-legend">
			<div class="beer-chart-legend-row time">
				<div class="beer-chart-legend-time">Date/Time</div>
			</div>
			<div class="beer-chart-legend-row beerTemp">
				<div class="toggle beerTemp" onClick="toggleLine(this)"></div>
				<div class="beer-chart-legend-label" onClick="toggleLine(this)">Beer Temp</div>
				<div class="beer-chart-legend-value">--</div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row beerSet">
				<div class="toggle beerSet" onClick="toggleLine(this)"></div>
				<div class="beer-chart-legend-label" onClick="toggleLine(this)">Beer Setting</div>
				<div class="beer-chart-legend-value">--</div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row fridgeTemp">
				<div class="toggle fridgeTemp" onClick="toggleLine(this)"></div>
				<div class="beer-chart-legend-label" onClick="toggleLine(this)">Fridge Temp</div>
				<div class="beer-chart-legend-value">--</div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row fridgeSet">
				<div class="toggle fridgeSet" onClick="toggleLine(this)"></div>
				<div class="beer-chart-legend-label" onClick="toggleLine(this)">Fridge Setting</div>
				<div class="beer-chart-legend-value">--</div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row roomTemp">
				<div class="toggle roomTemp" onClick="toggleLine(this)"></div>
				<div class="beer-chart-legend-label" onClick="toggleLine(this)">Room Temp</div>
				<div class="beer-chart-legend-value">--</div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row state">
				<div class="state-indicator"></div>
				<div class="beer-chart-legend-label"></div>
				<br class="crystal" />
			</div>
			<div class="beer-chart-legend-row annotation last">
				<div class="toggleAnnotations dygraphDefaultAnnotation" onClick="toggleAnnotations(this)">A</div>
				<div class="beer-chart-legend-label" onClick="toggleAnnotations(this)">Annotations</div>
				<br class="crystal" />
			</div>
		</div>
	</div>
</div>
<div id="chart-help-popup" title="Beer graph help" style="display: none">
	<p>This chart displays all temperatures and state information logged by BrewPi.
	Not all temperatures are shown by default, but you can toggle them with the colored dots.</p>
	<p>Click and drag left or right to zoom horizontally, click and drag up or down to zoom vertically. Double click to zoom out.
	When zoomed in, you can hold shift to pan around. On your phone or tablet you can just pinch to zoom.</p>
	<p>The state information is shown as colored bars at the bottom of the graph, explanation below.</p>
	<div class="state-info"><span class="state-color state-idle"></span><span class="state-name">Idle</span>
		<span class="state-explanation">
			No actuator is active.
		</span>
	</div>
	<div class="state-info">
		<span class="state-color state-cooling"></span><span class="state-name">Cooling</span>
		<span class="state-explanation">
		The fridge is cooling!
		</span>
	</div>
	<div class="state-info"><span class="state-color state-heating"></span><span class="state-name">Heating</span>
		<span class="state-explanation">
		The heater is heating!
		</span>
	</div>
	<div class="state-info"><span class="state-color state-waiting-to-cool"></span><span class="state-name">Waiting to cool</span>
		<span class="state-explanation">
		The fridge is waiting to start cooling. It has to wait because BrewPi has just cooled or heated. There is a a minimum time for between cool cycles and a minimum time for switching from heating to cooling.
		</span>
	</div>
	<div class="state-info"><span class="state-color state-waiting-to-heat"></span><span class="state-name">Waiting to heat</span>
		<span class="state-explanation">
		Idem for heating. There is a a minimum time for between heat cycles and a minimum time for switching from cooling to heating.
		</span>
	</div>
	<div class="state-info"><span class="state-color state-cooling-min-time"></span><span class="state-name">Cooling minimum time</span>
		<span class="state-explanation">
		There is a minimum on time for each cool cycle. When the fridge hits target but has not cooled the minimum time, it will continue cooling until the minimum time has passed.
		</span>
	</div>
	<div class="state-info"><span class="state-color state-heating-min-time"></span><span class="state-name">Heating minimum time</span>
		<span class="state-explanation">
		There is a minimum on time for each heat cycle too. When the fridge hits target but has not heated the minimum time, it will continue heating until the minimum time has passed.
		</span>
	</div>
	<div class="state-info"><span class="state-color state-waiting-peak"></span><span class="state-name">Waiting for peak detect</span>
		<span class="state-explanation">
		BrewPi estimates fridge temperature overshoot to be able to turn off the actuators early. To adjust the estimators, it has to detect the peaks in fridge temperature.
		When BrewPi would be allowed to heat/cool by the time limits but no peak has been detected yet for previous cycle, it waits in this state for a peak.
		</span>
	</div>
</div>

Secondly I worked out a way host both the Password Protected BrewPi site as well as the one with all of the configurable buttons removed with only a few minor changes. See Below:

  • Putty/SSH into your BrewPi system(or keyboard if its hooked up to a monitor).
  • Run the following commands to enable htaccess
  • cd /etc/apache2/sites-available
  • sudo nano default
  • change file to look like this where under Directory /var/www there is AllowOverride All
    Code:
    <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            ServerName BrewPi
    
            DocumentRoot /var/www
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www/>
                    DirectoryIndex index.php
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from all
            </Directory>
    
            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
    
            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel warn
    
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
  • Now its time to restart apache:
  • cd /usr/sbin
  • sudo apache2ctl -k graceful
  • Go to /var/www directory
  • Create a file using vi editor called .htaccess and inside of it put the following, modify the first line where it is bold and replace it with what you plan to call your Private PHP file.
    Code:
    <FilesMatch "admin.php">
    Allow from all
    authuserFile /var/www/private/.htpasswd
    AuthName "YOUR LOGIN HERE"
    AuthType Basic
    <Limit GET POST>
    require valid-user
    </Limit>
    </FilesMatch>
    <FilesMatch "beer-panel.php|config.php|configuration.php|control-panel.php|maintenance-panel.php|previous_beers.php|program_arduino.php|s ave_beer_profile.php|start_script.php">
    Order deny,allow
    Deny from All
    Allow from 192.168.1.
    </FilesMatch>
  • Edit the last allow line that says Allow from 192.168.1 to match up with whatever your local LAN IP address scheme is. You dont need wildcards or subnet masks or anything else.
  • Create a directory called private(to store the above .htpasswd file), and go into it.
  • Type htpasswd -c .htpasswd <UserName>, it will pop up asking you for a password, and make you repeat it.
  • Your done! If you try going to Http://YourBrewPiWebSite.com/admin.php it will now ask you for a password and take you to the "Full BrewPi site". But if you go to http://YourBrewPiWebSite.com it will take you to the "Public Site" without the need for a password.
  • Also make sure obviously that if you want to access this from the external world that your RPI is port forwarding properly through your router.

I was tyring to make my index.php password protected (didn't want to create two version of the files as above). I created an .htaccess and .htpasswd files as above. Then when I went to the site I got the authorization error :

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

Does not give a pop up window to enter the username/password.

Anyone have any idea how to rectify this?

Thanks
 
Has anyone come across brewpi struggling with three temp probes attached?

The 3 probes all work individually and in pairs (I.e room:fridge, beer:fridge, room:beer and beer:fridge) but as soon as try room:beer:fridge I get null read outs any ideas?
 
Never had a problem like that. Are you running the probes on 5V - or 3.3?

I'd verify the value of the pull-up resistor, should be 4.7K, it can go lower to like 1K if a stiffer pull-up is needed.

Otherwise, does it matter which is the third probe? Does it work fine with any two probes?

Cheers!
 
Miki, I actually had the same issue. Have three ports in mine (third not needed, dunno why) and I included a sensor in the box itself to act as "room". Room worked without issue, as it did when beer OR chamber were attached, but as soon as I attached both, room reverted to null. Uninstalled it, and now BP can't see it at all. (Haven't tried removing a probe to see if that makes it reappear).

Odd. It's definitely a 4.7k resistor on there. (Followed trippr's shield design)
 
It's using the lcd shield that you design day_trippr running off 5v and definitely 4.7k resistor I've tried every permutation to try and find one that is causing problems but they all work with each other apart from when they're all together. My probes have turned into children!
 
As a digital hardware designer since 1973 (yeah, I'm old, but I'm ok with it ;)) and particularly one who has designed systems that meet "six nines" wrt availability, I shudder at the notion of non-determinism. It's just not my thing :)

Have you tried hitting it with the Big Hammer: remove all three probes from the Installed Devices list, reboot the system, then re-enter all three probes?

Cheers!
 
Sadly yes I have originally I thought it might be down to a short somewhere at one of the probes but having each probe on each socket it can't be that.

The irritating thing is that I actually do want to monitor the room temp as I'm using that room to condition as well.
 
Problem solved it would appear it just needed the one last unplug and plug back in again and it all seems to be working!
 
So my brewpi was getting unreliable.. I thought my UNO might be getting flaky but what I found was that the SD card is getting full - so I deleted all of the old brew logs off of it and made some room and all is happy again. It got me thinking though, I'm not using X Server or the whole GUI interface on Raspian - what packages can I remove? I'm not linux guru but I know my way around the shell a bit..
 
I'm sure this has problem been addressed numerous times in this thread. Could I use my old tablet that I can't even use anymore in place of the Raspberrypi?

Again, please forgive me if I'm asking a question that has been answered already. If you could provide me with a few links to where the answers are I would greatly appreciate that!

Cheers!
 
Code:
sudo apt-get autoclean

got me quite a bit of room...

You can safely get a whole lot more using just "clean"

In any case, I'm wondering what size SD card is running out of room when it's pretty much dedicated to brew stuff. I'm running 16GB cards and space is the least of their problem. Lifespan might be an issue - time will tell if the one card that wore out is an indicator of an impending trend - but not space...

Cheers!
 
It's possible to do this all on an android. The hard part is getting and keeping an apache server running.
 
What kind of tablet? And can you install Debian on it?

Cheers!

I think I'm out of luck...it's an old Viewsonic GTab and all the searching I've done seems to show that it isn't really possible to install Debian on it. Touchscreen won't work, wireless may or may not work etc...
 
I just wanted say major thanks for all the ideas and help on this thread. My chamber build is finally complete! Here's some BrewPi porn for y'all :D

20150510_114627 - Copy.jpg


20150510_114637 - Copy.jpg
 
So are you using the reptile tape as an radiant heat source? Or is it intended to be wrapped around the carboy?
 
Its a coiled fermwrap taped and tucked in the back corner. I ordered one of those ceramic heaters but it was way too much in this small chamber. Fermwrap works like a charm though
 
So my brewpi was getting unreliable.. I thought my UNO might be getting flaky but what I found was that the SD card is getting full - so I deleted all of the old brew logs off of it and made some room and all is happy again. It got me thinking though, I'm not using X Server or the whole GUI interface on Raspian - what packages can I remove? I'm not linux guru but I know my way around the shell a bit..

I'm using a 4gb card. I'm hoping I don't run out of space. I guess I should keep an eye on the brew logs.
 
You can safely get a whole lot more using just "clean"

In any case, I'm wondering what size SD card is running out of room when it's pretty much dedicated to brew stuff. I'm running 16GB cards and space is the least of their problem. Lifespan might be an issue - time will tell if the one card that wore out is an indicator of an impending trend - but not space...

Cheers!

I'll have to look - I think a 8gb - but imaged from a 4gb image and the partitions are set to 4gb total (IIRC). I'll have to do some reading on parted and resize the partition.

But it the question still is what can I get rid of? I'm not running the X-server.. I'm in between brews, maybe it's time to regenerate my image and experiment with package removal.
 
You should be able to go into raspi setup and expand the file system
 
Day_trippr youre a legend! After i managed to convert my one brewpi to Bluetooth using your notes, i ordered some more Bluetooth modules and while I'm waiting for them to come i went on to get a multi brewpi setup using usb as an interim. It's actually working! Can't wait till the other modules come. They'll be running my fermenters and keezers. Even been using it to log mash temp. They're all running off my Debian wheezy pc.. stoked! Thanks
 
What's the best way to test the relays? I have my device all assembled, just want to test all the sensors and relays.
 
Is it hooked up to a fridge? Just set the fridge constant and let it roll
 
Status
Not open for further replies.
Back
Top