1. Brewsta

Open source, cross platform beer brewing software.

2. Introduction

Brewsta is an open source, cross platform beer recipe design and sharing application written by paul sorenson. It is written in Python. As at Jan 2005 it known to run on WinXP, Win2000, RedHat, Ubuntu and Suse Linux. It is also reported to run on a Mac with wxPython 2.6 or later.

2.1. Developers

Any developers out there that would like to help would be most welcome. Even if you don't write code, it would be good to have people testing Brewsta, especially on platforms I don't have at home.

(!) I would really appreciate a Mac OS X python developer to bundle up a self installing Mac build.

If you want to get in touch with me, check my Sourceforge user page.

3. Installation

Nominally, Brewsta will run on any platform that supports python 2.4 or later and wxPython 2.6 (or wxPython 2.8 as at Dec 2006). I only have Windows XP and RPM based Linux to test it on, other platforms I can't vouch for personally. Brewsta builds are normally provided on Sourceforge in two forms, source and MS Windows installer.

Regardless of installation type, Brewsta uses your default browser to display/print recipes. For this to work your browser must support XSL rendering (Firefox is good, recent IE's are close enough).

Note that setup.py is not for installing Brewsta. This is used for development only.

3.1. Download

Download the latest version at Sourceforge.

3.2. MS Windows

For convenience, you can simply download the Brewsta win32 exe and install it. There aren't really any prerequisites that I am aware of. If you already have Python and wxPython installed, you can also run the source bundle, as with any other platform.

If international characters do not display correctly (eg some of the hops names), you may wish to uncomment the line

#encoding = utf8

in brewsta.cfg.

3.3. Generic Source Installation

Prerequisites: You need to have

After that, simply untar the source tarball into a directory of your choice and run brewsta.py (OS specific).

4. Help

4.1. Starting Brewsta

MS Windows

If you installed from the self installing executable then you should have an icon on your desktop. Alternatively either double click brewsta.pyw or open a DOS window, change to Brewsta directory and type pythonw brewsta.py (note the 'w' on the end of pythonw). python brewsta.py will also work and will open up a command window (if you are having problems text written here may be useful in bug reports).

Linux

in a terminal window under X Windows, change to Brewsta directory and type python brewsta.py.

MacOS/X

open a terminal window, change to Brewsta directory and type pythonw brewsta.py.

4.2. Creating a New Recipe

When you start up Brewsta, you have a blank recipe to get working on. At any time, you can select File|New recipe to clear the recipe.

/!\ Don't forget to save your recipe - Brewsta doesn't currently warn you if you are about to throw away unsaved data.

You may wish to edit brewsta.cfg to set your default brew house constants so you don't have to edit these each time you create a new recipe.

4.3. Editing A Recipe

The fields at the top of the window are the overall brew constants, some of them provided by you (post boil volume and pre boil volume), the others are calculated by Brewsta.

You should also set the values on the setup tab to fit your brewing parameters.

/!\ To enter a row in one of the grids, click inside the grid (below the column headings) and hit the down arrow, then edit the fields as per your recipe.

/!\ To add an ingredient from the tree on the left, right click and select "Add to recipe". It will be added to the tab appropriate for the ingredient type.

You can add arbitrary ingredients to a recipe but it is not yet possible to save these to the ingredients database directly from Brewsta. As of build 366, Brewsta can read ingredients files in CSV format which you can edit with a text editor or your favorite spreadsheet. Additional files with the same format can be dropped in the directories under ingredients and Brewsta will display these in the ingredients tree also.

4.4. Units

Brewsta supports SI and US units (and can be configured to use imperial units). The units you view and enter data in are determined by Brewsta with the following rules.

  1. The units item in brewsta.cfg. This can be set to either SI or US to set the defaults either way.

  2. If the units item is not set in brewsta.cfg then Brewsta will check which Locale your computer is configured for and if it is US then it will use US units, SI otherwise.

  3. If Brewsta cannot determine the Locale then it will default to SI units.
  4. Each units aware field has a corresponding entry in the [units] section of brewsta.cfg. The default config file contains a list of these with their default values, commented out (comments start with the hash '#' symbol). Any explicit settings here will override the rules above. For example in my config file I have

    [units]
    #units = SI
    
    malt_extract = %
    obs_extract = kg
    total_gravity = kg
    
    
    so according to rule 2 my defaults units are set to SI (I have a non US locale) and I have chosen to override the defaults for three fields.
  5. Right clicking a units aware field (or grid column) will bring up a menu of possible units. Note also the top item in the menu, this is the string which you need to set in the [units] section of the config (brewsta.cfg) file. The menu entries following are the possible units.

4.5. Volumes

As of v1.1, Brewsta keeps track of three volumes:

recipe volume
represents the volume into the fermenter, after kettle losses. As at v1.1 this is simply a convenience value, it doesn't enter into any calculations.
post boil volume
volume in the kettle at the end of the boil. OG is calculated at this volume.
pre boil volume
volume in the kettle at the start of the boil. BG is calculated at this volume.

These volumes use defaults that are provided in the configuration file (brewsta.cfg). You can edit these for the specific recipe and/or edit the config file to suit your brewing practices.

Backwards compatibility:

v1.1 with old format recipe
Brewsta will read the old recipe and both recipe volume and post boil volume will be the same. You can edit these independently and save under the new format.
v1.1 recipe with older Brewsta

Brewsta will read the recipe volume in the recipe file and treat it as post boil volume - this may not be what you want. To fix this, edit the volumes to your desired values and save the recipe.

4.6. Fermentables

4.7. Hops

The default "form" of hop is "flower". The drop down box allows you to select from "pellet", "flower" and "plug". The only difference is that brewsta calculates increased utilization from pellets.

If you regularly use hops in other than flower form you can edit the section [brewsta] in brewsta.cfg with a line of the form:

hop_form = pellet

Note there is no 's' on the end.

4.8. Other Ingredients

4.9. Mash

The mash tab helps you with volumes and strike temperatures. Click inside the mash page (not just the tab) and hit the down arrow to enter a new step and fill in values as appropriate.

/!\ Let Brewsta fill in the fields it can for you, this will make it easier to adjust the mash schedule if you change volumes, grain bills etc. You can override these explicitly if you like.

/!\ If you have overridden a value that Brewsta calculates and want to revert to the calculated value, completely clear the field (eg press F2 then del to delete all the characters in the field). Don't be concerned if the value returns as 0.0, it will be updated when you perform the mash recalculate ().

The columns should be mostly self explanatory. The starting temperature of the first row should be set to your ambient conditions.

In the example above I am performing a single rest infusion with mashout. It happens to be a BatchSparge. The ambient temperature was 15°C. The grain mass comes from the recipe (but can be overridden).

I didn't drain any wort until the end of the mashout, Brewsta calculated the volume I drained to the kettle allowing for loss to grain. For the BatchSparge step, Brewsta calculated the amount of water required to satisfy the boil volume I chose (30 litres).

Note that the "To Kettle" field is explicitly set to zero, this will probably change in the future, to let Brewsta calculate it, clear the field as described above. In any case, I wanted to explicitly specify 0 in the first step, since the first drain doesn't occur until after mashout.

4.10. Setup

The setup tab has some brew house constants. You can edit these directly, you may want to edit brewsta.cfg so you don't have to change them each time you create a new recipe.

mash efficiency
the percentage extract you plan to obtain from the mash.
mash tun water equivalent
the specific heat capacity of your mash tun expressed in an equivalent mass of water. I have a 45 L rectangular cooler and a value of 1.2 kg (2.6 lb) works ok for me. The higher this number, the more heat is absorbed into the mash tun itself which means your strike water needs to be hotter to achieve the same target temperature.
loss to grain
the volume of water that is thrown out with each unit of mass of grain. 1.1 L/kg or 0.5 qt/lb is a commonly accepted value.
mashtun dead volume
this is free wort left in your mashtun, say below the level of the pickup tube. This can vary greatly, my system has minimal dead volume, around 250 ml.
hop utilization factor
this controls how your brew house hop utilization varies from the standard Tinseth formula. If your brews turn out more bitter than predicted by your recipes, increase this factor. Ray Daniels mentions variations as much as 100% between breweries so in most cases you should tweak this to your brewery.

4.11. Observations

I think that this is one of the cool features of Brewsta. Apart from record keeping, the observations page can provide some interesting information on your brew including:

Brewsta works this all out for you, assuming you add in the baseline observations.

Inserting, editing and deleting rows is quite straightforward. When you type a value in the SG column, the temperature compensated reading is shown in Adjusted SG. If you type directly into the Adjusted SG column, the reading is not temperature compensated. This is handy if you want to enter Brix readings directly from a refractometer (set the units to Brix by right clicking in the Adjusted SG and select Brix.

The parameters listed above are available when you mouse over rows, on the right hand columns of the grid (on the left hand side the tooltip shows days/hours from the first observation).

For example, load in the example recipe, WA_APA_6-01.beer to follow the commentary below. This is from a batch sparge and I personally like to record the parameters for each runoff. The parameters are viewed by moving the mouse over the extract column of the observations tab.

  1. The first row is the runoff after mashout. It shows that 67% of the available potential was extracted and also shows what you could expect from the first part of a partygyle brew. The AA% and RA% in this row are meaningless (note to self - blank them out).
  2. The second row is the preboil volume and gravity. This particular brew I forgot to record the batch sparge runoff parameters so this is just the combined (preboil). The percent extract is shown as 86% and tells me my mash efficiency (this figure is only as accurate as your measurements and grain potential specs). It also shows me that I hit my efficiency target if you compare this with "extract equiv" in the top section which is the extract equivalent I needed to achieve my volume and gravity targets. I also missed my volume by one litre, 34 vs 35 L. I have since tweaked my mashtun losses in the setup panel since this has been a trend with a few brews.

  3. The third row shows the post boil (OG) parameters. The pre and post boil extract should be identical (boil overs notwithstanding) and here you can see the is a slight mismatch but nothing to worry about. It is a good sanity check.
  4. The fourth row shows the parameters once in the fermenter. Gravity doesn't change but there is some volume lost in the kettle. Here the percent extract gives you your system efficiency. In this case it is telling me that of the available potential in my grain bill, 72% of it made it into the fermenter.

  5. The fifth row is around 1 day into fermentation and the gravity has dropped, the apparent attenuation is 20% and ABV 1.2%.
  6. Moving on down to the second last row, my final gravity reading before bottling/kegging. It shows an apparent extract of 78%, and ABV of 4.6%.

NOTE: Brewsta makes some guesses on what the baselines for these values are. These guesses are usually right but if for some reason the gravity is not monotonic decreasing from the OG reading then it will give wrong readings. For example if you enter a reading where the gravity increases during fermentation (maybe you tossed in some sugar part way through) then you should ignore the figures in the tool tip.

paul sorenson

Brewsta (last edited 2007-01-06 12:47:30 by PaulSorenson)