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.
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
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).
Full component list with prices
- Raspberry Pi Zero 2 W (~$34) - the brain. Runs the control service, reads sensors, controls the relay. WiFi built in.
- DS18B20 temperature sensor (~$12) - waterproof probe (5-pack), reads sauna temp via single wire (GPIO4). Accurate to 0.5°C.
- 5V relay module (~$4) - optoisolated, switches 230V AC to the SSR. Pi crashes? GPIO defaults low, relay opens, heater stops. Fail-safe.
- Reed switches (~$6) - 3-pack magnetic contact sensors for doors and window.
- HLK-LD2410C presence detector (~$13) - millimeter-wave radar, detects people through wood. For future auto-extend sessions.
- 32GB microSD card (~$8) - storage for the Pi's OS and control software.
- 5V 2.5A micro USB power supply (~$10) - proper supply avoids undervoltage warnings.
- Pi Zero case kit (~$8) - includes heatsink, OTG adapter, and GPIO header.
- 4.7kΩ resistor (~$5) - pull-up for the DS18B20 data line. Comes in packs.
- Dupont jumper wires (~$7) - 120pcs, all types (M-F, F-F, M-M).
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.
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.
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:
- 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
- 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.
- Watchdog process - automatically restarts the control service if it hangs
- 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.
- 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 setGot 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.