Pentair binding not reading pump status+pool/spa temp

I’m on OH 4.1 with latest Pentair binding

  • connected via serial IP bridge
  • EasyTouch Controller
  • Intelliflo Punmp
  • Remote control

The EasyTouch controller comes ONLINE
the pump too, but it doesn’t report any values

Checking log I see
Not Implemented: A5 00 90 10 D2 01 D2
Command from unregistered Intelliflow: 10 02 50 11 32 A5 10 03
Pump control panel on/of 96: -1

Intelli Flo has address 1
The thing has id 96, changing to 1 makes no difference

@jsjames Any idea

2024-01-01 16:59:07.667 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:07.669 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:07.686 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Command from unregistered device (72): A5 01 10 48 E1 01 00 
2024-01-01 16:59:07.716 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 01 0F 10 21 04 01 02 85 86 
2024-01-01 16:59:07.717 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 01 0F 10 21 04 01 02 85 86 
2024-01-01 16:59:08.316 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 01 0F 10 02 1D 10 3A 20 00 00 00 00 00 00 00 0C 00 00 10 46 46 02 5A 44 FF 02 32 05 11 00 00 00 29 0B 
2024-01-01 16:59:08.336 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:08.337 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:10.346 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 01 0F 10 02 1D 10 3A 20 00 00 00 00 00 00 00 0C 00 00 10 46 46 02 5A 44 FF 02 32 05 11 00 00 00 29 0B 
2024-01-01 16:59:11.857 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:11.859 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:11.860 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Command from unregistered Intelliflow: 10 02 50 11 32 A5 10 03 
2024-01-01 16:59:13.886 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:13.888 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:14.376 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 01 0F 10 02 1D 10 3A 20 00 00 00 00 00 00 00 0C 00 00 10 46 46 02 5A 44 FF 02 32 05 11 00 00 00 29 0B 
2024-01-01 16:59:14.396 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:14.397 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:16.737 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:16.738 [DEBUG] [rnal.handler.PentairEasyTouchHandler] - Not Implemented: A5 00 90 10 D2 01 D2 
2024-01-01 16:59:16.740 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 60 10 04 01 FF 
2024-01-01 16:59:16.740 [TRACE] [rnal.handler.PentairEasyTouchHandler] - Pump control panel on/of 96: -1
2024-01-01 16:59:16.966 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 60 10 04 01 FF 
2024-01-01 16:59:16.967 [TRACE] [rnal.handler.PentairEasyTouchHandler] - Pump control panel on/of 96: -1
2024-01-01 16:59:17.106 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 60 10 04 01 FF 
2024-01-01 16:59:17.107 [TRACE] [rnal.handler.PentairEasyTouchHandler] - Pump control panel on/of 96: -1
2024-01-01 16:59:17.108 [TRACE] [nal.handler.PentairBaseBridgeHandler] - Received pentair command: A5 00 60 10 04 01 FF 
2024-01-01 16:59:17.109 [TRACE] [rnal.handler.PentairEasyTouchHandler] - Pump control panel on/of 96: -1

Hi Markus - It looks like you are using the binding from the repository and not the one here:

[

org.openhab.binding.pentair-4.1.0-SNAPSHOT.jar
drive.google.com

drive_2020q4_32dp.png

](org.openhab.binding.pentair-4.1.0-SNAPSHOT.jar - Google Drive)

It’s best to start with this one as it is much more robust. While I have submitted the updates to openhab (a while ago), it hasn’t been reviewed by the maintainers in a while.

One change made in the most recent binding is that the controller won’t come online until a valid status packet is received whereas in the old binding in the repository, the controller will just come online after it is configured.

Regards,
Jeff

1 Like

ahhh, this version does the job as expected :slight_smile:

Did you worked on pump control in between?

There are some enhancements in the pump logic, but I don’t recall the specific capability you wanted. Can you remind me?

The one thing about the pump control is that you cannot have 2 masters - so if your EasyTouch controller is managing the pump, then openhab cannot control it and you have to use circuits on EasyTouch (which can then be controlled via openhab).

ok, so end of story :-), because my EasyTouch controls it :slight_smile:
Would be nice to use this as standard, but have the option to incrase the speed, e.g. for cleaning

Yeah- I solve the “cleaning” mode by having one of my circuits on the easytouch assigned to “boost mode” where it will use a higher pump speed.

ok, I have it working, except 2 issues

  • The Spa water temp doesn’t get a value and stays UNDEF even in pool mode (pool water temp and air temp are reported correctly)

  • Exception when trying to switch Pump run switch ON

