Pool pump speed control - easy way?

Looking for some advice.

I’d like to control my variable speed pool pump using something like esp8266/esp32.

I can turn on the chlorinator and pump using a smart GPO, but can’t amend the speed. I’ve got a Viron P320xt pump and e25 chlorinator.

Generally speaking, the chlorinator/control just comes on using its own timer, but I will probably set this to manual and put a smart GPO on it to turn on and off using HA. Pump comes on using last state (low power).

When I need the pump to run on fast (high power) for things like running vacuum/extra filtering, I’ve got no way of altering except going to the pump and pressing the appropriate speed. If it gets forgotten, it stays on this speed

Wondering if anyone has found a way to interface with the pumps or alternative way of changing speed easily? As a crude way, I could get 3x switchbots to physically press the buttons, but that seems a bad way.

1 Like

Does this help?


Wow!! Thanks for this! And referencing my other topic. I’m going to try this asap.

I have to be VLink controller that already acts as a master on the Modbus line. It sends out pump demand and status requests every few seconds, so it would compete if I sent different demand requests also. The pump’s speed would change to my requested speed and then back to the original VLink requested speed, etc. That’s why I wanted to intercept and filter out the VLink requests under certain conditions, mostly while my solar valve was “On”.

A big part of my problem so far is the fact that the pump uses a nonstandard Modbus protocol, as you alluded to. That meant having to parse incoming raw UART bytes and outputting custom Modbus commands. I also have no CPP or Python skills.

Does your code take into account the pump’s command time-out (default is 60 s)? If the pump doesn’t receive any requests from the master after this interval, the pump shuts itself off.

I may well have to ditch the VLink interface and set up schedules, etc. all within HA.

Do you have any insights into the other protocols/DIP switch settings? My previous pump was a Hayward EcoStar and my main pool control board is a Hayward Aqualogic that I have interfaced into HA. If I could control the new pump via the Aqualogic that might be the best way to go.

Thanks again. Following.

Yes, you only want one master on a modbus bus.

I set the sensor update interval so that it prevents the pump from reverting to the control panel values.

There is a setting that controls the timeout for automation interfaces but I didn’t force that because I like to fail safe so if my little RS485 device fails then at least the pump will just stop.

I’ve been running this firmware for a couple of weeks now and it seems to be very reliable … I’m using it to reduce rpm overnight or when we are socialising near the plant room to cut the noise down and also to boost the speed when I do a vac!

Let me know how you get on, happy to make mods or add code to help the community.

Also, we could probably set your pump to respond to Hayward commands when DIP #1 is in the OFF pos. Let me take a look and see if we can create an ESP button for that!

Thanks again!
Flashed it last night using the yaml in your Readme. Pretty much worked first try! I’m still hooked up to the VLink interface so there’s some Master-Master competition going on, I think. Every couple of minutes the pump will go to 0 RPM then restart. Maybe I need to change the Sensor Update Interval you mentioned. Where is that located? Just to clarify, you don’t have the Century control panel hooked up at all now, just your ESPHome node, right?
Also, I found this a while back (https://github.com/wbwallace/Vgreen-automation) which might be use. I also saw that today someone on this forum had asked a question about custom modbus protocols (Testing modbus integration), so I referred him to your GitHub repository.
I’ll be following.

Yeah, I think the vlink box will be getting confused, it’s going to see the replies from the pump to you HA control device. I’d temporarily disconnect that to make sure that is the cause of going to zero rpm.

I do still have the panel on the top of the pump connected, but this is ignored if the device gets data on its Modbus interface … well for one minute anyway. The update frequency is set in __init.py__ on the line .extend(cv.polling_component_schema("10s")).

Thanks. I’ll try that.

Ok, first off, I can’t thank gazoodle enough for publishing this repository and readme about how to get HA to talk to my V-Green variable pump motor. I have now removed the V-link cloud device and can control the pump locally with HA and the ESP32 device shown in the photos. After some tinkering and a ton of research about ESPHome, etc., I purchased the ESP32 device shown in the github link and got everything working.
Albeit except for 1 issue; I have the 2.7HP regal motor that also has a relay on the control board next to the RS485. I use this to fire up a booster pump. The protocol document from Regal references auxiliary relays and the configuration commands to set it to close at certain RPMs, but I have no idea how to send a command to do that or to manually close and open the relay. Everything else works perfectly – pump on/off and RPM setting. Any idea where to start? I have no scripting skills, but can piece together with sample code and make changes.

I can abandon the integrated relay and just toss in a Shelly relay to control the booster pump, but I did like how the pump had a failsafe to not allow the relay to close without the pump running, etc.

Thanks again!