Quick Start
π Smart Swimming Pool: From box to a working pool in 60 minutes.
This is the express path β minimal theory, maximum action. Follow each step exactly, and you will have a working pool controller within an hour.
π For detailed explanations and background, see the Getting Started guide.
What You Need
- ESP32 DevKit V1 + USB cable (data cable!)
- 2-channel 5V relay module (active-low)
- 2Γ DS18B20 temperature sensors (waterproof)
- 2Γ 4.7kΞ© resistors
- Breadboard + jumper wires
- 5V USB power supply (1A+)
- Computer with VS Code + PlatformIO installed
- MQTT broker running on your network (optional for first test)
All parts: ~45β75 β¬ β see Bill of Materials for details.
Step 1: Wire It Up (5 minutes)
Breadboard Layout
βββββββββββββββββββββββββββββββββββββββββββ
β ESP32 DevKit β
β ββββββββββββββββββββββββββββββββββββββββ€
β β USB GND 5V GPIO32 GPIO33 ... β
β ββββββββββββββββββββββββββββββββββββββββ€
β β β β β β
β β β βββ4.7kΞ©ββ€ 3.3V β
β β β β β β
β ββββββββββ€ β β β β
β DS18B20 #1 β β DS18B20 #2 β
β (Solar) β β (Pool) β
βββββββββββββββββββββββββββββββββββββββββββConnections:
| From | To | Wire |
|---|---|---|
| ESP32 3.3V | DS18B20 #1 VDD (red) | Red |
| ESP32 3.3V | DS18B20 #2 VDD (red) | Red |
| ESP32 GND | DS18B20 #1 GND (black) | Black |
| ESP32 GND | DS18B20 #2 GND (black) | Black |
| ESP32 GPIO32 | DS18B20 #1 DATA (yellow) | Yellow |
| ESP32 GPIO33 | DS18B20 #2 DATA (yellow) | Yellow |
| GPIO32 β 3.3V | 4.7kΞ© pull-up resistor | β |
| GPIO33 β 3.3V | 4.7kΞ© pull-up resistor | β |
| ESP32 5V (VIN) | Relay module VCC | Red |
| ESP32 GND | Relay module GND | Black |
| ESP32 GPIO26 | Relay IN1 (heating pump) | Blue |
| ESP32 GPIO25 | Relay IN2 (filter pump) | Green |
β οΈ Double-check: Relay VCC goes to 5V (ESP32 VIN pin), NOT to 3.3V.
Step 2: Flash the Firmware (10 minutes)
- Open VS Code with the PlatformIO extension installed
- Clone and open the pool-controller:
git clone https://github.com/smart-swimmingpool/pool-controller.git cd pool-controller code . - Connect the ESP32 via USB
- Upload firmware: In the PlatformIO footer bar, click the β (Upload and Monitor) button next to
esp32dev - Upload filesystem: PlatformIO tab β
esp32devβ Platform β Upload Filesystem Image - Wait for both uploads to complete
Expected serial output (115200 baud):
[INFO] Pool Controller v3.x.x starting...
[INFO] WiFi: Starting in AP mode
[INFO] AP: 'Pool-Controller-Setup'. IP: 192.168.4.1
[INFO] OneWire: Found 2 DS18B20 sensor(s)Step 3: Configure WiFi (3 minutes)
- Connect your phone/laptop to the WiFi network
Pool-Controller-Setup(open, no password) - Open browser β http://192.168.4.1
- Enter your home WiFi SSID and password
- Click Save β the ESP32 reboots and connects to your network
Step 4: Connect to MQTT (3 minutes)
- Find the ESP32’s IP address on your router (or from the serial monitor)
- Open http://
/ in your browser - Go to Configuration β MQTT
- Enter your MQTT broker address (e.g.,
192.168.1.100orcore-mosquitto) - If using authentication, enter username/password
- Click Test Connection β it should say “Connected”
- Click Save
No broker yet? Install Mosquitto on any machine on your network, or use the Mosquitto add-on in Home Assistant.
Step 5: Verify Sensors (3 minutes)
Check the web interface Status page:
| Sensor | Expected |
|---|---|
| Pool Temperature | Plausible room/water temperature (not -127Β°C) |
| Solar Temperature | Plausible room/water temperature (not -127Β°C) |
| Solar Sensor Found | β Yes |
| Pool Sensor Found | β Yes |
Reading -127Β°C? Check the pull-up resistor and data wire connections.
Step 6: Test Relays (5 minutes, NO 230V)
- On the web interface Control page, set Operation Mode to
manu(Manual) - Grab a multimeter, set to DC voltage
- Toggle Heating Pump ON:
- GPIO26 (Relay IN1) should read ~0V (LOW)
- Toggle ON β OFF:
- GPIO26 should go back to ~3.3V (HIGH)
- Repeat for Filter Pump on GPIO25
Voltages reversed? Your relay is active-high β check for a HIGH/LOW jumper on the module, or replace it.
Step 7: Connect Pumps (10 minutes)
β οΈ 230V mains voltage β risk of death. Observe all safety precautions.
- Disconnect ESP32 from USB power
- Wire relay outputs to pump contactors or directly to pumps
- Ensure RCD/FI circuit breaker is installed on the 230V side
- Reconnect ESP32 to USB power
- Set Operation Mode to
manu(Manual) - Toggle Heating Pump ON β pump should start
- Toggle OFF β pump should stop
- Repeat for Filter Pump
Step 8: Enable Automation (2 minutes)
- Set Operation Mode to
auto - Set Max. Pool Temp to your target (e.g., 28Β°C)
- Set Min. Solar Temp (e.g., 35Β°C)
- Set Hysteresis (e.g., 2 K)
The controller now handles everything automatically.
Step 9: Connect to Home Assistant (5 minutes)
If you use Home Assistant:
- Go to Settings β Devices & Services β Add Integration β MQTT
- Ensure
discovery: trueis set (default) - The Pool Controller should appear as a new device automatically
- Add entities to your Lovelace dashboard
See the Home Assistant Integration Guide for the complete dashboard setup and automation examples.
You’re Done! π
Your pool controller is now fully operational. Next steps:
- Set up the Grafana Dashboard for temperature history
- Add the Pool Monitor for a wireless display
- Follow the Commissioning Checklist for a more thorough verification
- Read the FAQ & Troubleshooting if something isn’t working
Quick Reference: Pin Map
| Component | ESP32 Pin |
|---|---|
| DS18B20 Solar (DATA) | GPIO32 |
| DS18B20 Pool (DATA) | GPIO33 |
| 4.7kΞ© pull-up (each) | DATA β 3.3V |
| Relay IN1 (heating pump) | GPIO26 |
| Relay IN2 (filter pump) | GPIO25 |
| Relay VCC | 5V (VIN) |
| Relay GND | GND |
| DS18B20 VDD | 3.3V |
| DS18B20 GND | GND |