GaFuBi Wood-Fired Oven
Description
A self-made electronics system for directly heated wood-fired ovens: pizza domes, stone bakers, and classic fireclay ovens. It was developed and is now operating on a fireclay dome oven with a stone floor in my own garden. Two K-type sheathed thermocouples (Inconel 600) monitor the dome and the floor; the floor probe is inserted about 1 cm deep into the fireclay brick. Each channel uses a MAX31856 to convert the signals, and a fault register detects open probes and short circuits. The first version ran from May 2026 on an ESP32-S3 that had a built-in touch display, initially 2.8 inches, later 3.5 inches. In September an intermediate step used an ESP32-P4 with a 4.3-inch panel. It went through two baking days at the oven without any software errors, but it revealed a flaw that no larger display on the case can solve: when working at the oven you stand too far away to read the digits on a panel the size of a phone screen. Since September 2026 the system has been divided into two separate devices. The base unit is an ESP32-S3 (DevKitC-1 N16R8, ESP-IDF 5.5) housed in a closed case at the oven. It measures, calculates, records, and sends data, but no longer has its own display. The firmware originates from the P4, with only the display layer removed. The pinout remains unchanged from the first version, so the probe board moved over without resoldering. All calculations are performed here: program windows, the learning timer, the cooling prediction, and the session logger. This design choice is because the cooling phase of a wood-fired oven lasts an entire day, and the curve must keep running even if the display happens to hang somewhere else. The remote display is a Raspberry Pi Pico 2 W (RP2350) paired with a HUB75 LED panel measuring 64 × 32 dots on a 160 × 80 mm surface. It is positioned within view of the oven and shows the dome and floor in large size, with the status indicated by colour: blue means the oven is not yet ready, green means it is inside the target window, and red means it is too hot. The display does not blink. From a distance you cannot read the digits, but you can immediately see the colour. When a bake timer is active, it appears on the right side with a progress bar and does not push out either temperature, because the floor temperature is the most critical value during baking. When the temperature falls below 50 °C, the display switches to a second screen that shows the time, ambient temperature, and humidity. Brightness can be adjusted via the base unit's web UI or through Home Assistant. The link is a UDP broadcast from the base unit every 2 seconds. The display only listens and does not accept commands. To support this, the base unit keeps its own hotspot running all the time, which also serves the phone at the oven when no router is available in the garden. Every 30 seconds the display sends a heartbeat back so the base unit knows it is running and receiving packets. The ambient sensor (SHT31) is mounted on the display, not on the base unit. If it were inside a closed case, it would measure the temperature inside the box, which would not allow a cooling prediction to be made. The sensor reading is sent back to the base unit along with the heartbeat. A battery-backed clock (DS3231) on the display maintains the time even when the base unit is not transmitting. 10 baking programs (Pizza Napoletana, classic pizza, tarte flambée, bread loading, bread finishing, rolls/brioche, cake, roasting/braising, plum butter, drying) have target windows for dome and floor that follow the natural cooling curve of a wood-fired oven. One firing can cover several programs in a row. The suggested bake time adjusts to the current oven temperature and improves based on the measured times from the third bake onward. Because the floor probe is embedded in the brick, it records a low temperature while the fire is active: as heat moves downward, the surface can be an estimated 20 to over 80 K warmer depending on the fire. When the floor temperature rises rapidly, the web UI, the remote display, and Home Assistant display the message "baking surface hotter than shown." This is intentionally a hint, not a correction, because the discrepancy varies with the fire and vanishes once the oven is cleared. The web UI displays all values in real time via WebSocket, along with settings, recordings, self-test, and logbook. Every firing above 60 °C is stored as a CSV file on the internal file system, and an analysis page plots it as a curve. Home Assistant receives the dome, floor, ambient, humidity, program selection, ready state, floor hint, and the remote display's state through MQTT auto-discovery, including a last-will message. Using the ambient temperature and the cooling curve, the base unit calculates a Newton prediction for when the oven will reach 200 °C and 100 °C, as well as the dew point. Status September 2026: the base unit and remote display are operating at the oven, most recently during a baking day with bread and crumble cake, reaching a 638 °C peak in the dome. The remaining task is to move the floor windows onto the probe's scale over the coming baking days.
Features
- 2 K-type sheathed thermocouples (dome and floor) via a MAX31856 each, with a per-channel fault register for open probe and short circuit
- Split into a base unit that measures, calculates and records, and a remote display that only shows the data
- LED matrix remote display 64×32 (HUB75, 160×80 mm): both temperatures in large digits, state as colour, no blinking
- Bake timer with a progress bar on the display, without pushing out either temperature
- Second screen when the oven is cold: time, ambient temperature, humidity, link state
- The base unit broadcasts UDP packets every 2 seconds, operates its own hotspot, and receives a heartbeat from the display back to the base unit
- Display brightness can be adjusted through the web UI and Home Assistant
- Live web interface via WebSocket with chart, settings, recordings, self-test and logbook
- 10 baking programs with target windows for dome and floor, learning bake-time timer
- Floor hint: "baking surface hotter than shown" when the floor reading rises quickly
- Newton cooling prediction and dew point, ambient sensor on the display instead of inside the case
- Session logger: CSV file of every firing above 60 °C, including a timer column, with an analysis page on the device
- Home Assistant integration using MQTT auto-discovery, bidirectional, with last will
- Up to four Wi-Fi networks can be stored, a captive portal is supported, and OTA updates include rollback capability
- Oven math presented as a hardware-free C component with PC tests
Techstack
- Base unit: ESP32-S3 DevKitC-1 N16R8 (16 MB flash, 8 MB PSRAM)
- 2× MAX31856 K-type breakout
- 2× K-type sheathed TC Inconel 600 (Ø3 mm)
- Display: Raspberry Pi Pico 2 W (RP2350)
- Waveshare RGB matrix P2.5 64×32 (HUB75, 1/16 scan)
- SHT31 T/RH + DS3231 RTC on the display
- Separate 5 V power supply for the panel
- Base unit: ESP-IDF 5.5
- esp_http_server + WebSocket, Chart.js in flash
- MQTT with last will
- LittleFS + NVS
- Oven core in C with PC tests
- Display: PlatformIO / Arduino (RP2350)
- Adafruit Protomatter (HUB75)
- ArduinoJson
- Home Assistant MQTT discovery
- UDP broadcast base unit → display
- Captive portal
- OTA with rollback (backofen-basis.local)














