Projekt Structure

Generally Braubar is divided into three parts:

  • braubar-pi: Controling and displaying information on a Raspberry Pi
  • braubar-temp: Temperature sensor that sends temperature values via UDP on Port 50505
  • EG-PM2-LAN: Power-strip to switch the magnet valve or your stove on and off.

braubar-pi

braubar-pi is mainly written in python and aims to be used in python >3.4. It consits of three different modules with different roles:

  • Brewdaemon
  • Socketserver
  • Flask-Webserver

Brewdaemon

The Brewdaemon manages the whole application, keeps track of the different states, computes a PID output, switches the power-switch and writes everything in a SQLite database.

Socketserver

Starts a socket-server on port 50505 and listens for packages from braubar-temp-project. After receiving a package the values will be written in a temporary log file, which will be read every two seconds by Brewdaemon.

Flask-Webserver

Overview of the current state, shows a temperature-plot with three graphs:

  • real temperature curve
  • desired temperature curve
  • PID output scaled to a output from 0-100.

Also it is possible to go to the next state.

braubar-temp

As mentioned before, braubar-temp is a ethernet temperature sensor. The attached sensor is a ds18b20 sensor for temperature measurement.

In the current setting the sensor yields a value every 750ms. Therefore it sends at maximum every second a new value, only if the temperature changed.

The ethernet package looks like the following listing. The start- and end-sync bytes help to ensure that we got a correct package. In the future the end sync should be changed to a CRC to check the payload.

+------------------+------------+-----------+---------+----------------+
| start-sync-bytes | temp value | sensor id | heating | end sync bytes |
+------------------+------------+-----------+---------+----------------+

Braubar-temp requieres a DHCP-server to obtain a IP-address.

EG-PM2-LAN

An easy to use power-switch that can be controlled with HTTP calls. The responsible script for controlling the power-switch is braubar-pi/braubar/service/powerstrip.py