Hayward AquaLogic / ProLogic automation

@FrForget The heater function on ProLogic does two things. It triggers the heater relay in the ProLogic controller and (for variable pumps) holds the speed at a set amount to keep consistent flow while the heater is on. This prevents overheating and speeds up heating the water overall.

If ProLogic isn’t currently connected to your heater, you’ll have to look up your heater’s wiring guide along with a ProLogic wiring guide to see where your two wire connection should go. The relay just acts like a switch and says “heater on”. It’s a contact closure.

If you’re not familiar with wiring I would suggest reaching out to your local pool service company as you could potentially damage a control board or in a worst case hurt yourself with high voltage. Not trying to spook you, just be aware of your limitations if they apply. :+1:

IIRC it’s all just attached to the RS485 bus regardless of Aquaconnect or the wireless controller.

You can connect additional items to the bus, just add to the existing wires and be sure to follow @ronkmd 's instructions here:

Hello sorry, am I connecting the aqua connect receiver in my prologic to these other terminals then? or are you saying get ride of teh aqua connect system and hub? I have what the dude posted above and he just opened a browser within HA but I wanted to directly have buttons rather than the browser. May as well just open safari on my phone then.

sorry or are you saying to just follow this aqua logic integration and not to worry about something plugged into the RS485 or my aqua connect? I’m terrible I’m sorry. I have no idea what’s going on here

Thank you for your response! I’ll try to get someone that knows how AquaLogic panel works around here :smiley:
I still have a few questions about using the heater. So, I believe you’ve already told me that my heater wasn’t currently plugged to the AquaLogic. Is it normally supposed to be plugged in the “Heater 1 Relay”? I’m also wondering if you have it’s power connected to Aux 1?
Lastly, are you able to set the temperature of the heater from Home Assistant too or simply turn it On/Off and it’s going to use it’s previously set temperature?
I’m also adding a picture of what my panel looks so far, as you can see nothing in the Heater 1 Relay.
Thank you.

ProLogic does not have setpoint capabilities for temperature (to my knowledge) - meaning - you cannot use it to adjust the temperature up and down. The ProLogic heater_1 relay simply says “hey heater, run now and I’ll run the pump at a constant speed” then the heater says “okay I’ll turn on until I reach the temperature I’m set to”.

I don’t recall saying yours wasn’t hooked up :sweat_smile: but clearly from your picture you don’t have a heater hooked up to the heater_1 relay. What heater do you have? Like I mentioned in my last reply you need to look at the wire schematic for your heater. Send me the model and maybe I can point you in the right direction.

Thanks for the response. I own a Titanium Excellence Deluxe 70 heater.

So, I find myself a bit puzzled about the AquaLogic / ProLogic concept here. Based on what you’ve mentioned, you directly set the heater’s temperature on the heater itself. Technically, the heater seems to be intelligent enough to determine when to initiate heating. Does this imply that the AquaLogic / ProLogic system solely manages pump speed only when the heater is active? In my case, having a single-speed pump, I wonder if there would be much value in this feature.

I’m also curious about the heater’s power control. Is the AUX entry on the panel responsible for controlling the heater’s power? I recall reading somewhere that the heater’s power shouldn’t be linked to the AquaLogic / ProLogic AUX. However, if the panel cannot select the start/stop times or even the temperature settings, it essentially becomes a means to control pump speed only. In my situation, that would render it somewhat useless.

I can see potential value if I could manage the heater’s On/Off status, as this would allow me to decide via Home Assistant whether it should run or not.

On a slightly different topic, I have an Aqua Collection - TurboCell T-CELL-15 that needs replacement. Now, my pool is relatively small and holds significantly fewer than 15,000 gallons. I’ve noticed there’s quite a range of cells available, such as the Hayward TurboCell - Up to 15,000 Gallons - W3T-CELL-3. It seems like this would be suitable for my needs since I have less than 15k gallons, and it’s notably more affordable than the T-CELL-15, which seems to cater to larger pools of up to 40,000 gallons. Is it accurate that the AquaLogic / ProLogic system might be too outdated to handle anything else than a T-CELL-15?

Once again, a big thank you to you and the entire community.

You are correct in your assumptions (at least in my configuration) the heater_1 button doesn’t technically do that much. I primarily used it to keep the variable speed pump at a higher constant speed (IIRC 90% speed).

