Navien, ESP32 Navilink interface

In my 240A2 system (with a crossover valve), I see the water byte 8 flow_state value of 0x20 if I trigger the recirculation pump (via HotButton) or if I run the hot water without explicitly triggering the pump. I have not seen a value of 8 at all over the last couple of days that I’ve been playing with this.

The 0x20 seems consistent with “the water is being heated”, but I have yet to find an explicit thing that tells me the recirculation pump is or is not running. (Which, alas, is the thing I am most interested in at the moment. :slight_smile: )

I wonder if there is a difference in the value reported for triggering recirculation via schedule, via the app/NaviLink unit, or via a physical button. Mine is always via a physical button (well, a relay, which amounts to the same thing).

Anybody have a cascaded Navien setup and have this integration working? I have two 240A2 units in cascade. When I connect the M5 Stack, the units stop communicating and lose their cascade configuration. Removing the module allows the connectivity between the units to be restored. If helpful, all of the entities in HA show as unavailable, so it seems that no data is being collected either.

I believe I’ve got the initial issue worked out. I had the incorrect pins configured for the Atom UART. I can now have the Atomic 485 connected and the cascade works properly between the two heaters. However, I don’t have any data coming in. If A and B were reversed, I would expect to be getting garbage, but nonetheless I have tried reversing them with no benefit. Any other recommendations to troubleshoot further?

if you connect just one unit to the m5 stack do you get any data?

Hello,
I am having issues getting data to HA and am hoping for some help.

I have an M5 atom lite/rs-rs485 connected to a Navien NPE-180S2

using this Yaml

and changing the pins to:

uart:
    id: uart_bus
    tx_pin: 19 #was 6
    rx_pin: 22 #was 5

I was able to add the entity into HA, but it doesn’t seem to work.
No errors in the serial console of Esphome… so not sure where to go from here. Any help would be greatly appreciated.

Thanks

@Refuge - I set this project aside for quite a while so my memory is fuzzy… but if I recall correctly, you need to change some dip switches first. Did you?

Does anyone know where the latest version of the YAML is? The one linked by @Refuge is 10 months old and I believe it was incomplete due to the need to decipher more of the protocol.

I did not set dip switches.
I’ll dig around to see which ones to toggle. thanks!

Yeah if there is a more recent yaml that would be appreciated.

Thank you!

@Refuge Check this post: Navien, ESP32 Navilink interface - #120 by Chriswak

Thank you.
Here’s my manual for reference:

Looks like I have to dig out the mother board as I only see sw1 on the front panel.

I’ll look into it.
Thank you

Edit:
Pulled the motherboard out and flipped the dip. Number 4 was the only one different from the others so I flipped it.

Doesn’t seem to have worked. I’m going to let it run for a while to see if it needs a minute maybe?

Edit 2:
under the section:
7.5.1.3 Setting the Application (page 101)

of the manual, it looks like I might need to enable Navilink connection or AHU communication.
I don’t know much about this so I’d like someone who might have more insight before I accidentally brick something.

Any help is appreciated. Thank you!


Solved: Enabling the Navilink communincation in the the installer menu allowed the device to communicate with HA.

Thanks!

Any idea where I can find a more recent YAML?

Thanks!

I’ve finally got some more time to experiment… and found a few more things:

DISCLAIMER: use at your own risk - while I’ve tested and verified with my own unit, I am not responsible for any issues, damage to units etc!!!

a. There is no way to trigger hot button unless the Navien unit has the hot button kit installed (or comes with it). Sending “hot button” or “recirculation” commands seems to have no effect unless the hot button kit is installed.

b. The hot button kit is very trivial and can be easily replaced with a simple circuit in the attachment

c. The way it works is if the two pins shown in the picture are shorted (connected to each other electrically) and the other pin has +5V Navien treats that as “hot button is installed” and takes in “hot button” commands over RS485.

d. What’s even more interesting is dropping the +5V to low value (0V, shorted to ground) triggers hot button (that’s how the hot button kit operates actually).

