- Easily connect your NeoPool-based pool controller to Home Assistant via Modbus TCP.
- NeoPool is a control system originally developed by Sugar Valley (acquired by Hayward in 2016), available under many brand names and in multiple device variants.
- Full local control, real-time sensors, timers, relays, automation support, and more.
This integration is available via HACS
Supported device models (Sugar Valley / Hayward product lines):
Hidrolife β’ Aquascenic β’ Oxilife β’ Bionet β’ Hidroniser β’ UVScenic β’ Station β’ Aquarite
Distributed by (vendors selling NeoPool-based hardware):
Hayward β’ Brilix (Albixon) β’ Bayrol β’ Certikin β’ Poolstar β’ GrupAquadirect β’ Pentair β’ ProducPool β’ Pool Technologie β’ Kripsol
The hardware supported by this integration uses the NeoPool control system, originally developed by the Spanish company Sugar Valley and acquired by Hayward in 2016. The same system is sold under many brand names worldwide (see supported list above).
The Modbus protocol implemented here is described in the official "NeoPool Control System MODBUS Register description" documentation by Sugar Valley.
Note: VistaPool is the name of Hayward's mobile/web app for cloud-based pool management. This integration works entirely locally via Modbus β it does not require or use the VistaPool app or any cloud service.
- Provides full local control of supported pool controllers over Modbus TCP.
- Adds real-time sensors, numbers, switches, selects, and buttons for all available features.
- Allows timer/relay/aux configuration, automation and Home Assistant UI integration.
- Supports multiple pools or hubs, each as a separate integration.
If you find this integration useful, consider supporting its development:
- βοΈ Give this repository a star!
- π οΈ Contribute code or report issues.
- πΈ Become a GitHub Sponsor
- β Support me on Ko-fi
- Gateway: Any Modbus TCP gateway (e.g. USR-DR164)
- Connector: Standard 2.54β―mm 5-pin PCB female connector
- Settings: 19200 baud, 1 stop bit, no parity
- Protocol: Modbus RTU
- See the Modbus Connection Guide for more info and images.
-
RS485 port: Use the
WIFIorEXTERNALconnector (do not useDISPLAY, unless the internal LCD is disconnected). -
Pinout (top to bottom):
___ 1 |* |β +12V (from internal power supply) 2 |* |β NC (not connected) 3 |* |β Modbus A+ 4 |* |β Modbus B- 5 |*__|β GND -
The NeoPool device acts as a Modbus server (slave), this integration is a Modbus client (master).
-
Only one Modbus client can be connected to a Modbus connector with the same label. It is not possible to operate multiple clients on connectors that share the same name.
-
Modbus connectors with different labels represent independent physical interfaces. Data traffic on one connector is not visible on others.
-
The DISPLAY connector is present twice and is usually used by the built-in LCD. Do not use it for this integration if the LCD is connected!
- Reliable single Modbus TCP connection per device/hub (improves stability, avoids connection issues).
- Multi-hub support: Add multiple VistaPool devices, each with a custom prefix (used in entity IDs).
- Sensors: pH, Redox (ORP), Salt, Conductivity, Water Temperature, Ionization, Hydrolysis Intensity/Voltage, Device Time, Status/Alarm bits, Filtration speed (if supported), Backwash remaining time (if Besgo automatic filter valve is configured).
- Numbers: Setpoints for pH, Redox, Chlorine, Temperature, Hydrolysis production, Hydrolysis cover reduction % (if hydrolysis module present + cover sensor enabled), Hydrolysis shutdown temperature threshold (if hydrolysis module + temperature sensor + cover sensor enabled).
- Switches: Manual filtration, relays (Light & AUX1βAUX4, can be enabled in Options), automatic time sync to Home Assistant (default: disabled), winter mode (suspends Modbus communication while keeping all entities registered in Home Assistant), Hydrolysis cover reduction enable (if hydrolysis module present + cover sensor enabled), Hydrolysis temperature shutdown enable (if hydrolysis module + temperature sensor + cover sensor enabled).
- Selects: Filtration mode (Manual, Auto, Heating, Smart, Intelligent, Backwash (auto-enabled if Besgo valve configured)), timers for automatic filtration, filtration speed (if supported), boost control (if Hydro/Electrolysis module is present), pH pump activation delay, Backwash Repeat Interval (if Besgo valve configured), Backwash Valve Mode (if Besgo valve configured).
- Buttons: Manual time sync, reset alarm/error states, Start Backwash (only if Besgo automatic filter valve is configured on the device).
HACS (recommended)
- Open HACS in Home Assistant.
- Go to Integrations and search for VistaPool Modbus Integration (no need to add a custom repository, this integration is included in the HACS default list).
- Install VistaPool Modbus Integration.
- Restart Home Assistant.
- Download or clone this repository.
- Copy the
custom_components/vistapoolfolder to your/config/custom_componentsdirectory. - Restart Home Assistant.
After installing the integration via HACS and restarting Home Assistant:
You can use the button below to start configuration:
Or add manually:
- Go to Settings β Devices & Services.
- Click Add Integration.
- Search for and select VistaPool Modbus Integration.
- Name: Custom identifier for your pool.
This will be used as a prefix in all entity IDs, with spaces replaced by underscores and converted to lowercase
(e.g., entering βPool Westβ becomespool_west, and your entity will besensor.pool_west_measure_ph). - Host: IP address of your Modbus TCP gateway
- Port: (default: 502)
- Slave ID: (default: 1)
- Scan interval: (default: 30s)
After initial setup, you can fine-tune the integration:
- Scan interval (default: 30s)
- Timer resolution (default: 15m)
- Enable/disable relays (Light and AUX1βAUX4 are default: disabled)
- Enable/disable cover sensor (pool cover input β enables cover-related entities; default: disabled)
- Enable/disable filtration timers (filtration1, filtration2, filtration3)
- Unlock advanced features (see below)
Go to Settings β Devices & Services β VistaPool Modbus Integration β Configure
to adjust options at any time.
If your pool controller is physically disconnected during winter (e.g. drained and stored), you can enable Winter Mode instead of disabling the whole integration.
- Flip the
switch.<name>_winter_modeswitch to ON. - The integration stops all Modbus polling β no connection attempts, no error logs.
- All entities remain registered in Home Assistant. Control entities (switches, lights, buttons, numbers, selects) immediately become unavailable (greyed-out) and cannot be controlled until winter mode is disabled. Sensors and binary sensors stay available but show unknown values.
- Automations referencing these entities continue to exist without errors.
- When the pool season starts again, flip the switch back OFF β communication resumes and values update at the next poll cycle.
The winter mode state is persisted across Home Assistant restarts, so you only need to set it once. Winter mode can also be toggled via automations (e.g. turn on every 1st November, turn off every 1st April).
The "Backwash" option in the filtration mode select is hidden by default, as its remote use can be risky and is intended only for advanced users.
To enable it:
- Go to Settings β Devices & Services β VistaPool Modbus Integration β Configure.
- In the options dialog, find the field Unlock advanced options.
- Enter the code:
<device_prefix><current_year>
- Example: If your pool's prefix is
vistapooland the year is 2025, entervistapool2025. - The prefix is the same as in your entity IDs (e.g.,
switch.vistapool_light).
- Submit the form. The advanced settings page will open, allowing you to enable "Backwash" mode.
β οΈ WARNING: Enabling "Backwash" exposes this function in filtration mode selection. Improper use may damage your filtration system! Only activate if you fully understand the risks.
If your device is configured with a Besgo automatic filter valve (MBF_PAR_FILTVALVE_ENABLE = 1), a dedicated Start Backwash button (button.<name>_backwash) is automatically available β no unlock code required.
- Pressing it sets the filtration mode to backwash (mode 13) and the controller opens the Besgo valve, then runs the cleaning cycle automatically.
- When switching from manual filtration mode to backwash on a device with a Besgo valve, the pump is intentionally not stopped before the mode change β this ensures the valve opens correctly under pressure.
- On devices without a Besgo valve (manual multi-way valve), the pump IS stopped first so the user can safely rotate the valve before the backwash cycle begins.
- The Backwash option in the filtration mode select is automatically shown when a Besgo valve is detected (no unlock code needed).
Additional Besgo-only entities are created automatically when MBF_PAR_FILTVALVE_ENABLE = 1:
| Entity | Description |
|---|---|
sensor.<name>_filtvalve_remaining |
Remaining time (s) of the current backwash cycle |
select.<name>_filtvalve_period_minutes |
How often automatic backwash is triggered (1 day β 4 weeks) |
select.<name>_filtvalve_mode |
Valve timer mode: Automatic / Always On / Always Off |
β οΈ WARNING: Always verify that your filtration system is correctly set up before triggering a backwash remotely. Improper use may damage your filtration system!
Entities are lowercased and prefixed by your custom name, e.g. sensor.pool1_filt_mode:
- Sensors:
sensor.<name>_measure_ph,sensor.<name>_measure_temperature,sensor.<name>_filt_mode,sensor.<name>_filtration_speed(if supported),sensor.<name>_filtvalve_remaining(if Besgo valve configured) - Numbers:
number.<name>_hidro,number.<name>_ph1,number.<name>_heating_temp(if supported),number.<name>_hidro_cover_reduction,number.<name>_hidro_shutdown_temperature(if supported + cover sensor enabled in Options) - Switches:
switch.<name>_winter_mode,switch.<name>_filt_manual_state,switch.<name>_time_auto_sync,switch.<name>_light,switch.<name>_aux1-switch.<name>_aux4(if enabled),switch.<name>_hidro_cover_enable,switch.<name>_hidro_temp_shutdown(if supported + cover sensor enabled in Options) - Selects:
select.<name>_filt_mode,select.<name>_filtration1_start,select.<name>_filtration1_stop,select.<name>_filtration_speed(if supported),select.<name>_cell_boost(if supported),select.<name>_relay_activation_delay,select.<name>_filtvalve_period_minutes,select.<name>_filtvalve_mode(if Besgo valve configured) - Buttons:
button.<name>_sync_time,button.<name>_escape,button.<name>_backwash(if Besgo automatic filter valve is configured)
- Only enabled timers and relays (per Options) are shown in Home Assistant.
- Winter Mode: Suspends all Modbus polling while keeping entities registered in Home Assistant (control entities become unavailable, sensors show unknown values). See Winter Mode above.
- Timer resolution: Can be set (in minutes) in integration Options.
- Entities cache last value if there is a Modbus communication problem.
- Backwash (filtration mode select): Hidden by default; unlock via advanced options. See above for details.
- Backwash button: Automatically available when a Besgo automatic filter valve is configured on the device. See above for details.
- Besgo valve entities (
sensor filtvalve_remaining,select filtvalve_period_minutes,select filtvalve_mode): Only created when Besgo valve is detected (MBF_PAR_FILTVALVE_ENABLE = 1). - Reload on options change: Integration is reloaded automatically on option changes.
- Filtration speed sensor/control: Only available for variable-speed pump models.
- Boost control (select): Only if Hydro/Electrolysis module is present.
- Reset Alarm button: Allows clearing of error and alarm states from HA.
- Tasmota NeoPool driver β implements the NeoPool Modbus register protocol originally documented by Sugar Valley
- NeoPool Control System MODBUS Register description β official Modbus register documentation by Sugar Valley (pdf)
This integration is provided "AS IS" and without any warranty or guarantee of any kind.
The author takes no responsibility for any damage, loss, or malfunction resulting from the use or misuse of this code. Use at your own risk.
This project is licensed under the Apache License 2.0, the same license used by Home Assistant.
This project is not affiliated with or endorsed by Sugar Valley, Hayward, or any other pool equipment manufacturer or distributor.
"VistaPool" is a trademark of Hayward Industries, Inc. This integration communicates locally via Modbus and does not use the VistaPool cloud service.