Now in your application there’s a potential argument to still connect them. If we assume that your heater typically comes on as long as it sees flow that’s fine for the cold months but maybe as you’re transitioning into summer you want the heater to kick in less while it’s getting hotter outside during the day but the water stays cooler at night.

I’m not immediately finding your heater using the name you provided… is it the Waterco ElectroHeat Plus 70 Pool Heat Pump?

I don’t run a chlorinator so I’m not the best to ask. I do know there’s a few people in this thread running chlorinators with ProLogic. Contact closure is contact closure after all so if the chlorinator is just looking for an on/off signal my guess is you can still run it with ProLogic.

@adamgranted sorry I am not sure if my question was answered. I have aqua connect hub with the receiver to my Prologic. I can control everything remotely or locally through the IP address. I would like the buttons and info integrations in Home Assistant of course. Do I have to still get this additional RS485 for this integration, on top of what I already have? or is there not a way to go through the already connect aqua connect hub, other than a browser?
Thanks

This integration uses RS485 locally. You have to have an RS485 interface hardwired to it. The wire hookup information is in this thread as I mentioned before.

Don’t try to do WiFi to RS485, the signal timing is delayed resulting in a broken integration. Myself and others have proven that. Use a hardwired interface; I used the USR-TCP232-304.

It may be helpful for you to read up on RS485 and how bus topology works along with static IP addresses, TCP ports, and custom components in home assistant. You’ll need a basic understanding to hook all this up and configure it.

Hey @adamgranted , looking at the AQL-P-4 manual, it seems like it is indeed possible to change the temperature using the AquaLogic :

Any idea how difficult it would be to the able to add this functionnality?

Also, my AquaLogic local display is not functioning as it should. It’s flickering and sometimes not displaying anything or even showing text in reverse, making it very difficult for me to navigate through the menu. Is it possible to mirror on Home Assistant what the display is showing? Additionally, could the physical buttons on the display be mapped to virtual buttons in Home Assistant? This way, the system could be fully utilized and configured remotely, kind of what @b3nj1 is doing here actually :

Interestingly, the filter and pool light functions are already operational through HA!

I’ve included a picture of my local display (when it’s “working”). Please let me know if anyone has an idea about what I can do to address this (except paying 500$ for something that is already very old)

Hey @FrForget,

Any idea how difficult it would be to the able to add this functionality?

Short answer is: don’t bother. Much easier to do as outlined in an earlier post (by me) as long as the integration can read your pool water temperature and can turn your heater on&off. Be sure to read through it and the following 5 or so posts, and pay attention to the bit about safeguarding against a runaway heater.

Longer answer: From what I understand, integration with the ProLogic system is rather arcane, requiring precision timing from any external integration device. The Home Assistant Aqualogic integration uses brute force to make it work, in that it will issue the desired command to the ProLogic system, then wait some number of milliseconds for the desired response. If the desired response doesn’t arrive in time, the Aqualogic integration issues the command again, up to 10 times in total. Thus button presses in Home Assistant occasionally experience lag – sometimes as much a second or two – before they take effect.

I’m not even certain arrow commands would return a specific desired response, so the integration might always take the full 10 attempts whether the arrow command actually takes effect or not, i.e. lots of lag. So trying to work the ProLogic menu from Home Assistant could possibly be super frustrating, with lots of under/over shots at menu navigation.

Lastly, I suspect the display itself on your ProLogic board is faulty; if so, I expect it wouldn’t affect the Home Assistant integration.

1 Like

Every code solution is built on the shoulders of those pioneers that worked on the problem first. Kudos to @swilson and all other contributors to this thread!

I’m late to this party and not even a Home Assistant user. BUT… I am a HomeSeer user and have been using an AQ-CO-SERIAL box for years. I had a lightning strike a few days ago and things stopped working. I had to diagnose what was damaged, and so I bought an RS485 to WIFI device (Elfin-EW1X) and determined I could read data just fine.

Having an air gap between my pool panel and my computer systems is nice as well :slightly_smiling_face:

MY challenge was using this library to send back commands. I am just using the cli.py for my testing, and was just trying to switch the LIGHTS. fail, fail, fail. Just could not get it to work making me wonder if part of the main board bus was damaged and not receiving.

But then I stared at the output for a while, I know some believe the protocol to be a mess, but I found some elegance in the cadence of the output, and I got me thinking that it may be a mistake to wait for the keep-alive packets.

The output has a sequence of: a combination led status and display update, then a led status only update, and then a display only update. After this display only update, I send my command. Works for me almost every time on the first attempt, and definitely by the second send.

