Solar PV · Fronius · KNX · 9 min read

Solar PV + KNX Self-consumption Optimisation

Use real-time Fronius or SMA inverter Modbus data to dispatch flexible loads — EV charger, hot water, pool — to peak solar hours. Maximum self-consumption without a battery.

Why self-consumption optimisation?

In most EU countries, electricity exported to the grid earns far less than the avoided import cost:

CountryGrid import (2024)Feed-in tariffSelf-consumption value
Germany€0.30/kWh€0.08/kWh3.75× more valuable
France€0.23/kWh€0.10/kWh2.3× more valuable
Latvia€0.22/kWh€0.05/kWh4.4× more valuable
Poland€0.18/kWh€0.04/kWh4.5× more valuable
Netherlands€0.29/kWhNet metering (1:1)1:1 (net metering)

Shifting a flexible load (EV charger, hot water tank, pool pump) from evening grid power to midday solar surplus can save €200–600/year for a 10kWp system — without any battery investment.

Reading solar data via Modbus

Key Modbus registers for common EU inverters:

:502

Fronius GEN24

PV power: reg 499 (W) | Grid exchange: reg 502 (W, neg=export) | House load: reg 527 (W) | Battery SoC: reg 1 (%)

:502

SMA Sunny Boy/Tripower

PV power: reg 30773 (W) | Grid export: reg 30867 (W) | Total generation: reg 30529 (Wh)

:502

Sungrow SG5/10RT

PV power: reg 5016 (W) | Grid power: reg 5082 (W, neg=export) | Battery SoC: reg 13022 (%)

:6607

Huawei SUN2000

PV power: reg 32080 (W) | Grid power: reg 37113 (W) | Battery SoC: reg 37004 (%)

⚠️ Register addresses vary between firmware versions. Always download the specific Modbus register map for your inverter's firmware version from the manufacturer portal before integration.

Surplus calculation and dispatch logic

Surplus dispatch logic (KNX or Home Assistant)

Every 30 seconds:
  pv_power     = read Modbus reg 499  (W)
  grid_power   = read Modbus reg 502  (W)  ← neg = export
  surplus      = pv_power + grid_power      ← when neg: export = surplus

  5-minute rolling average of surplus (anti-cloud-flicker):
  avg_surplus_5min = average(surplus_history)

Priority dispatch (latching logic):
  if avg_surplus_5min > 2500W AND ev_charger == OFF:
    → START EV charger (Easee API / KNX relay)
  if avg_surplus_5min > 2500W AND ev_charger == ON:
    → adjust current = min(32A, surplus / 230 / 3)

  if avg_surplus_5min > 5000W AND hot_water == OFF:
    → switch hot water immersion ON (KNX 230V relay)

  if avg_surplus_5min < 800W for 5 min:
    → STOP EV charger
    → STOP hot water immersion

The 5-minute rolling average is critical — without it, every cloud passing over the panels would cause loads to cycle on and off. Loads should only switch when surplus is stable.

Hot water as a free solar battery

200L electric hot water tank

  • • 3kW immersion element
  • • Heated 45°C → 70°C = ~5.8 kWh stored
  • • Equivalent to a medium home battery
  • • Cost: €0 (already installed)
  • • KNX control: one 230V relay output
  • • Overheat protection: KNX temperature sensor

Pool pump (500W–2kW)

  • • Run 6–8 hours per day in summer
  • • Solar hours: 10:00–16:00 ideal window
  • • KNX time window: only run when PV surplus > 1000W
  • • Daily runtime counter ensures minimum filtration
  • • Easy win: shift €200/year of pool pump cost to solar

Self-consumption rate comparison

StrategySelf-consumption rateInvestment
No optimisation (fixed loads)20–30%€0
Fixed time window (10am–2pm)35–50%€0
KNX/HA active Modbus dispatch55–70%€500–1,500 (gateway)
+ 5 kWh battery storage70–85%+€4,000–6,000
+ 10 kWh battery85–95%+€8,000–12,000

Best ROI: KNX/HA active Modbus dispatch is the most cost-effective step before batteries — it adds 25–40% self-consumption at a fraction of battery cost, typically paying back in 2–4 years.

Solar + KNX panel integration

We design panels with Fronius and SMA Modbus gateways pre-configured for surplus dispatch — EV charger control, hot water relay, and pool pump automation.

Request a quote →
Loading...
Back to top