Hayward AquaLogic / ProLogic automation

I have since moved homes but I had reliable success with the USR-TCP232-304 serial interface. Not sure if that’s an option for you to go hard wired?

Erased: see my final comments below

see below please

Well I tried almost every idea mentioned in these last 400+ post.
Using the Elfin11 which btw works great with my google download on my android by Mark from troublefreepool.
For fun tried to put in HA and have all the sensors but none of the switches working.
This in not a very active forum as it relates to Aqualogic so at this point since no replies to my posts I will give the project a rest and settle with the ability to monitor only.

@william13 - Yup. I’m where you are now with the same scenario. My guess, is that the total round trip of the wireless system is too long to get a message squeezed into the 40ms window after the keep-alive packet (even with a gap of 1ms). Not sure what the android version is doing, but obviously something smarter!

Saw this. Perhaps will work if we directly wire to.

Adin, I know I’m replying to an old thread, but I’ve read this entire thing, and your post seems to be exactly what I was hoping to do: use the Aqua Connect interface with HA! I’ve seen your code on GitHub, but I’m unsure what to do with it. Copy/paste into config.yaml ? Can you provide any more details? Is this still working well for you?

For those of you who are interested, I now have apps on three platforms (Android, iOS, Windows) plus HA working with the EW11. You can read about here:

I have this working well now with a wireless EW11. Keypresses are about 90-95%. I’m able to do anything in the menu with just an occasional missed key press.

The key was using Mark’s EW11 script from his mobile app version. This handles the keep_alive timing locally, so no network latency to worry about. Thanks Mark!

Here’s my forked version.

See the readme for information.

My issue was solved by Mark. See his post above.
I now have E11 wireless connection to Aqualogic control board and can control by iPhone, Android pad, and by my PC home assistant.
Amazing.

I have a P8

Still no luck getting switches to respond in HA.They report status OK. iOS app working fine.

I’m curious to hear about what the trick is here! I have a USR-TCP232-304 and I’m able to see and control my AquaLogic PL-4 (AQL-PL-4), but I can’t get reliable button press or emulate the screen on Home Assistant. This is crucial for me as my local display has been failing. Should I switch to an E11? Technically both uses RS485, so I’m curious why the python code wouldn’t work for my USR-TCP232-304.
Thank you!

The issue is key timing. The keys have to be sent right after the keep alive is sent. However, if there is too much latency in the software and the IP connection, it is unreliable. I found that to get any reasonable reliability, the key presses need to be sent directly from the RS485 device that is directly connected to the AquaLogic board. This eliminates nearly all of the latency.

The EW11 is perfect for that because it has a built in server that can run scripts (key press buffered until KA is received, then sent) but other devices may also work.

That make sense for the key press. What about replicating the LCD, the info is passed through the RS485 protocol independently of the device used to communicate to it right? I’m assuming it just wasn’t done for the USR-TCP232-304. If it should be getting it out-of-the-box, I’m curious on the configuration to use to show it. Seems like @J4yDubs is having a pretty awesome dashboard.
@J4yDubs would you mind sharing more on how that dashboard is configured?
Thanks!

If the USR-TCP232-304 has scripting, you might be able to do what Mark is doing for the EW11. He’s basically just intercepting the frame and then holding it until he sees a keepalive and then sending it. That’s the key to getting the keypresses to work most of the time. I don’t know if the USR-TCP232-304 has scripting though.

I added the code for display and buttons (menu, up, down, plus, minus, service). They all show up as entities in HA so you can just add them to a dashboard. I’m able to do everything that I can do from the real control panel with just an occasional key press miss. It doesn’t look like I can attach video, but I did record a quick one walking through and changing some settings. I added it to my repository on github. “HA Dashboard Video.mp4”

If you want to try it with your USR-TCP232-304, you could try using my fork and then uncomment out the keepalive and retry code in core.py. Look for comments “Disabled retries” and “Script on EW11 (thanks markinpt) handles this” and just uncomment out the code that I commented.

If I find some time I might try to make it a config option, so code changes aren’t needed, but I’m not sure when I’ll be able to get to that.

My dashboard YAML:

