Hayward AquaLogic / ProLogic automation

2021.8.1 works fine for me on macOS.

I’m on 2021.8.4 and it just broke for me as well. This really sucks!

Looks like a change was made to the aqualogic code… could this be part of the issue?

Use entity class attributes for aqualogic - #52668) (aqualogic docs)

Yes this broke entries for non-metric users. I’ve submitted a PR that fixes the issue.

I am able to get info from the hayward controller without any issues, but sending commands (through CLI) doesn’t seem to be working at all. Possibly related to the version of controller I am using, but I am guessing it isn’t recognizing the commands I am trying to send. Any tips on how to further debug?

AUX_2
INFO:core:342621.008: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342623.110: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342625.212: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342627.311: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342629.412: Sent: b'1002000200040004001c1003'
INFO:core:342631.130: Unknown frame: b'008c' b'01000000000000000000'
INFO:core:requeue
INFO:core:342631.419: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342633.515: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342635.615: Sent: b'1002000200040004001c1003'
INFO:core:342635.950: Unknown frame: b'0407' b''
INFO:core:342635.951: Unknown frame: b'0004' b'02'
Pool Temp: 88
Air Temp: 100
Pump Speed: 80
Pump Power: 1405
States: [<States.POOL: 8>, <States.FILTER: 32>, <States.AUX_1: 128>, <States.AUX_2: 256>, <States.HEATER_AUTO_MODE: 1073741824>]
INFO:core:342636.087: Unknown frame: b'04a0' b''
INFO:core:342636.088: Unknown frame: b'0004' b'3033303020'
INFO:core:342636.151: Unknown frame: b'04ae' b''
INFO:core:342636.152: Unknown frame: b'0004' b'9b43'
INFO:core:requeue
Pool Temp: 88
Air Temp: 100
Pump Speed: 80
Pump Power: 1409
States: [<States.POOL: 8>, <States.FILTER: 32>, <States.AUX_1: 128>, <States.AUX_2: 256>, <States.HEATER_AUTO_MODE: 1073741824>]
INFO:core:342637.716: Sent: b'1002000200040004001c1003'
INFO:core:requeue
INFO:core:342639.822: Sent: b'1002000200040004001c1003'

Issue has been fixed in 2021.8.5

I’m looking at configuring mine similarly. I’m fairly new to hardware since I typically lie on the software end of things.

If I want to use an RS485 to Wi-Fi adapter, would I be able to fit that into this schematic? Can it be simplified?

My setup is as follows with the same 4-pin block:

After looking at this some, my guess would be to hook up GRN 4 and RED 1 to the DC input terminal on the RS485 adapter with A and B hooked up to BLK 2 and YEL 3 respectively.

Do I need any other inputs into the actual controller itself (e.g. power into red & black)? Really not too sure how to configure such that the adapter gets power and transmits the necessary signals over TCP/IP.

Any help would be appreciated!

Did you ever manage to get this connected? I have the same schematic board and was wondering how you did it.

Wow, your timing is amazing (well, a tad early) – I actually just ran the cable from the pool controller into my basement today, will be connecting it up in a day or two, once I figure out how to implement swilson’s latest code.

I never got a direct answer, but was made confident of my guess about the RS485 port on the PL-PS-8-CUL by a later post in this thread from sj777fj (which maybe by now you’ve already seen):

Oh nice! Let me know how it goes, and if you can provide any insights on how you did it I would highly appreciate it.

After removing the screw-downs it looks like you can easily just plug a “JST 4 pin” (suggested by @sj777fj ) into this and power up the adapter with RED/BLK outputs and provide the RS485 signal into the A/B terminals using BLK/YEL outputs.

The main confusion I had was with this image:
image

It looks as if BLK/YEL are receiving some sort of input which was a bit confusing to me. I think it might be unnecessary, but I didn’t want to get the adapter unless I was sure of it.

It should just be as simple as using the JST 4-pin to hook up to the adapter (after having configured the adapter with the correct baud and networking settings)… so I hope.

How does one implement the latest code to override the base Aqualogic integration? Could someone please provide guidance on where to manually install it, the appropriate url to pull it from, and properly reference it from the configuration.yaml?

