Sauna dashboard on laptop with Huum Drop 9kW heater in the background

How I Built a Smart Sauna Controller With a Raspberry Pi

We run a rental sauna in Dziwiszow, Poland. 9kW Huum Drop heater, room for 4-5 people, bookings through Wix and phone calls. For the first few years, managing it meant checking the heater manually, guessing when to preheat, and hoping nobody left the door open too long.

That got old fast. Especially when your mom calls at 7 AM asking if you remembered to turn on the heater for the 9 o'clock booking. You didn't.

So I built a dashboard.

Sauna dashboard running on a laptop inside the sauna, with the Huum Drop 9kW heater visible in the background
The dashboard running on a laptop in the sauna. Huum Drop 9kW heater behind.

1. Why sauna preheat timing matters

A 9kW heater takes roughly 45-90 minutes to bring a cold sauna from ambient temperature to 80°C (176°F). The exact time depends on outside temperature - in Polish winters that can be -15°C (5°F), in summer it's 25°C (77°F).

Miss the preheat window and your guests arrive to a lukewarm room. Start too early and you waste electricity at 1.20 PLN/kWh. With 10-15 bookings per week, the margin for error adds up fast.

I needed something that would:

  • Track the current temperature in real time
  • Know when the next booking starts
  • Calculate the heating time based on actual conditions
  • Turn the heater on automatically at the right moment
  • Alert me if something goes wrong

2. Raspberry Pi sauna controller hardware setup

Raspberry Pi Zero 2 W mounted on a stand in the sauna changing room, with a GPIO pinout diagram printed on A4 paper in the background
The Pi Zero 2 W with the wiring diagram. Credit card-sized computer that runs the whole system.

The brain of the system is a Raspberry Pi Zero 2 W - a computer the size of a credit card. It sits in the changing room (not in the hot room - electronics and 85°C don't mix).

WIRING DIAGRAM — SAUNA TUULAPi Zero 2 W (saunapi) — full sensor wiring + heater controlhomemadesauna.comPi Zero 2 Wsaunapi (100.117.176.63)1 3.3V3 GPIO25 GPIO37 GPIO49 GND11 GPIO1713 GPIO2715 GPIO2217 3.3V19 GPIO1021 GPIO923 GPIO1125 GND27 GPIO029 GPIO531 GPIO633 GPIO1335 GPIO1937 GPIO2639 GND2 5V4 5V6 GND8 TXD10 RXD12 GPIO1814 GND16 GPIO2318 GPIO2420 GND22 GPIO2524 GPIO826 GPIO728 GPIO130 GND32 GPIO1234 GND36 GPIO1638 GPIO2040 GPIO21DS18B20 — SAUNAUnder ceiling, next to Pt1004.7kΩ pull-up VCC↔DATADS18B20 — OUTDOOROutside air temperature4.7kΩ pull-up VCC↔DATAREED SWITCHES (×3)Main door → GPIO17 (Pin 11)Hot room → GPIO22 (Pin 15)Window → GPIO23 (Pin 16)GND → Pin 9VCCDATAGNDVCCDATAGNDDoorHot rmWindowGNDHLK-LD2410C — RADARPresence detector (UART)TX → Pi RXD (Pin 10)RX ← Pi TXD (Pin 8)OUT → GPIO27 (optional)RELAY MODULE 5VOptocoupler-isolated5V coil, 250V/10A contactGPIO5 HIGH = ON3-PHASE SSR 40AControl input: 90-250V ACDriven by 230V from relayHEATER: HUUM DROP 9kW3-phase 400V — sauna heatingBACKUP: APAR AR602PID controller + Pt100 (3-wire)Ready to switch overIndependent from PiVCC 5VTX→RXDRX←TXDGNDOUT → GPIO27 (optional)VCC 5VIN←GPIO5GND230V AC3× 400Vbackupwires under Pi: GND×2, GPIO23, GPIO5LEGENDPower (3.3V / 5V / 230V / 400V)DS18B20 — temperature sensor (1-Wire)HLK-LD2410C — presence radar (UART + OUT)Reed switches — door/window sensors (pull-up)Heater control (GPIO5 → Relay → SSR)GND (ground)NOTES: • Contactor bypassed (auto-restart after power loss) • GPIO LOW = relay OFF = heater OFF (fail-safe) • AR602 + Pt100 = independent backup
GPIO pinout with all sensors mapped. DS18B20 on GPIO4, heater relay on GPIO5, presence detector on GPIO27, door/window sensors on GPIO17/22/23.

Full component list with prices

Total cost: under $110 for the complete control system.

That's the Pi, all sensors, relay module, case, power supply, SD card, and wiring. Most commercial sauna controllers start at $200-400 and do less.

How to control a 3-phase sauna heater with a Raspberry Pi

Important caveat. A Raspberry Pi controls signals - it can't switch a 9kW, 3-phase heater directly. The actual power chain looks like this:

Pi GPIO (3.3V signal) → 5V relay module (switches 230V AC) → 3-phase SSR (solid state relay, 40A) → heater (Huum Drop 9kW, 400V)

The Pi tells the small relay module to close. That relay switches 230V AC into the control input of a beefy 3-phase SSR (solid state relay, rated 40A). The SSR is what actually handles the 400V, 3-phase power going to the heater. Three separate stages, each designed for its voltage level.

The 3-phase SSR was already in place from the original installation - it came with the heater's wiring setup. If you're starting from scratch, you'll need one. They run about $30-60 depending on amperage rating. Make sure it matches your heater's load - for a 9kW heater on 400V, that's about 13A per phase, so a 25A or 40A SSR works.

This is the part where you want an electrician involved. The Pi side (sensors, GPIO, relay module) is safe low-voltage tinkering. The SSR and 3-phase wiring side is not. My dad is an electrician - he handled all the high-voltage connections while I handled the software and low-voltage sensors. Good division of labor :)