views:
  - title: Pool
    path: pool
    type: sections
    max_columns: 1
    sections:
      - type: grid
        cards:
          - graph: line
            type: sensor
            detail: 1
            entity: sensor.aqualogic_pool_temperature
            name: Water Temp
            icon: mdi:pool-thermometer
          - type: tile
            entity: sensor.aqualogic_salt_level
            name: Salt Level
            icon: mdi:shaker-outline
          - type: tile
            entity: sensor.aqualogic_pool_chlorinator
            name: Chlorinator
            icon: ''
          - type: tile
            entity: switch.aqualogic_super_chlorinate
            name: Super Chlorinate
            icon: mdi:chemical-weapon
          - type: tile
            entity: sensor.aqualogic_super_chlorination_countdown
            name: Super Chlorinate Time
      - type: grid
        cards:
          - type: tile
            entity: switch.aqualogic_filter
            name: Filter
            icon: mdi:air-filter
          - type: tile
            entity: switch.aqualogic_aux_1
            name: Vacuum
            icon: mdi:vacuum-outline
          - type: tile
            entity: switch.aqualogic_lights
            name: Lights
            icon: mdi:lightbulb-spot
          - type: tile
            entity: switch.aqualogic_service
            vertical: false
            name: Service
            icon: mdi:account-wrench-outline
      - type: grid
        cards:
          - type: entity
            icon: mdi:alarm-panel-outline
            entity: sensor.aqualogic_display
            state_color: false
          - show_name: false
            show_icon: true
            type: button
            tap_action:
              action: toggle
            entity: switch.aqualogic_plus
            name: +
            show_state: false
            icon: mdi:plus-circle-outline
          - show_name: false
            show_icon: true
            type: button
            tap_action:
              action: toggle
            entity: switch.aqualogic_left
            name: <
            icon: mdi:arrow-left-circle-outline
          - show_name: false
            show_icon: true
            type: button
            tap_action:
              action: toggle
            entity: switch.aqualogic_menu
            icon: mdi:menu
            name: Menu
            show_state: false
          - show_name: false
            show_icon: true
            type: button
            tap_action:
              action: toggle
            entity: switch.aqualogic_right
            name: '>'
            icon: mdi:arrow-right-circle-outline
          - show_name: false
            show_icon: true
            type: button
            tap_action:
              action: toggle
            entity: switch.aqualogic_minus
            name: '-'
            icon: mdi:minus-circle-outline
    cards: []
title: Mobile

John

Let me see if I understood this correctly. markinpt’s solution with the EW11 uses scripting to ensure the proper timing for the keypress. However, I should be able to get the display information, use the buttons, etc. just without the ability to ensure it’s consistency due to the delay.
EW11 seems pretty cheap so I decided to order one to see :stuck_out_tongue: , I’ll still try to get the display to show up with my USR-TCP232-304!
Thanks!

That’s correct. Mark’s script is just for the key presses. In my code I just commented out the parts that the script now handles, so if you uncomment them it should work with the USR-TCP232-304 (but with the network latency) and you should have the display and buttons available.

If you get the EW11, you can also use Mark’s mobile app. It has the display and buttons also and might be a better mobile interface depending on your HA dashboard design.

Thank you :slight_smile:
Looking at my current setup, I believe I am using the out-of-the-box Hayward AquaLogic integration, with my configuration.yaml looking like this

  # Pool - AquaLogic
  - platform: aqualogic
    monitored_conditions:
      - air_temp
      - pool_temp
      - pool_chlorinator
      - salt_level
      - pump_speed
      - pump_power
      - status

# Pool - AquaLogic
aqualogic:
  host: 192.168.2.56
  port: 4328

switch:
  # Pool - AquaLogic
  - platform: aqualogic
    monitored_conditions:
      - lights
      - filter

In order to use the code from your repo, I would need to create an /aqualogic folder in config/custom_components/ right? Then add the files from yout /aqualogic folder on your repo? Something like :

config/
  custom_components/
    aqualogic/
	  __init__.py
	  cli.py
	  core.py
	  keys.py
	  sensor.py
      states.py
      switch.py
      web.html
      web.py

Thanks

Correct. There does seem to be some differences on where you put the aqualogic folder depending on your HA install mentioned on this thread, but all I needed to do was create /config/custom_components/aqualogic/ and put the files in there.

Your configuration.yaml should still be OK. I split them out into seperate files, but you don’t need to do that. If you look in the yaml directory on my repo you’ll see all the options for switches and sensors. Just add the ones you want to your configuration.yaml.

Thank you so much for the help!
I am now able to see the aqualogic screen on my dashboard! Amazing! What’s interesting is that last year, using the default code, triggering the light or pool pump worked relatively well. Now, not so much, in fact, I think 1 in 50 press works, maybe even less. I guess that’s what we are talking about when it comes to latency? The display data is updated consistently, but button press aren’t really functional. I guess my only option is to wait for my EW11 to arrive :stuck_out_tongue: ?