In practical terms this means that even if one does not have the hot button kit, it can be replaced with esp32 + 3.3v/5v level shifter on one of it’s pins, which will simulate the hot button.

One more update for everyone - the hot button has a capability to have external temperature sensor. When the sensor is installed, it signals the unit when to stop hot button circulation as the target temperature is reached. By default the sensor is not installed but rather the sensor contacts are shorted. If anyone is following my “hot button replacement” circuit, they will need to add a 10k resistor shorted to the ground to simulate the “disabled thermal sensor” condition of the hot button. If not done that will cause very short recirculation cycles as the unit will be thinking that the temperature is reached while it is not.
Another side effect of this is that without the resistor the P16 parameter that governs the length of the recirculation line will be disabled. I.e. one needs this resistor for P16 to become active and to set the desired distance to the farthest water sink - that affects the duration of the recirculation cycle, longer the distance, longer it keeps recirculating when the hot button is pressed.

nice work! thanks for sharing

I have a NPE-240A2 and just got an Atom Lite and Tail485 hooked up. I’m able to read all the values. I’m wondering if the climate/thermostat is working to set the temp and if we can trigger the hot button through RS485 or if I need to short the pins as outlined by @htumanyan and add a relay to trigger the hot button and setting temp just isn’t possible yet?

From what I understand, NPE-240A2 comes with the hot button pre-installed. You can easily check that by opening the front panel and looking to the right from the main screen - you should see the hot button component. If it is pre-installed indeed, then you don’t need to hack up any jumpers or jacks - the hot button can be triggered through RS485. One option is to download and install my esphome firmware - it has the programmatic implementation of hot button over rs485 (as well as the hard wired option, but that’s irrelevant in this case).

Another option is to trigger the hot button by putting a relay controlled by your ESP board.

Let me know if you need help…

Is the firmware you have on your GitHub? I only saw sensors in the yams, no temp set or button to trigger recirc. Would love some help getting this working. Tha ks

Here is the yaml - navien/esphome/navien.yml at ace01ab714cb0d68060cf6e704ac2237e8630a18 · htumanyan/navien · GitHub

It has two button options for hot button:
a. NavienHotButton - this is the RS485 based hot button
b. “Wired Hot Button” - this is the hardware hot button. Feel free to comment out if you are not doing the wiring harness I’ve described earlier in this thread.

NavienHotButton does send the hot button command over RS485. As I mentioned earlier, it will not work if the hot button kit is not installed or those jumper/resistor connections are not made - Navien ignores the hot button command without the hot button device, which those jumper/resistors emulate.

I did not expose the set temperature yet - WIP.

Hi everyone,

I’m glad to share that I’ve finished the first pass over fully working ESPHome module for Navien heaters! :tada:

Here’s what it can do today:

  • :electric_plug: Turn the heater on/off directly from Home Assistant
  • :bell: Trigger the Hot Button — works both via RS485 and via the hard-wired button
  • :thermometer: Set target temperature using ESPHome’s native Climate control
  • :bar_chart: Report all key metrics we’ve decoded so far, including gas and water consumption, utilization, outlet/inlet temps, uptime, flow, Wi-Fi signal, and more

The integration is fully tested on my Navien 240A, and everything works as expected.

:point_right: Project repo: GitHub - htumanyan/navien: Navien water heater wire protocol for communication with NaviLink and other attached devices

What I need now is your help testing this on other Navien models. The more devices we verify against, the more confidently we can recommend this to the broader community.

If you have a compatible unit, please give it a try and share your results (successes, quirks, logs, etc.). Together, we can make this a reliable option for everyone who wants proper Navien integration in Home Assistant.

Looking forward to your feedback! :rocket:

Good timing! I just got my RS485 hat in the mail for a d1mini. I can test tomorrow most likely on an A2 navien. I use the ESPHome builder in HA and then get the installer package to do on the esphome chrome site… Im a novice with ESPhome… Can I just use the navien file you have on github instead of building a directory and doing multiple files?

To be frank, I did not test with HA ESPHomebuilder (never used it before). It is pretty straightforward to install esphome command line - just do pip install esphome and you are good to go. Ping me privately if you need help!