Home
Automation · Home Assistant

Heatpump Control Flow

Every 5 minutes
Override = off?input_boolean.hp_override
Heatpump = on?input_boolean.heatpump
Calculate variables outside · indoor · room setpoint · curve · delta_room · target_heat · target_comfort
indoor ≤ setpoint − 0.3°C?Hysteresis check
HEAT modetemp = curve + delta
log: HEAT(v3)
indoor ≥ setpoint?Room satisfied
outside ≥ 10°C?Mild weather
Pump OFFhvac_mode = off
log: OFF(v3)
COMFORT modetemp = 80% curve + delta
log: COMFORT(v3)
No-opDeadband zone
log: NOCHANGE(v3)
Gate condition
Heat mode
Decision
Comfort mode
Pump off
Neutral

Variable sources & calculations

sensoroutside sensor.buitentemperatuur_leidend Primary: sensor.huis_outdoor_temperature. Falls back to weather.buienradar temperature attribute. Returns −99 if both unavailable.
sensorindoor sensor.lucht_water_h_p_indoor_temperature Indoor temperature as reported directly by the heat pump unit.
inputroom_sp input_number.hp_room_setpoint User-defined room target. Range 5–30°C, step 0.5°C. Set via thermostat card or directly in HA.
calctarget_curve sensor.hp_target_water_curve Linear heating curve: anchor points (−10°C → 60°C) and (20°C → 30°C). Formula: y = 60 + ((30−60)/(20−(−10))) × (outside − (−10)). Clamped 30–60°C.
calcdelta_raw room_sp − indoor Raw difference between room setpoint and actual indoor temperature.
calcdelta_room deadband applied to delta_raw If −1 < delta_raw < 1 → delta = 0 (ignore small deviations). Otherwise delta = delta_raw rounded to 0.1°C.
calctarget_heat target_curve + delta_room Water setpoint when room is too cold. Clamped 30–60°C.
calccomfort_base target_curve × 0.8 Reduced curve used when room is already at setpoint, to keep the pump running at lower output.
calctarget_comfort comfort_base + delta_room Water setpoint in comfort mode. Clamped 30–60°C.
calcHYST 0.3°C (fixed) Hysteresis band. Heat mode only activates when indoor ≤ room_sp − 0.3°C, preventing rapid on/off cycling.