Software

Software System

The software is based upon a client-server architecture. This is all publicly available on GitHub. The server must run on the Pi but the client (or any other client) can connect to server from a remote device.

The  Brewnode server 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.

Drivers

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

Monitor

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.

Controller

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