Commissioning Checklist
π Smart Swimming Pool: Step-by-step checklist for first-time setup and commissioning.
Use this checklist before connecting pumps to mains voltage. Tick off each item to ensure a safe and successful first run.
WARNING: 230V Mains Voltage
This project operates with 230V AC mains voltage and should only be built by individuals with basic electronics knowledge. Always use an RCD (residual-current device). This project is not CE/UL certified and not intended for commercial use.
1. Hardware Assembly
1.1 Controller Electronics
- ESP32 firmly seated on breadboard or perfboard
- Relay module connected: VCC β 5V (not 3.3V!), GND β GND
- Relay IN1 (GPIO26) prepared for heating circuit pump
- Relay IN2 (GPIO25) prepared for filter/circulation pump
- DS18B20 solar sensor: DATA β GPIO32, VDD β 3.3V, GND β GND
- DS18B20 pool sensor: DATA β GPIO33, VDD β 3.3V, GND β GND
- 4.7kΞ© pull-up resistor between each DATA pin and 3.3V (2 resistors total)
- No shorts between adjacent pins on the breadboard
1.2 Power Supply
- USB power supply: 5V / 1A minimum (quality brand, not a phone charger from a discount store)
- USB cable is a data cable (not charge-only)
- Power supply is in a dry location or IP-rated enclosure
1.3 Enclosure (if used)
- Enclosure is IP54 or better for outdoor / pool house installation
- Cable glands (PG fittings) installed for all cable entries
- Ventilation openings if enclosure traps heat
- Strain relief on all cables entering the enclosure
2. 230V / Mains Side
β οΈ Danger to life! Work on 230V circuits must only be performed by qualified personnel. Observe all applicable electrical codes.
- RCD / FI circuit breaker installed in the supply line (mandatory!)
- Circuit breaker (MCB) with appropriate rating for each pump
- Cable cross-section adequate for pump current draw
- All connections in a junction box or distribution board
- Pumps are NOT connected to the relay outputs yet β test without 230V first
- If available: use a mains tester to verify the 230V wiring before connecting pumps
3. Firmware & First Boot
- PlatformIO project opened, environment set to esp32dev
- Firmware uploaded successfully:
pio run -e esp32dev -t upload - Filesystem image uploaded:
pio run -e esp32dev -t uploadfs - Serial monitor shows boot log at 115200 baud
- ESP32 starts in AP mode:
[INFO] Pool Controller v3.x.x starting... [INFO] WiFi: Starting in AP mode [INFO] AP: 'Pool-Controller-Setup'. IP: 192.168.4.1
3.1 If Boot Fails
| Symptom | Likely Cause | Check |
|---|---|---|
| No output on serial monitor | Wrong baud rate or USB cable | Set monitor to 115200 baud; try a data USB cable |
| Continuous reboot loop | Power supply too weak | Use 5V/1A+, quality brand |
ets boot message then restart | Flash settings wrong | Ensure DIO mode, 4MB flash size |
| “Failed to connect to ESP32” | Wrong COM port or BOOT not held | Hold BOOT during flash start |
4. Temperature Sensors
- After boot, serial monitor shows detected DS18B20 sensors:
[INFO] OneWire: Found 2 DS18B20 sensor(s) [INFO] DS18B20[0]: 28-xxxxxxxxxxxx (Solar sensor on GPIO32) [INFO] DS18B20[1]: 28-yyyyyyyyyyyy (Pool sensor on GPIO33) - Both sensors read plausible temperatures (not
-127Β°Cor85Β°C) - Warm one sensor by holding it β reading rises within seconds
- If only 1 sensor found: check wiring, pull-up resistor, or try the sensor alone
4.1 Temperature Sensor Quick Check
| Reading | Meaning | Action |
|---|---|---|
-127Β°C | Sensor not found on bus | Check DATA wire, pull-up resistor, GPIO pin |
85Β°C | Sensor stuck at power-on default | Check for parasite power; all 3 wires must be connected |
| Erratic / jumping values | Electrical interference | Keep sensor cable >30cm away from 230V wiring |
| Both sensors identical | Normal if in same water | Verify with hand warmth test (see above) |
5. WiFi & Network
- Connected to
Pool-Controller-SetupWiFi network - Web interface reachable at http://192.168.4.1
- Home WiFi configured in web interface β Connection section
- ESP32 rebooted and connected to home network
- New IP address noted (from router DHCP or serial monitor)
- Web interface reachable at http://
/ - ESP32 pingable from your computer:
ping <new-ip>
6. MQTT Connection
Prerequisites
- MQTT broker (Mosquitto) is installed and running
- Broker is reachable from the ESP32’s network (same subnet or firewall rule for port 1883)
- If using authentication: username/password noted
Configuration
- Web interface β Configuration β MQTT:
- Broker address entered
- Port correct (default:
1883) - Credentials entered (if required)
- Click Test Connection β result shows “Connected”
- Click Save β controller restarts MQTT connection
Verification
- Subscribe to all topics on the broker:
mosquitto_sub -h <broker-ip> -t "#" -v - Pool controller topics appear (prefixed with
homeassistant/orhomie/) - Sensor values update periodically
- If topics are missing: check
homeassistantprefix in HA configuration
7. Functional Test (Without 230V)
Before connecting any pump, test that the controller can switch the relays.
- Multimeter ready, set to DC voltage mode
- Measure between relay IN1 pin and GND:
- Web interface shows relay OFF β IN1 reads ~3.3V (HIGH)
- Web interface shows relay ON β IN1 reads ~0V (LOW)
- Repeat for relay IN2 β same behavior
- If voltages are reversed: your relay module is active-high β check for a HIGH/LOW jumper or replace the module
Relay Test by GPIO
| GPIO | Expected OFF | Expected ON | Controls |
|---|---|---|---|
| GPIO26 (IN1) | ~3.3V (HIGH) | ~0V (LOW) | Heating pump (not yet connected) |
| GPIO25 (IN2) | ~3.3V (HIGH) | ~0V (LOW) | Filter pump (not yet connected) |
8. Home Assistant Integration (Optional)
- MQTT integration configured in Home Assistant (Settings β Devices & Services β MQTT)
- Discovery enabled:
discovery: truein HAconfiguration.yaml - Pool Controller appears as a device in Settings β Devices & Services β Devices
- All entities visible and reporting values:
sensor.pool_controller_pool_tempβ pool temperaturesensor.pool_controller_solar_tempβ solar temperatureselect.pool_controller_modeβ operation modeswitch.pool_controller_pool_pumpβ pump controlswitch.pool_controller_solar_pumpβ solar pump control
- Operation Mode can be changed via HA (try switching to
manuand back toauto)
9. First Real Test (With Pumps)
Only proceed when all previous steps pass.
- Disconnect ESP32 from USB power
- Wire relay outputs to pump contactors or directly to pumps (230V side)
- Double-check: relay common (COM) and normally open (NO) wired correctly
- Reconnect ESP32 to USB power
- Set operation mode to Manual (
manu) via web interface - Toggle Heating Pump ON via web interface β pump starts
- Toggle Heating Pump OFF β pump stops
- Toggle Filter Pump ON β pump starts
- Toggle Filter Pump OFF β pump stops
- If pump does not start: check 230V wiring, circuit breaker, RCD
- If pump starts but does not stop: relay contacts may be welded β disconnect 230V immediately
10. Automation Test
- Set operation mode to Auto
- Verify the controller switches pumps according to its heating logic
- Solar temperature > Pool temperature + hysteresis β heating pump should turn ON
- Pool temperature reaches max. set temperature β heating pump should turn OFF
- Filter/circulation pump runs according to its schedule (timer or temperature-based)
11. Final Verification
- Temperature difference between solar and pool sensor is plausible
- Controller remains stable for 24+ hours without unexpected reboots
- WiFi connection stays stable (check RSSI in diagnostics)
- MQTT connection persists (check availability topic: should read
online) - Home Assistant (if used) shows correct and current values
Quick Reference Card
Print this abbreviated checklist for quick on-site reference:
β ESP32: 5V USB power, data cable
β Relay VCC β 5V, GND β GND
β Relay IN1 β GPIO26 (heating)
β Relay IN2 β GPIO25 (filter)
β DS18B20 #1: GPIO32 + 4.7kΞ© pull-up
β DS18B20 #2: GPIO33 + 4.7kΞ© pull-up
β RCD / FI installed on 230V side
β Firmware + Filesystem uploaded
β WiFi configured, web UI reachable
β MQTT test connection successful
β Relay voltages correct (3.3V OFF / 0V ON)
β Manual pump test (without 230V automa