Intelliflow pump RS485 protocol

farcouet said:
Hi you need to send the percentage every 0.5 second. it will stop being remotely controlled after few seconds of not getting the packet with the setting. you may also just put it on a dedicated rs485 bus.
 
Ah, so the controller is constantly sending packets then, right?  Not an issue.  Actually, after doing a resend every 2 seconds for 5 minutes, I only had a handful of packet collisions, and that had no impact on anything since all the other data is resent every 10 seconds.  
 
Though I did end up buying another $6 JBTech adapter just for such a case!  
 
I still would LOVE to get water temperature reported from the AquaRite. Ppm is of course great, but temperature would be a nice addition.  I am also surprised that after sending 00, 17, and 20 commands (decimal), I could not get anything to change when in error condition vs normal.  I turned off the pumps so I got the no-flow error on my panel, but none of the packets I received back for any command I sent seemed to change.  Odd.  
 
Here is what I sent and got back:
 
  • 16,2,80,0,0 => 0,1,0,0
  • 16,2,80,17,10 =>0,18,70,0 //70 is my ppm, 3500
  • 16,2,80,20,1 =>0,3,0,65
The only response that ever changes is the 70 (ppm).  All else are always the same.
 
Also, I notice the AquaRite does not mind getting extra data.  For example, 
 
16,2,80,0,98,16,3 = 16,2,80,0,0,98,16,3 = 16,2,80,0,0,0,98,16,3
 
Got the same response in each case.  I think the normal format is 
 
Header = 16,2
Destination 80
Command = 0 or 17 or 20
Data = X (only the 17, the set % command, seems to use this)
Checksum
End = 16,3
 
But apparently you can add as many data bytes as you want and it is fine.  
 
EDIT: I also found that 21 works as a command, but is almost identical to 17.  It sets the %, but divided by 10.  So 
 
16,2,80,21,50 will set the panel to 5%. 
 
FYI, Tag has released an initial version of his Pentair Pool Control software.  I am now using it to control my pool and chlorinator.  Had it running for almost 2 days and all features I want are working.  My setup is a Pentair VS Pump, AquaRite salt chlorinator, and Intermatic Multi-wave pool controller (similar to the IntelliCom2).  I can monitor the status of the Chlor and pump, change settings, turn them on/off, and set pump speed and timers.  I doing all of this from my ISY Home Automation controller, which Tag was also able to integrate into his software.  
 
Check it out!
 
https://github.com/tagyoureit/nodejs-Pentair
 
Also FYI, i just put my code on Github as well. Just for arduino and controlling pumps, thanks @blueman2 I used a litle of your code to make the classes and find some issues. I also detected that when you have a standalone pump - then you should talk to the pump a lot, otherwise it just keeps it's mouth shut and gives a flatline voltage on the RS-485 interface. (I first thought it was broken)
 
Maybe a little question along the way: does anyone know the connectortype of the pentair RS-485 connection cable??
 
Github link : https://github.com/Zuntara/Arduino.Pentair
 
GdB said:
Note for Admin, please email me my rejected post, I have no record of it.
Not sure what you mean.  I looked at your posts and you have two recorded, but I could only find the above one.  You were not flagged as a 'spammer' so I'm not sure why the other post was rejected or why it's not showing up in your history.
 
Thanks for the quick reply.  
 
I must have clicked to fast to somewhere else before I noticed the no link post denied message.  The links should just get deleted.  That would be less annoying for legitimate users.
 
I've been a "Member Since 13 Jun 2012", so I don't know why I can't post a link to something on Amazon like an RS-485.  
 
I have had a busy day and no time yet to fully rewrite my hopefully useful comments and questions.
 
GdB said:
Thanks for the quick reply.  
 
I must have clicked to fast to somewhere else before I noticed the no link post denied message.  The links should just get deleted.  That would be less annoying for legitimate users.
 
I've been a "Member Since 13 Jun 2012", so I don't know why I can't post a link to something on Amazon like an RS-485.  
 
I have had a busy day and no time yet to fully rewrite my hopefully useful comments and questions.
 
You were not tagged as a spammer. The forum is set up so you need to just have a few more posts till you can put links in your replies (same for any member).
 
Thanks for this excellent Arduino version!  I have a few questions:
 
1.  Can it reprogram the preset speeds on a Pentair IntelliFlo 011018 ?
 
2.  Can it listen only, i.e. spy on comm between an intellicom and intellichlor?  
I want to monitor when there is insufficient flow so I know when to increase the RPM, without wasting power.  
My Sta-Rite s8D110 DE filter flow changes dramatically from clean to dirty*.   
 
Will this max485 RS-485 module work?
 

* I just want to share that this model has the lowest measured back pressure curve when clean.  I did a few things to save $$$ on my electric bill.  Remove the spring from check valves if possible, if they flow up you can remove the spring.  Run the pump at minimum possible speed.  Pump power increases exponentially with flow rate, but at minimum speed the flow will be good if you don't have obstructions.  Intellichlor demands a higher flow rate than the minimum.
 
 
Hey all,
 
Has anyone seen this packet from the pumps?: 165,0,33,96,255,1,5,2,43
 
It seems to be a response to something, maybe a NACK?  33,96,1,length,x,y would be an ACK to a msg with x,y.  So this message might be a rejection of some message (possibly 5 = set speed)?
 
