OpenBrew – Brewing Software

I’ve been working on writing a bunch of software for managing and maintaining my homebrewing obsession!

The project is called OpenBrew (imaginative, I know) and is primarily Python. I had originally started working in C++ so I could work in a compiled language, and also gain more familiarity with C++ itself but discovered that the development was becoming somewhat burdensome. It was coming along reasonably well, with forking processes working fine and also importing and parsing an XML beersmith recipe correctly and generating steps for the relevant vessels, but as I said it did become somewhat of a burden. I also decided I wanted to dive into Python a little, so I abandoned the old project and started fresh. I have left the code in place for historical purposes – perhaps it may help someone else, or perhaps I may reopen the project at some stage if Python proves unreliable (doesn’t appear to be as yet).

The current location of the software is at As you will see it is split into 4 major directories, brewery, fermenter (I know this is technically incorrect spelling), kegerator and control-app.

Brewery contains the code for the brewery side of things. It’s mostly implemented to the level that the C++ version was, with the multi-threading and parsing of a BeerSmith XML recipe (I may have some further news on this coming shortly perhaps). It’s definitely not ready for prime-time as yet, it doesn’t read sensors as yet and doesn’t control relays yet.

Fermenter contains a similar code base with multi-threading, but I’ve spent more time on the reading and logging of sensors so far. It doesn’t yet control relays, but this isn’t far off. PID algorithm needs to be implemented too. It also has a built in webservice on it’s own thread implemented with CherryPy which is simply a REST-ish JSON interface for the mobile application

Control-app is where the mobile control application for these systems exists. It’s a cordova HTML5 Hybrid application, and I’ve had it running on my Android devices so far, but I’ve been too tight to pony up for the Apple licence to get it running on my iPhone. It uses AngularJS and Onsen so it looks nice and works well. Lots of work required, but it does display one basic graph of the fermentation.

Kegerator is where the code to monitor and maintain my kegerator will go. Not much has happened here, but I have a few ideas surrounding checking keg volumes remaining based on weight rather than a flow meter (which I honestly think would be hard to clean and sanitise correctly). I also have a small app written in Lumen (a stripped down Laravel) for displaying the keg levels and what is on what tap, but again this doesn’t actually do much yet. Just the very basic beginnings and code stubs here.

So if you’re into this kind of thing, fork the code and have a play. Happy to receive comments, questions and pull requests. All licenced under BEERWARE licence, so if you like it, buy me a beer some time 🙂