2024-01-04 21:55:57.499 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.pentair.internal.handler.PentairIntelliFloHandler@446738': null
java.lang.NullPointerException: null
	at java.util.Objects.requireNonNull(Objects.java:209) ~[?:?]
	at org.openhab.binding.pentair.internal.actions.PentairIntelliFloActions.getHandler(PentairIntelliFloActions.java:55) ~[?:?]
	at org.openhab.binding.pentair.internal.actions.PentairIntelliFloActions.coreSetOnOROff(PentairIntelliFloActions.java:92) ~[?:?]
	at org.openhab.binding.pentair.internal.actions.PentairIntelliFloActions.setOnOrOff(PentairIntelliFloActions.java:102) ~[?:?]
	at org.openhab.binding.pentair.internal.handler.PentairIntelliFloHandler.handleCommand(PentairIntelliFloHandler.java:176) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:147) [bundleFile:?]
	at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
	at jdk.proxy18917.$Proxy19035.handleCommand(Unknown Source) [?:?]
	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:95) [bundleFile:?]
	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor363.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:147) [bundleFile:?]
	at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:840) [?:?]

The first is by design - There is only one water temp sensor in the system, so when controller is in pool mode, the temperature is reported as the Pool Temp. Then when it’s in SPA mode, the temp is reported as the SPA temperature and the pool temp would be set to UNDEF.

I’ll have to look into the exception. Again, I don’t expect that to work because the easy touch is the master of the pump, however it should not throw an exception.

Thanks,
Jeff

thanks

even when switching to SPA mode, the SPA temp stays UNDEF, while the pool temp keeps it value

Is there a way to track the remote? Not controlling this (no need for), but just having an indication that it is active and maybe getting the button sent. More than once I had the problem that the radio connection between the remote and the controller got lost, so that might be an option to monitor this connection.

@jsjames Where can I find the latest source code? I want to do some debugging.

Somehow the temp measurement is working inconsistent. I never see correct values displayed on the controller panel when switching between pool and spa mode. Sometimes Spa temp receives an update, sometimes pool temp stays N/A.

Also setting the temp does not work (at least doesn’t change on the controller).

EDIT: I removed the controller thing and added the one, which was discovered and added to the Inbox. Same result: SPA temp stays UNDEF

Code is here: GitHub - jsjames/openhab-addons: The next-generation open Home Automation Bus (openHAB) in Pentair2 branch.

Not sure what is going on with the temperature stuff - i’m just upgrading my system to openhab4 and running into upgrade issues. Once done I’ll take a look as well.

I found the problem:

  • Currently the temp channels get only updated when heat status is received
  • However, this packet does not include the current temps, only the setpoints
  • pool/spa temp is included in the controller status

I added

if (currentControllerStatus == null || !newControllerStatus.equals(currentControllerStatus)) {
...
    refreshGroupChannels(GROUP_CONTROLLER_STATUS);
    // update pool/spa heat
    refreshGroupChannels(GROUP_CONTROLLER_POOLHEAT);
    refreshGroupChannels(GROUP_CONTROLLER_SPAHEAT);

I also improved debug output displaying the device id for each message and separating between DEBUG (functional / status messages) and TRACE (packer hex dump). I would like to create a PR for you repo, but I can’t fork it, because I have already a openhab-addons under my GitHub user. How could we handle that?

Hi Markus - Thanks for the debugging/improvements. I’m not a git expert - but it looks like you were able to make the changes directly on the openhab-addons GitHub. Are they part of this pull request then? Is there anything I need to do to merge them into the pull request? It would be good if we can somehow get this pull request accepted into the main branch - since you are a maintainer, are you able to help with that?

Hi, not really. I cloned you repo, made changes and here we are. I’m also not a git expert nor a maintainer. The only stupid idea I have is sending you the binding folder as zip, so you could do review locally and do the commit/push.

Option b) Check if you can grant access for me to your repo, GitHub id is markus7017, so I could create a new branch and push changes.

What do you think?

HI was able to figure out how to do it based on what you submitted. I included as part of the pull request - https://github.com/openhab/openhab-addons/pull/13485. You could make sure all your changes are reflected here.

Jeff

:wave:

Interested, git reported me a “remote rejected” so I’m surprised that you see my commit.
This first one was only logging improvements, I added a second push, which includes the actual fix (see above).

Just for my interest: How do you managed to get the commit into the PR?