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.
This may sound dumb... every time I Google how to update brewpi I get a bunch of mumbo jumbo I don't understand. So in a very basic very Green Way can someone please explain how to update brewpi. thank you.
 
This worked. Thank you. But I am still getting site can't be reached.

Any advice?
 
*solved* the ip address changed. Don't know why. But I thought it needed updates or something. Lol thanks all
 
Has anyone tried to run the master branch of brewpi-www with the legacy branch of brewpi? It's bothering me that for example the site doesn't use all the available space. I'd try it but I'm in the middle of a brew and don't want to screw something up.

Also is there a thread where people post their Beer Profiles? I made one for a lager using W34/70 but I was just kind of guessing on it.

Screenshot_Brewpi.jpg
 
Has anyone tried to run the master branch of brewpi-www with the legacy branch of brewpi? It's bothering me that for example the site doesn't use all the available space. I'd try it but I'm in the middle of a brew and don't want to screw something up.



Also is there a thread where people post their Beer Profiles? I made one for a lager using W34/70 but I was just kind of guessing on it.


Someone started one and I posted in it but it never caught on, I'm sure there are more around the forum though.

https://www.homebrewtalk.com/showthread.php?t=527974

How come you make daily adjustments to your profile and don't just input day 0 - 53 - day 3 - 53 (hold steady for 3 days) the jump to day 14 - 66 - this will give you that gradually increase you're looking for Over 11 days.
 
Someone started one and I posted in it but it never caught on, I'm sure there are more around the forum though.

https://www.homebrewtalk.com/showthread.php?t=527974

How come you make daily adjustments to your profile and don't just input day 0 - 53 - day 3 - 53 (hold steady for 3 days) the jump to day 14 - 66 - this will give you that gradually increase you're looking for Over 11 days.

I read somewhere that I should only raise the temperature a couple of degrees a day so I just entered that manually. Your way is probably a lot less work and accomplishes the same thing.

Question, took a reading of 1.02 with an expected FG of 1.012, should I raise the temp a little more quickly to get a diactyl rest in? I didn't notice any buttery flavor in the sample but I don't really have a trained palate.
 
I read somewhere that I should only raise the temperature a couple of degrees a day so I just entered that manually. Your way is probably a lot less work and accomplishes the same thing.



Question, took a reading of 1.02 with an expected FG of 1.012, should I raise the temp a little more quickly to get a diactyl rest in? I didn't notice any buttery flavor in the sample but I don't really have a trained palate.


You could ramp it up a little quicker if you wanted too. Typically I hold the temp for a few days to make sure it's fermented out, then up a couple after that. The more time you give it the better.
 
My Brewpi keeps changing its ip address. Anyone know how to stop this and how to figure out which ip address its using now without connecting a monitor?
 
My Brewpi keeps changing its ip address. Anyone know how to stop this and how to figure out which ip address its using now without connecting a monitor?

You should be able to give it a static ip via your router. If you don't do that it will keep changing, even though with it on it really shouldn't change.
 
I've been playing around with putting the BrewPi LCD dashboard on my Pints taplist. I have no html skills whatsoever. I managed to get far enough to get the dashboard to display correctly. I want to change the white area around the dashboard to black so it fits in with the page better. Can someone help me do this?

Capture.jpg

I assume the code would need to go into the lcd.php file. Here are the contents of the lcd.php file.

<?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"/>
<link rel="apple-touch-icon" href="touch-icon-iphone.png">
<link rel="apple-touch-icon" sizes="76x76" href="touch-icon-ipad.png&quoquot;>
<link rel="apple-touch-icon" sizes="120x120" href="touch-icon-iphone-retina.png">
<link rel="apple-touch-icon" sizes="152x152" href="touch-icon-ipad-retina.png">
<meta name="apple-mobile-web-app-title" content="BrewPi">
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="apple-touch-startup-image" href="splash.png" />
</head>
<body>

<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></p><p>

</div>
<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>

Any help would be greatly appreciated!
 
I think it's more likely to be in the css file, I'm no expert either though.

The css is a style sheet that dictates things like text colour, font type etc, basically how things are displayed.

In this case I'm not sure whether it would be picking up the brewpi css of the raspberry pints css.
 
I want to change the white area around the dashboard to black so it fits in with the page better. Can someone help me do this?
I don't have a working system - or even a broken one online at the moment. That said you should be able to poke about in the CSS as Mikmonken mentioned. You are looking for something like this:

Code:
body {
    background-color: white;
}

Here is a list of colors you can use:

https://www.w3schools.com/cssref/css_colors_legal.asp
 
