Open Source Hot Tub Controller

Sluggish, old, dumb controls? No way! Make a hot tub smart and remotely operated with a Raspberry Pi 3 and some wiring.

I found a used hot tub online, that’s a couple of years old and I decided I can make a cool project out of it. The built-in controls were already annoying and time-consuming, so that gave me further reason to tinker with it. In order to save energy, I lower the pool temperature when not used, but if I wanted to use the hot tub, I had to turn the temperature up 4 hours in advance. As an example of what I mean by saying annoying: In order to save energy, I had to lower the pool temperature when not used, but if I wanted to use the hot tub, I had to turn the temperature up 4 hours in advance. Another thing that happened was that somehow the circulation pump decided to turn on randomly during the night – that would probably have gotten under control if I had read the manual, but as a tinker I prefer to tear out the controls and use a Raspberry Pi instead – so here’s my article “Open source hot tub controller.”

Safety Warning

If you also plan to tinker with your hot tub you should be aware of the risks. While high voltage systems are interesting experimentally, they can be dangerous, and if not treated with care, respect and intelligence, they can result in fatal injuring. There are a bunch of guides online on how to work safely with high voltage. If you are not certain on what you are doing, stop now and go educate yourself.


In this project I’m using an UniPi 1.1, but it doesn’t have to be one, you could also use the Raspberry GPIOs with a relay board, the UniPi comes in handy to have a 1-Wire connection as well. The terminals, mounting rails and cable canals I use are not necessary but makes the cabinet look clean, one can simplify that by wiring it directly. The UniPi needs a 5V power supply, I use a DIN rail mounted one with 3A output current. The built in lights are usually powered with 15V, I’ve used an 12V power supply. As replacement of the old control panel, I used an metal plate with 6 water resistant push buttons instead.

Tidy up the Cabinet

I am not reusing any of the built-in controller electronics, therefore I am removing them all.

My hot tub has the following wires:

  • Circulation Pump
  • Jets Pump
  • Blower
  • Heater
  • Ozonator
  • Temperature sensor
  • Flow sensor
  • Supply
  • 2x Display cable

The clamps on the PCB are labelled. It’s a good idea to mark the cables so you would know the purpose of each cable later on.

To make the wiring easier, I took the whole cabinet out. Then I removed all the components, cleaned the ole thing and started with the installation.

Installation and wiring

I am not reusing the original control panel. It could probably be integrated somehow, but since it only shows the temperature, it’s not worth the effort. I also thought about installing a touch display, but they kinda do not work if your fingers are all wet. So I replaced the control panel with a metal sheet with 6 water resistant push buttons.

The built-in temperature sensor is a temperature-dependent resistor (PT100). Although the UniPi has an analog input with which I could measure the resistance, I thought I’d make my life easier by using an 1-Wire temperature sensor instead.

A second temperature sensor was installed inside the heater for safety reasons – to monitor the heater’s temperature and protect it from over-heating. This one is also replaced by an 1-Wire temperature sensor.

Now to the actual wiring. First, I installed the cable ducts, left, right, on the top and in the middle of the cabinet.

Next I installed two DIN rails, one in the middle between the cable ducts, and one 75 mm below the middle cable duct. I use self-tapping screws to mount all of the components.

On the lower DIN rail I mounted the terminals, the relays, and the 5V power supply. As clamps I used rail mounted terminals with tension springs. On the left are the terminals for the supply line – 3x Gray for the 3 phases – 1x Blue for the neutral – 1x Yellow / Green for the ground. Then for every other cable I added a gray, a blue and a yellow/green clamp. Some of the cables in the hot tub are somewhat thick. I am in Europe and there we have different standards on cable thickness than the US. The terminals have to be able to accommodate 6mm^2 for all connections.

To the right of the clamps are the relays. The UniPi internal relays can only switch 5A, so they cannot be used to switch the load directly. I used power relays with 230V AC control voltage and now the installation is able to handle power of up to 4kVA.

On the left end side of the upper DIN rail, I mounted 2 potential distributors, one for GND and one for 12V+. The 12V+ is provided by the UniPi. Next to it, I placed the UniPi 1.1, with a mounting plate for DIN rails.

Source: Open Source Hot Tub Controller

Scroll to Top