I just installed my Navien NPE-180A2 via a Waveshare ESP32-S3-RS485-CAN. I am powering the device from pin 1 with no issues. I am using another similar Waveshare device for my Hayward Aqua Logic integration.
No issues with the setup; just a few tweaks getting the configuration yaml correct. Thanks for all the hard work putting this together.
@htumanyan My system runs off propane. After working with Gemini, I’ve adjusted my copy of navien-sensors.yaml to account for the different energy rates for propane over natural gas. I also wanted to calculate the approximate gallons of propane use from my tank to see how the Navien calculations align with the gas percentage in my 250 gallon tank, and also be able to use these values in the Energy Dashboard.
Perhaps you could consider having a substitution to allow users to switch between natural gas and propane?
For other propane users, can you see any errors in these calculations?
# MODIFIED: Navien reports accumulated gas in m³/10.
# 1 m³ Propane gas = 22200 kcal; 1 Therm = 25200 kcal.
gas_total:
id: gas_total_therms
name: "${friendly_name} Accumulated Gas Usage Therms${sensor_suffix}"
filters:
- lambda: return x * 22200.0 / 25200.0 / 10.0;
unit_of_measurement: "Therms"
accuracy_decimals: 1
device_class: energy
state_class: total_increasing
# MODIFIED: Corrected to reflect actual live BTU/h demand.
# Navien reports instantaneous gas usage in 10x kcal/hr. 1 kcal = 3.968 BTU.
# Added the missing 10x factor fix directly to the baseline sensor.
gas_current:
id: gas_current_btu
name: "${friendly_name} Current Gas Usage BTUs${sensor_suffix}"
filters:
- lambda: return x * 3.9680 * 10.0;
unit_of_measurement: "BTU/h"
accuracy_decimals: 0
device_class: power
# MODIFIED & ENABLED: Converts Propane Therms into Propane Gas Volume (CCF).
# 1 CCF of Propane gas contains approximately 2.516 Therms of energy.
- platform: copy
source_id: gas_total_therms
name: "${friendly_name} Accumulated Gas Usage CCF${sensor_suffix}"
unit_of_measurement: "CCF"
device_class: gas
state_class: total_increasing
filters:
- lambda: return x / 2.516;
accuracy_decimals: 1
disabled_by_default: false
# MODIFIED & ENABLED: Instantaneous gas usage in kW (power).
# Uses the updated baseline BTU/h sensor and divides by 3412.
- platform: copy
source_id: gas_current_btu
name: "${friendly_name} Current Gas Usage kW${sensor_suffix}"
unit_of_measurement: "kW"
device_class: power
state_class: measurement
filters:
- lambda: return x / 3412.0;
accuracy_decimals: 1
disabled_by_default: false
# NEW SENSOR: Tracks cumulative liquid propane volume consumption.
# Converts Propane Therms directly to Liquid Gallons (1 Therm = 1.0929 Gallons).
- platform: copy
source_id: gas_total_therms
name: "${friendly_name} Accumulated Propane Gallons${sensor_suffix}"
id: propane_accumulated_gallons
unit_of_measurement: "gal"
device_class: volume
state_class: total_increasing
filters:
- lambda: return x * 1.0929;
accuracy_decimals: 1
disabled_by_default: false
# NEW SENSOR: Real-time Propane gas volume flow rate
# Converts live BTU/h into Cubic Feet per Minute (ft³/min)
# Math: Propane has ~2,516 BTUs per cubic foot.
# (BTU/h ÷ 2516) ÷ 60 minutes = ft³/min
- platform: copy
source_id: gas_current_btu
name: "${friendly_name} Propane Gas Flow Rate"
id: propane_gas_flow_rate
unit_of_measurement: "ft³/min"
device_class: volume_flow_rate
state_class: measurement
filters:
- lambda: return (x / 2516.0) / 60.0;
accuracy_decimals: 3
disabled_by_default: false
Edit: Add device_class to the propane_accumulated_gallons
I have recently installed a Navien NPE-240A2, and am running the Tumanyan ESPHOME firmware on an AtomS3+TailRS-485. It’s communicating well, but one issue is troubling me. When I press the “Hot Button” on the ESPHOME webpage, the until fires up, and runs a very short cycle (few seconds to 30s), well before the full recirc line is heated. I am set with Navien Recirculation Mode | External HotButton. I noticed that using the “Always” recirc setting works fine (line runs a few minutes until return is hot). Is there any internal setting I may have overlooked?
I’m not sure that’s an exposed parameter any longer in the A2’s firmware. I couldn’t find it in the installer menu. I’m surprised that Hot Button shuts off so quickly, surely it uses the same trick to measure the recirc return temperature and wait for it to heat up.
Did you get this figured out? Can you let me know where in the installer menu you found recirc line length? I don’t see that. It looks to me that leaving Hot Button alone and using “Always” recirc mode + the “Allow Recirc” defeat may be the better option.
Application settings → Hot Button (manual recirculation) → Fixture distance
The esp library turns on/off recirculation by triggering the schedule (vs a true hot button) so you need the navien set on schedule and not set to manual, but I do have the values like fixture length set there - perhaps they help?
@diffhome reply above is correct. I still use manual recirc and not scheduled though. I just have an automation that presses the hot button exposed by esphome based on bathroom motion, dishwasher starting, washing machine starting, etc. There is also a 10-15 minute time between presses the Navien manages so repeated triggers wont keep running it. I lied I have a condition in my automation that makes sure the recirc hasnt run for the past 12 minutes before doing the ‘press’ action. Cant remember if I configured that or not. Mine recirculates for about 2 minutes, sometimes more. I have a couple Grundfos bypass valves and im satisfied with the hot water delivery times.
One thing I should have been clearer on for "the esp library turns on/off recirculation by triggering the schedule - that’s if you’re using this automation blueprint:
Howdy—I am in the middle of a home remodel and we’re installing a Navien NPE-240A2 with a dedicated recirculation line. I’ve read through much of the thread but wanted to ask: are most folks using the manual hot button mode + HA triggers to manage recirc? It’s a little unclear to me what the difference is between this approach versus the “schedule” approach I see folks talk about. TIA for any assistance.
Hi everyone—particularly @SoulGit and @htumanyan. I’m troubleshooting intermittent communication with two cascaded Navien heaters. SoulGit’s earlier posts sound similar, and I’d appreciate some guidance.
My setup:
Two Navien NPE-210A2 heaters in cascade.
M5Stack AtomS3 Lite + Atomic RS485 Base, powered by USB.
Connected to the open branch of the factory cascade splitter. Only A and B are connected; the base’s G and DC24V terminals are unused.
Firmware based on htumanyan/navien, revision b4e80a0, with separate heater instances using src: 0 and src: 1.
Heater menu shows NaviLink: Always On (Cascade). Recirculation is External / Always On.
The problem:
I intermittently receive valid, changing readings from both heaters, sometimes for several minutes—including one approximately 13-minute stretch—but then reception stops. During those gaps, the Atom stays connected to Wi-Fi/Home Assistant, while its UART diagnostics show no incoming bytes. Occasionally readings return without another restart.
Both heaters continue showing M/S1 with no errors. Dropouts have occurred during hot-water use as well as at idle.
What Ive tried:
Different USB cables, a wall supply, and a battery pack.
Replacing the five-wire connector cable.
Restarting the Atom and the heaters; this does not reliably restore reception.
Checking the actual compiled pin assignments and the cascade source-filtering fix.
Normal transmitting behavior and a temporary listen-only build; both have shown intermittent reception.
A bounded test sending NAVILINK_PRESENT once per second for 60 seconds. TX was logged, but no incoming data returned during the test.
Fixing a parser issue where an incomplete message could swallow a subsequent valid frame. That improved captured-data replay, but did not resolve the periods with no UART reception.
The firmware currently installed is the modified listen-only diagnostic build, not an untouched upstream build.
I have ordered a 120Ω termination resistor, but have not added it yet. I have not established the cascade bus’s existing termination arrangement.
Has anyone achieved reliable operation with AtomS3 Lite + Atomic RS485 Base on a two-heater cascade and could share their firmware revision and configuration? In particular, is there a known requirement concerning termination, a signal-ground connection, or NaviLink messaging that could explain these intermittent receive gaps?
I can provide configuration excerpts and timestamped logs. Thanks for any pointers.
**** Follow up: I ordered a 120 Ω termination resistor and installed it bridging A and B on the orange connector that plugs into the RS-485. It seems to have solved my problem of drop out. I’ll keep my fingers crossed and keep monitoring, but it’s been stable for the last hour now.****
Hello Josh,
Both are perfectly viable approaches; the main distinction is scheduled recirculation vs. event-driven recirculation, and HA is especially useful for the latter.
With a schedule, you define a window when recirculation is allowed. For example, if you schedule it from 9 PM to 6 AM, the system may repeatedly reheat the loop during that entire period even if nobody actually uses hot water for hours.
With HotButton + HA triggers, recirculation becomes event-driven: bathroom motion, a light turning on, an appliance starting, etc. can trigger a single recirculation cycle right before hot water is likely to be needed.
That’s the approach I personally find more compelling because it preserves the convenience of instant hot water while reducing unnecessary reheating of the loop, which adds up to considerable expense pretty quickly. The main energy cost isn’t really the pump itself — it’s the gas used to replace heat continuously lost from the hot-water piping. Fewer unnecessary cycles means less heat loss, less gas usage, and lower cost.
I also have a Navien NCB 240E and am struggling to get this working. I have the recommended hardware kit assembled and installed (Atom S3 Lite with RS485 board + 5/4-pin connection). I have NaviLink enabled, and I have the board flashed and online with ESPHome.
I am not seeing any Navien control data in the ESPHome console nor is web ui. I have tried all of the troubleshooting steps - swapping the TX/RX pins, re-checking that NaviLink is enabled, and installing the 120 ohm termination resistor - all with no success.
I have the skills to dig deeper but not the tools (oscilloscope and serial-USB dongle). I’m hoping some folks here can offer some tips as I’d really like to get this working before the heating season starts!