I don't have a working system - or even a broken one online at the moment. That said you should be able to poke about in the CSS as Mikmonken mentioned. You are looking for something like this:

Code:
body {
    background-color: white;
}

Here is a list of colors you can use:

https://www.w3schools.com/cssref/css_colors_legal.asp

Which bit you edit i'm not sure, but here is basically what you've done, but without being embedded in a new page.

https://www.homebrewtalk.com/showpost.php?p=6932494&postcount=3581

What i'm not sure of though is where that particular LCD display is picking up it CSS from.
 
I´m looking to power my arduino from 220(relay power input). I currently have my MC on wifi and want to cut the need for a USB connection. Anyone here with a great solution to share?
 
You have several options. Search the forum for BrewPi and bluetooth or esp8266.
 
I´m looking to power my arduino from 220(relay power input). I currently have my MC on wifi and want to cut the need for a USB connection. Anyone here with a great solution to share?

Use one of these.
It works from 110-240VAC.
I use the same thing (sans the plastic casing and hard-wired) inside my Bluetooth and Wifi BrewPi "minions"...

Cheers!
 
Last edited by a moderator:
Here are the LCD related lines from the style.css file in the instance of brewpi that I am trying to embed the LCD from. Any idea which of these lines would need to be changed to add the black background?

Capture.jpg
 
Here are the LCD related lines from the style.css file in the instance of brewpi that I am trying to embed the LCD from. Any idea which of these lines would need to be changed to add the black background?

View attachment 391757

just under LCDDisplay, the obvious one i think you can change is margin, if you change it from 5 to 0px it should remove it completely i think.

Although it could be the gradient filling the box in which case try adjust the 2% #000000 to a higher value, maybe 100% (you will only need to change for the browser youre using)
 
Thanks for the help. Neither of those did it. I'll fiddle with it in earnest tonight and see what else I can find.
 
Use one of these.
It works from 110-240VAC.
I use the same thing (sans the plastic casing and hard-wired) inside my Bluetooth and Wifi BrewPi "minions"...

Cheers!

How exactly do you pop the casing off of those? I was wanting to do this recently myself.
 
Last edited by a moderator:
There's a single screw at one end and a tab/slot thing at the other.
Pull the screw and the two pieces of the case can be removed.
The line cord strain relief is captured between the two case sections so once the case is removed the cord comes free...

Cheers!
 
Thanks for the help. Neither of those did it. I'll fiddle with it in earnest tonight and see what else I can find.
If it were me, I'd change every one of those #000000 instances to #FFFFFF and see what happens. It looks like each line is made to handle the peculiarities of different browsers.
 
My brewpi has been running fine for the last year or so. Recent accessed brewpi remotely only to find I could not view the control panel. Had to hard reset my pi.

I now get this, where it hangs indefinitely,

WP_20170308_16_35_46_Pro.jpg
 
There's a single screw at one end and a tab/slot thing at the other.
Pull the screw and the two pieces of the case can be removed.
The line cord strain relief is captured between the two case sections so once the case is removed the cord comes free...

Cheers!

Mine, while shaped like yours, have no screws. Here comes the chisel and hammer.
 
Mine, while shaped like yours, have no screws. Here comes the chisel and hammer.

That was the case for mine as well. Just be careful because the two wires connected to the outlet plugs are very precariously soldered on the board. Ask me how I know.

Also, if you decide to shorten the lead that plugs into the Uno, check the polarity before you plug it in. Ask me how I know that one, too.
 
My brewpi has been running fine for the last year or so. Recent accessed brewpi remotely only to find I could not view the control panel. Had to hard reset my pi.

I now get this, where it hangs indefinitely,

I had that same thing about a month ago. You have a borked SD card. Time to find out if your back up process is solid...
 
If it's the SD card I probably won't bother keeping my brewpi as its something that is likely to reoccurre. SD cards are one highly unstable.

I will probably go with a programmable on/off stat and a data logger.
 
I should have been a bit clearer. My SD card was fine, it was just the files that were corrupted. The Pi doesn't like having the power cut without properly shutting down. Just reformat the card and restore from a backup. It shouldn't take more than the amount of time to write an SD card image from your computer. Easy peasy.
 
I dont backup. Will need to do a fresh setup. I haven't got time to go through that hassle right now.
 
Here are the LCD related lines from the style.css file in the instance of brewpi that I am trying to embed the LCD from. Any idea which of these lines would need to be changed to add the black background?

View attachment 391757

I'll prefece this that I'm a php/css/webdev noob. Your post actually inspired me to look into this. Make sure you have the the embedded LCD code in R-Pints .php pointing towards the correct .css file. I would also cut down on a lot of the cruft (background gradient, boarder) for something simpler / cleaner looking.

