Skip to content

svasek/homeassistant-vistapool-modbus

VistaPool Modbus Integration for Home Assistant

  • 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.

Release Hassfest HACS CodeQL Ruff codecov

Ask DeepWiki Sponsor me Ko-fi

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


About NeoPool Controllers

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.


What does this integration do?

  • 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.

Support

If you find this integration useful, consider supporting its development:


Hardware Connection

  • 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.

Plug Connector

  • RS485 port: Use the WIFI or EXTERNAL connector (do not use DISPLAY, 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!


Features

  • 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).

Installation

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

HACS (recommended)

  1. Open HACS in Home Assistant.
  2. 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).
  3. Install VistaPool Modbus Integration.
  4. Restart Home Assistant.

Manual

  1. Download or clone this repository.
  2. Copy the custom_components/vistapool folder to your /config/custom_components directory.
  3. Restart Home Assistant.

Setup and Configuration

After installing the integration via HACS and restarting Home Assistant:

1. Add Your Pool to Home Assistant

You can use the button below to start configuration:

Open your Home Assistant instance and start setting up a new integration.

Or add manually:

  • Go to Settings β†’ Devices & Services.
  • Click Add Integration.
  • Search for and select VistaPool Modbus Integration.

2. Enter Connection Details

  • 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” becomes pool_west, and your entity will be sensor.pool_west_measure_ph).
  • Host: IP address of your Modbus TCP gateway
  • Port: (default: 502)
  • Slave ID: (default: 1)
  • Scan interval: (default: 30s)

3. Adjust Integration Options (Optional)

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.


Winter Mode

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_mode switch 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).


Advanced Options: Unlocking β€œBackwash” Mode

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:

  1. Go to Settings β†’ Devices & Services β†’ VistaPool Modbus Integration β†’ Configure.
  2. In the options dialog, find the field Unlock advanced options.
  3. Enter the code: <device_prefix><current_year>
  • Example: If your pool's prefix is vistapool and the year is 2025, enter vistapool2025.
  • The prefix is the same as in your entity IDs (e.g., switch.vistapool_light).
  1. 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.

Start Backwash Button (Besgo Automatic Filter Valve)

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!


Example Entities

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)

Special Notes

  • 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.

Based On

  • 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)

Disclaimer

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.

License

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.

Sponsor this project

  •  

Contributors

Languages