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.
Click on maintenance panel, then advanced settings. In the lower window you will see temperature settings minimum. Change that value and click send to arduino.
 
I picked up my refrigerator today and am trying to figure out how to go about wiring in the relay for the compressor. I would like to not completely remote the thermostat so I could still use it as a normal refrigerator if needed.

Would someone like to advise me to where the best place to wire it in the relay would be?

Here is the wiring diagram.

20150423_104848.jpg
 
@waverz Basically the relay/brewpi bypasses the temperature controller, which according to that diagram, is in the coil housing compartment. If you leave that temp controller in the mix, then you'll end up with the brewpi and that "fighting" each other - if you're trying to get beer down to 55 degrees, for example, and the fridge is "where it needs to be" in the temp controller's eyes, then it won't cycle, even though the brewpi is telling it to. I suppose you could get an SPDT switch, so you could switch between two modes?
 
I don't have an issue unhooking the thermostat I just want to be able to still be able to hook it back up fairly easilly in the event I ever quit brewing which after looking at it a little closer shouldn't be a problem. It's unlikely I quit brewing anytime soon but if I do, it would be nice to just be able to hook a couple wires back up and have a functional refrigerator without brewpi control.

To me it looks like I can just unhook the thermostat and replace it with the relay. Is it really that simple?
 
To me it looks like I can just unhook the thermostat and replace it with the relay. Is it really that simple?

