Navien, ESP32 Navilink interface

I wanted to share a quick write-up of what finally made the Hot Button work over ESPHome on my Navien NPE-240A2, and also confirm that NaviLink and ESPHome can coexist on the same UART bus.

The key fix was firmware selection.

Initially I was using the default config that includes:

navien: !include navien-wrd-hb.yml

That version expects a physical hot button wired, so while I could read temps and change setpoints over UART, pressing the Hot Button in Home Assistant did nothing.

The solution was switching to the D1 Mini config:

navien: !include navien-d1-mini.yml

This enables the Hot Button command over RS-485/UART, which is exactly what the NPE-240A2 supports natively. After flashing that firmware, the Hot Button immediately started working from Home Assistant, and the heater correctly switched to:

Recirculation Mode: External HotButton

No relay, no dry contacts, no jumper, purely serial control.


Second important point: NaviLink and ESPHome can run at the same time.

I made a JST-SH Y-splitter cable so both the NaviLink module and the ESP8266 connect to the same 5-pin UART port on the front display.

• Both devices read data correctly
• Both devices can change temperature
• ESPHome Hot Button works
• NaviLink continues to function normally

Navien’s bus appears to tolerate multiple devices just fine, which makes sense since their cascade and controller setups are also multi-device.

That said, I’d recommend not sending commands simultaneously from both just to avoid any possible collisions. In normal use, it’s been completely stable.


Summary for NPE-240A2 users:

• Use navien-d1-mini.yml
• Not navien-wrd-hb.yml
• This enables Hot Button over serial
• No hardware button required
• JST-SH Y splitter allows NaviLink + ESPHome coexistence

Huge thanks to Hovhannes for pointing me in the right direction on the firmware difference, that was the missing piece.

Hopefully this helps!

Awesome!

I will try to come up with a yaml combination to do that gymnastics automatically.

NPE-240A2
I am running an atom lite (ok the m5 echo cause I had one) with the rs485 addon all I did was add this to the bottom of the esphome config

button:
  - platform: navien
    id: rs485_hot_button
    name: "Hot Button"

And I have a hot button thet works

I guess I spoke to soon it does not seem to be working it just worked once. the automation(based on blueprint) doesn’t seem to do anything either I will keep playing I guess.

My heat control is Celsius my sensors read the heat in Fahrenheit any easy fix for this.

I believe, the choice of whether to display Celsius or F is driven by your HA settings. Do you see all other values (other than Navien, other devices) in C?

Which yaml file are you using to build it?

I am using the atom lite esp32 one. all my thermostats temp sensors are in C

I used the blueprint to try the scheduler and it did not trigger recirc either.

Craig

Edit: the hot water tank itself is in F so that is probably why I will switch it when I get a chance.

Edit2: changing tank to Celcius did not fix the sensors showing F

Edit3: Looks like it is hardcoded in the sensors.yml file

Just want to say a big thannks to Hovhannes ! Shipped me the adapter and patiently walked me through the process to get it online and reporting in Home assistant.
Jeff in Ontario,CDN.

I also gotta give credit to Hovhannes for an outstanding job on this project. I got my adapter in the mail and was able to get it up and running without any issues. I’m excited to dive into its automation potential.

Were you able to get your Waveshare module working? Power works fine on the 240A2 for me, but I am struggling getting this unit working with the RS485 link.

Have you enabled NaviLink in system settings of your unit - that is the most frequent cause of not working.

Wow - the latest iteration of this interface is amazing! It totally works and does everything I could ask for, it even sees my cascaded Navien 240 setup! Thank you! Quick weirdness that I am seeing. The “allow recirculation” toggle seems to stay on much of the day, even when the schedule helper clearly shows the time window as an “off” period. If I toggle the switch off, it turns back on within a few seconds. The Navien doesn’t actually recirculate or heat though. The setup worked perfectly the first day (the recirculation switch was off and pressing the virtual hotbutton started the recirculation and heating process) but since then it has been a bit wonky. Pressing the HotButton causes the allow recirculation to turn off briefly but then it toggles back on and the cycle doesn’t actually start. Any thoughts on what could be going on?

I wanted to drop in to say that I have purchased two Navien interfaces from htumanyan and couldn’t be happier. Not only does the interface work perfectly, the followup and support received was amazing.

What an asset to the community! Buy with confidence!

-Ed

I tracked my recirculation issue down to the fact that I’m running a cascade setup, not a single unit.

In a cascade, either heater can be doing the work, independently or together. Just because one unit is the master doesn’t mean it will always be the one actively heating or recirculating. In my setup, the slave is often active while the master is idle.

The integration was applying status packets from both units to all configured Navien instances instead of routing each packet only to the matching unit. That caused recirculation and other state to get mixed between units in Home Assistant, which is why Allow Recirculation looked inconsistent or toggled unexpectedly. It also explains why the hot button didn’t behave reliably, since HA could effectively be reacting to or targeting the wrong unit in the cascade.

I verified it by comparing debug packet sources and heater panel readings against the HA entities. Once separated, it was clear the two units’ states were being cross-applied.

I submitted a PR to fix the cascade status routing so each unit only consumes its own packets. I also fixed a related startup issue where the Allow Recirculation switch was being forced to an initial off state. I’ve been running these changes locally for over a week now, and everything has been working as expected.

Thanks for looking into that - I have a cascade setup as well and worked with htumanyan on validating the initial support. I’ll keep on an eye on when the PR might get merged.

The “allow recirculation” toggle seems to stay on much of the day, even when the schedule helper clearly shows the time window as an “off” period. If I toggle the switch off, it turns back on within a few seconds. The Navien doesn’t actually recirculate or heat though.

I haven’t observed this in my set-up. I have observed the “allow recirculation” sometimes turning itself off a few seconds after being turned on by the schedule - that’s intermittent though, perhaps once a week and I was going to write an automation to ensure it stays on during the schedule if need be.

Since I don’t have cascade setup, can you, please, confirm that it works as expected? Would be great to have at least two validations, @SoulGit and you before I merge… Anyone else who has cascade setup, please, chime in!

Hey Hey - Do you have any of your custom boards left?

I am down to the last 3. Sent you a PM

Hi htumanyan, I am interested in one of your custom boards if possible!

I’ve sent you a message.