guinness
Well-known member
Can you set the speed and get pump status? Could you share the messages that you sent and received back?
10 02 78 43 CD 10 03
I don't have Pump NowCan you send the command "10 02 78 43 CD 10 03" to your pump and let us know what the response is?
Jandy protocol supports 4 VSP ID's, while Pentair protocol supports 16 ID's. Both Jandy and Pentair controllers can read / write each others protocols and for the most part the different protocols don't clash being on the same 485 bus. IE, a Pentair controller can control a Jandy Salt Water Generator. (In fact that's the default mode for Pentair). Some VSP's can also be set to use the different protocols, so you can set some Jandy VSP's to use the Pentair protocol.Yes guinness I don't have it now -- maybe I will get it next month,
But if you have any theoretical idea or any good web link - how Jandy controlling 16 VSPs How they have addressed logic
Request
[0x10, 0x02] = Preamble
[0x78] = Destination Address (pump is always 0x78)
[0x44] = Function Byte
[0x00, 0x10, 0x27] = Payload Data (Variable length)
[0x05] = Checksum
[0x10, 0x03] = Terminator
Checksum
In the Jandy protocol it appears that it calculates a two-byte checksum but only uses the least significant byte.
So 0x10 + 0x02 + 0x78 + 0x44 + 0x00 + 0x10 + 0x27 = 0x105 & 0x00FF = 0x05
Response:
[0x10, 0x02] = Preamble
[0x00] = Destination Address - Always 00 on response to request (Broadcast?)
[0x1F] = Not sure - always seems to be 01 or 1F on response (01 from Go command)
[0x44] = Function Byte (demand)
[0x00, 0x10, 0x27] = Payload
[0x05] = Checksum
[0x10, 0x03] = Terminator
Function Bytes:
[0x41] = Go
[0x42] = Stop
[0x43] = Status request
Status response: 0x00=Stopped, 0x09=Starting, 0x0B=Run, 0x20=Fault
[0x44] = Set Demand (Payload data required: Mode=0, DemandLo=0-0xFF, DemandHi=0-0xFF)
[0x45] = Read Sensor (Payload data required: Page=0-4, Address=0-0xFF) - refer Modbus manual Appendix A for mapping
Response data = Page, Address, ValueLo, ValueHi (need to swap bytes)
[0x46] = Read Identification (Payload data required: Page=0-4, Address=0-0xFF, Length=parameters req -1)
[0x64] = Config read/write )Payload data required, Page, address, length
[0x65] = Store Configuration
Examples:
Status request:
10 02 78 43 CD 10 03
10 02 00 1F 43 0B 00 00 00 7F 10 03
Response 0B = Run Mode
Read Speed (sensor - 45, Page = 0, Address = 0):
10 02 78 45 00 00 CF 10 03 Packet
10 02 00 1F 45 00 00 54 1B E5 10 03 Packet
Response = 54 1B Swap bytes then /4 : 0x1B54= 6996d / 4 = 1749rpm
Read Power (sensor - 45, Page = 0, Address = 5):
10 02 78 45 00 05 D4 10 03
10 02 00 1F 45 00 05 F4 00 6F 10 03
Response =F4 00, Swaped = 0x00F4 = 244W
send motor the "set demand" command in Jandy format
10 02 78 44 00 10 00 27 05 10 03 - Jandy command
10 02 00 1F 44 00 10 27 00 AC 10 03 - Motor responds!!!
Go Command (run):
10 02 78 41 CB 10 03 - go command
10 02 00 01 41 00 54 10 03 - motor's response and motor starts!!!!
@brentk thank you for cracking the code of the crossover between the MODBUS command set to the Jandy command protocol. This is the first time I personally have seen this documented in the wild.For anybody wo is still interested in this topic - I have done some analysis of this protocol as well as captured the data between my pump's built in control panel (Jandy JEP-R equivalent) and the pump (Zodiac FloPro VS). The Jandy protocol uses the same command function numbers and addresses as used in the Modbus protocol manual linked previously, but with Jandy header, checksum and terminator. The modbus manual provides details on all the function codes and addresses as well as data formats (e.g. When reading speed we need to swap bytes and then divide the reult by 4)
Below is my analysis of the protocol (borrowing from previous posts)
Attached is an annotated capture log with a few minutes of comms including starting the pump.
I have used this to develop a Node Red flow to monitor the communication and pass the status, speed and power to Home Assistant