My wife and I get up and shower at different times on different days, so running the circulation pump on a fixed schedule was a waste of energy.
To solve this, I removed the pump from the original Sigmatek controller and now run it only on demand using Home Assistant.
The pump can be triggered in four different ways:
- via the alarm clock on my Android phone
- via a physical push button next to the bathroom door
- via a button in the Home Assistant UI
- via a schedule defined in Home Assistant
Trigger via Android alarm clock
The Home Assistant Companion App exposes the Next Alarm Sensor, which sends the next alarm time from the phone to Home Assistant.
When my phone alarm goes off in the morning, Home Assistant automatically starts the circulation pump for 3 minutes. That’s enough in our house to get hot water at the shower.
Requirements:
- Next Alarm Sensor enabled in the Companion App
- Mobile App integration installed in Home Assistant
The phone is next to the bed at night, with Wi‑Fi and mobile data turned off and Do Not Disturb enabled—but the alarm is configured to bypass DND, so it still works perfectly.
Physical wall button
I installed a push button next to the bathroom door. This required a bit of DIY, but I managed to find a compatible push button for my (older) switch series and combined it with a Shelly 1 Mini Gen3.
This allows anyone to start the pump without a phone—especially useful for guests.
Home Assistant UI button
There’s also a simple button (input_boolean) in Home Assistant to start the pump manually.
I mainly use this when I need hot water in the kitchen (e.g. for rinsing dishes).
Fallback schedule
For longer absences, I added a fixed schedule in Home Assistant, for example to let the pump run briefly once a week.
Hardware & automation details
- The pump itself is switched by a Shelly Plus 1PM
- An RC snubber (also Shelly) is connected in parallel with the pump because the motor is an inductive load and could otherwise damage the relay over time
The Home Assistant automation:
- turns the pump on
- switches it off again after 3 minutes
- blocks re‑triggering for 30 minutes
This setup has reduced unnecessary runtime significantly while still providing instant hot water when we actually need it.
Here ist the automation:
alias: Zirkulationspumpe einschalten und nach 3 min ausschalten
description: >-
Zirkulationspumpe einschalten und nach 3 min ausschalten: Auslöser: Manuell
oder durch Handy-Wecker
triggers:
- trigger: state
entity_id:
- input_boolean.power_zirkpump
from:
- "off"
to:
- "on"
- trigger: time
at: sensor.sm_g781b_next_alarm
weekday:
- mon
- tue
- wed
- thu
- fri
- sat
- sun
- trigger: state
entity_id:
- schedule.zirkulationspumpe_zeitplan
from:
- "off"
to:
- "on"
enabled: false
- trigger: state
entity_id:
- binary_sensor.sm_g781b_wi_fi_state
from:
- "off"
- "on"
enabled: false
- trigger: state
entity_id:
- switch.shelly1minig3_48f6ee87f7f8
conditions:
- condition: device
type: is_off
device_id: 4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
entity_id: 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
domain: switch
actions:
- action: switch.turn_on
metadata: {}
target:
entity_id: switch.shellyplus1pm_xxxxxxxxxxxxxxxxxxxxxx
data: {}
enabled: true
- delay:
hours: 0
minutes: 3
seconds: 0
milliseconds: 0
enabled: true
- action: switch.turn_off
metadata: {}
target:
entity_id: switch.shellyplus1pm_xxxxxxxxxxxxxxxxxxxxxxxx
data: {}
enabled: true
- delay:
hours: 0
minutes: 30
seconds: 0
milliseconds: 0
mode: single