sfeakes / AqualinkD

Daemon to control Jandy Aqualink RS pool equipment from any home automation hub (Alexa, Homekit & Siri, Home Assistant, smartthings, domoticz etc) or web browser.
Other
176 stars 48 forks source link

"can't find pump" message from variable speed pump output #324

Open ssorkin opened 4 months ago

ssorkin commented 4 months ago

I have a Jandy RS board (Yg / 4.3.13 firmware), that was the upgrade for the iAqualink 3 (since I previously had a PPD PDA chip). I also have a Century Variable Speed Motor (that acts like an ePump on RS485), a TruSense chemistry sensor and an AquaPure. All communication is via the Elfin EW-11 (which works great).

AqualinkD currently complains about not being able to find the pump, presumably because this board doesn't report one of the well known pump strings (in the passDeviceStatusPage function in iaqtouch.c). I uncommented the log line and see the following output as interpreted over the serial bus:

Notice:  iAQ Touch: Passing message 00| Filter Pump
Notice:  iAQ Touch: Passing message 01| Filter Pump
Notice:  iAQ Touch: Passing message 02|     RPM: 1000
Warning: iAQ Touch: Got pump message '    RPM: 1000' but can't find pump
Notice:  iAQ Touch: Passing message 03|   Watts: 70
Warning: iAQ Touch: Got pump message '  Watts: 70' but can't find pump
Notice:  iAQ Touch: Passing message 04| ORP:670 pH:7.6 
Notice:  iAQ Touch: Passing message 05| #1 AquaPure
Notice:  iAQ Touch: Passing message 06| 35%
Notice:  iAQ Touch: Passing message 07| Salt 3300 PPM

Is it obligatory to name the pump as desired by this function or should it be able to interpret the label (which is the default).

Note that my configuration is:

button_01_label = Filter Pump
button_01_pumpID = 0x78
button_01_pumpIndex = 1
button_01_pumpType = Jandy ePUMP
sfeakes commented 4 months ago

On the messages part, usually you would see `Filter Pump

Pump 1

RPM: xxx`

And the 1 needs to match the button_01_pumpIndex = 1 so that’s why AqualinkD is complaining. But since you have button_01_pumpID = 0x78 aqualinkd should be getting all the pump info from the RS buss directly. So it’s probably just an annoying warning message at this point.

it’ll be a few weeks before I’m infront of a computer where I can make any changes to overcome this. You might be best simply commenting out the warning message for the moment.

ssorkin commented 4 months ago

I don't really care about the warning messages; my issue here is that the bus monitoring code doesn't seem to interpret the pump traffic and hence i don't see the RPM/power without modifying the passDeviceStatusPage code. I can dig into the bus parsing code and enable some debug logging to see what's going on there...

ssorkin commented 4 months ago

the bus parsing code is working fine, it seems. the data comes through on the websocket, but is discarded by the front end controller because status=-1. if i disable that check, the rpm/watts are displayed. i'll take a look as to why the status is marked as -1.

sfeakes commented 4 months ago

-1 means AqualinkD thinks the pump is off. That is probably because it’s not getting all the messages, like Watts and/or catching the control panel message with pump number. So UI is doing the wright thing by not displaying pump info because status is off. It’s a use case that will probably need a number of different changes to be made in jandy_devices.c, iaqtouch.c & oncetouch.c. If you want to look some more, rather than looking at the websocket, it might be easier to look at the JSON directly. Http://AqualinkD.ip/devices & http://AqualinkD.ip/status.

ssorkin commented 4 months ago

I see where the aqdata structure is being updated with the appropriate RPM and Watts in jandy_devices.c by means of watching the bus, but I don't see where the status would ever be set to PS_OK. In iaqtouch.c it can only possibly happen in passDeviceStatusPage which doesn't work for me since the pump isn't named in the very particular way expected. it's unclear to me if we're calling into onetouch.c on my system, so it will not be PS_OK there either.

ssorkin commented 3 months ago

on a separate note (and i can create another issue for this once i understand what's happening), my aquapure gets in a completely stuck state when i run aqualinkd, such that i have to power cycle the RS to be able to communicate with it. have you seen this happen?

sfeakes commented 3 months ago

Not with your setup. V2.3.7 fixed an issue with Pentair VSP and SWG, but I’ve never come across one with Jandy VSP and SWG. This could also be EW-11 issues, as soon as their are any latency / protocol problems it’s the SWG that usually complains / craps out first.

ssorkin commented 3 months ago

The interesting part here is that power cycling the SWG alone doesn't fix it. The RS itself has to be cycled to get it communicating with the SWG.

sfeakes commented 3 months ago

It’s probably the control panel that’s causing the SWG issue. If you haven’t tried 2.3.7 it’s worth a shot

ssorkin commented 3 months ago

I'm on 2.3.8 (built from source from Github).

sfeakes commented 3 months ago

2.3.8 is currently in dev, so not stable release. That wont be the cause of SWG issue, but may be on the pump display issue.

sfeakes commented 3 months ago

Can you provide some more detailed debug logs, so I can take a look at this in more detail and find a way to overcome this specific setup.

Go to aqualinkd's management page. http://aqualinkd.ip.address/aqmanager.html

On a separate request, I'd love to see the messages from the TruSense chemistry sensor and decode those. But first I'll need to see the ID it's using. Can you post the output from running the serial_logger (again you can do that from aqmanager.html).

sfeakes commented 2 months ago

@ssorkin Release 2.3.8 is now released. It has some changes for Panel rev Yg. The pump should work as you can now label by name (rather than pump index as per previous panel revisions). Add the below to your config. button_??_ pumpName = Filter Pump

ssorkin commented 2 months ago

I will try this and get you some of the data from the TrueSense

On Wed, Sep 4, 2024 at 10:53 AM sfeakes @.***> wrote:

@ssorkin https://github.com/ssorkin Release 2.3.8 is now released. It has some changes for Panel rev Yg. The pump should work as you can now label by name (rather than pump index as per previous panel revisions). Add the below to your config. button?? pumpName = Filter Pump

— Reply to this email directly, view it on GitHub https://github.com/sfeakes/AqualinkD/issues/324#issuecomment-2329659454, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGDRGGUDQN3EE7OWUS3JLLZU5CJPAVCNFSM6AAAAABLLCOGXKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRZGY2TSNBVGQ . You are receiving this because you were mentioned.Message ID: @.***>