3. Web-based sauna dashboard - remote control from any phone

The dashboard is a web app hosted in the cloud. My parents access it from their phones - no app to install, just a bookmark. Works on any screen.

Sauna dashboard on smartphone showing temperature control, bookings, and light switches
The dashboard on a phone - temperature, bookings, lights, all in one place.

What it shows:

  • Live sauna status - current temperature, heater on/off, target temperature
  • Booking management - syncs automatically with our Wix booking page every 5 minutes, plus manual bookings
  • Rotary temperature dial - drag to set target, auto-applies after a short delay
  • Alert system - 20 rules checking for things like "heater running with no booking", "temperature dropping despite heating", "booking in 30 minutes but heater is off"
  • Automatic preheating - calculates when to start based on current temperature, outside conditions, and a calibrated heating curve
  • Maintenance tracking - logs for cleaning, stone replacement, filter changes

The real strength isn't any single feature - it's having everything in one place. Temperature, bookings, alerts, lights, maintenance - all integrated, all accessible from a phone, all safe. My parents don't need to understand GPIO pins or relay modules. They open a bookmark and see if the sauna is ready.

The Pi communicates with the dashboard through a secure tunnel - no ports opened on the router, no way for anyone outside to control the heater. The connection is protected with token authentication and rate limiting (max 30 requests per minute).

4. Sauna heating curve - how long to preheat from cold

I logged temperature data from every heating session over 6 months. Turns out the heating rate isn't linear:

Cold start (below 30°C / 86°F): ~0.85°C per minute

Mid-range (30-60°C / 86-140°F): ~0.55°C per minute

Final stretch (above 60°C / 140°F): ~0.3°C per minute

The 60kg (132 lbs) stones in the Huum Drop absorb a lot of energy before releasing it to the air. This curve is now baked into the preheat calculator - it knows a cold winter start needs about 90 minutes, while a summer start from 25°C (77°F) needs about 55 minutes.

