Skip to content
Start Here

Start Here

πŸ‘‹ Welcome to the Smart Swimming Pool project! This page helps you find the right path based on what you want to build.


Choose Your Path

πŸ”° I want the simplest possible setup

Goal: Automate pool circulation with minimal cost and effort.

  • Use a breadboard or protoboard with ESP32 DevKit V1
  • 2-channel relay module for pump control
  • 2Γ— DS18B20 temperature sensors
  • Flash the pre-built firmware
  • Control via Home Assistant

Start here: Pool Controller β€” Build from Zero

ComponentApprox. Cost
ESP32 DevKit V18–12 €
2-ch relay module4–6 €
2Γ— DS18B20 sensors6–10 €
Breadboard + wires5 €
Total~30 €

🏊 I have a standard pool with sand filter and solar heating

Goal: Full automation with circulation scheduling and solar heating.

  • Follow the Build from Zero guide
  • Use an IP65 enclosure for weather protection
  • Proper mains wiring with fuse and RCD protection
  • Home Assistant integration for dashboard and automation
  • MQTT for reliable communication

Required reading:


🏭 I’m building a production-ready installation

Goal: Industrial-grade, 24/7 reliable pool controller with full safety.

  • Use the NORVI AE01-R or custom PCB for reliability
  • IP66+ enclosure with cable glands
  • DIN-rail mounted components
  • Proper overcurrent protection and grounding
  • Flash encryption enabled
  • IoT VLAN with firewall rules
  • Regular maintenance schedule

Required reading:


Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Pool Environment                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Pool     β”‚  β”‚ Solar    β”‚  β”‚ Sand     β”‚  β”‚ Heat         β”‚ β”‚
β”‚  β”‚ Pump     β”‚  β”‚ Pump     β”‚  β”‚ Filter   β”‚  β”‚ Exchanger    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚       β”‚              β”‚                              β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚              β”‚                              β”‚
        β–Ό              β–Ό                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Pool Controller (ESP32)                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ DS18B20    β”‚  β”‚ DS18B20    β”‚  β”‚ 2-Ch Relay Module    β”‚   β”‚
β”‚  β”‚ Pool Temp  β”‚  β”‚ Solar Temp β”‚  β”‚ GPIO18 β†’ Pool Pump   β”‚   β”‚
β”‚  β”‚ GPIO16     β”‚  β”‚ GPIO15     β”‚  β”‚ GPIO19 β†’ Solar Pump  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                          β”‚                                    β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”                              β”‚
β”‚                    β”‚  WiFi STA  β”‚                              β”‚
β”‚                    β”‚  MQTT Pub  β”‚                              β”‚
β”‚                    β”‚  Web UI    β”‚                              β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚ MQTT
                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Smart Home Server                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Home Assistant     β”‚  β”‚ MQTT Broker (Mosquitto)        β”‚  β”‚
β”‚  β”‚ β€’ MQTT Discovery   β”‚  β”‚ β€’ pool-controller/# topics     β”‚  β”‚
β”‚  β”‚ β€’ Lovelace UI      β”‚  β”‚ β€’ Auth enabled                 β”‚  β”‚
β”‚  β”‚ β€’ Automations      β”‚  β”‚ β€’ Local only                   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Repository Overview

RepositoryPurposeLanguage
pool-controllerESP32 firmware, web UI, hardware docsC++ (PlatformIO)
websiteProject website (Hugo)Markdown, Hugo
openhab-configopenHAB configuration (legacy)openHAB DSL
monitorSolar-powered temperature displayC++
grafana-dashboardGrafana dashboard JSONJSON

FAQ

Do I need Home Assistant?

No. The controller has a built-in web interface for direct management. Home Assistant provides a nicer dashboard and automation capabilities, but is not required.

Can I use openHAB instead?

Yes. openHAB is supported via MQTT. See the openHAB configuration repository. Note that Home Assistant Discovery is now the primary integration path β€” openHAB requires manual MQTT configuration.

What if I don’t have solar heating?

No problem. The solar pump functions can be left unused. The controller works perfectly with just pool circulation.

Can I use this with any pool pump?

Yes, as long as the pump can be switched on/off via a relay (mains voltage). Most sand filter pumps support this. Check your pump’s wiring diagram.

What is the maximum cable length for DS18B20 sensors?

Up to 10 meters with 4.7 kΞ© pull-up. For longer runs, use a lower value pull-up (e.g., 2.2 kΞ©) or a dedicated OneWire driver.

Do I need to be an electrician?

Basic wiring (relays to pumps) requires working with 230V AC. If you’re not comfortable with mains voltage, hire a qualified electrician.

Can I use the controller without WiFi?

The controller needs WiFi for MQTT communication, but it continues running with its last known configuration if WiFi is lost. A future version will support standalone operation with a display and buttons.


Next Steps

  1. Read the Build from Zero guide
  2. Order the parts from the bill of materials
  3. Build and test on a breadboard
  4. Install in an enclosure
  5. Integrate with Home Assistant
  6. Enjoy your smart pool!
Last updated on