I may not replace or repair the AQ-CO-SERIAL box and instead just create a HomeSeer interface, giving myself the display, and status indicators along with the 19 or 20 commands back.

Oh, I also see some variability in the commands. There are the set built in code, but I also see some slight variations by others in this thread, and on other sites.

Thanks all!

My initial success with the WIFI unit seem to be not quite as great… I can have several missed commands in a row, then a string of successful KEYs… so I’ve ordered up the
PUSR USR-TCP232-304 Serial RS485 to TCP/IP Ethernet adapter. Think I’ll connect it directly to my Pi and then communicate via WIFI from the Pi to the rest of my network.

Meanwhile, while waiting for Amazon to deliver the new adapter, I’ve been writing my base service that my HomeSeer layer will connect to. I’ve opted for a fixed ID + variable length payload, very human and machine friendly format. Whether something connect to this using stdIn/stdOut piping or I put this in a tcp wrapper, it will be easy to use.

On the display I strip off the 0x80 bit on any flashing text and enclose flashing text “as not flashing [is flashing]”. I think it makes it quite readable, especially in the settings menu when setting the date/time. In this sample below I set the temp. Interesting that when I set it down one degree, the heater turned off and that resulted in the state LEDs getting updated before the display was updated.

When the LEDs are updated, I send all out, when a variable is updated, I only send that one out, but the command STATE will give both full sets. I also have a 5 minute timer that sends them both out just to help an interface remain in sync.

On receipt of DISPLAY, PANEL_LED, VARIABLE, the client app can easily parse what data it needs. Yeah, could have wrapped it all in JSON, but then harder for a human to just sit in front of it.

In my config I have the AUX_1 device as LANDSCAPE (lighting) and VALVE_3 as DECKJETS, I’ve also suppressed some items that I don’t use, such as SPA *

Sample output, yeah I support upper and lowercase on the commands.

DISPLAY__: Salt Level 3200 PPM 
DISPLAY__: Heater1 Auto Control 
DISPLAY__: Thursday 9[:]57A 
menu
CMD_SENT_: 
DISPLAY__: Settings Menu 
right
CMD_SENT_: 
DISPLAY__: Pool Heater1 [87_F] 
minus
CMD_SENT_: 
---------------------------------------
PANEL_LED: POOL            : ON
PANEL_LED: SERVICE         : OFF
PANEL_LED: CHECK_SYSTEM    : OFF
PANEL_LED: LIGHTS          : OFF
PANEL_LED: LANDSCAPE       : OFF
PANEL_LED: DECKJETS        : OFF
PANEL_LED: FILTER          : ON
PANEL_LED: HEATER_1        : OFF
PANEL_LED: HEATER_AUTO_MODE: ON
PANEL_LED: SUPER_CHLORINATE: OFF
---------------------------------------
DISPLAY__: Pool Heater1 [86_F] 
menu
CMD_SENT_: 
DISPLAY__: Timers Menu 
menu
CMD_SENT_: 
DISPLAY__: Diagnostic Menu 
menu
CMD_SENT_: 
DISPLAY__: Configuration Menu-Locked 
menu
CMD_SENT_: 
DISPLAY__: Default Menu 
DISPLAY__: Thursday 9[:]58A 
DISPLAY__: Pool Temp 86 F 
state
---------------------------------------
PANEL_LED: POOL            : ON
PANEL_LED: SERVICE         : OFF
PANEL_LED: CHECK_SYSTEM    : OFF
PANEL_LED: LIGHTS          : OFF
PANEL_LED: LANDSCAPE       : OFF
PANEL_LED: DECKJETS        : OFF
PANEL_LED: FILTER          : ON
PANEL_LED: HEATER_1        : OFF
PANEL_LED: HEATER_AUTO_MODE: ON
PANEL_LED: SUPER_CHLORINATE: OFF
---------------------------------------
VARIABLE_: AIR_TEMPERATURE : 73 F
VARIABLE_: POOL_TEMPERATURE: 86 F
VARIABLE_: POOL_CHLORINATOR: 30 %
VARIABLE_: SALT_LEVEL      : 3200 PPM
VARIABLE_: CHECK_SYSTEM_MSG: None
---------------------------------------
DISPLAY__: Pool Temp 86 F 
DISPLAY__: Air Temp 73 F

Yeah the Wi-Fi adapters were nothing but a headache for me as well. I tried two options and while the configuration technically worked, something about the timing didn’t.