Heating Curve - Huum Drop 9kW (60kg stones)Temperature over time, calibrated from 6 months of real data0°C20°C40°C60°C80°C020406080100120140Time (minutes)TemperatureTarget: 80°C~102 minSummer (25°C inside)~148 minWinter (5°C inside)Fast climbStones absorbingSlowing downFinal stretch
Real heating curve from our sauna. Notice how the last 20 degrees take almost as long as the first 40.

From our experience, most people underestimate the final stretch. Getting from 20°C to 60°C is fast. Getting from 60°C to 80°C takes almost as long. Worth keeping in mind if you're planning your own preheat logic.

5. Safety system for a DIY sauna heater controller

This isn't a hobby LED strip. It's a device that pulls 13 amps per phase. The safety design has 5 independent layers:

  1. Software limits - max runtime (3 hours default), heartbeat timeout (shuts off if the dashboard doesn't check in for 15 minutes), temperature regulation with 2°C hysteresis
  2. Independent backup controller - an APAR AR602 PID regulator with its own Pt100 temperature sensor. If the Pi fails completely, we switch to this in seconds. It doesn't need WiFi, software, or the internet.
  3. Watchdog process - automatically restarts the control service if it hangs
  4. Fail-safe hardware - Pi off or crashed = GPIO pin defaults low = relay opens = heater stops. No software needed for this - it's how the electronics work.
  5. Circuit breaker - manual emergency cutoff in the distribution panel. Old school, always works.

Any single layer can stop the heater independently. You'd need all five to fail simultaneously for an unsafe condition. That's the point of defense in depth.

6. Common problems building a Raspberry Pi sauna controller

Plenty.

The original setup used a commercial controller (BleBox SaunaBox) as an intermediary. It worked, until it didn't - the built-in temperature sensor would intermittently drop out, causing the heater to shut off mid-session. Guests in a cooling sauna are not happy guests. Multiple software workarounds later, I decided to cut it out entirely and go direct from Pi to relay.

The dashboard runs on a cloud server that shuts down when nobody's using it and starts fresh each time. Problem is, some alerts need to compare "temperature now" vs "temperature 20 minutes ago" - but if the server just woke up, there is no "20 minutes ago". First version would see no history and immediately warn that the heater isn't working. Had to add checks: "do I have enough data to make this call, or should I wait?"

And the classic: I once tried copying the compiled app from my Windows laptop to the Linux Pi. Platform-specific binaries. The app wouldn't start. Lesson: always build on the target platform.

7. Future upgrades - presence detection, door sensors, display

The presence detector and door sensors are wired but not yet integrated into the dashboard logic. The plan:

  • Auto-extend heating if guests are still inside 10 minutes before booking ends
  • "Door open too long" alerts with actual sensor data
  • Long-term temperature logging - correlating heating efficiency with outside temperature, season, and stone condition
  • A small display mounted in the changing room showing current temp and time until ready

Is a Raspberry Pi sauna controller worth building?

You don't need expensive smart home systems to automate a sauna. A $34 computer, a few cheap sensors, and some evenings of coding gets you further than most commercial solutions - and you understand every part of it. You do need a patient electrician dad, though. That part is harder to buy on Amazon.

If you're building a sauna and want to add some brains to it, start with temperature logging. Just a DS18B20 sensor and a Raspberry Pi reading it every minute. The data alone will change how you think about preheating.

This is our Tuula sauna

The sauna in this post was built from our Tuula plan set - a 4.5 x 3.4m (15 x 11 ft) cabin with a hot room, shower, and changing area for 4-5 people. Full construction drawings, framing details, material lists, and a detailed text description to guide you through the build. $350, digital download.

See the Tuula plan set

Got questions about the setup? Drop them in the comments below.

As an Amazon Associate I earn from qualifying purchases. Some links in this post are affiliate links - if you buy through them, we earn a small commission at no extra cost to you. We only link products we actually use in this build.

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.

1 of 3