Repository navigation
Replies: 12 comments 50 replies
|
We support some Pentair models, but no one has decoded the JXI heaters yet. It looks like there might be some slight advantages to using >Rev N (see TFP), but in general setting up the fireman's switch to turn the heater on/off gets you all the functionality you need. |
|
|
The timing of this update is a bit amusing as I was impatient and decided to give Claude a try and intgrate rs 485 comms with Jandi JXI400 myself. I was successful after several (about a week) of failed attempts. I’m sure your version is much better but I will share mine for giggles.
I ended up adding a separate RS485 adapter to my pi as my pentair pump communicates on my primary port and since the Jandy uses a different message structure I was seeing a lot of collisions with them both on the same adapter.
I will give yours a try and see if there’s any difference. One thing that I found and what took so much time was getting the flame widget to work with the heater on RS485 mode. Also getting the address dropdown widget under heaters took some time.
See here:https://github.com/chevyzr1/nodejs-poolController-jxi/tree/feature/jxi-heater
… On May 9, 2026, at 6:00 PM, tagyoureit ***@***.***> wrote:
Thx. Pull njsPC/dP again. The UI was missing the configurable elements including the address.
—
Reply to this email directly, view it on GitHub <#1128 (reply in thread)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/BH52N4D6CRHI6OLZIIAN3ID4Z6TA3AVCNFSM6AAAAACYC2U75SVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTMOBWGUZTENY>.
Triage notifications on the go with GitHub Mobile for iOS <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you commented.
|
|
After reviewing the updates VS the my config, I wanted to share what I found while getting a Jandy JXi400 working via RS485 on a Nixie board. I've been running it successfully for several weeks and there are a few protocol details that differ from the upstream jxi implementation:
1. Heater broadcasts 0x25 autonomously after every command
The JXi sends a 0x25 temp response on its own after every command — no explicit query is needed. My working implementation just listens for inbound 0x25 frames passively. Sending a separate 0x25 query creates a second redundant frame and can cause parser collisions if both arrive close together.
2. Temp byte index: payload[6], not payload[5]
The 0x25 response payload (excluding the action byte) is 6 bytes: [0]=0x33, [1]=counter, [2]=0x04, [3]=0xF7, [4]=0xF5, [5]=temp°F+20. With the action byte counted as part of the payload, the temp is at payload[6] (i.e., payload[5] in a 0-indexed slice that excludes the action byte — depends on how your parser counts it). The upstream code was reading one byte too early, giving garbage temp readings.
3. Heat command needs mode arg byte
Command 0x0C must include an arg byte: [0xE9] for pool mode, [0xEE] for spa mode. Without it, the heater doesn't respond correctly.
4. Status bitmask for burner-on: 0x08
The 0x0D status frame uses bit 0x08 = burner ON, 0x10 = burner OFF (matches public Jandy protocol docs). Pending live-fire verification on my end when I de-winterize.
I've implemented this as type jandyrs485 on my fork (chevyzr1/nodejs-poolController-jxi, branch feature/jxi-heater). Happy to share more detail or coordinate merging the corrections back into the upstream jxi type.
… On May 9, 2026, at 6:49 PM, Roy L ***@***.***> wrote:
The timing of this update is a bit amusing as I was impatient and decided to give Claude a try and intgrate rs 485 comms with Jandi JXI400 myself. I was successful after several (about a week) of failed attempts. I’m sure your version is much better but I will share mine for giggles.
I ended up adding a separate RS485 adapter to my pi as my pentair pump communicates on my primary port and since the Jandy uses a different message structure I was seeing a lot of collisions with them both on the same adapter.
I will give yours a try and see if there’s any difference. One thing that I found and what took so much time was getting the flame widget to work with the heater on RS485 mode. Also getting the address dropdown widget under heaters took some time.
See here:https://github.com/chevyzr1/nodejs-poolController-jxi/tree/feature/jxi-heater
> On May 9, 2026, at 6:00 PM, tagyoureit ***@***.***> wrote:
>
>
> Thx. Pull njsPC/dP again. The UI was missing the configurable elements including the address.
>
> —
> Reply to this email directly, view it on GitHub <#1128 (reply in thread)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/BH52N4D6CRHI6OLZIIAN3ID4Z6TA3AVCNFSM6AAAAACYC2U75SVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTMOBWGUZTENY>.
> Triage notifications on the go with GitHub Mobile for iOS <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
> You are receiving this because you commented.
>
|
|
It finally stopped raining, got time to replace the power interface board and can now send/receive data to/from the heater. The replacement board version: The wiring looks like this:
Heater set to Remote - T-Stat Serial port is set up for 9600,n,8,1 Confirmed the checksum should include DLE and STX (sorry @tagyoureit - Could you "unfix" your fix) Send out decimal characters: 16 2 104 37 0 159 16 3 @tagyoureit now that I am at this point, let me know if there is anything I can do to help out. And yet again.... Thank You! |
Jandy JXi (device 104) never replies on a shared Pentair RS-485 bus — all polls abort 3/3, all other equipment fine (njsPC 9.1.0, Nixie)SummaryOn a Nixie (virtual/standalone) controller, njsPC 9.1.0 polls a newly added Jandy JXi heater but never gets a reply — every poll aborts after 3 attempts. Meanwhile every other device on the same RS-485 bus (Pentair IntelliFlo VSF pump + IntelliChlor IC40) communicates normally, and the bus failure rate sits at ~0.07–0.09%. I have matched the wiring + heater-mode combination reported as working in earlier discussions and still get nothing back from the heater. Looking for guidance on whether this is a config/address/mode issue or something in the 9.1 JXi decoder. Environment
Equipment on the shared bus
Device | Address | Protocol | Status
-- | -- | -- | --
IntelliFlo VSF pump | 96 | Pentair | Working (occasional normal retry)
IntelliChlor IC40 | 80 | Pentair | Working
Jandy JXi heater | 1 (→ device 104) | Jandy | Never replies
JXi control board: R-Kit R0988700, board H0774700_REVC. dashPanel heater config
The failurenjsPC polls the heater on a steady cycle and aborts every time: Decoding that frame: Critically, during these heater aborts the pump and IC40 continue to respond normally (their only failures correlate with me cycling the shared breaker while wiring). So this is isolated to the heater, not a bus-wide problem. What I have already triedHeater Remote mode:
Wiring (heater RS-485 red terminal bar, R B Y G):
Polarity: swapped the data pair both ways in each wiring configuration. Other: address set to 1 (→ device 104); multiple heater + container power cycles. Result: device 104 never replies in any combination of mode/wiring/polarity. All other bus equipment communicates throughout. Questions
|
|
With the applied checksum work around on the prior post, njsPC is not showing pool temperature. njsPC log is showing: "The body temperature for Pool cannot be determined." not sure if you want logs posted here. Let me know if you want them. This is a confirmed way to get the water temperature from the heater I also read somewhere that a 16 in the data portion of the packet requires a [null] 0 right after and that null needs to be removed from the data. So there might be an extra 0 in the data for every 16 seen. Scanned commands 0 - 255 data 0 - only got responses from 0, 12 and 37 |
|
1|njsPC | [02/06/2026, 17:05:35] info: {"port":0,"id":81,"valid":true,"dir":"out","proto":"jandy","pkt":[[],[], [16,2,104,12], [0],[134,16,3]],"ts":"2026-06-02T17:05:35.903-0400"} command [16,2,104,12], [0],[134,16,3] does not appear to be a valid command. -->[16, 2, 104, 12, 0, 134, 16, 3] <--[16, 2, 0, 13, 16, 0, 0, 0, 47, 16, 3] | 13[16, 0, 0]Error The outcome of the scan: 16,2,104,12,x,[checksum],16,3
With this scan outcome, it looks like the heater is only using the 4 least significant bits which tells me there can only be 16 values. This is what you get when you turn on the pool or spa 8 appears to be an OK or ACK If a response of 8 is given that does not mean that the heater is on. We disconnected the water flow sensor which shuts off the heater. Then issues a Pool On command 12[233], heater responded with 12[8,0,0] but it does not turn on. If the heater is set to offline mode from the heater panel and then issues a Pool On command 12[233], it will return 13[16,0,0] and the heater will not turn on. Still digging to find a way to get the status of the heater, errors, etc.... |
|
Hubuser01 apologies for the delayed response as I just found this thread in my junk folder.My heater has been working without issue for the last month via the rs485 interface. I also just added a heater interlock function widget in the UI for my heater bypass valves. I'm not able to tell clearly from this thread where you landed so please let me know how I can help get this running for you. I'm happy to provide logs, fw version, etc. whatever you need!Sent from my iPhoneOn May 18, 2026, at 3:03 PM, hubuser01 ***@***.***> wrote:
sorry, that was intended for chevyzr1. Figured if they had it working, they could confirm a few things. I'm finding a lot of conflicting information on this heater. My power interface board is showing red on the D4 led which indicates a problem on the board. Everything is working fine on the heater so it might be the aqualink interface that is complaining. Might have screwed it up messing with it. I have a power interface board on order. Should be getting it Wednesday. Hopefully ill have time to mess with it by the end of the week.
—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.Message ID: ***@***.***>
|
|
The wife approval factor is what makes it all worth it! That and it gives us an excuse to tinker 😆😉I have a JXi400 without the N. It's not the latest model as my menu does not have a dedicated "RS485" option, I only have "remote t-stat" which serves as both the RS485 comms or the remote fireman's switch depending on which is being used. Once I was able to get the serial communication operational it now displays a message "RS485 control" on the heater ui.I'm currently traveling for work until tomorrow afternoon. I will get the information you requested. I'm also happy to share logs if that's helpful. I'm currently using the pool controller dashboard from the repo with some custom add ons I've integrated as mentioned previously. It's been working flawlessly and my wife can operate it via my Home Assistant instance I setup for her (didn't want her operating the controls from the dashboard as there's too many thing to mess with). It's nice having the additional integration the RS485 offers with an additional temp reporting from the heater, along with the burner status that lets me know when the heater has actually fired. Sent from my iPhoneOn Jun 23, 2026, at 4:06 PM, hubuser01 ***@***.***> wrote:
@chevyzr1 Some things you said about your JXi heater seems to act differently than my JXi heater. What is your exact model number? I'm wondering if your heater is a JXiQ. Mine is a Jandy JXI260N. What version number(s)? My version numbers show up briefly upon power up as PI Rev JXi: 7.05 UI FW rev: 1.8
I ended up writing a heater controller in python. Mqtt was included for Home Assistant integration. Now we can schedule turn on/off times and see pretty charts. Wife is super happy that she does not have to wake up at 4am to turn on the heater anymore. It has been running issue free for about three weeks now. Wife Approval Factor points gained: 46
—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
|
Hey guys, glad this discussion is continuing. I cannot get the connection to NJSPC to work. I have a JXIQ400: |
|
Added heater, started heater, stopped heater, removed heater. Here are the logs: [29/06/2026, 15:11:02] info: Serial port: /dev/ttyUSB0 request to open successful 9600b 8-none-1 |




Uh oh!
There was an error while loading. Please reload this page.
Hi there, looking to take control of a Jandy JXI heater directly over RS485 without any kind of control panel. Is this a supported configuration?
Thanks!
All reactions