This is HUGE!!!

I just took delivery of a (rather cheap) DSD Tech SH-U12 RS485 to TTL device. Amazon, $15.99 CAD. Has A, B, Ground RS485 connector, and 5v,TX,RX,Ground Raspberry / anything else connector. Yes, connect its TX to Raspberry RX.

Had it all of 5 minutes, nailed it up in place, and my success rate is 1 failure in… I don’t know, my fingers got tired… 100 successful TX’s?

I had ditched the WIFI and was using the PUSR, but the problem with it, is even direct into the Raspberry Ethernet port, so not other network involved (had my Pi using WIFI to join my LAN) the ping times were all over the place, so that means the packet delivery times were all over the place. My failure rate was around 1/15, so it was usable, but this totally kills it :upside_down_face:

This TTY device is great, no config - other than getting your tty tx/rx working (each Pi service is slightly different on the how), it simply delivers what’s has coming down the wire.
No lag, no mess, no fuss.

Only draw back… it’s now wired directly to my PI, so I will continue to use PI WIFI to LAN so that I have an air gap between the pool equipment and my LAN. Remember, I started down this dev because I lost my AQ-CO-SERIAL due to lightning!

Link to RS485 to TTL

image

Yeah, it’s the ping times. They are all over the place which means the packet delivery to and from your host are all over the place. Same with the Ethernet ones, tried a couple, huge variability even when direct port to port direct wired. A direct RA485 adapter is the way to go. It’s what the AQ-CO-SERIAL has.

Hoping this forum can help as I’ve not had luck elswhere yet. I am trying to implement @cdurand system he referenced in the above post that is largley based on this solution…primarily for the web interface and ability to control the menu functions. I am able to view all display and LEDs status/updates of the aqualogic panel in realtime through the web UI. I have also confirmed the configuration commands are correct bi-directional through the logs and a serial monitor python script. Unfortunately when attempting to send a command to aqualogic from the Pool-Pi web UI, there is no response. Some commands cause the program to freeze requring a restart of the program.

Any thoughts on what could be causing this behavior? Thank you!

What hardware are you using, and are you using published code, modified published code, or modified so much, it’s your own?

I have used both a Raspberry Pi 3B+ during development, and now for production am using a Raspberry Pi Zero W. ← it runs at about 8% load for my app, pushing updates to my Homeseer box, and listening for commands coming back.

Bear in mind that unlike RS232, RS485 is half duplex, comms in one direction at a time. Sending data while data is arriving will cause data to be mangled and you will get crc errors on the incoming frames.

The need to wait for the keep alives is vital to know the bus master is giving you the green light to send (but only in between the keep alives). Since timing is so critical it is important to not have ANY delays in the delivery of incoming frames or the sending of outgoing frames.

I wasted time with a RS485 to WIFI, two RS485 to Ethernets, and one failed RS485 HAT, before finding the DSD Tech SH-U12 RS485 to TTL on Amazon. It changed the game for me. No delays.

Thanks for your reply. I am using the code from @cdurand at GitHub - ChaseDurand/Pool-Pi: Hardware+software solution for controlling a Goldline/Hayward Aqualogic pool control board over WiFi via a Raspberry Pi. and referenced in the post aboved that I linked.

Hardware is a raspberry pi 2b and a wired rs485 converter similar to the one you are using. Here is the converter from amazon:

Effectively the same hardware and code outlined on the github setup for Pool-Pi. Again his project is largely based on the same code as this project but with a web UI vs HA.

I have implemented similar projects using serial converters (mostly usb) for an Aqualink pool using AqualinkD and Pentair pools using NodeJS-Pool Controller. Also have a generator serial program running using GenMon. I have a handful of these in place for myself, friends and family so have become familiar with the hardware setup and software by following the readme, wiki’s and various forum posts to troubleshoot.

A friend of mine has this hayward aqualogic panel so when I ran accross this Pool-Pi project I was confident in setting it up but have not had luck yet with commands. As noted in my previous post, I am getting all display and led updates in real time. So if a button is pressed on the panel, it immediately updates on the pool-pi web UI. However, when I click on a button (i.e filter) in the Pool-Pi web UI, there is no response or the program feezes.

I have reviewed logs and confimred that commands being received from the panel in the Pool-Pi UI compared to the commands coming out of the panel via a rs485 serial monitor do match. So very confused why the commands from Pool-Pi are not working.