Close

Pump on, pump off

A project log for Calling for hot water, the recall

Updates and expands on my earlier project with new hardware at the water heater.

wjcarpenterWJCarpenter 04/04/2025 at 19:180 Comments

My aim has always been to have the remote Atom Lite units blink yellow when the pump is running and stop blinking when the pump stops. Until now, I've been unable to do that, and I've just been using a simple timer that reflects the worst case value. It takes just slightly over 2 minutes for the NaviCirc cross-over valve to close when the water in my pipes starts out cool, so my timer was 2 minutes and 15 seconds. If the water is already hot, the cross-over valve stays closed and the pump hardly runs at all. 

With these new RS485 reports, I still have not found a bit that definitively indicates that the pump is running. Some people have seen such a bit flip in one of the bytes, but they have different Navien units than I have (I think). That bit position does not change for me. There is a bit that I am using as a proxy for that. The bit indicates if hot water is flowing, which I call "Consumption active" in my sensors. There is also a report of the water flow rate. The bit for consumption active is set whenever hot water flows, which means it may or may not be due to the recirculation pump. If hot water is not actually flowing out of any faucet, shower, or appliance, then that bit is an accurate proxy for the pump. 

I expect that, most of the time when the remote buttons are pressed, other hot water is not being used. Sometimes that expectation will not be met. If the dishwasher is running or if someone is washing their hands while waiting for the hot water, that consumption bit will not reset when the pump stops. For now, I'll just live with that.

My Home Assistant automation for starting the hot button cycle is pretty much as it was before. I merely substituted my new relay device in place of the prior relay device.

Here's the YAML for that:

alias: Tankless hot button
description: Press the button, get hot water
triggers:
  - entity_id:
      - binary_sensor.hotbuttonkb_button
    from: "off"
    to: "on"
    trigger: state
  - entity_id:
      - binary_sensor.hotbuttonmb_button
    from: "off"
    to: "on"
    trigger: state
  - trigger: state
    entity_id:
      - binary_sensor.hotbuttonrelay_al_atom_button
    from: "off"
    to: "on"
conditions: []
actions:
  - data: {}
    action: script.tankless_button_cycle
mode: parallel
max: 10

The script "tankless_button_cycle", on the other hand, did undergo some changes. 

Here is the YAML for that script:

alias: Tankless button cycle
sequence:
  - type: turn_on
    device_id: 7c8657a0b747b7584ec3775223c14045
    entity_id: ea0d9e3eb5631aa2876a1112f6c8c8cc
    domain: switch
  - parallel:
      - data: {}
        action: esphome.hotbuttonkb_set_led_hot
        continue_on_error: true
      - data: {}
        action: esphome.hotbuttonmb_set_led_hot
        continue_on_error: true
      - action: esphome.hotbuttonrelay_al_set_led_hot
        data: {}
        continue_on_error: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - wait_template: "{{not states('binary_sensor.consumption_active')|bool}}"
    continue_on_timeout: true
    timeout: "00:02:00"
  - parallel:
      - data: {}
        action: esphome.hotbuttonkb_set_led_cold
        continue_on_error: true
      - data: {}
        action: esphome.hotbuttonmb_set_led_cold
        continue_on_error: true
      - action: esphome.hotbuttonrelay_al_set_led_cold
        data: {}
        continue_on_error: true
mode: restart
icon: mdi:hot-tub
description: ""

Discussions