AqualinkD icon indicating copy to clipboard operation
AqualinkD copied to clipboard

Issues with Heat Pump & AqualinkD

Open mal7887 opened this issue 6 months ago • 40 comments

Hi Again,

We previously discussed my Jandy Heat Pump that has dual heating and chilling functions Here

I am noticing an issue. If I turn the heat pump button on, but neither Heat nor Chill is being called for (because setpoints are satisfied) The Heat Pump button on my home assistant dashboard constantly changes from and On and Off state.

Image

In the AqualinkD dashboard the chiller button constantly changes from on/off.

Image

Image

Meanwhile in the Jandy App is shows on, but in a standby state.

Image

Is seems like there might be a bug when the Heat Pump is on/but the it is in standby. The cycling prevents me from being able to turn off the heat pump when it is in a standby state from aqualinkd or Home Assistant.

As a reminder, my setup does not use the Spa Heater or Pool Heater, it has a RS485 connection.

mal7887 avatar Jun 08 '25 15:06 mal7887

There is probably a status from the heat pump protocol that I've missed. When AqualinkD is cycling between these heat pump status, can you set the below in aqmanager Debug Mask -> RS Serial to 0x70 Log Level -> Debug

Leave that running for a minute or two and post the log.

sfeakes avatar Jun 12 '25 13:06 sfeakes

Also following along this thread. I am in the process of fixing up my aqualinkd/HA flow with my heatpump only system. So far i think things are working well.

RajUmadas avatar Jun 12 '25 13:06 RajUmadas

Attached are logs. Let me know if there is anything else you need.

aqualinkd (1).log aqualinkd.log

mal7887 avatar Jun 12 '25 15:06 mal7887

Ill also post some logs of my heat pump messages, if it helps.

aqualinkd_heatPumpDebug.log

RajUmadas avatar Jun 12 '25 15:06 RajUmadas

Also,

An observation/Question. The way to turn on the Heat Pump is not intuitive in the interface. In the Jandy app, I turn on "Heat Pump" and that enables Heating and Cooling (for Pool mode, Heat Only when in Spa Mode). Both Pool Heater and Spa Heater switches are left off at all times.

Is there a way to consolidate the Heat pump into One switch and remove the unused Pool Heater and Spa Heater if the RS-485 heat Pump is enabled?

Right Now If I click Spa Heat, It turns the "Spa Heater" switch On, but if I don't turn on the Heat Pump, it will not heat. Meanwhile, I do have to click the unused switch to change the Heat Set point. The same is true for the pool.

Thoughts?

mal7887 avatar Jun 12 '25 15:06 mal7887

@mal7887 i see what you are saying there and would also like to figure this out.

@sfeakes... i still didnt get a chance to dig into the code, and i have not slung C in a WHILE! But im guessing based on some previous conversations, the project DOES NOT parse all of the heatpump messages, and thus does not register the various states of the heat pump. Is this correct?

Based on my, very recent, pool experience, the heatpump seems to have these states:

  • Off
  • Standby
  • Heat On
  • Chill On

I suspect the way we would have to make this work would be to add a new "type" of device in aqualinkd, make it understand all of those states, figure out what messages are on the bus that represent those states and then expose all of that to the mqtt system.

if this is correct and you point me in some directions, I can try the PR. Also if this is correct, i can try to make your job easier and record events that should represent all of these states.

RajUmadas avatar Jun 13 '25 12:06 RajUmadas

Also just throwing this out there, i am not sure if the heatpump is keeping track of the spa and pool set points or the RS panel. Because if the heat pump is keeping track of the set points.. im guessing its also keeping track of what "standby mode" its in. Id have to really debug and look at messages to figure that out.

RajUmadas avatar Jun 13 '25 12:06 RajUmadas

@RajUmadas The heat pump does not keep track of any set points. The Panel simply issues a command to the heat pump to heat / cool / off. It acts like in a similar way to the older / non RS485 heaters. So while reading the messages sent to the heat pump, all I can see is Heat / Cool / Off. (No Enable).

If you look in the debug messages in the log you will see

Info:   JandyDvce: To   HPump: Read  Jandy   packet To 0x70 of type  LXi heater ping | HEX: 0x10|0x02|0x70|0x0c|0x01|0x00|0x00|0x00|0x8f|0x10|0x03|
Info:   JandyDvce: From HPump: Read  Jandy   packet To 0x00 of type       LXi status | HEX: 0x10|0x02|0x00|0x0d|0x40|0x00|0x00|0x5f|0x10|0x03|

