PumpSteer is a custom Home Assistant integration that optimizes your heat pump in order to reduce your electric bill when using dynamic pricing. The heat pump is controlled via the outdoor temperature sensor input. A secondary benefit is improved comfort by reducing indoor temperature swings due to weather.
You use this integration at your own risk. Heating is a critical system in your home, and incorrect settings may lead to discomfort or damage.
Do not use PumpSteer if your heating system is not performing adequately.
Only use PumpSteer if you understand how it works and have verified that it functions correctly in your specific setup. Always monitor indoor temperatures and system behavior after installation.
PumpSteer calculates price levels using 72 hours of raw electricity price history from the Home Assistant recorder. Long-term statistics are not used, so ensure the recorder keeps at least three days off data
-
๐ง Smart control of outdoor temperature
-
๐ก๏ธ Dynamic comfort control using:
- Indoor temperature
- Target indoor temperature
- Electricity price forecast
- Weather forecast
- Thermal inertia
-
๐ธ Electricity price adjustment via Nordpool or other sensor
-
๐ง Braking mode: limits heating when power is expensive
-
โ๏ธ Summer mode: disables heating control during warm weather
-
๐๏ธ Holiday mode: temporarily reduces temperature when away
-
โ๏ธ Precool: pauses heating ahead of forecasted warm weather
-
๐ Switchable price model (
hybridorpercentiles) -
๐ค ML analysis: learns how your house responds (session-based) (beta, work in progress)
-
๐ Auto-adjustment of
house_inertia(beta, disabled by default, work in progress) -
๐ง Recommendations for improved comfort/savings balance (beta, work in progress)
-
โ๏ธ Adjustable heating and braking compensation factors
-
๐๏ธ Fine-tuning via
input_number,input_text,input_boolean,input_datetime -
๐ผ๏ธ Extra sensors for UI visualization
๐ก Note: Holiday mode is only active when the outdoor temperature above the summer threshold.
When the weather forecast shows temperatures exceeding the summer threshold in any of the next 24 hours, PumpSteer enters precool mode which turns down the heat in advance.
If PumpSteer is not yet available in HACS, so you need to add it as a custom repository:
- Go to HACS > โฎ > Custom Repositories
- Add:
https://github.com/JohanAlvedal/PumpSteer - Choose Integration as category
- Install PumpSteer
- Restart Home Assistant
- Follow the setup guide and select helper entities
For a complete step-by-step installation guide, including setting up helper entities and automations, please refer to our wiki:
PumpSteer - Installation och Grundkonfiguration
PumpSteer requires hourly temperature forecasts in input_text.hourly_forecast_temperatures. Instead of manual entry, use our automated blueprint:
- ๐ Automatically fetches 24-hour temperature forecasts
- ๐ Formats data as comma-separated values for PumpSteer
- โฐ Updates on configurable intervals (default: every 30 min)
- ๐ก๏ธ Works with SMHI, Met.no, OpenWeatherMap, and more
- Import blueprint from the Gist above
- Create automation using your weather entity
- Set target to
input_text.hourly_forecast_temperatures - Configure update interval (recommended: every 30 minutes)
Once configured, PumpSteer will automatically receive fresh weather data for optimal heating decisions without any manual intervention.
| Type | Entity | Function |
|---|---|---|
input_number |
indoor_target_temperature |
Target indoor temperature |
input_number |
pumpsteer_summer_threshold |
Threshold to activate summer mode |
input_number |
pumpsteer_aggressiveness |
Comfort vs savings (0โ5) |
input_number |
house_inertia |
How slow/fast the house responds (0โ10) |
input_text |
hourly_forecast_temperatures |
Temperature forecast (24 CSV values) |
input_boolean |
holiday_mode |
Activates holiday mode |
input_boolean |
autotune_inertia |
Allow system to adjust house_inertia |
input_select |
pumpsteer_price_model |
Price classification model (hybrid or percentiles) |
input_datetime |
holiday_start / holiday_end |
Automatically enable holiday mode |
input_text.hourly_forecast_temperatures must contain exactly 24 comma-separated temperature values (ยฐC):
-3.5,-4.2,-5.0,-4.8,โฆ (total 24 values)
If the format is invalid, an error will be logged and the forecast ignored.
This sensor is the main output of the integration.
Virtual (fake) outdoor temperature sent to your heat pump.
| Attribute | Meaning |
|---|---|
Mode |
heating, neutral, braking_mode, summer_mode |
Fake Outdoor Temperature |
Calculated temperature sent to the heat pump |
Price Category |
Classification of current electricity price |
Status |
System status, e.g. "OK" or error messages |
Current Price |
Current electricity price in SEK/kWh |
Max Price |
Highest price of the day |
Aggressiveness |
Comfort vs savings (0โ5) |
Inertia |
Estimated house inertia |
Target Temperature |
Desired indoor temperature |
Indoor Temperature |
Current indoor temperature |
Outdoor Temperature |
Real outdoor temperature |
Summer Threshold |
Threshold for summer mode |
Braking Threshold (%) |
Percent threshold to trigger braking |
Price Factor (%) |
Position of current price within daily range (0% = min, 100% = max) |
Holiday Mode |
Whether holiday mode is active |
Last Updated |
Last update timestamp |
Temp Error (ยฐC) |
Deviation from target indoor temperature |
To Summer Threshold (ยฐC) |
Distance to triggering summer mode |
Next 3 Hours Prices |
Upcoming electricity prices |
Saving Potential (SEK/kWh) |
Potential savings from current price |
Decision Reason |
Reason for current decision |
Price Categories All Hours |
Classification for all hours |
Current Hour |
Current hour of the day |
Data Quality |
Availability and completeness of input data |
ML sensor showing analysis and recommendations based on your house's behavior.
| Attribute | Description |
|---|---|
success_rate |
How often the system reached the target temperature |
avg_heating_duration |
Average heating session duration (min) |
most_used_aggressiveness |
Most used aggressiveness level |
total_heating_sessions |
Total number of sessions |
recommendations |
Text suggestions based on system performance |
auto_tune_active |
If automatic inertia adjustment is active |
last_updated |
Last analysis update timestamp |
Recommendations can be shown in UI or in markdown cards.
PumpSteer controls your heat pump's perceived demand using a fake outdoor temperature:
- Slightly increases heating (1 ยฐC overshoot) only when electricity prices are very cheap
- Avoids heating when prices are high
- Goes to neutral mode when stable
- Disables heating when it's warm outside (summer mode)
- Pre-cools ahead of warm periods when the forecast exceeds the summer threshold
- Lowers target temp to 16 ยฐC during holidays
- Learns over time how your house reacts and adjusts settings (if
autotune_inertiais enabled)
All control is done locally without any cloud dependency.
PumpSteer does not talk to the heat pump over Modbus, REST, or any proprietary interface. Instead, it exposes the calculated value as a Home Assistant sensor (sensor.pumpsteer) that represents a[...]
house_inertia describes how quickly your building responds to heating or braking. A low value (โ0.5โ1.5) means the house reacts fast, so PumpSteer can shift temperatures aggressively. A high val[...]
If you enable input_boolean.autotune_inertia, the machine-learning module keeps track of every heating session: it records how far the indoor temperature was from the target, how long it took to rec[...]
The ML collector watches the indoor temperature, target temperature, aggressiveness, and inertia during every heating cycle. It estimates success rate, typical heating duration, and how often comfort [...]
The integration needs:
- Indoor temperature sensor (
input_number.indoor_target_temperature+ actual indoor temperature entity) - Outdoor temperature sensor
- Electricity price sensor
- Optional: hourly outdoor temperature forecast, holiday switches, etc.
You do not need to provide flow temperature, set-point, compressor status, or other proprietary heat pump sensors. As long as the heat pump follows the virtual outdoor temperature, PumpSteer can o[...]
sensor.pumpsteer_efficiency_score is an informative metric that blends comfort and savings on a 0โ100 scale. It takes the absolute indoor temperature error (penalising large deviations) and the cu[...]
- Errors and warnings are logged in Home Assistant
- Sensor shows
unavailablewhen data is missing - ML data is stored in
pumpsteer_ml_data.json(max 100 sessions) - Auto-tuned
inertiais saved inadaptive_state.json
This is a hobby project built with the help of ChatGPT, Copilot, and a lot of patience. Feedback and improvement ideas are always welcome.
- ๐ GitHub repo
- ๐ Create Issue
As of version v1.6.2, this project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). Previous versions (โค v1.5.1) are available under the Apache License 2.0.
ยฉ Johan รlvedal