After years of talking about upgrading our espresso equipment, we finally bought a used e61 single-boiler machine. Paired with a hand grinder, the process is refreshingly analog.

As part of learning how the machine works, I sketched a schematic diagram with Graphviz:

schematic diagram of an ECM Classika PID
Graphviz source
graph {
nodesep = 0.2; ranksep = 0.2;

water [shape=plain, group=a];
reservoir [shape=oval, group=a];
split_a [shape=point, group=a];
filter_a [shape=box, label="filter", group=a];
pump [shape=box, group=a];
one_way [shape=diamond, group=a, label="one way", margin=0];
split_b [shape=point, group=a];
capillary [shape=box];
gauge [shape=box, label="pressure gauge"];
split_c [shape=point, group=a];
pressure [shape=diamond, label="pressure\nrelease", margin=0];
top [shape=oval, group=a, label="boiler\ntop"];
valve_a [shape=diamond, label="valve", group=a, margin=0];
wand [shape=box, label="steam\nwand"];
steam [shape=plain];
bottom [shape=oval, label="boiler\nbottom"];
warming [shape=oval, group=a, label="warming\nchamber"];
filter_b [shape=box, label="filter", group=a];
restrictor [shape=box, group=a, label="flow restrictor"];
valve_b [shape=diamond, label="valve", margin=0];
split_d [shape=point, group=a];
valve_c [shape=diamond, label="valve", margin=0];
buffer [shape=oval, label="compression\nchamber"];
valve_d [shape=diamond, label="valve", margin=0];
waste [shape=plain];
portafilter [shape=oval, group=a];
espresso [shape=plain, group=a];

-- reservoir
-- split_a
-- filter_a
-- pump
-- one_way
-- split_b
-- split_c
-- top
-- warming
-- filter_b
-- restrictor
-- valve_a
-- split_d
-- portafilter
-- espresso;

{ rank=same split_b -- capillary -- gauge };

{ rank = same pressure -- split_c};
pressure -- split_a;

{ rank=same top -- valve_b -- wand -- steam };

{ rank=same bottom -- top };
bottom -- warming;

{ rank=same split_d -- valve_c -- buffer -- valve_d -- waste };

All of that comes together to produce one magnificent result:

espresso extraction using a naked portafilter