Build a Solder-Free BrewPi
Build a fully wireless fermentation temperature controller using an ESP32, Bluetooth sensors, and WiFi smart plugs. No soldering, no wiring, no relays — just off-the-shelf parts.
What is BrewPi?
What is BrewPi?
BrewPi is an open-source fermentation temperature controller that gives you professional-level control over your brewing process. Originally designed around an Arduino, the modern BrewPi-ESP project uses an ESP32 microcontroller to manage heating and cooling elements connected to your fermentation chamber. Depending on how you choose to build it, a BrewPi-ESP can be assembled entirely from off-the-shelf components with no soldering required — or built with a custom PCB for a more permanent, polished setup. Either way, BrewPi allows brewers to achieve extremely precise temperature control — typically within several tenths of a degree.
Why Temperature Control Matters
Consistent fermentation temperature is one of the most important factors in producing great beer. Even small fluctuations can produce off-flavors, stalled fermentations, or inconsistent results batch to batch. BrewPi solves this by continuously monitoring your wort temperature and adjusting heating/cooling to follow a precise temperature profile.
How It Works
The BrewPi-ESP system consists of three main components:
- Temperature sensors that monitor your wort and chamber temperatures — either wired DS18B20 probes or wireless Bluetooth sensors like Inkbird thermometers or Tilt Hydrometers
- An ESP32 microcontroller that runs the control algorithm and communicates over WiFi
- Switches to control heating and cooling — either physical relays wired to your devices or compatible WiFi smart plugs like TP-Link Kasa
The controller reads sensor data, compares it to your target profile, and activates heating or cooling as needed. You can set simple static temperatures or complex multi-day profiles that ramp up or down over time — perfect for lager fermentation schedules.
What You'll Need
Parts Needed
| Part | Qty |
|---|---|
| LoLin D32 Pro ESP32 board | ×1 |
| LoLin TFT 2.4" touch screen (optional) | ×1 |
| LoLin TFT cable (required if using screen) | ×1 |
| 3D printed case with screws (optional) | ×1 |
| Kasa WiFi smart plug (one per device you want to control) | ×2 |
| Temperature sensor (see sensor options below) | ×2 |
| Appropriate USB cable (for power) | ×1 |
What You'll Need
The solder-free BrewPi build uses entirely off-the-shelf components connected wirelessly - or with one wire, if you want a screen. No mains wiring, no breadboards, no relays. Assembly takes 10 minutes or less.
The Controller
The LoLin D32 Pro is the recommended ESP32 board. It has both WiFi and Bluetooth, which are essential for communicating with the smart plugs and wireless sensors.
The TFT screen and 3D printed case are optional but nice to have. The screen shows the current IP address, temperatures, and controller state at a glance. The case keeps everything tidy. If you skip the screen, you can use any ESP32 board — the D32 Pro is only specifically needed for its screen connector.
Kasa Smart Plugs (Heating/Cooling Control)
You'll need one or two WiFi smart plugs to control your heating and cooling devices. The BrewPi-ESP firmware communicates with TP-Link Kasa smart plugs over WiFi, eliminating the need for wiring.
Compatible options:
| Product | Notes |
|---|---|
| Kasa Smart Plug Mini EP10 | Compact single outlet |
| Kasa Smart Plug HS103 | Single outlet |
| Kasa Smart Outlet KP200 | Dual outlet — one plug controls both heat and cool |
| Kasa Smart Power Strip HS300 | Six outlets with individual control |
⚠️ Important: You must use traditional Kasa WiFi plugs. Do not buy Matter-compatible Kasa plugs or any "Tapo" branded plugs — these use a different protocol and are not compatible with BrewPi-ESP.
Temperature Sensors
You need at least a fridge sensor to measure the temperature inside your fermentation chamber. Adding a beer sensor is optional but highly recommended — without one, the system works as a simple thermostat. With a beer sensor, the PID control algorithm can hold your beer temperature to within 0.1°F of the setpoint and enables beer profile mode.
Sensor Options
For beer temperature (optional but recommended):
| Sensor | Type | Notes |
|---|---|---|
| Tilt Pro Hydrometer | Bluetooth, floats in wort | Also measures gravity — great if you want both features |
| Inkbird IBS-TH1 Plus | Bluetooth, external probe | Has two sensors — probe for beer, ambient for fridge |
| Inkbird IBS-TH2 Plus+T | Bluetooth, external probe | Has two sensors — probe for beer, ambient for fridge |
For fridge/chamber temperature (required):
| Sensor | Type | Notes |
|---|---|---|
| Inkbird IBS-TH1 Plus | Bluetooth, dual sensor | Can serve as both fridge AND beer sensor |
| Inkbird IBS-TH2 Plus+T | Bluetooth, dual sensor | Can serve as both fridge AND beer sensor |
| Inkbird IBS-TH2 | Bluetooth, ambient only | Fridge temperature only — no external probe |
Choosing a Sensor Combination
The simplest setup is a single Inkbird IBS-TH1 Plus or IBS-TH2 Plus+T placed inside your fermentation chamber. These have two independent sensors — the ambient sensor reads the fridge temperature, and the external probe attaches to your fermenter to read the beer temperature. One device covers both roles.
If you already have a Tilt Pro for gravity tracking, you can use it as your beer sensor and add any Inkbird as your fridge sensor.
Note: For the IBS-TH1 Plus and IBS-TH2 Plus+T, Inkbird offers different probe types. You want the thinner "temperature only" probe — a metal cap at the end of a wire. Do not get the humidity probe.
Tools
- A computer with a USB port and a web browser (for flashing firmware and configuration)
- A USB cable (for flashing firmware — may also serve as power cable)
- A USB power supply (most phone chargers work)
Assemble the Controller
Assemble the Controller
The physical assembly for the solder-free BrewPi is minimal. If you're using the D32 Pro with screen and case, it takes about five minutes. If you're skipping the screen and case, there's nothing to assemble — just plug in a USB cable for power.
With Screen and Case
- Mount the D32 Pro — Place the LoLin D32 Pro into the bottom half of the 3D printed case and secure it with three screws
- Connect the TFT screen — Plug the LoLin TFT cable into the D32 Pro's TFT connector, then connect the other end to the back of the TFT screen
- Close the case — Insert the screen assembly into the case lid, then attach the lid to the base with two screws
That's it — the controller hardware is done.
Without Screen and Case
If you're not using the screen, there's nothing to assemble - you just need to provide power to your ESP32 board via USB.
Powering the Controller
The D32 Pro (and most ESP32 boards) are powered via USB. Any standard USB power supply will work — a spare phone charger is fine. The controller draws very little power.
For the initial setup and firmware flashing, you'll connect the board to your computer via USB. After that, you can move it to a dedicated USB power supply placed near your fermentation chamber.
Flash the Firmware with BrewFlasher
Flash the Firmware with BrewFlasher
BrewFlasher is a free tool that downloads and flashes the correct firmware to your ESP32 or ESP8266 automatically — no command line needed. It supports all of the major brewing-related ESP projects including BrewPi-ESP, TiltBridge, and more.
You have three options for flashing: the desktop app (Windows/macOS), the web edition (Desktop Chrome/Edge only), or the command line edition (most OSes, including Raspbian/Raspberry Pi OS).
Option A: BrewFlasher Desktop App
- Download the latest release from the BrewFlasher GitHub releases page
- Connect your ESP32 to your computer with a USB cable
- Open the app — no installation required, just double-click
- Select the appropriate serial port (or choose Auto-select)
- Select the appropriate project, device family, and firmware you want to flash
- Click Flash and wait for it to complete
Note - When flashing some devices for the first time, you may need to hold down a button (typically labeled "boot" or "0") when connecting to the computer. You can release the button a few seconds after the device is plugged in.
Option B: BrewFlasher Web Edition
- Open web.brewflasher.com in Google Chrome, Microsoft Edge, or Opera on a computer (other browsers including Safari and Firefox don't support WebSerial)
- Connect your ESP32 to your computer with a USB cable
- Select the project, device family, and firmware you want to flash
- Click "Flash to Controller"
- You will be prompted by your browser to connect a device - select the controller you connected (typically "USB Serial" or similar)
- Click "Install" and wait for the flash to complete
Option C: BrewFlasher Command Line Edition
The command line edition works on any platform with Python — including Raspberry Pi / Raspbian — and provides the same interactive firmware selection as the desktop app.
- Install via pip (if not already installed):
pip install --upgrade brewflasher_cli - Connect your ESP32 to your computer with a USB cable
- Run
brewflasher— it will interactively walk you through selecting a project, device family, firmware, and serial port - Wait for the flash to complete
You can also skip the interactive prompts by passing options directly:
brewflasher --serial-port /dev/ttyUSB0 --baud 460800
Run brewflasher --help for a full list of options.
Troubleshooting
- Device not detected? Try a different USB cable — some cables are charge-only and don't carry data. Also try a different USB port.
- Flash fails on ESP32-S2? Some boards require you to manually enter flash mode: hold the 0 button, press RST, then release 0. Then try flashing again.
- Linux permissions error? Run
sudo usermod -a -G dialout $USER, log out and back in, then try again.
Once the flash completes, your device will reboot and the new firmware will be running.
For this build, select **BrewPi-ESP** as the project in BrewFlasher, and choose the firmware version for the **ESP32**. If you're using a LoLin D32 Pro with the TFT screen, make sure to select the firmware variant that includes TFT support.
Connect to WiFi
Connect to WiFi
After flashing the BrewPi-ESP firmware, the controller needs to be connected to your home WiFi network. On first boot, it creates its own WiFi access point that you'll use to enter your network credentials.
Connect to the Setup Access Point
- Power on the controller (plug in the USB cable)
- On your phone or computer, open your WiFi settings and look for a network called BrewPiAP
- Connect to it using the password brewpiesp
- A configuration page should open automatically. If it doesn't, open a browser and navigate to
http://192.168.4.1
Enter Your WiFi Credentials
- Select your home WiFi network from the list (or type the name manually)
- Enter your WiFi password
- Save the settings
The controller will restart and connect to your home network. The BrewPiAP network will disappear.
Find the Controller on Your Network
Once connected, you need to find the controller's IP address to access its web interface:
- If you have the TFT screen: The IP address is displayed in the lower-left corner of the screen
- If you don't have a screen: Check your router's connected devices list, or use a network scanner app like Fing on your phone to look for the new device
Open a web browser on any device connected to the same WiFi network and navigate to the controller's IP address (e.g., http://192.168.1.100). You should see the BrewPi-ESP web interface.
Tip: Bookmark the IP address or assign a static IP through your router so you can easily find the controller later.
Set Up the Kasa Smart Plugs
Set Up the Kasa Smart Plugs
The Kasa smart plugs replace traditional relays in the solder-free build. Your heating and cooling devices plug directly into the smart plugs, and the BrewPi-ESP controller toggles them on and off over WiFi. No mains wiring required.
Connect the Plugs to Your WiFi
Each Kasa smart plug needs to be set up on the same WiFi network as your BrewPi-ESP controller:
- Download the Kasa Smart app on your phone (available on iOS and Android)
- Plug in your Kasa smart plug
- Follow the in-app instructions to connect the plug to your WiFi network
- Repeat for each additional plug
Once all plugs are on your WiFi network, you can close the Kasa app — the BrewPi-ESP controller detects and communicates with the plugs directly. You don't need the app running.
Plan Your Setup
How many plugs you need depends on what you're controlling:
- Cooling only (e.g., a mini-fridge or chest freezer) — 1 plug
- Both heating and cooling — 2 plugs, or a single dual-outlet plug like the KP200
If you're using a dual outlet (KP200) or power strip (HS300), each individual outlet can be assigned independently in the BrewPi-ESP configuration.
Plug In Your Devices
Connect your heating and cooling equipment to the smart plugs:
- Cooling: Plug your fridge, chest freezer, or other cooling device into one plug
- Heating: Plug your heat wrap, fermwrap, seedling mat, or space heater into another plug
Don't worry about assigning which plug controls heating vs. cooling yet — that happens in the BrewPi-ESP web interface during the device configuration step.
Set Up the Temperature Sensors
Set Up the Temperature Sensors
The solder-free BrewPi uses Bluetooth wireless sensors instead of wired DS18B20 probes. The ESP32 controller picks up their readings over Bluetooth automatically — no pairing process is required.
Prepare Your Sensors
Inkbird Sensors (IBS-TH1 Plus, IBS-TH2 Plus+T, or IBS-TH2)
- Insert the batteries and power the sensor on
- If your sensor has an external temperature probe (IBS-TH1 Plus or IBS-TH2 Plus+T), plug it in now
- Place the sensor inside your fermentation chamber
Sensor placement for dual-probe Inkbirds (IBS-TH1 Plus / IBS-TH2 Plus+T):
- The ambient (built-in) sensor reads the air temperature inside the chamber — this is your fridge sensor
- The external probe should be taped or strapped to the outside of your fermenter, insulated with foam or bubble wrap — this is your beer sensor
This way a single Inkbird serves as both your fridge and beer sensor.
Sensor placement for ambient-only Inkbirds (IBS-TH2):
- Place the sensor inside your fermentation chamber, away from the fermenter and away from heating/cooling elements — it will read the fridge temperature only
Tilt Pro Hydrometer
- Sanitize the Tilt following the manufacturer's instructions
- Place it in your fermenter — it floats in the wort and transmits temperature (and gravity) readings via Bluetooth
The Tilt serves as your beer sensor. You'll still need a separate Inkbird sensor inside the chamber for the fridge temperature.
Verify Sensors Are Detected
The BrewPi-ESP controller will automatically detect Bluetooth sensors within range. You can verify detection in the next step when you configure devices through the web interface. Sensors typically appear within a minute or two of being powered on.
Note: Bluetooth range is limited — keep the ESP32 controller as close as possible to the sensors, with as few walls as possible in between.
Configure Sensors and Actuators
Configure Sensors and Actuators
With the controller on your network, Kasa plugs set up, and sensors powered on, the final step is telling the BrewPi-ESP firmware which sensor is which and which plug controls what.
Open the Configuration Page
- Navigate to your controller's IP address in a web browser
- Go to the Set Up Sensors/Actuators page
Assign Temperature Sensors
The page will show all detected Bluetooth sensors. For each sensor, assign its role:
- Beer Sensor — The sensor measuring your wort/beer temperature (Tilt Pro or Inkbird external probe)
- Fridge Sensor — The sensor measuring the air temperature inside your fermentation chamber (Inkbird ambient sensor)
If you're using a dual-sensor Inkbird (IBS-TH1 Plus or IBS-TH2 Plus+T), you'll see two entries for it — one for the ambient reading and one for the probe. Assign them to fridge and beer respectively.
Assign Kasa Smart Plugs
The page will also show all detected Kasa smart plugs on your network. For each plug (or outlet, if using a multi-outlet device), assign its role:
- Cool Actuator — The plug that controls your cooling device (fridge, freezer, etc.)
- Heat Actuator — The plug that controls your heating device (heat wrap, space heater, etc.)
Save and Verify
After assigning all devices, save the configuration. The web interface should now show live temperature readings from your sensors. If everything is working:
- The beer and fridge temperatures will update every few seconds
- You can set a target temperature and the controller will begin activating the appropriate smart plug to reach it
Troubleshooting: If a sensor or plug doesn't appear on the configuration page, make sure it's powered on and connected to the same WiFi network (for plugs) or within Bluetooth range (for sensors). Give it a minute or two — detection isn't always instant.
Next Steps
Next Steps
Your solder-free BrewPi is assembled, configured, and ready to provide basic control of fermentation temperatures. Here's what to do next.
Connect to a Dashboard
While the BrewPi-ESP's built-in web interface works fine on its own for basic control, you can connect it to a web-based dashboard for richer logging, graphing, and remote access:
- Fermentrack.net — Free, cloud-hosted, modern fermentation management. Tracks temperatures, manages profiles, and logs history across multiple controllers from anywhere in the world.
- Fermentrack — Self-hosted fermentation management on a Raspberry Pi.
- BrewPi Remix — An updated version of the original BrewPi web interface, also self-hosted on a Raspberry Pi.
Connection instructions vary by platform — refer to each project's documentation for setup details.
Tips for Reliable Operation
- Check sensor batteries before starting a new batch — if a sensor dies mid-fermentation, the controller loses its readings
- Keep the controller plugged in to a reliable power source — if it loses power, it can't control anything
- Position the controller within Bluetooth range of your sensors and on the same WiFi network as your Kasa plugs
- Assign a static IP to the controller through your router so you always know where to find it