Yep. That brown (assuming that's what BR is!) line going from the thermostat to the compresser is what will come out of your relay. Looks like the light is tied into the thermostat, so you'd need to branch that wire directly into the main to keep that working.
 
The thermostat is normally in the control box at the top of the refrigerator compartment. It's a dial looking thing that has a thin metal pipe coming out of it. But there is also usually a defrost timer that is wired inline with it to shut down the fridge at a set time after being on. If you could take that housing apart and take a picture I could advise you on how to bypass everything. And most of the time all the guts connect with one molex connector. And if I had to venture the light isn't tied into the thermostat, rather they share a common neutral and hot leg.
 
Wbarber69, I appreciate that. I'll get it apart tomorrow and get some pics. Here are some pics of the refrigerator.

Here's the fridge I got for practically nothing.

https://www.dropbox.com/sc/hrsbikfj6ro52ys/AAAV-HvnOMjAZYqWD8u5EGxna


Here's where the light, light switch, fan, and temp control are located.
https://www.dropbox.com/sc/0pamqk3uf7ttcm9/AACq9pUQLa-vyD0GGEcozGdBa


Kewl! One I haven't seen before. Looking forward to seeing how these are put together. I bet you could use it by just plugging it in and bypassing the thermostat with a wire. That in theory you could use a switch like was mentioned before. Having to really only tap out 1 wire and I bet it's got blade connectors on it.
 
Kewl! One I haven't seen before. Looking forward to seeing how these are put together. I bet you could use it by just plugging it in and bypassing the thermostat with a wire. That in theory you could use a switch like was mentioned before. Having to really only tap out 1 wire and I bet it's got blade connectors on it.

That's what I'm hoping for.
:mug:
 
I don't have an issue unhooking the thermostat I just want to be able to still be able to hook it back up fairly easilly in the event I ever quit brewing which after looking at it a little closer shouldn't be a problem. It's unlikely I quit brewing anytime soon but if I do, it would be nice to just be able to hook a couple wires back up and have a functional refrigerator without brewpi control.

To me it looks like I can just unhook the thermostat and replace it with the relay. Is it really that simple?

Am i missing something, or are you making something thats incredibly simple incredibly difficult?

If later down the line you want the Fridge to be a fridge and not a brewPi, unplug the power cable from the BrewPi outlet controlled by the arduino and plug it into the wall.

I dont see the point in screwing with a fridge's internals unless your goal is to hide the BrewPi, in which case theres probably still better ways than cutting at your fridges thermostat. By cutting it up going back to fridge mode becomes infinitely more difficult...you have to unhook the Brewpi, then rewire a new power cord on to plug it into the wall instead of unplugging from one socket and into another that takes maybe 5 seconds if your slow.
 
Am i missing something, or are you making something thats incredibly simple incredibly difficult?

If later down the line you want the Fridge to be a fridge and not a brewPi, unplug the power cable from the BrewPi outlet controlled by the arduino and plug it into the wall.

I dont see the point in screwing with a fridge's internals unless your goal is to hide the BrewPi, in which case theres probably still better ways than cutting at your fridges thermostat. By cutting it up going back to fridge mode becomes infinitely more difficult...you have to unhook the Brewpi, then rewire a new power cord on to plug it into the wall instead of unplugging from one socket and into another that takes maybe 5 seconds if your slow.

I should have been more clear. I don't mind doing a little re-wiring to revert it back but I don't want to start "gutting" components or hacking up the original wiring.

By completely turning off power I would loose my fan and light unless its actively cooling. I could live with not having the light but having the fan run during the heating and cooling cycle sounds ideal.

If it's only a matter of disconnecting a couple of spade connectors or what ever I'm OK with that. But if involves physically removing components, splicing wires, or doing a bunch of re-wiring I'll definitely just be cycling the power to the entire unit like you suggest.
 
Having a simple plug and play solution is nice. But if you want control over the fan or use of things like door sensors or internal lights (especially if you need to light to be a heat source) you gotta dig into it.
 
Opened it up and found all the wiring is just wire nutted together.
I just need to unhook the thermostat and am going to replace it with the relay just like I thought.

It'll be super simple to unhook if I ever need. Not as simple as just unplugging it of course but still simple enough.

The only issue I have with my refrigerator is the fan inside is kind of loud. It'll be out on my porch so its not really that big of deal.

Thanks for the awesome thread! Even though I still have a most of the work to do, so far, this has been a super fun project that will hopefully help me make better beer.

I will post more pictures of my wiring and eventually enclosure as soon as I get around to building it.

I'm still trying to figure out how I want to do it. I think the relay board may have it's own box in the compressor housing area and I may build a separate enclosure for the pi, uno, protoshield, lcd, and rotary dial that will sit on top of the refrigerator.
 
This thread is awesome. I already had a 1st generation RaspPi B and an Arduino Duemilanove and some ATMega328s, but I could not get the device(probes/actuators) to save in the EEPROM, so I saved myself the headache of debug and bought a Uno for $12. My system is running great.

I wanted to share my setup with my cell phone display, maybe someone else in 338 pages of comments has already done this but I didn't find it. Lots of people have old android cellphones laying around, this saves you from having to buy and wire a 80x24 display. This is a nexus one and a car dock I had, it's mounted via suction cup to side of fridge. I downloaded a full screen browser app, an "lcd always on" app, and a "rotation lock" app. I hacked versions of Beerpanel.php, Index.php and the css files so that I'd just get the 80x24 display, I still need to tweak it some. I may add another line (I'd love to put the chamber/room temps on seperate lines but that'd involve recompiling the arduino code, a later project).


One question I had for you guys is that one of my temperature probes seems to have a different granularity than the other. My "Room temp" (currently submerged in a carboy of water) is changing about .11-12 a degree at a time, but my "beer temp" (currently insulated against the same carboy) is changing as little as .01. Anyone else experience this, have an explanation? The insulated probe is staying within a degree of the carboy which I'm happy about.

You can see my graph here: http://brew.kyro.co/

A second question. Is anyone using more than 3 probes with a single arduino? I went ahead and wired all 5 of the probes I bought (a pack off amazon) without knowing the software was limited to 3. I'll do the coding myself if I have to I just wanted to see if anyone had already done the work. I'm just looking for additional "room temp" type readings for logging (extra beers, simple temp control of my other bridge outside of brewpi, etc)

Capture.jpg
 
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 followed this "guide" and seem to only have access to the "public site" even when I connect to the "yourbrewpisite.com/admin.php" site. It asked me for my username and password but I'm not seeing the maintenance or start/stop script buttons.

Any ideas what I could have done wrong or what I should look for?

I would love to be able to get this option working as well as change the port to something besides 80 because my ISP blocks 80.

Any help would be great. Worst case scenario I just run the script again I guess.
 
This thread is awesome. I already had a 1st generation RaspPi B and an Arduino Duemilanove and some ATMega328s, but I could not get the device(probes/actuators) to save in the EEPROM, so I saved myself the headache of debug and bought a Uno for $12. My system is running great.

I wanted to share my setup with my cell phone display, maybe someone else in 338 pages of comments has already done this but I didn't find it. Lots of people have old android cellphones laying around, this saves you from having to buy and wire a 80x24 display. This is a nexus one and a car dock I had, it's mounted via suction cup to side of fridge. I downloaded a full screen browser app, an "lcd always on" app, and a "rotation lock" app. I hacked versions of Beerpanel.php, Index.php and the css files so that I'd just get the 80x24 display, I still need to tweak it some. I may add another line (I'd love to put the chamber/room temps on seperate lines but that'd involve recompiling the arduino code, a later project).


One question I had for you guys is that one of my temperature probes seems to have a different granularity than the other. My "Room temp" (currently submerged in a carboy of water) is changing about .11-12 a degree at a time, but my "beer temp" (currently insulated against the same carboy) is changing as little as .01. Anyone else experience this, have an explanation? The insulated probe is staying within a degree of the carboy which I'm happy about.

You can see my graph here: http://brew.kyro.co/

A second question. Is anyone using more than 3 probes with a single arduino? I went ahead and wired all 5 of the probes I bought (a pack off amazon) without knowing the software was limited to 3. I'll do the coding myself if I have to I just wanted to see if anyone had already done the work. I'm just looking for additional "room temp" type readings for logging (extra beers, simple temp control of my other bridge outside of brewpi, etc)



AWESOME idea with the phone! I'm sending my lcd and protoboard back and going this route. I have several old phones laying around as well as an extra mount!

Care to share how you edited your php and css files?

Thanks for sharing!
 
AWESOME idea with the phone! I'm sending my lcd and protoboard back and going this route. I have several old phones laying around as well as an extra mount!

Care to share how you edited your php and css files?

Thanks for sharing!

I basically just copied the files (similar to what you do for public page / admin.php if you did that) and ripped out stuff, with a browser open you can just delete, save, refresh, then undo or delete some more stuff.

You can download the files from my public site. If you are using linux, do this:

wget http://brew.kyro.co/display.php.txt
wget http://brew.kyro.co/beer-panel2.php.txt
wget http://brew.kyro.co/css/style2.css
(if on windows, or you just want to view these files, just click links and copy/paste!)

Then put the php files in /var/www (remove the .txt, this is just so they download correctly) and put the css file in /var/www/css. You shouldn't have any files with these names so it's not going to interfere with your main page.

Then just go to http://yoursite/display.php

If you want this to be the default for some reason, swap index.php and display.php.

In the style2.css file, you can tweak the font size, margins, and other sizes to your preference. You can compare the lcddisplay and lcd-line parameters between style2.css and style1.css to see what I changed.

Basically if you want to play with it it's just a matter of changing 1 line at a time and seeing what happens. You don't have to know how to code php or css (I sure don't).

The actual text on the "80x24 display" comes straight from the arduino, so it's difficult to play with it outside of formatting.

Also want to point out that you can use this phone for other stuff in your brewery, for instance I hooked a 5.1 computer speaker system up to the headphone jack and play pandora on it!
 
I followed this "guide" and seem to only have access to the "public site" even when I connect to the "yourbrewpisite.com/admin.php" site. It asked me for my username and password but I'm not seeing the maintenance or start/stop script buttons.

Any ideas what I could have done wrong or what I should look for?

I would love to be able to get this option working as well as change the port to something besides 80 because my ISP blocks 80.

Any help would be great. Worst case scenario I just run the script again I guess.

It sounds like you mave have made the edits to index.php before copying it to admin.php. If you look at the two files are they the same?

If you want to run on a different port, look at these files:
/etc/apache2/apache2.conf
/etc/apache2/sites-available/default

I'm not sure but I think if you change the ports in these 2 files you'll be good, as long as your router/firewall allows it.

As an alternative, some routers allow you to port foward, so a request to [brewpi's hostname or ipaddress]:[whatever other port] gets redirected to port 80. apache config prob easier though.

For stuff like this you just want to google "change apache port" because pretty much every website in the world runs apache, stuff like this isn't brewpi specific at all. (in fact, maybe google that first instead of following my advice!)
 
This thread is awesome. I already had a 1st generation RaspPi B and an Arduino Duemilanove and some ATMega328s, but I could not get the device(probes/actuators) to save in the EEPROM, so I saved myself the headache of debug and bought a Uno for $12. My system is running great.



I wanted to share my setup with my cell phone display, maybe someone else in 338 pages of comments has already done this but I didn't find it. Lots of people have old android cellphones laying around, this saves you from having to buy and wire a 80x24 display. This is a nexus one and a car dock I had, it's mounted via suction cup to side of fridge. I downloaded a full screen browser app, an "lcd always on" app, and a "rotation lock" app. I hacked versions of Beerpanel.php, Index.php and the css files so that I'd just get the 80x24 display, I still need to tweak it some. I may add another line (I'd love to put the chamber/room temps on seperate lines but that'd involve recompiling the arduino code, a later project).





One question I had for you guys is that one of my temperature probes seems to have a different granularity than the other. My "Room temp" (currently submerged in a carboy of water) is changing about .11-12 a degree at a time, but my "beer temp" (currently insulated against the same carboy) is changing as little as .01. Anyone else experience this, have an explanation? The insulated probe is staying within a degree of the carboy which I'm happy about.



You can see my graph here: http://brew.kyro.co/



A second question. Is anyone using more than 3 probes with a single arduino? I went ahead and wired all 5 of the probes I bought (a pack off amazon) without knowing the software was limited to 3. I'll do the coding myself if I have to I just wanted to see if anyone had already done the work. I'm just looking for additional "room temp" type readings for logging (extra beers, simple temp control of my other bridge outside of brewpi, etc)


You can have as many temp probes as you like. But only use 3 at a time. I have my fridge setup right now where if I want to disconnect a probe I can leave it in the thermowell and bring in a new fermenter with a completely different probe. Both probes are installed as beer1 but only one is physically hooked up at a time so I don't have to keep going back in to change what's installed.

As far as the resolution on the room temp probe. It's coded that way because the room temp probe has no affect on the pid. So they save a few keystrokes in the already limited code space available.
 
It sounds like you mave have made the edits to index.php before copying it to admin.php. If you look at the two files are they the same?

I'm at work atm so I don't have access to it. If I did edit the index.php before copying how can I get the original back?
 
My RPi is not accepting network cable. When I plug network cable the RPi is not recognizing it. I put the same cable on the other Brewpi and works well. So, I imagine the my RPi maybe burnd the network socket. How can I test to check it? Or can be other problem and is there a solution?
 
you can get the file from someone else. here:

wget http://brew.kyro.co/admin.php.txt

just replace your admin.php file with that.

(you don't need to mess with index.php, it's already what you want... the public page)


Could someone please help me acquire an unedited admin.php file? I have apparently copied over mine and need an un-altered copy.

I tried wget from sowhoa but don't have authentication. Could someone post there's so i can copy it?

Thanks for all the help. Definitely learning a lot during this build.
 
Could someone please help me acquire an unedited admin.php file? I have apparently copied over mine and need an un-altered copy.

I tried wget from sowhoa but don't have authentication. Could someone post there's so i can copy it?

Thanks for all the help. Definitely learning a lot during this build.

Nevermind, I just re-ran the script. Starting from scratch. Now that I have a better understanding of how this stuff works hopefully I won't screw it up.
 
I like the idea of using an old phone but I'm thanking of going bigger and use a tablet so I can see everything all the time and be able to control every thing from the fermenter
 
Well.. The nice thing about a phone is that you can easily get a dock and have it firmly mounted on the fermenter and not too obtrusive, and pop it out at any time if you need to change settings(assuming you still use a computer 95% of the time). Just something to think about, you'd need a tablet mounting solution.
 
Why not just get some Velcro or something and just stick the phone right to the door
 
Cool fridge. Always good to see another brewpi
Might be an idea to put a small pc fan in there for circulation.

Thanks! It actually has a built in fan internal fan that runs continuously.
 
Finally put my controller to use on Saturday. It was chugging along nicely keeping the beer right around 65F. This morning I went in and noticed that, although the script was still running, there were no temperatures. It did show the fridge setting and beer constant (in beer constant mode), but the actual measured temps were blank in the web page readout.

It took more than one reboot to bring them back, but now I've lost confidence. Any known remedy or info about his happening that would be useful? Has this happened to anyone else and is there an easy way to bring back the temps?

It could be a hardware or wiring issue, just don't know yet, but was running (it is remote and can't get a good internet connection to watch it from home).

cheers, JD
 
I have never seen that particular issue, and that's with (counts fingers) 5 BrewPi instances running.

You'd need to start with the BrewPi log files to try to figure out what happened. If you don't see anything there, you could work your way through the system log files in /var/log (noting the timestamped files to find the ones that cover the event window) and then /var/log/apache2.

Certainly the next time if/that happens go straight into Maintenance panel - View Logs and click on the Enable auto-refresh button. Scroll through the log to see if there's any out-of-band behavior going on...

Cheers!
 
Finally put my controller to use on Saturday. It was chugging along nicely keeping the beer right around 65F. This morning I went in and noticed that, although the script was still running, there were no temperatures. It did show the fridge setting and beer constant (in beer constant mode), but the actual measured temps were blank in the web page readout.

It took more than one reboot to bring them back, but now I've lost confidence. Any known remedy or info about his happening that would be useful? Has this happened to anyone else and is there an easy way to bring back the temps?

It could be a hardware or wiring issue, just don't know yet, but was running (it is remote and can't get a good internet connection to watch it from home).

cheers, JD

I have and its almost always because of my janky wiring. I'd check there first.
 
Status
Not open for further replies.
Back
Top