Pool Equipment Automation Suggestion

I'd like to know the salt level at a minimum.

Monitoring the salt level is not really a problem. The only way salt leaves the pool is if you backwash, drain, or your swimmers drag it out. So long as your pool doesnt leak, the salt level will remain constant.

Sooo...is there any Chlorine Generator out there that has either (A) an RS232 interface that is easy to use to pull data from or (<_< a published RS485 protocol?

I've not seen any published RS485 protocols. However, I have looked at and wrote some software for the Intellitouch protocol. Even when nothing is happening, there is a lot of activity on the wire. I dont have a pentair salt generator but the control board I have and the pump I have simply send out their status on a regular basis. The control panels and UI devices monitor and display that. It's pretty easy to watch what happens when a button is pressed. After you get the checksum routine down and the basic packet format, it mostly makes sense. Since some of their interfaces show status from their salt generator, I'd assume that it too writes status to the wire on a regular interval.

I can easily build a PIC control unit to talk RS485 and get the data from the unit, but need to know the protocol since RS485 is a query/response mechanism. I need to know what to send to the Generator to get it to respond.

I use a Pool Pilot Total Control for my chlorine. It's a closed loop systems for both pH control and chlorine (via ORP). It mostly works great and the two line display on the unit has a lot of very useful information. However, they claim that none of this information makes it to their RS485 bus. I still plan to verify this. Conceptually, I understand how to convert the signals driving the display to serial, but actually putting the hardware together (and risking breaking the device) is a different matter.

Anyways, if you really want to monitor your pool, pH and sanitizer levels are probably the most important as they change on a day to day basis. Salt levels would be nice, but since you are going to adjust that every other week at most, looking at the display on the device will suffice.
 
dbeau,

Thanks for the response. Your analysis of the protocol, is it an ascii protocol or binary? If it is ascii then it should be really easy to decode...its when it gets into binary that it is more difficult. I'd really like to find someone that has the intellichlor that can sniff the bus to see if it actually sends data out on a regular interval. If it indeed does, then building a converter is pretty easy.

I eventually do want to get ph and ORP...I was planning on building my own sensor setup for that, or using something like the AquaController II that reads this info directly and has an RS232 interface.

Any chance you want to share the protocol info you have for the intellitouch? That might give me an idea of what I am looking at. I am heading to the pool store today to see what they recommend, but right now I am leaning towards the Pentair stuff.

Thanks again!

PiperPilot
 
Your analysis of the protocol, is it an ascii protocol or binary? If it is ascii then it should be really easy to decode...its when it gets into binary that it is more difficult. I'd really like to find someone that has the intellichlor that can sniff the bus to see if it actually sends data out on a regular interval. If it indeed does, then building a converter is pretty easy.

It's a binary protocol with a fixed header, variable length data and a checksum. The header includes what I suspect are source and destination devices along with a command identifier. Most of the data are 8 or 16 bit integers. From what I've seen, I'd guess that the intellichlor does send data on a regular interval. Other devices, like the intelliflow pump and the intellitouch personality board itself, do. The controls just seem to sit and watch the wire until you press a button.


Any chance you want to share the protocol info you have for the intellitouch? That might give me an idea of what I am looking at. I am heading to the pool store today to see what they recommend, but right now I am leaning towards the Pentair stuff.

I could certaintly do a quick write up of what I've discovered. My code is about 400 lines of python tied up with some custom TCP server code I'd rather not release. The hard part was getting the packet format and checksum worked out. Then the other hard part <_< was pushing buttons and watching the data flow by.
 
Anything you would like to share would be great! This seems to be a black hole for automation...at least inexpensive automation. I will in turn share what I discover about the Intellichor with the group as well. I have sent Pentair an email request for some info on their protocol but am not very confident I will get a positive response.

Thanks,
PiperPilot
 
dBeau,

Did you get a chance to look at this? My system gets here tomorrow and wanted to try to start playing with it over the weekend. Info doesn't need to be polished...even raw python code is probably OK.

Thanks,
PiperPilot
 
Did you get a chance to look at this? My system gets here tomorrow and wanted to try to start playing with it over the weekend. Info doesn't need to be polished...even raw python code is probably OK.

I really wanted to write this stuff up instead of posting code but.... check your message box, my python code is on the way.
 
I wanted to update everyone. I finally got the EasyTouch Controller hooked up last weekend. Today I got an RS485 adapter hooked up the unit and monitored the traffic....sure enough it uses the same protocol as the IntelliTouch that dbeau got working. I am looking forward to doing some more work and decoding the protocol. Eventually I would like to get the data into Homeseer or MainLobby. I will post more as I make more progress. The good news is that it definately IS possible to get the info out of the less expensive easy touch system and not have to go with the intellitouch and it's over priced communications module.

PiperPilot
 
Well, I just took delivery of my new spa with an EasyTouch controller, and so I am suddenly intensely interested in this thread. Has anybody made any recent progress? I am also a Python enthusiast, so I would love to get my hands on the library, whatever its current state. Any chance of this? Thanks much.
Cheers,
--Avanti
 
I wanted to update everyone. I finally got the EasyTouch Controller hooked up last weekend. Today I got an RS485 adapter hooked up the unit and monitored the traffic....sure enough it uses the same protocol as the IntelliTouch that dbeau got working. I am looking forward to doing some more work and decoding the protocol. Eventually I would like to get the data into Homeseer or MainLobby. I will post more as I make more progress. The good news is that it definately IS possible to get the info out of the less expensive easy touch system and not have to go with the intellitouch and it's over priced communications module.

PiperPilot

PiperPilot or dbeau, I have written a basic driver for my Pentair Easytouch, and can turn circuits on/off. I quickly found the temperature readings in the status message, but was wondering if you would be willing to share any other details of the status messages so that I don't have to spend hours working them out by monitoring the data.

Thanks!
 
PiperPilot or dbeau, I have written a basic driver for my Pentair Easytouch, and can turn circuits on/off. I quickly found the temperature readings in the status message, but was wondering if you would be willing to share any other details of the status messages so that I don't have to spend hours working them out by monitoring the data.

Thanks!


Same plea.

I have connected my RS485-Ethernet brink, now wireshark lets me see the chatty proptocol - but hints would help me get started much quicker.

Any data/code, please email to me.

Thanks
-PeterM
 
Hi dbeau, any chance of getting your code? I've got an intellitouch system with an intellichlor and i'd like to display the salt level (and maybe the chlorine output setting) on an LCD (maybe a PC at first) inside the house. It would at least let me see the protocol.
 
I have an Intellichlor (IC-40) salt generator and I'm interested in what data it transmits on the 485 bus. I'm working up an Arduino based pool control system and would love to incorporate the status of the chlorinator and possibly adjust it's output based on other sensor data such as ORP. How much is known about communicating with the Intellichlor?
 
Has anyone ever published a breakdown of the intellitouch protocol? I'm waiting on the RS-485 interface so I can snoop in on the packets coming from my Intellichlor salt system. Would be nice if I could use my microcontroller based pool automation system to monitor and adjust it's output. Will be doing PH and ORP reading. If there's no info out on the Intellichlor, I'd be happy to provide whatever data I can gather...
 
 
Hello,
If anyone who has figured out the protocol would like to share some details that would be very much appreciated.  I have an easytouch controller to which I am connected over the RS-485 link.  I can see the message stream across the wire, I have written a bunch of code to try and talk to the controller and send messages to it - but still no luck in actually having a message actioned by the controller.  When I push buttons on the panel I can see which bytes are changing, which I have mimicked back in the same message format - thinking this is the message that is related to the button push.  Unfortunately I have had no luck whatsoever. 
I've read everything I could find so far, but success eludes me.  So I hope there are still some folks who are interested in this post and would be willing even to share just one control message - like turning on the pump for example - just so that I can see where I am going wrong.
I hope to hear from one of you.
Thanks
rob
 
robc64 said:
Hello,
If anyone who has figured out the protocol would like to share some details that would be very much appreciated.  I have an easytouch controller to which I am connected over the RS-485 link.  I can see the message stream across the wire, I have written a bunch of code to try and talk to the controller and send messages to it - but still no luck in actually having a message actioned by the controller.  When I push buttons on the panel I can see which bytes are changing, which I have mimicked back in the same message format - thinking this is the message that is related to the button push.  Unfortunately I have had no luck whatsoever. 
I've read everything I could find so far, but success eludes me.  So I hope there are still some folks who are interested in this post and would be willing even to share just one control message - like turning on the pump for example - just so that I can see where I am going wrong.
I hope to hear from one of you.
Thanks
rob
This might help:
 
 
import struct
class SendSpaCommand(ioPKG):
 
#Send it a list of integers and it sends various Intellitouch commands to be sent on the RS-485 bus
 
#Format  [Command, Param1, Param2...]
#Command:
#   1 -- Set Relay Value
#     Param1 -- Relay #:
# 1 -- Spa
# 2 -- Jets
# 3 -- Light
# 4 -- Waterfall
#     Param2 -- State:
# 0 -- OFF
# 1 -- ON
 
# 24-apr-2011
  terminals = ( ("string_in",10),
("str_out")
)
 
        
  def terminal_string_in(self,mx):
    m = [1,1,0]
    comm = m[0]
 
#Output message format:
#  2 byte constant delimeter:  [0x00,0xff]  (not included in checksum)
#  2 byte constant header:  [0xa5,0x01]
#  1 byte destination
#  1 byte source
#  1 byte command
#  1 byte data length
#  variable length data
#  2 byte checksum
 
#start with header bytes 2-3  (included in checksum)
    o = [0xa5,0x01]
 
    if comm == 1:
      # set relay
      relay = m[1]
      state = m[2]
 
     #add the msg
      o += [0x10,0x20,0x86,0x02,relay,state]
    else:
        self.error("ERR" , "invalid Spa command")
        return
 
#compute checksum
    checksum = 0
    for x in o:
      checksum += x
    checksum = checksum % 65536
    ck = struct.pack("!H",checksum)
    o += [ord(ck[0])]
    o += [ord(ck[1])]
#add header bytes
    o = [0x00,0xff] + o
    o = ''.join(map(chr,o))
 
    self.message("str_out",o)
 
 
Cheers.
 
Back
Top