The first message LXi heater ping the panel requesting something. if byte 3 is 0x0c -> that means go into a particular mode. When byte 3 is 0x0c and byte 4 is -

  • 0x00 = OFF
  • 0x09 = Heat
  • 0x029 = Cool
  • Case above is 0x01 (I have not figured that out yet).

On the return message LXi status is the heat pump telling the control panel it's status. if byte 3 = 0x0d that means some form of heat/cool status when byte 3 = 0x0d and byte 4 is -

  • 0x40 = OFF
  • 0x48 = Heat
  • 0x68 = Cool

Since I don;t have a heat pump, I've had to gather this into from peoples logs, so it takes time to decode everything. If you want to start looking at these messages and decoding what I'm missing that would be a great help.

sfeakes avatar Jun 13 '25 14:06 sfeakes

@sfeakes thanks! this is helpful. I will aim to sniff and catalog all the messages i see in all the states i can trigger this weekend.

Im guessing using the log mask of 0x70 and 0x00 would be a valid way to limit what im looking at, correct?

RajUmadas avatar Jun 13 '25 15:06 RajUmadas

@RajUmadas you should only need 0x70 in the mask. That should print any messages sent to 0x70 and received from 0x70 (ie from 0x70 to 0x00). If you use 0x00 in the mask you will get a ton of messages the panel sends out.

you might need to change the actual water and air temp to pull all status. You can simply remove the air & water sensor wires from the panel and use resistors to change values.

sfeakes avatar Jun 13 '25 16:06 sfeakes

sweet thanks. i was also gonna use a heat gun to mess with the temp sensors when/if i get to that. Or just record during the day and save things off.

RajUmadas avatar Jun 13 '25 17:06 RajUmadas

Also just curious.. when i see a message like "0x10|0x02|0x00|0x0d|0x40|0x00|0x00|0x5f|0x10|0x03|" How does aqualinkd know this is coming FROM the heatpump.

based on my crude understanding byte 2 is the addr.. which is set to 0x00. Where is the "source" part of this datagram that shows a "source" of "0x70"?

RajUmadas avatar Jun 13 '25 17:06 RajUmadas

It uses the last message. ie 0x10|0x02|0x70 is To 0x70. Then IF the next message is 0x10|0x02|0x00 it means it's the reply from 0x70 to 0x00. If the next message is 0x10|0x02|0x?? (something other than 0x00) it means their was no reply.

That's the way the Jandy protocol works.

sfeakes avatar Jun 13 '25 17:06 sfeakes

sweet... im learning so much. thanks!

RajUmadas avatar Jun 13 '25 17:06 RajUmadas

You can also turn on serial debugging if you want to see / understand all the messages. AqualinkD will add information/text to make things a little easier to read / understand.

sfeakes avatar Jun 13 '25 18:06 sfeakes

@mal7887 As a quick get around for the state switching between on/enabled if you set the below in aqualinkd.conf than that should fix the issue.

read_RS485_HeatPump=NO

It's the messages directly read from the heat pump that are causing the issue, reading the messages ONLY from the panel should stop the constant switching. AqualinkD will just be slower to update the actual status of the heat pump. It will be on the same time as any other Jandy interface, when usually AqualinkD is a lot quicker than Jandy interfaces since it reads messages directly.

sfeakes avatar Jun 13 '25 19:06 sfeakes

@mal7887 As a quick get around for the state switching between on/enabled if you set the below in aqualinkd.conf than that should fix the issue.

read_RS485_HeatPump=NO

It's the messages directly read from the heat pump that are causing the issue, reading the messages ONLY from the panel should stop the constant switching. AqualinkD will just be slower to update the actual status of the heat pump. It will be on the same time as any other Jandy interface, when usually AqualinkD is a lot quicker than Jandy interfaces since it reads messages directly.

Got it will do. Thanks!

Seems like Raj is lightyears ahead of what information I can provide, but if there is anything else I can do to help, please let me know.

mal7887 avatar Jun 13 '25 19:06 mal7887

@sfeakes

So I made the changes you indicated above and when I restarted AqualinkD, it was stuck on "connecting to control Panel" - and it never seems to connect. I changed the configuration back, and it still gets stuck on Connecting to control panel.

It shows the SWG status, and Salt level, but nothing else.

I have restarted everything including the RS4 Panel.

Not sure what happened or caused it to break. Nothing else changed. I can control everything though the Jandy app like normal.

Pulled the debug logs

Log.log

aqualinkd.log

mal7887 avatar Jun 13 '25 20:06 mal7887

@sfeakes

Oddly even though it's 'connecting' still it shows the One Touch outlet on (which it is)

