Heat your house when electricity is cheap, and save when it is expensive.
EffektGuard turns your house into a heat battery. It stores heat in the cheap hours, lets the house coast through the expensive ones, and helps you avoid a new monthly power peak. Comfort and the pump's health come first.
Set it up once in Home Assistant, and it runs on its own.
It works with NIBE heat pumps today. Other brands are welcome, see contributing.
One day on a real house: more heat in the cheap hours, less in the expensive evening.
Warning
Use at your own risk. EffektGuard controls a real heat pump. Watch it closely the first weeks.
| Feature | What it does |
|---|---|
| Heating | More heat when power is cheap, less when it is expensive |
| Hot water | Heats the tank when power is cheap, and has it ready when you need it |
| Weather | Heats ahead of a colder day, mostly while power is cheap |
| Power peaks | Holds back to avoid a new monthly peak |
| Ventilation | Turns it up when the extra heat pays off (NIBE F750, F730) |
Hot water heated at cheap midday prices, and not in the expensive evening.
| You need | Details |
|---|---|
| Home Assistant | 2025.11 or newer |
| Heat pump | NIBE F730, F750, F1155, F2040 or S1155, through MyUplink, nibe_heatpump or Modbus. Another model? Ask for it |
| Electricity price | GE-Spot, with prices from Nord Pool, ENTSO-E, Energy-Charts, Energi Data Service, Strømligning, OMIE, AEMO, ComEd or Amber |
| Weather forecast | Met.no, which comes with Home Assistant. SMHI, OpenWeatherMap, AccuWeather and others with an hourly forecast work too |
| Power meter | Optional, for peak protection (otherwise the pump's own current readings) |
Important
Turn off the pump's own price control first, or the two will fight. On a NIBE it is Smart Control in myUplink.
The EffektGuard thermostat and its switches.
| Thermostat | What happens |
|---|---|
| Target | Your room temperature, 18.5-25 °C |
| Heat or Off | On, or paused with the pump on its normal curve |
| Preset | Comfort, Balanced (none) or Savings (eco) |
| Away | Savings, 3 °C below your target, never below 18.5 °C |
Note
Wondering why the heat changed? sensor.effektguard_optimization_reasoning shows the reason.
- Room below 18 °C: it calls for full heat.
- Pump far behind on heat: it never runs cooler than normal, unless the room is too warm.
- If it can't read the pump, it changes nothing.
- User guide: setup, settings, how it decides, safety, troubleshooting
- Hot water
- Dashboard charts like the ones above
- Architecture and development
GitHub issues · MIT, see LICENSE · @enoch85


