-
Notifications
You must be signed in to change notification settings - Fork 2
File Types in Wheeler's Wort Works
Before this guide begins it is important to note when you see ~4 spaces then that should be a tab (\t
) to prevent issues found later down the line.
The first of Wheeler's Wort Works core save files is the .berf
format. It is inherited from Graham Wheeler's Original Beer Engine. They have been implemented into Wheeler's Wort Works to provide loose backwards compatibility with the Original Beer Engine.
Wheeler's Wort Works' implementation of the .berf
format allows the opening of old files and also allows a user to open Wheeler's Wort Works created .berf
files in the Original Beer Engine. NOTE: Properties such as Water Chemistry Additions and Yeasts are not compatible with the Original Beer Engine.
The .berf
format use Latin encoding - specifically 'ISO-8859-1'
- it is required to open the files. Some text editors may encounter issues when saving/opening this encoding. It is required as the save format due to it being the default and only accepted format for Graham Wheeler's Beer Engine and also seems to help with Graham's use of the symbol \xa7
otherwise known as§
to split sections.
As mentioned in the previous section you must be using 'ISO-8859-1'
as the encoding for this file or it will not be accepted/will not work in the intended way.
Grists (Grains):
grain§[Grist Name] [EBC] [Type] [Units] [Moisture] [Fermentability] [Mass in grams] [Percentage]
Hops:
hop§[Hop Name] [Type] [Alpha] [IBU/EBU] [Grams] [Time] [Percentage]
Yeasts/Water Chemistry Additions (WWW Only):
add§[Name] [Dictionary of data]
Or
add§[Yeast Name] {'Type': '[Generally D or L]', 'Lab': [Yeast Lab], 'Flocculation': '[Flocculation]', 'Attenuation': '[Attenuation]', 'Temperature': '[Temperature (found in form 19-22°)]', 'Description': '[A Single Line Description of the Yeast]', 'Origin': '[Origin]'}
Or
add§[Hop Like Water Chemistry Addition] {'Values': {'Type': 'Hop', 'Time': [Time]}}
add§[Malt Like Water Chemistry Addition] {'Values': {'Type': 'Malt'}}
default§efficiency [Brew Efficiency in Percentage (i.e. 75)]
default§volume [Brew Volume (Litres)]
miscel§recipename [Brew Name]
miscel§ogfixed [Is Original Gravity Fixed (1 or 0)]
miscel§ebufixed [Are the IBU/EBUs Fixed (1 or 0)]
miscel§origgrav [Brew Original Gravity]
Wheeler's Wort Works incorporates an alternative saving system that is missing from Graham Wheeler's Beer Engine (this results in a loss in compatibility between the Original Beer Engine and Wheeler's Wort Works when using it). It's sole intent is to prevent the following occurrence/theoretical story:
It has been a grueling day of work, and a home brewer finally sits at his computer ready to set up for his next brew he is hoping to make at the week-end. He then discovers his current Belgian Pale Malt doesn't conform with his Baird Low Colour Pale Malt that was his normal Pale Malt. He decides to temporarily change his Pale Malt data to the values of his Belgian Pale Malt. After finishing he chooses to save the file as a .berf
and walks away all his numbers exactly how he both expected and wanted.
A month goes past and he comes back to his Brew; however, on opening it he discovers all his numbers have deviated from what he had originally. He rushes to the Grist Editor and suddenly realizes he has reset his Pale Malt back to the Baird Low Colour Pale Malt values. He now has a file which looks different whenever he checks it, it deviates on any update of his database. A single change of a database value could provide drastically different results.
Here arrives the convenience of .berfx
. He could simply have saved the file as a .berfx
and it doesn't change when being opened, it works on anybodies' system even if they lack any database values.
These files have no specific encoding (native utf-8) and also follow a very simple layout.
Grists (Grains):
grain§[Grist Name] {'EBC': [EBC], 'Grav': [Gravity], 'lb:oz': ([Pounds], [Ounces]), 'Grams': [Mass in Grams], 'Percent': [Percentage]}
Hops:
hop§[Hop Name] {'Type': '[Type]', 'Alpha': [Alpha], 'Time': [Time], 'Util': [Utilization], 'ibu': [IBU/EBUs], 'lb:oz': ([Pounds], [Ounces]), 'Grams': [Mass in Grams], 'Percent': [Percentages]}
Yeasts/Water Chemistry Additions:
add§[Name] [Dictionary of data]
Or
add§[Yeast Name] {'Type': '[Generally D or L]', 'Lab': [Yeast Lab], 'Flocculation': '[Flocculation]', 'Attenuation': '[Attenuation]', 'Temperature': '[Temperature (found in form 19-22°)]', 'Description': '[A Single Line Description of the Yeast]', 'Origin': '[Origin]'}
Or
add§[Hop Like Water Chemistry Addition] {'Values': {'Type': 'Hop', 'Time': [Time]}}
add§[Malt Like Water Chemistry Addition] {'Values': {'Type': 'Malt'}}
miscel§ogfixed [Is Original Gravity Fixed (1 or 0)]
miscel§ebufixed [Are the IBU/EBUs Fixed (1 or 0)]
miscel§recipename [Brew Name]
It follows the exact same format as brew_data.py with a slight twist.
Grists:
database§grist§[Grist Name] {'EBC': [EBC], 'Type': [Type Int or Str], 'Extract': [Extract], 'Description': '[Single Line Description]', 'Moisture': [Moisture Content], 'Fermentability': [Fermentability]}
Hops:
database§hop§[Hop Name] {'Form': '[Form]', 'Origin': '[Origin]', 'Alpha': [Alpha], 'Use': '[Use]', 'Description': '[Single Line Description]'}
Yeasts:
database§yeast§[Yeast Name] {'Type': '[Generally D or L]', 'Lab': [Lab], 'Flocculation': '[Flocculation]', 'Attenuation': '[Attenuation]', 'Temperature': '18-21°', 'Description': '[Single Line Description]', 'Origin': '[Origin]'}
Water Chemistry Additions:
database§water_chem§[Name] {'Values': {'Type': 'Hop', 'Time': [Time]}}
or
database§water_chem§[Name] {'Values': {'Type': 'Malt'}}
Now you have the constants:
database§constant§{'Efficiency': [Efficiency i.e. 0.75], 'Hop Time': [Default Hop Insertion Time], 'Conversion': {'lb-g': [Pounds to Grams Conversion Rate], 'oz-g': [Ounces to Grams Conversion Rate], 'usg-l': [US Gallons to Litres Conversion Rate]}, 'Volume': [Recipe Volume], 'Boil Volume Scale': [How much more Boil Volume is i.e. 1.1], 'Liquor To Grist Ratio': [Liquor to Grist Ratio], 'Attenuation Default': [Current attenuation], 'Save On Close': [Whether or not to save on close], 'Default Boil Time': [Boil Time], 'Replace Defaults': [Overwrite Defaults]}
grain_data.txt:
[Grist Name] [EBC] [Type] [Extract] [Moisture] [Fermentability] [Single Line Description]
hop_data.txt:
[Hop Name] [Type] [Origin] [Alpha] [Use] [Single Line Description]
yeast_data.txt:
[Yeast Name] [Lab] [Flocculation] [Attenuation] [Temperature] [Origin] [Single Line Description]
water_chem_data.txt:
[Addition Name] [Time or N/A] [Type]
defaults.txt:
efficiency=Efficiency Percentage
volume=Default Volume
evaporation=Scale from Volume to Boil Volume
LGratio=Liquor To Grist Ratio
attenuation=Default Attenuation
save_close=Save on Close
boil_time=Default Boil Time
replace_defaults=Wipe Default Database on Launch
When editing Configuration Files you have two main options. Firstly, to open Wheelers Wort Works and edit the values based off there retrospective editor (hop_data.txt:Hop Editor
, grain_data.txt:Grist Editor
, yeast_data.txt:Yeast Editor
, defaults.txt:Defaults Editor
). The other option is to open the retrospective text files and use the above formatting to input data. hop_data.txt
and grain_data.txt
can be overwritten by Graham Wheeler's Beer Engine Configuration Files if you wish to use an old database.
Import Note when Editing Configuration Files: By default, when you make changes to Database Files they merely append to/change the default values found inside brew_data.py
and brew_data2.py
. If you wish to overwrite the database (use only Configuration Files), you must uncheck the button Update Default Configuration
or change replace_defaults
under defaults.txt
to True.
The idea of the HTML Option is a sharable document anybody can open, and also an easy to read record of your project. It may also be used as a quick reference point while brewing.
The Complex HTML File requires an internet connection; however, adds the ability to press on headers and sort by on each section
Installing and Setting Up Wheeler's Wort Works
Wheeler's Wort Works Starting Guide
File types in Wheeler's Wort Works
An Advanced Guide to the Engine Room
An Advanced Guide to the Hop/Grist/Yeast Editors
An Advanced Guide to the Defaults Editor
An Advanced Guide to the Experimental Attenuation Tab
A Simple Guide for the Notes Area
How I programmed multi language support in Wheeler's Wort Works
Adding support for your language