Skip to content

Latest commit

 

History

History
155 lines (117 loc) · 8.45 KB

USER_GUIDE.md

File metadata and controls

155 lines (117 loc) · 8.45 KB

User guide

The details behind the README.

What you need, and why

You need Without it
Home Assistant 2025.11 or newer Not supported
Your heat pump in Home Assistant: MyUplink, nibe_heatpump (turn on its entities) or Modbus (how) Nothing works
A model profile: NIBE F730, F750, F1155, F2040 or S1155 Pick the closest
GE-Spot, which gets prices from Nord Pool, ENTSO-E and others No price optimization
A weather entity with an hourly forecast: Met.no (comes with Home Assistant), SMHI, OpenWeatherMap, AccuWeather or others (optional) No heating ahead of a colder day
A whole-house power meter (optional) Peak protection uses the pump's current readings, if it has them

Turn off the pump's own price control, or the two fight. On a NIBE it is Smart Control in myUplink (switch.<pump>_smart_control).

Install

  • Marketplace (Home Assistant 2026.11 and newer): the first button in the README. Download, restart.
  • HACS (2026.10 and older): the second button. If HACS asks to add the repository, say yes. Download, restart.
  • By hand: copy custom_components/effektguard/ into your custom_components/ folder and restart.

Then add it with the third button, or Settings → Devices & services → Add integration → EffektGuard.

Setup

The setup asks five things and finds the rest itself:

  1. Offset entity: the setting that shifts the pump's heating curve. On a NIBE F-series it is register 47011, for example number.heat_offset_s1_47011.
  2. Price sensor: GE-Spot's current price, and whether to follow the price.
  3. Pump model: F750 by default.
  4. Weather entity (optional), and whether peak protection is on.
  5. More sensors: degree minutes, the power meter, the hot-water boost switch (on nibe_heatpump an input_boolean helper for its select), extra room sensors and how to combine them, and manual picks if it found the wrong ones.

To change something later, go to Settings → Devices & services → EffektGuard:

To change Click
Mode, tolerance, house, hot water, ventilation The gear icon (see Settings)
An entity or the pump model ⋮ → Reconfigure
Price optimization or peak protection Their switches on the EffektGuard device

The thermostat

The EffektGuard thermostat and switches

climate.effektguard is the day-to-day control:

Choose What happens
Target Your room temperature, 18.5-25 °C
Heat On
Off Paused: the pump runs its normal curve and EffektGuard does nothing, not even safety
Preset none, comfort, eco Balanced, Comfort or Savings mode
Preset away Savings, 3 °C below your target (never below 18.5 °C). The thermostat keeps showing your target, and hot water is unchanged

To see why it did something, look at sensor.effektguard_optimization_reasoning. After a restart it waits a cycle or two before changing anything.

Settings

Under the gear icon:

Setting Range (default) What it does
Mode Comfort, Balanced, Savings (Balanced) Comfort keeps the temperature steadiest and follows the price least. Savings lets it swing more, follows the price most, and cuts the heat fully at the most expensive times
Tolerance 0.5-3.0 (0.5) How far the room may drift to save money: ±0.4 × this value. Higher also makes the normal price step bigger, from 20 % (0.5) to 100 % (3.0)
Thermal mass, insulation 0.5-2.0 (1.0) Your house. Thermal mass 1.5 or more is a concrete slab, 1.2 or more timber floor heating
Hot water Target 45-60 °C (50), amount 1-30 min (5), ready at 07:00 and 18:00 See Hot water
Ventilation Normal 100-300, boosted 150-400 m³/h (150, 252) NIBE F750 and F730 only

Switches on by default: Enable Optimization, Price Optimization, Peak Protection, Weather Prediction. Off by default: Hot Water Optimization, Airflow Optimization.

How it decides

Every 5 minutes it sets the heat, in whole degrees, from:

  • Price: more heat when power is cheap, less when it is expensive. Extra before a price jump, less before a drop, least at the most expensive times.
  • Colder weather: when a colder day is coming, it heats ahead, earlier in a heavy house. Mostly at cheap times, never at the most expensive.
  • Monthly peak: less heat close to this month's highest power use. Needs peak protection, and a power meter or the pump's current readings.
  • Falling behind: when the pump can't keep up (NIBE's degree minutes drop), more heat. A little at first, more if it gets worse and the room is below target or power is cheap. Where this starts depends on your location, the weather and your house.
  • Comfort: it pulls the room back to your target.

Safety, the most expensive times, a new monthly peak and a room far too warm always win. One exception: while the pump catches up after falling far behind, a price or power peak only limits the extra heat to +0.5 to +1 °C.

When the room drifts below your tolerance, the cuts for price and peaks ease off. To avoid flip-flopping, it holds back a reversal of 2 °C or more within 45 minutes. Safety comes first. Architecture has the full picture.

Hot water

The spot price, the tank temperature and the hot-water boosts, from 03:00 to midnight

Off by default. Turn on Hot Water Optimization and pick the boost switch in setup. Then EffektGuard heats the tank when power is cheap and has hot water ready at your hot-water times. Each boost runs at least 15 minutes, unless the house needs the heat or the tank can't be read. A boost you start yourself is left alone, and the pump still heats a cold tank by itself. Hot water in detail.

Safety

  • Room below 18 °C: full heat (+10). If the room is already warming up quickly (over 0.3 °C an hour), it eases to +7.5 so it doesn't overshoot. This needs a room sensor.
  • Pump very far behind (past -1500 degree minutes): it never runs cooler than normal, unless the room is too warm. It adds no heat just to catch up: the compressor is already flat out, so the extra would come from the electric heater.
  • In both cases it stops its own hot-water boosts and starts none.
  • It only sets whole degrees from -10 to +10, within your offset entity's range, and on its own at most once every 5 minutes.
  • If it can't read the pump, it changes nothing. force_offset can't override any of this.

Services

Service Does Limits
effektguard.force_offset Holds the heat setting you choose -10 to +10 °C for 0-480 min (0 = one cycle), once per 5 min
effektguard.boost_heating Full heat (+10) 30-360 min, once per 45 min
effektguard.boost_dhw Hot-water boost 30-180 min, once per 60 min, not during the safety limits
effektguard.reset_peak_tracking Clears the monthly peaks, for example at a new billing period
effektguard.calculate_optimal_schedule A 24-hour price preview

The first three need EffektGuard on, and act at once.

Dashboard charts

The README's chart on your own dashboard, plus the hot-water chart: dashboard-charts.yaml. It needs apexcharts-card.

Troubleshooting

You see Do this
Heating changes you didn't expect Turn off the pump's own price control (see What you need)
Repair: "No electricity price source" Install GE-Spot, then pick its sensor: ⋮ → Reconfigure
Repair: "No hot-water control entity" Pick the boost switch: ⋮ → Reconfigure. nibe_heatpump needs an input_boolean helper, and has none for the S-series
EffektGuard entities unavailable It can't read the pump (with MyUplink, the cloud may be slow or down). It changes nothing until it can
The heat setting doesn't move Check that the thermostat is on Heat, and read the reasoning sensor. Changes under a whole degree are not sent
Peaks look wrong Your power meter must go unavailable when it stops updating (MQTT expire_after, a template's availability)
Anything else ⋮ → Download diagnostics, then open an issue