During the process of brewing beer there are a few parameters that are highly important for the result of the brew. The process of extracting the sucker from the malt brew must follow specific temperature profile in order to get the correct sucker strings out of the malt. (read more about that on written in Danish)

Therefore, it is a big help to have an environment that helps the brewer to ensure the correct temperature profile.

The solution that helps this process is the BBox. It is actually just a control box that has:

  • Three temperature sensors to measure the temperature of the fluid on different levels.
  • One relay turn on/off the heater
  • One relay to control the circulation pump
  • PC program to receive logging information and to send commends to the control box.
  • An embedded unit to
    • Have the communication from the control box to the PC program through TCP/IP.
    • Collect information from the temperature sensors
    • Act on commands from the PC program

User Story


Title: Define the temperature profile.

As a user I need to be able to define the temperature profile from the PC program.

  1. When starting the brew the first temperature set point must be set.
  2. After the set point has been reached, a timer must be set to give an alert when the set point must be changed again.
  3. Point 1 and 2 will continue until the temperature profile is complete.


Title: Create Brewer log during the Brew

All observations during the brew should be stored.

  1. The brewer did some observation during the process.
  2. He goes to the PC program and type observation into the log.
  3. The system must add current time and date to this.
  4. Point 1 – 3 can be repeated a number of times.


Title: Create a picture of temperature profile

After a brew it is very informative to create an illustration of the temperature profile.

  1. Extract all the measured points (temperature,date time) from the PC program (This could be csv file).
  2. Load the file into e.g. a spread sheet.
  3. From the spread sheet create the temperature profile illustration.


Title: Set the Circulation Pump Duty Cycle

The ideal setting of the circulation is to let it run 100% duty cycle. That causes congestion and the pump will run dry.

Therefore the user must be able to set up the duty cycle manually

  1. The user goes into the PC program
  2. From there the cycle length is set.
  3. From there the duty percentage is set.
  4. The user start the pump control from there.


Title: Manual Handling

In case of bad functioning environment, the automatic control must be overruled by manual action.

  1. The user discovers the need to stop the automatic process temporally due to some problem in the process.
  2. On the control box he will turn of the two switches (regardless of the what commands that comes from the PC program):
    1. Turn of circulation pump
    2. Turn of the Heater.
    3. Fix the problem
    4. Turn on the switches again.


Tools used for this.


  • Digital_Termometer_ds18s20 (one wire)
  • 2 * Relay’s (One for the heater adn one for the Circulation Pump)
  • Ethernut 1.3 Hardware


  • Windows – Visual Studio C#
  • NutOS – C++


Feature list so fare

The control box

  • Communication over TCP/IP
  • Control Loop to handle the temp setpoint
  • Functions to handle commands and parameters send over TCP/IP
  • Send XML reports that contains temperature measured
  • Manually control of the pump and the heater.

PC application

  • BBox protocol implemented on top of TCP/IP
  • Log Interface
  • Settings for
    • Heat / Temperature control loop
    • Duty Cycle of the Circulation pump
  • Timer function to help creating the right temperature profile.
  • Export the temperature log to csv.
  • Set up current brew:
    • Create placeholder for the xml files received from BBox
    • Create placeholder for the manual entered log
    • Function to collect all data related to a brew and save it to a zip file
    • Restore a zip holding the brew information back into the program.