Image

mal7887 avatar Jun 13 '25 20:06 mal7887

Looking at your logs, it's connected to the panel. There is probably something happened that stopped that message from clearing. If you hit re-fresh does it do away?

EDIT. After looking again, it's not connected on the main protocol. Leave it a few minutes and it should be good.

sfeakes avatar Jun 13 '25 21:06 sfeakes

Looking at your logs, it's connected to the panel. There is probably something happened that stopped that message from clearing. If you hit re-fresh does it do away?

EDIT. After looking again, it's not connected on the main protocol. Leave it a few minutes and it should be good.

It has been almost an hour and it still shows connecting. It's also now showing my 'Spa Jets' switch as being on, even though they are not.

mal7887 avatar Jun 13 '25 21:06 mal7887

Muhahaha.. I need to take a break and do some verfication.. but so far the HP commands are looking like this:

Cmd Table	
0x0c|0x00|0x00|0x00|0x00|	CMD HP Disabled
0x0c|0x0a|0x00|0x00|0x00|	CMD HP Heat SPA
0x0c|0x01|0x00|0x00|0x00|	CMD HP Enabled Pool
0x0c|0x02|0x00|0x00|0x00|	CMD HP Enabled SPA
0x0c|0x09|0x00|0x00|0x00|	CMD HP Heat Pool
	
0x0d|0x40|0x00|0x00|	STA HP No Action
0x0d|0x48|0x00|0x00|	STA HP Heating

RajUmadas avatar Jun 14 '25 02:06 RajUmadas

Ill do cooling down tomorrow, but i bet it should be what you already have in code. Based on what im seeing, processPacketToHeatPump needs to get updated with some different values.

Im gonna do a bit more testing and really feel good about these values and maybe create a PR in a few days.

RajUmadas avatar Jun 14 '25 03:06 RajUmadas

Im also just dropping raw logs and parsing things in here if you are curious. https://docs.google.com/spreadsheets/d/10dNsP-px3dEk30a_I_o7QFlijHTBwexErPaSZ-II_KA/edit?usp=sharing

RajUmadas avatar Jun 14 '25 03:06 RajUmadas

@RajUmadas This is really helpful, thanks. I'm updating the code now and will post update in next release.

I notice there is no cool in your information. Is your heat pump a heat only and no chiller mode?

sfeakes avatar Jun 14 '25 12:06 sfeakes

Thanks! There is no cool because i didnt try hard to capture that event. Im going to capture those tonight to make sure ive got the full set.

But based on my reading of the code, I think you have the correct and full cool command and status.

RajUmadas avatar Jun 14 '25 14:06 RajUmadas

Also, i realized my sheet might be a bit confusing, the commands tabled:

  • CMD HP Pool Heat Off
  • CMD HP Spa Heat Off

Has the effect of saying "Hey heat pump, you are enabled, and waiting to be called, but dont do anything yet". And it seems there are 2 different commands when the system is in pool mode of spa mode.

I can review any PR you have as well. Im gonna try to get to some code tonight after the kids sleep.

RajUmadas avatar Jun 14 '25 14:06 RajUmadas

@RajUmadas I've just posted 2.6.8 (Dev), take a look and see if that's correct from your findings. You can also download the binary and test it.

sfeakes avatar Jun 14 '25 18:06 sfeakes

Also,

An observation/Question. The way to turn on the Heat Pump is not intuitive in the interface. In the Jandy app, I turn on "Heat Pump" and that enables Heating and Cooling (for Pool mode, Heat Only when in Spa Mode). Both Pool Heater and Spa Heater switches are left off at all times.

Is there a way to consolidate the Heat pump into One switch and remove the unused Pool Heater and Spa Heater if the RS-485 heat Pump is enabled?

Right Now If I click Spa Heat, It turns the "Spa Heater" switch On, but if I don't turn on the Heat Pump, it will not heat. Meanwhile, I do have to click the unused switch to change the Heat Set point. The same is true for the pool.

Thoughts?

@mal7887 AqualinkD does exactly the same thing as the panel (it physically can't do anything different). So you should just turn the heat pump/chiller on in AqualinkD (or HA) and it'll do the same thing as the Jandy app.

sfeakes avatar Jun 14 '25 18:06 sfeakes

@RajUmadas I've just posted 2.6.8 (Dev), take a look and see if that's correct from your findings. You can also download the binary and test it.

Noob question, whats the best way to try and test out this version. I dont see anything in tagged releases.

Also, i probably wont get to this until monday, so no rush.

RajUmadas avatar Jun 15 '25 11:06 RajUmadas