Is it safe to assume the steps would be consistent regardless of how Home Assistant has been implemented (e.g. I’m running HAOS in VirtualBox)?

Thanks.

First off, thanks for all this amazing work! I’ve been looking for an automation solution for my Hayward Prologic for years.

After reading and re-reading this thread, I’ve decided to go with a raspberry pi3 for HA and use a rs485-usb adaptor (this one) to connect directly to the Prologic controller. I would then access my rpi3 via wifi since I don’t have the ability to get ethernet back to my house. Will this setup work? (considering my wifi is relatively strong at my pool equipment location)

Thanks!

By using a wired USB-to-RS485 adapter, I need a serial connection to work, which requires a later dev version of the aqualogic code. Picking up hints from posts in this forum topic, I’ve got things pieced mostly together.

I’m to the point of having the sensors working but the switches not, even after picking up a recent core.py that features various FRAME_TYPE variables – still getting lots of “Unknown frame” entries in the log.

Before I’ll install this to my “production” instance of Home Assistant, I’m doing the testing on a dev box. However, the dev box is a 2007 first-gen Mac Mini: old, slow and resource constrained.

Could the switches-not-working issue potentially be a symptom of using a too-dang-slow host, an issue that might go away for the modern production host (:crossed_fingers:)?

Currently got everything setup, but I’m getting bad CRC every 2 seconds or so with some of the CRCs being apart by a few thousand.

An example of a frame I got:

01 03 20 20 20 20 20 53 61 6c 74 20 4c 65 76 65 6c 20 20 20 20 20 20 20 20 20 20 20 30 30 30 30 20 50 50 4d 20 20 20 20 20 20 00 08 4f 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 0b 00 e0 18 80 00 e6 00 18 9e 00 e0 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 06 10 01 01 00 14 00 00 00 00 00 3f 10 01 02 0c 00 00 00 00 00 00 00

I’m having trouble debugging using the USR-TCP232-Test program, so I printed this from the cli.py. Not sure what half of this means considering I just started looking at it. If anyone has any insight I’d greatly appreciate it.

For some time I was correctly reading information (outside temp and filter status being ON), but shortly after everything went to unknown and hasn’t changed since.

Which codebase are you using? Might point me in a better direction and I can report back on anything I find out. :slight_smile:

Unfortunately, I honestly don’t know. It might be #54354, but I’m unable to check at this point. You’re already digging deeper into troubleshooting than I hope to have to go (but may end up having to).

Good luck, I hope you’re able to get it working.
Actually, I hope we’re both able to get it working!

Agreed! I’ll let you know if I find anything, but probably won’t work more on this until Sunday or Monday. Keep me posted if you find anything out that might be helpful :smiley:

Since you’re using serial you might have an easier time (unless the integration for serial is less supported). I say this because there are some latency issues/timing issues for sure. Most requests my HA sends outbound to the TCP server get duplicate ACKs (same packet is getting sent multiple times because it was presumed: rest in peace). Since I’m using the Wi-Fi adapter, I think I’m going to move it nearer the access point (router) by running some longer 22 AWG wire from the pool terminal to the house with just the A and B signals. After that, I definitely have data parsing issues, but not a clue yet how I can resolve them. I gotta read through some of the posts above to see how people managed to parse data in the midst of the sensor spamming me with data every 2 seconds.

You can use the remote display ports as shown in the image on your post. I have been using the remote display ports since April 2020 and posted about it at the time (post 62).

I am using a USR-W610 and using power from Pin 2 (+11V) and Pin 4 (ground), as well as Pin 1 (RS485 A) and Pin 3 (RS485 B) for communication. This allows me to use a single 4 conductor cable to power the USR RS485 bridge and perform RS485 communication.

Well, that is actually probably my problem then. I made the assumption that pin 1 (top) was 11V+, A was 2, B was 3, and 4 was ground… I’ll see if this actually resolves my problems tomorrow.

After applying that change, I get no power to the device. I believe the original configuration: power, A, B, Ground is the correct one for my setup.