PumpSteer
Smart Home Assistant integration for heat pump optimization based on electricity price and temperature.
Install / Use
/learn @JohanAlvedal/PumpSteerREADME
🔥 PumpSteer 2.0 – Smart Heat Pump Optimization
➡️ Swedish version: README (Svenska)
⚠️ This is a major rewrite. Read upgrade notes before installing.
PumpSteer is a Home Assistant custom integration that optimizes your heat pump by dynamically adjusting the virtual outdoor temperature.
It reduces energy cost when electricity is expensive — while protecting indoor comfort.
<a href="https://www.buymeacoffee.com/alvjo" target="_blank"> <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 40px !important;width: 200px !important;"> </a>📸 Dashboard Preview
<table> <tr> <td><img src="docs/img/01.png"/></td> <td><img src="docs/img/02.png"/></td> <td><img src="docs/img/03.png"/></td> </tr> <tr> <td><img src="docs/img/04.png"/></td> <td><img src="docs/img/05.png"/></td> <td></td> </tr> </table>📘 Documentation
- Upgrade Warning
- What's New
- Breaking Changes
- Price Sensors
- Weather Support
- New Installation
- Dashboard (Lovelace)
- Upgrade Guide
- Troubleshooting
- Tuning
- Safety
Configuration
- 🇬🇧 Here
Important – Not a Drop-in Upgrade ⚠️
PumpSteer 2.0.0 is not a minor update.
It is a complete rewrite of the control system.
👉 Treat this as a new integration, not an upgrade.
What this means
- ❌ Old dashboards will not behave the same
- ❌ Automations may break
- ❌ Old helpers are no longer primary
- ❌ Price logic is completely changed
⚠️ Disclaimer
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 functioning properly.
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.
Required after upgrade
- Rebuild Lovelace cards
- Update automations
- Verify price sensors (today + tomorrow)
- Reconnect to new entities
- Retune settings
Behavior is different
- PI control instead of heuristics
- Ramped braking
- Forecast-aware decisions
➡️ Do not expect behavior identical to 1.6.6
Recommendation
- Install 2.0.0
- Observe for 24–48h
- Then migrate fully
🔧 How PumpSteer Controls Your Heat Pump
PumpSteer does not control your heat pump via Modbus, cloud APIs, or thermostat setpoints.
Instead, it works by influencing the outdoor temperature sensor input.
This approach is commonly used to influence heat pump behavior without modifying internal firmware or control systems.
In setups like mine, this is done using an external device such as
👉 Ohmigo Ohm On WiFi Plus
🔗 Ohmigo Ohm On WiFi Plus
This device is connected to the heat pump’s outdoor temperature sensor circuit and allows Home Assistant to adjust the resistance seen by the heat pump.
By changing the resistance, the device simulates a different outdoor temperature for the heat pump.
🧠 How it works
PumpSteer calculates a virtual outdoor temperature based on:
- Indoor temperature
- Target temperature
- Electricity price
- Weather forecast
- Selected aggressiveness level
This calculated value is then sent to the external device (e.g. Ohm On WiFi Plus), which manipulates the sensor signal.
👉 The heat pump believes the outdoor temperature has changed
👉 And adjusts heating accordingly
⚡ What this enables
- Reduce heating during expensive electricity hours
- Preheat when electricity is cheap
- Maintain indoor comfort as top priority
- Optimize without modifying the heat pump’s internal control
🏠 Example system architecture
- Home Assistant runs PumpSteer
- PumpSteer calculates virtual outdoor temperature
- Ohm On WiFi Plus adjusts resistance
- Heat pump reacts automatically
🔌 Built-in Ohmigo integration
⚠️ This feature is new and considered experimental.
Behavior may change and edge cases may still exist.
PumpSteer can directly push the calculated virtual outdoor temperature to an Ohmigo device.
This means you do not need a separate Home Assistant automation.
How it works
- PumpSteer calculates the virtual outdoor temperature
- The value is automatically pushed to the configured Ohmigo
numberentity - The heat pump reacts via the adjusted sensor signal
Behavior
- Values are rounded to nearest 0.5 °C
- Small changes (< ~0.2 °C) are ignored (hysteresis)
- Updates are throttled (configurable interval)
- Push can be enabled/disabled via a switch
Configuration
Configured in integration options:
ohmigo_entity→ target entity (e.g.number.ohmigo_temperature)ohmigo_interval_minutes→ minimum time between updates
If no entity is set, the feature is disabled.
Switch
switch.pumpsteer_ohmigo_enabled
Allows you to enable/disable pushing without changing settings.
⚠️ Important
- This method requires hardware capable of influencing the outdoor sensor signal
- Installation depends on your heat pump model
- Always verify wiring and safety before use
What's New in 2.0.0
PumpSteer 2.0.0 introduces a completely redesigned control system focused on stability, predictability, and cost optimization.
- 🧠 PI-based control (replaces heuristics)
- ⚡ Smart price classification (
cheap / normal / expensive) - 🔁 State machine (predictable behavior)
- 🧊 Dynamic braking (ramp + hold + filtering)
- 🌦 Forecast-aware planning (optional)
- 🏠 Integration-managed entities
- 🔒 Fully local (no cloud)
Breaking Changes
Price categories changed
Old:
very_cheapvery_expensiveextreme
New:
cheapnormalexpensive
Price sensor requirements
Must support:
today/raw_todaytomorrow/raw_tomorrow
Control system rewritten
- Old: heuristic logic
- New: PI + state machine
Braking redesigned
- Ramping
- Hold logic
- Peak filtering
- Comfort protection
Integration owns entities
- numbers
- switch
- datetime
ML removed
Price Sensor Support
Supported formats:
0.95"0.95"{ "value": 0.95 }{ "price": 0.95 }
📌 Recommended example:
other/nordpool.yaml
✔ Works with:
- Official Nord Pool integration + my example (see above) ⚠️
ℹ️ About pump_packages.yaml
The file:
other/pump_packages.yaml
is not a full Home Assistant package like in earlier versions (e.g. 1.6.6).
It now mainly contains:
- Template sensors
- Example configurations
- Helper logic used by PumpSteer
⚠️ Important:
- It is not intended to be used as a complete drop-in package
- It does not configure the full system automatically
- You should not expect it to replace the integration setup
👉 Use it as a reference or optional add-on, not as a full configuration
Migration note (from 1.6.6)
If you previously used full package files:
- PumpSteer 2.0.0 no longer relies on package-based configuration
- The integration now handles:
- control logic
- entities
- settings
You may still use pump_packages.yaml for:
- additional sensors
- custom templates
- extended functionality
But the core control is now inside the integration
Weather Support
Examples:
weather.smhi_homeweather.yr_homeweather.openweather
⚠️ Must be selected in:
Settings → Devices → PumpSteer → Configure
New Installation
Step-by-step
- Install via HACS or manually
- Restart Home Assistant
- Add integration
- Select required sensors
First validation
sensor.pumpsteeractivestatus = okprice_categorychangesmodebehaves logically
Lovelace Dashboard (mini-graph-card & apexcharts-card)
📁 See /dashboards/ folder for ready-to-use examples
PumpSteer includes example Lovelace configurations using mini-graph-card and apexcharts-card.
These dashboards show:
- Indoor temperature
- Target temperature
- Virtual outdoor temperature
- Price behavior and system response
⚠️ Requirement
You must install:
- mini-graph-card
- apexcharts-card
Available via HACS:
- Frontend →
mini-graph-card - Frontend →
apexcharts-card
📥 How to use the provided templates
- Go to your Home Assistant dashboard
- Click Edit dashboard
- Click the pencil icon (✏️)
- Click the three dots (⋮)
- Select Edit dashboard (Raw configuration editor)
- Paste the YAML
- Save
⚠️ Note:
Pasting a full view may overwrite your existing dashboard.
🧠 Important
- These templates are YAML-based
- They are not built via UI
- Some may replace the entire view
🔧 Common adjustments
After pasting, check:
sensor.pumpsteer- temperature sensors
- custom entities
💡 Tips
- No graph → check entity IDs
- Card not loading → check installation
- Debug via Developer Tools → States
Upgrade from 1.6.6
Required
- Update price categories
- Configure tomorrow price
- Update automations
- Remove ML
Recommended
- Verify price attributes
- Configure weather entity
- Update holiday automations
Testing
- Check
mode - Check `brake