This is the code thats embedded into my RaspberryPints.php, just above </div> <!-- End Header Bar -->

Note I had my stylesheet in "/rp/style.css" as this file sits in my parent directory. I also changed my refreshLcd time to 10000ms due to my system shooting me an error every once in a while when refreshing @ 5000 ms (default)
EDIT: after some quick googling - the intermitted disconnect / not connected to LCD is due to a Safari bug. 10000 ms seems to help in iOS.
https://community.brewpi.com/t/communication-between-browser-and-pi-fails-intermittently-on-safari/601


<!-- Wes -->
<html>
<head>
<title>BrewPi LCD</title>
<link type="text/css" href="/rp/style.css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
</head>

<body>

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

<script type="text/javascript">
function refreshLcd(){
"use strict";
$.post('socketmessage.php', {messageType: "lcd", message: ""},
function(lcdText){
var $lcdText = $('#lcd .lcd-text');
for (var i = lcdText.length - 1; i >= 0; i--) {
$lcdText.find('#lcd-line-' + i).html(lcdText);
}
}, "json")
.fail(function() {
var $lcdText = $('#lcd .lcd-text');
$lcdText.find('#lcd-line-0').html("Cannot receive");
$lcdText.find('#lcd-line-1').html("LCD text from");
$lcdText.find('#lcd-line-2').html("Python script");
$lcdText.find('#lcd-line-3').html(" ");
}).always(function() {
window.setTimeout(refreshLcd,10000);
}
);
}
$(document).ready(function(){
"use strict";
refreshLcd();
});
</script>
</body>
</html>
<!-- Wes -->



Appended to the end of my R-Pints style.css is the following, I truncated the width and height due to the entire header being too wide on my iPad -- to make the box bigger change "width: 220px; height: 90px" under .lcddisplay; to change the font size change "font-size: 16px;" under .lcd-line

}


.lcddisplay {
width: 220px;
height: 90px;

float: left;
margin: 1px;
background: #000000; /* Old browsers */

}

.lcddisplay .lcd-text{
float:left;
margin: 1px 1px;
}

.lcd-line{
float:left;
clear:left;
font-size: 16px;
font-weight: normal;
font-style: normal;
font-family: '5x8LCDHD44780UA02Regular', monospace;
color: #FFFF00;
white-space: pre;
}

My current r-pints, displayed on an old iPad mounted to my keezer:

ndbOKWr.png
 
I'll prefece this that I'm a php/css/webdev noob. Your post actually inspired me to look into this. Make sure you have the the embedded LCD code in R-Pints .php pointing towards the correct .css file. I would also cut down on a lot of the cruft (background gradient, boarder) for something simpler / cleaner looking.

This is the code thats embedded into my RaspberryPints.php, just above </div> <!-- End Header Bar -->

Note I had my stylesheet in "/rp/style.css" as this file sits in my parent directory. I also changed my refreshLcd time to 10000ms due to my system shooting me an error every once in a while when refreshing @ 5000 ms (default)




Appended to the end of my R-Pints style.css is the following, I truncated the width and height due to the entire header being too wide on my iPad -- to make the box bigger change "width: 220px; height: 90px" under .lcddisplay; to change the font size change "font-size: 16px;" under .lcd-line



My current r-pints, displayed on an old iPad mounted to my keezer:

ndbOKWr.png

Awesome! I'll try your edits when I get a chance. Your taplist shows exactly what I'm going for. I'm trying to hide the BrewPi box under my keezer and with the lcd displayed on the taplist, I can still monitor the BrewPi without having to open up a different window on my monitor.
 
My brewpi has been running fine for the last year or so. Recent accessed brewpi remotely only to find I could not view the control panel. Had to hard reset my pi.

I now get this, where it hangs indefinitely,

I'm willing to bet your reset procedure involved pulling the power and plugging it back in, which will inevitably corrupt the SD card. As @CadiBrewer mentioned, a proper shutdown command should always be used.
 
I'm willing to bet your reset procedure involved pulling the power and plugging it back in, which will inevitably corrupt the SD card. As @CadiBrewer mentioned, a proper shutdown command should always be used.

Yeah I get that. But I only have done this once and that was in response to brewpi hanging.

I can't recall the countless times I have hard reset windows over the years. never have I had a file system failure.
 
A Windows OS running on a HDD is a far cry from Raspbian running on an SD card. I'm guilty of hard resets on both systems. Sometimes it is unavoidable. But, as you've found out with the Pi, once is all it takes.

A corrupted SD card is one of the reasons I moved my BrewPi server over to an old laptop running Debian Wheezy.
 
Status
Not open for further replies.
Back
Top