Software System (source code)

The  Brewnode software needs to:

  • Provide low level control of the hardware.
  • Provide high level control of the brew process.
  • Allow remote control and monitoring of the system.
  • Be fully autonomous.
  • Manage a database of recipes and brews.
  • Record data from all sensors.

All software is written using Javascript . Why? Well …

  • Simple server creation
  • Natural interface to Web Clients
  • Raspberry Pi drivers available on NPM
  • Simple Sockets implementation allows data to be pushed from server to client.


Each of the transducers have an associated driver that sends or receives data.

  • Motorized Valves
    • Open/Close
    • Monitor status.
  • Pumps
    • Switch On & Off.
  • Temperature Sensors
    • Read temperature
  • Flow Sensors
    • Sample data.
    • Calculate flow rate.
  • Weigh Scales
    • Sample ADC
    • Convert to weight.
    • Temperature compensation.
  • Heating Element
    • Switch On & Off
    • Modulate power.
  • Extractor Fan
    • Switch On & Off

The Brew Process

Built on top of the drivers are the routines necessary to make beer. Brewnode needs to extract recipes from an remote database and perform a series of steps involving the following actions:

  • Fill kettle with desired quantity.
  • Preheat kettle to strike temp.
  • Transfer kettle contents to Mash Tun
  • Mash
      • Continuous transfer between Mash Tun and Kettle.
      • Maintain a predefined temperature profile over time.
  • PreBoil
    • Transfer Mash Tun contents to Kettle
  • Boil
    • Boil the kettle contents
  • Chill
    • Transfer Kettle contents to fermenter via chiller.
  • Ferment
    • Monitor the alcohol content during fermentation.
    • This is done by knowing the volume of wort transferred to the fermeneter along with its weight.
      • OG = OriginalMass / Volume
      • FG = FinalMass / Volume
      • ABV = ((76.08*(OG-FG)/(1.775-OG))*(FG/0.794))

Brew Data

Recipes shall be selected from a database for brewing.  During the brew process data from all sensors shall be recorded.  This data shall be stored in a remote database. A web app shall present this data for user perusal and analysis.


This will be a simple control panel used to only monitor the current process. Basically a graphical interface displaying data from all sensors. This will be  publicly available on this website for the world to see and join in the fun.


The controller shall allow semi-automatic control of the entire process. This means providing a graphical interface to allow control of all inputs to the system. This provides a remote mechanism

Fully automated brewing system using NodeJS