Hacking the Espresso Shot: A Guide to Gaggimate Implementation and JSON Profiling
Overview: Digital Control for Analog Boilers
The
Prerequisites and Hardware Integration
Before you begin the digital setup, you must ensure your machine is physically prepared. The installation involves rewiring internal components to a central hub, typically controlled via an ESP32 or similar microcontroller. You should be comfortable with basic electronics, specifically handling AC power safely and identifying components like the vibratory pump and boiler terminals. The

Key Libraries and Tools
Operating this system requires a blend of hardware and software interfaces:
- Gaggimate Firmware: The core operating logic that manages the PID and pump modulation.
- Gaggimate.local: A web interface used for real-time monitoring and profile management.
- JSON Profiles: Standardized data files that define the pressure, flow, and temperature parameters for a shot.
- Discord Community: The primary repository for pre-built community profiles and troubleshooting documentation.
- Bluetooth Scales: Tools like the AcaiaorBuku Scalethat provide live weight feedback to the controller.
Code Walkthrough: Importing and Executing JSON Profiles
The heart of the
{
"name": "Sir Lancelot's Lever",
"steps": [
{
"type": "pressure",
"value": 10,
"exit_condition": "flow_reached",
"target": 1.5
},
{
"type": "decline",
"end_pressure": 6,
"duration": 30
}
]
}
Step-by-Step Implementation
- Download the Profile: Obtain the
.jsonfile from a community repository. These files define the 'phases' of the shot, such as pre-infusion, ramp-up, and the declining pressure curve. - Access the Local Host: Navigate to
gajimate.localon your browser while connected to the same network as the machine. - Upload to Flash: Click the import icon next to the trash can. This transfers the logic from your device to the Gaggimatehardware. The update is instantaneous, reflecting on the front-mounted LCD immediately.
- Execute: Select the profile on the machine's touchscreen. The system will now automate the pump's power output to match the pressure curve defined in the code.
Syntax Notes and Exit Conditions
The weight_reached (relying on your Bluetooth scale) or time_elapsed. Understanding the relationship between flow and pressure is essential; since you cannot control pressure directly without resistance, the code modulates the pump flow to reach the target pressure. If the grind is too coarse, the system might overshoot the target trying to create resistance that isn't there.
Practical Examples: Mimicking High-End Gear
You can use these profiles to replicate iconic machines. A "Creina Lever" profile uses a slow ramp-up followed by a steady pressure decline, mimicking a manual spring lever. Alternatively, a "Low Contact" profile focuses on high-flow, low-pressure extraction (around 4 bar) to minimize bitterness in light roasts. By simply swapping a
Tips and Gotchas: The Offset Reality
One major pitfall is trusting the displayed temperature without calibration. The K-type thermocouple probe is often mounted to the exterior of the boiler, meaning the "boiler temp" displayed may be significantly higher than the actual water temperature hitting the coffee puck. You must determine your machine's offset. For example, if the display shows 96°C but the puck receives 90°C, you have a 6°C offset. Furthermore, a brass boiler lacks a cold water inlet; if you program a profile with a drastic temperature drop mid-shot, the thermal mass of the metal will prevent a rapid decline. Real-world physics will always limit your digital code.