GaFuBi HolzBackofen
Description
A self-developed controller for direct-fired wood-fired ovens — pizza domes, stone bakers, classic fireclay ovens. Developed and commissioned on a fireclay dome oven with stone floor. The core is an ESP32-S3 with two MAX31855 boards, each reading a K-type sheathed thermocouple (Inconel 600): one measures the dome, the other the floor at the baking stone. Both values land live on a 2.8" touch display (ILI9341 + XPT2046) and on the web UI in parallel. The web UI runs over WebSocket with Chart.js, is mobile-friendly, ships with five themes and switches between German and English at runtime. The touch display offers five swipeable pages — main, live chart, timer, network, system. 11 baking programs (Pizza Napoletana, classic, tarte flambée, bread loading/finishing, cake, braising, plum butter, drying, ...) with realistic target temperatures follow the natural cooling curve of a wood oven — one firing is enough for several programs back to back. Each program has a default bake time from practical research, the suggestion is adjusted dynamically based on actual oven temperature, and from the third bake onwards the system learns from the average of the measured times. A cooling alarm warns when the oven cools too fast for the planned bake time. Every firing session is logged automatically as CSV on LittleFS (start above 60 °C, stop after 10 min below 40 °C, max. 12 sessions ring buffer). CSV download straight from the web UI — heat-up and cool-down curves end up in Excel or Grafana. An optional **SHT31** on the case acts as ambient reference: with it the firmware delivers a **Newton cooling prediction** ("oven at 200 °C in 1h45min") from a live fit of the time constant over the last 5 min of cool-down, plus dew point via the Magnus formula. Home Assistant integration via MQTT auto-discovery: dome and floor temperatures as sensors with `state_class: measurement` (long-term statistics), and ambient temperature + humidity if an SHT31 is fitted, program selector, ready binary sensor. Program switching works both ways — from the display or from Home Assistant.
Features
- 2 K-type thermocouples (dome + floor) via MAX31855 on dedicated HSPI bus
- 2.8" touch display with 5 swipeable pages (LovyanGFX + custom XPT2046 driver)
- Live web UI with WebSocket and Chart.js, 5 themes, DE/EN runtime switch
- 11 baking programs with realistic targets and ETA estimation
- Adaptive bake-time timer that learns from your last 3 bakes
- Cooling alarm when the oven drops out of the target window too quickly
- Session logger: CSV recording of every firing on LittleFS
- Home Assistant integration via MQTT auto-discovery (bidirectional)
- Custom raw-SPI read for clone MAX31855 (ignores broken OC bit)
- 3-read burst with median filter against clone jitter and SPI dropouts
- 2-point calibration per sensor (ice water + boiling water)
- Optional SHT31 for Newton cooling prediction and dew point
- Partial-push rendering on the TFT (only dynamic regions, no tearing)
- 30-min web chart with localStorage persistence
- Captive portal only on first config, auto-reconnect watchdog
- OTA updates via mDNS (`backofen.local`)
Techstack
- ESP32-S3 DevKit N16R8
- 2.8" SPI TFT (ILI9341 + XPT2046)
- 2× MAX31855 K-Type
- 2× K-Typ Mantel-TC Inconel 600 (Ø3 mm)
- SHT31 I²C T/RH (optional)
- PlatformIO
- Arduino Framework (espressif32@^6.9.0)
- LovyanGFX
- AsyncTCP + ESPAsyncWebServer
- AsyncMqttClient
- ArduinoJson 7
- LittleFS
- Home Assistant MQTT Discovery
- MQTT Broker
- OTA via mDNS