My outbound message sequence is:
1.  165,0,96,33,4,1,255  <-- Set pump to remote control
2.  165,0,96,33,6,1,10  <-- Turn power on
3.  165,0,96,33,1,4,2,196,3,32  <-- Set RPM/speed to 800  
4.  165,0,96,33,4,1,0  <-- Set pump to local control
5.  165,0,96,33,7,0  <-- Request status
   --> at this point I get the unknown message 165,0,33,96,255,1,5,2,43
<wait 30 seconds, repeat>
 
Also, there are times I do get a correct response to the 7,0 (request status) packet and sometimes I don't... but right after this sequence it fails to respond properly.  
 
thx,
Tag
 
Hi Tag,
 
Is there any indication of an error on the pump itself? But even with an error in the pump, I can't see why a status request should fail.
 
I still don't have my pump wired, so I can't be much help testing.
 
mark
 
Thx Mark.  This is one of the users of my app, but he says there isn't any error on the pump itself.  I think it might be command #4 (set pump to local) that might not be needed.  I'm asking him to retry and let me know if that helps.
tag
 
blueman2 said:
Ah, so the controller is constantly sending packets then, right?  Not an issue.  Actually, after doing a resend every 2 seconds for 5 minutes, I only had a handful of packet collisions, and that had no impact on anything since all the other data is resent every 10 seconds.  
 
Though I did end up buying another $6 JBTech adapter just for such a case!  
 
I still would LOVE to get water temperature reported from the AquaRite. Ppm is of course great, but temperature would be a nice addition.  I am also surprised that after sending 00, 17, and 20 commands (decimal), I could not get anything to change when in error condition vs normal.  I turned off the pumps so I got the no-flow error on my panel, but none of the packets I received back for any command I sent seemed to change.  Odd.  
 
Here is what I sent and got back:
 
  • 16,2,80,0,0 => 0,1,0,0
  •  
  •  
  •  
  • 16,2,80,17,10 =>0,18,70,0 //70 is my ppm, 3500
  •  
  •  
  •  
  • 16,2,80,20,1 =>0,3,0,65
  •  
  •  
  •  
The only response that ever changes is the 70 (ppm).  All else are always the same.
 
Also, I notice the AquaRite does not mind getting extra data.  For example, 
 
16,2,80,0,98,16,3 = 16,2,80,0,0,98,16,3 = 16,2,80,0,0,0,98,16,3
 
Got the same response in each case.  I think the normal format is 
 
Header = 16,2
Destination 80
Command = 0 or 17 or 20
Data = X (only the 17, the set % command, seems to use this)
Checksum
End = 16,3
 
But apparently you can add as many data bytes as you want and it is fine.  
 
EDIT: I also found that 21 works as a command, but is almost identical to 17.  It sets the %, but divided by 10.  So 
 
16,2,80,21,50 will set the panel to 5%. 
 
Here is an observation from an EasyTouch 8 system with an Intellichlor 40 SWG:


170527 09:02:22.504 20.150 R [0] 8 1002-501164---[d7]-1003 (set output 100%)
170527 09:02:22.532 0.028 R [0] 9 1002-00124080-[e4]-1003 3200ppm 0x80
170527 09:02:42.707 20.175 R [0] 8 1002-501164---[d7]-1003 (set output 100%)
170527 09:02:42.734 0.027 R [0] 9 1002-00124080-[e4]-1003 3200ppm 0x80
170527 09:03:03.605 20.870 R [0] 8 1002-500000---[62]-1003
170527 09:03:03.647 0.042 R [0] 9 1002-00010000-[13]-1003
170527 09:03:23.796 20.149 R [0] 8 1002-501164---[d7]-1003 (set output 100%)
170527 09:03:23.825 0.029 R [0] 9 1002-00124080-[e4]-1003 3200ppm 0x80
170527 09:03:44.273 20.448 R [0] 8 1002-501130---[a3]-1003 (set output 48%)
170527 09:03:44.301 0.028 R [0] 9 1002-00124080-[e4]-1003 3200ppm 0x80
170527 09:04:05.306 21.005 R [0] 8 1002-501400---[76]-1003
170527 09:04:05.351 0.044 R [0] 24 1002-000300496e74656c6c6963686c6f722d2d3430-[bc]-1003

170527 09:04:25.501 20.150 R [0] 8 1002-501132---[a5]-1003 (set output 50%)
170527 09:04:25.530 0.029 R [0] 9 1002-00124080-[e4]-1003
170527 09:04:45.687 20.156 R [0] 8 1002-500000---[62]-1003
170527 09:04:45.715 0.028 R [0] 9 1002-00010000-[13]-1003
170527 09:05:06.552 20.836 R [0] 8 1002-501132---[a5]-1003 (set output 50%)
170527 09:05:06.581 0.029 R [0] 9 1002-00124080-[e4]-1003
170527 09:05:26.744 20.162 R [0] 8 1002-501132---[a5]-1003 (set output 50%)
170527 09:05:26.772 0.028 R [0] 9 1002-00124080-[e4]-1003
170527 09:05:46.934 20.162 R [0] 8 1002-501400---[76]-1003
170527 09:05:46.978 0.044 R [0] 24 1002-000300496e74656c6c6963686c6f722d2d3430-[bc]-1003


looks like the Easytouch interacts with the IC40 every 20 seconds, it is a send from the controller and the IC40 answers.
Does anybody know what the 500000 command does and how to interpret the 00010000 answer?
 
Back
Top