Skip to content

Es(Pi)resso Part I: Précis and Preparation

I love coffee…

…A lot. And, for many years, I’ve been keen to put together a project bringing together three of my passions: coffee, electronics and programming. So begins this blog – in a series dubbed Es(Pi)resso – which will follow my journey stripping down and rebuilding a Gaggia Classic single boiler espresso machine and integrating it with a Raspberry Pi (‘RPi’) as a control interface.

Now, I don’t claim to be the first to have imagined this. To the contrary, a chap known as James has published a similar blog series and he has, in truth, done much of the leg work. A not insubstantial part of my own project will adopt his design methods, component choice and, most crucially, his code.1Which has, needless to say, saved me a huge amount of time. I shall be using James’ Es(Pi)resso project, written in C++, as a base platform and adapting it for my own needs along the way. A comparable project, albeit done using an Arduino controller, also provided inspiration and assistance along the way.

I intend to start off by integrating RPi temperature control. I will then move on to implement water level sensing, flow and pressure control.

I will also try and keep an up to date bill of materials, which is published as a separate blog post.

The documentation of the project will start ‘for real’ in the next part of this series. But before I get to that, for completeness, I first turn to my initial stripping down and refurbishment of the espresso machine.

Prepping the Machine

As stated, the project uses a Gaggia Classic, specifically a 2007 model. The (pre-2015) Classic is an extremely well-rated and reliable machine that truly has stood the test of time. It is often recommended on specialist coffee/barista forums as being one of the best ‘proper’ machines for new budding baristas. Replacement parts are readily available, making repairs straightforward and inexpensive. Machines can be picked up second hand on a well-known auction website or through other trading platforms for around £60-100.

Mechanically, the pre-2015 Classic is a very simple machine. It has a pump, a single boiler affixed to the group head.2The group head is the part of an espresso machine to which the portafilter – the part which holds the ground coffee – attaches, through which hot water flows. , a 3-way solenoid with over-pressure valve (‘OPV’) and… that’s really about it.

The machine I used for this project was bought locally for £80. As a general rule when you buy one of these machines second hand, at a bare minimum, you should carry out some basic descaling maintenance. Better still, strip the whole thing down and do a ‘proper’ clean.

Stripping the Classic down

I shan’t be documenting how to strip down the machine, as that is covered more than adequately elsewhere. A few points of note though.

The internals of my Classic before cleaning

I think my Gaggia fell into the ‘received as a wedding present in 2007, used twice and kept in a cupboard for 10 years’ category. It was pretty clean and tidy inside, though there was some obvious scale and galvanic corrosion at the flange between the boiler and the group head, which was visible even from the outside.

I spent a long time pulling my hair out about whether to use a citric acid solution to descale the parts. The Gaggia boiler is made of aluminium. Aluminium and citric acid do not mix. But, to cut a very long story short, after a fair amount of research into the topic I decided to proceed and use citric acid nonetheless. You can pick it up from Wilko cheaply in boxes from the cleaning aisle, with the other branded descalers.3Which tend to cost three times as much and use, guess, what… citric acid.

The bottom part of the boiler was pretty clean. A concentration of one tablespoon of citric acid in a litre of hot water did the trick.

The main part of the boiler proved far more difficult. It had some minor pitting but, there was evidence of quite a bit of galvanic corrosion. I had to bathe it no less than three times in a more potent citric acid solution (two tablespoons to one litre). And still that wasn’t enough. I wanted to avoid sanding but there was little choice. I used some wet and dry sandpaper, starting with a 180 grit and moving on to a 400. It’s best to wet the sandpaper, lay it on to a flat and level surface, and place the flange flat on to the paper, moving in figures of eight. Re-apply water where necessary. I ended up with…

Not too bad. The other parts came up clean without issue. I soaked the plastic pipework in Milton Sterilising Fluid (available from supermarkets and pharmacies). Pipe cleaners from Wilko4These are designed for craft works, and are found in that section, but worked a treat. helped remove some of the gunk.

The shower plate holder also proved tricky. It was coated thick in scale and there was, again evidence of corrosion. Despite my best efforts, unlike with the boiler, I’m not too thrilled with the result. It’s not too much of a dealbreaker, as I was planning to (albeit at a later stage) replace this part with the superior brass replacement fitting.

Shower plate holder post-clean

Putting it all back together, I was pretty pleased. Definitely a very clean machine!

Most importantly, the whole thing was water-tight. Switching it on nervously, I did a few tests. First steam and group. Followed by a more strenuous backflushing regimen. No leaks. Phew!

And here she is, in all her glory:

Reassembled (sans the top cover)

Right, now on to the main event: let’s build some proper temperature control in to this thing.

Published inEs(Pi)resso


  1. Fabian

    Hi Ben,
    I stumbled upon your blog when I searched for a recent mod of the Gaggia and an Raspberry.
    I found the mentioned blog posts, but as I have little to no understanding of coding I hesitated because of the age of the instructions.
    I really look forward to read about your journey and hopefully your instruction on how to PID our beloved Gaggia with the raspberry. Thank you so much in advance for this opportunity 🙂
    Kind regards

    • Ben Archer Ben Archer


      Thank you for your comment – glad to know the blog is of some interest! This week I will be releasing the next part of the blog (PID control), followed very swiftly by the third part on installing an analogue pressure gauge. I should add though that, notwithstanding the age of many of the instructions floating around the internet, the existing code I’ve used still works fine on the more recent models of the Pi (I’m using the Zero W) and on more recent versions of Raspbian. As you will see from the next part of the blog I chose to strip out certain parts of the code relating to hardware components that I don’t yet have, as otherwise I encountered errors but, at this stage, those are the main changes I’ve needed to make.

      All the best,

Leave a Reply

Your email address will not be published. Required fields are marked *