Solar PV and KNX: Fronius Symo Modbus Integration for Self-Consumption Optimisation
Connecting a Fronius inverter to KNX via SunSpec Modbus TCP gives the building automation system real-time PV yield and grid power data — enabling self-consumption logic that shifts controllable loads to coincide with surplus generation, reducing grid import and maximising the value of on-site solar.
Fronius SunSpec Modbus TCP: enabling the interface
Fronius inverters — Symo, Primo, Gen24 and Gen24 Plus — implement the SunSpec Alliance Modbus TCP interface, which provides a standardised register map for solar inverter data. The interface is disabled by default and must be enabled in the inverter webserver before any gateway can connect.
Enabling Modbus TCP on Fronius inverter
1. Connect to inverter webserver: http://<inverter-IP>
(default IP shown on inverter display → Settings → Network)
2. Navigate to: Settings > Modbus
Enable Modbus TCP: ON
TCP port: 502 (default, leave unchanged)
SunSpec model: enabled
3. Key holding registers (read-only):
Register 40070 → AC power output (int16, W)
Register 40080 → AC energy today (uint32, Wh)
Register 40225 → Grid power (int16, W, Gen24 with smart meter)
Positive = import, Negative = export
Register 40493 → Battery SOC (Gen24 Plus only, 0–100%)
Register 40495 → Battery power (Gen24 Plus only, int16, W)
4. Fronius smart meter must be installed and paired
for grid power register 40225 to report correctlyNetwork requirement: the Fronius inverter and the KNX Modbus gateway must be on the same LAN segment or have routed IP access. Assign a static IP to the inverter in the webserver network settings — DHCP leases can change and will break the gateway poll after a router reboot.
KNX Modbus gateway: Intesis IN701KNX signal table
The Intesis IN701KNX operates as a Modbus TCP master, polling the Fronius inverter registers at a configurable interval and publishing the values to KNX group addresses using the MAPS configuration tool. The following signal table gives the complete mapping for PV monitoring.
| Modbus register | Description | KNX DPT | Group address |
|---|---|---|---|
| 40070 | PV AC power output (W) | DPT 13.010 (4-byte signed) | 9/0/0 — PV Power W |
| 40225 | Grid power (W, +import/−export) | DPT 13.010 (4-byte signed) | 9/0/1 — Grid Power W |
| 40080 | AC energy today (Wh) | DPT 12.001 (4-byte unsigned) | 9/0/2 — Energy Today Wh |
| 40493 | Battery SOC (%, Gen24 Plus) | DPT 5.001 (1-byte %) | 9/1/0 — Battery SOC |
| 40495 | Battery power (W, Gen24 Plus) | DPT 13.010 (4-byte signed) | 9/1/1 — Battery Power W |
MAPS configuration key settings
Protocol: Modbus TCP Master Remote IP: <Fronius static IP> Remote port: 502 Poll interval: 10 seconds (fast enough for self-consumption logic) Connection timeout: 5 seconds Byte order: Big-endian (SunSpec standard) Word order: Big-endian
Self-consumption logic: MDT Logic Module or Loxone
With real-time grid power available on GA 9/0/1, the KNX logic controller can trigger controllable loads whenever surplus generation exceeds a threshold. The priority sequence ensures the highest-value loads are activated first and released last.
Self-consumption priority logic
Trigger condition: GA 9/0/1 (Grid Power) < −1000W
→ surplus export greater than 1 kW
Priority sequence (activate in order, release in reverse):
1. Heat pump SG Ready (State 3 encouraged mode)
→ KNX binary output → heat pump S1/S2 terminals
2. EV charger current increase (via EVCC/OCPP)
→ increase from 6A minimum toward surplus limit
3. Immersion heater ON
→ KNX binary output → 3kW immersion contactor
Deactivation: GA 9/0/1 > −200W (export below 200W)
→ release loads in reverse priority order
→ 60-second hysteresis to prevent rapid cyclingMDT Logic Module (SCN-LOGM.01)
- Compare block: GA 9/0/1 < -1000 → output 1
- Timer block: 60s on-delay prevents cycling
- Priority sequencer: AND/OR with individual thresholds
- 16 logic channels cover all PV scenarios in one device
Loxone Miniserver
- Virtual KNX input: GA 9/0/1 → Loxone variable
- Intelligent Room Controller block for SG Ready
- Loxone energy monitor visualises self-consumption
- Analogue output to EVCC via HTTP for EV control
SG Ready heat pump integration
SG Ready (Smart Grid Ready) is a German heat pump association standard providing a 2-bit interface that allows external signals — including building automation and PV surplus — to influence heat pump operating mode. Two dry contact relay inputs (S1 and S2) on the heat pump control board are driven by KNX binary outputs.
| State | S1 | S2 | Mode | PV surplus trigger |
|---|---|---|---|---|
| State 1 | 1 | 0 | Blocked (EVU lock) | Grid peak tariff signal — block compressor |
| State 2 | 0 | 0 | Normal operation | Default / no PV signal |
| State 3 | 0 | 1 | Encouraged (high power) | Surplus > 3 kW → run at increased set-point |
| State 4 | 1 | 1 | Maximum (full capacity) | Surplus > 6 kW → maximum heating power |
Wiring note: S1 and S2 are volt-free contacts — connect KNX binary output relay contacts (no voltage) directly to the heat pump SG Ready terminals. Do not apply 230V or 24V to these terminals. Confirm contact rating with heat pump manufacturer: most SG Ready inputs accept 24V DC signal current; the KNX binary output dry contact must be rated for the heat pump signal voltage (typically 12–30V DC at 10–20 mA).
Fronius Gen24 battery integration
The Fronius Gen24 Plus with BYD HVS or LG RESU battery exposes battery state of charge and battery power via Modbus TCP registers. Adding battery SOC awareness to the self-consumption logic prevents activating controllable loads when the battery is depleted and needs priority charging.
Battery-aware self-consumption conditions
GA 9/1/0 (Battery SOC) conditions:
SOC < 20%:
→ Pause all controllable loads
→ Prioritise battery charging from PV
→ SG Ready → State 2 (normal, don't add extra heat pump load)
SOC > 80% AND GA 9/0/1 (Grid Power) < −500W:
→ Activate controllable loads (battery sufficiently full)
→ Standard priority sequence applies
Battery power (GA 9/1/1):
→ Negative = battery charging (absorbing PV surplus)
→ Positive = battery discharging (supplying building)
→ Use to calculate net PV available for controllable loads:
Available = PV power − battery charging powerSMA Sunny Boy alternative
SMA inverters also implement SunSpec Modbus TCP on port 502 using the same integration chain via the Intesis IN701KNX gateway. The enabling procedure and key registers differ slightly from Fronius.
SMA Sunny Boy Modbus TCP setup
Enable in SMA webserver: Settings > External communication > Modbus > ON TCP port: 502 Key registers (read-only, unit ID 3): 30775 → AC power output (uint32, W, 2 registers) 30517 → Daily yield (uint32, Wh, 2 registers) 30513 → Total yield (uint32, kWh × 1000) 30521 → Operating status (uint32, enum) Note: SMA registers are uint32 (2×16-bit), big-endian. Configure IN701KNX signal type as 32-bit unsigned integer. SMA does not provide a signed grid power register without a separate SMA Energy Meter — add SMA Energy Meter for grid flow monitoring (registers 30865/30867 on Meter unit ID).
Self-consumption rate calculation
Self-consumption rate and self-sufficiency rate are the key KPIs for a PV-plus-KNX system. Both metrics can be calculated and displayed in real time by the KNX visualisation system using values from the Modbus gateway group addresses.
KPI formulas for Gira X1 or IP-Symcon
Self-consumed power (W):
= PV power (GA 9/0/0) − max(0, −Grid power (GA 9/0/1))
(PV output minus what is being exported)
Self-consumption rate (%):
= Self-consumed power / PV power × 100
Target: > 70% with EV + heat pump controllable loads
Self-sufficiency rate (%):
= Self-consumed power / Total building demand × 100
Total demand = PV power − grid export + grid import
= GA 9/0/0 + max(0, GA 9/0/1)
Annual self-consumption: log daily GA 9/0/2 (Energy today Wh)
→ accumulate in IP-Symcon variable → annual total kWh
→ self-consumption rate = annual self-consumed / annual yieldRealistic targets: without controllable loads a typical household achieves 25–35% self-consumption (most PV generated midday when occupants are absent). With EV charging and heat pump SG Ready shifting to solar hours, self-consumption rises to 60–80%. With battery storage added, 80–95% is achievable.
Fronius Solar.web cloud for energy reports
For BREEAM energy reports requiring historical PV yield data, the Fronius Solar.web REST API (api.solarweb.com) provides hourly, daily and monthly energy totals. This cloud API supplements — but does not replace — local Modbus TCP for real-time control.
Solar.web API vs local Modbus TCP
Solar.web REST API (api.solarweb.com):
Latency: 1–5 minutes (cloud polling cycle)
Use for: BREEAM energy reports, historical analysis,
CSV export for energy assessors
Poll: daily at 23:59 from IP-Symcon or ARISTO BewO
Output: daily/monthly kWh → CSV → energy assessor
Local Modbus TCP (Fronius register 40070/40225):
Latency: < 1 second (direct LAN poll at 10s interval)
Use for: ALL real-time self-consumption control
SG Ready triggers, EV current adjustment,
export limiting, immersion heater switching
NEVER use cloud API for real-time control —
1–5 minute latency makes load shifting ineffectivePV export limiting via Modbus
Some Distribution Network Operators (DNOs) require limiting PV export to the grid, particularly for larger residential and commercial systems. Fronius supports dynamic power limiting via a dedicated Modbus holding register, enabling KNX to throttle inverter output when required.
Export limiting logic
Fronius power limit register: Register 40149 → power limit (0–100%, write-capable) Write via IN701KNX output signal (Modbus write function 06) KNX export limiting conditions: IF GA 9/0/1 (Grid Power) < −export_limit_W AND GA 9/1/0 (Battery SOC) > 95% → Write 50% to register 40149 (throttle to half output) IF GA 9/0/1 > −export_limit_W × 0.8 → Write 100% to register 40149 (restore full output) Hysteresis: 30-second delay before restoring full output (prevents rapid hunting around the export limit threshold)
Commissioning test with ETS6 Group Monitor
Verify the complete Fronius–Intesis–KNX integration on a sunny day using the ETS6 Group Monitor. The test sequence confirms Modbus polling, data plausibility, self-consumption trigger and SG Ready relay function without requiring specialist PV commissioning tools.
Commissioning test sequence
1. PV data verification (by 10:00 on a sunny day): ETS6 Group Monitor → watch GA 9/0/0 → confirms PV Power W > 0 and rising with irradiance → compare with Fronius webserver display (should agree ±2%) 2. Grid flow verification: GA 9/0/1 should be negative when PV > building consumption GA 9/0/1 should be positive when PV < building consumption Turn off major loads, re-check sign changes 3. SG Ready functional test (without waiting for solar surplus): ETS6 Group Monitor → write −4000 to GA 9/0/1 (simulate export) → confirm Logic Module condition fires (GA 9/0/1 < −1000) → confirm SG Ready relay activates (State 3: S1=0, S2=1) → confirm with heat pump display (mode indicator changes) → restore: write 0 to GA 9/0/1 → relay deactivates 4. Battery SOC check (Gen24 Plus): GA 9/1/0 value should match Fronius webserver battery SOC % 5. Export limit test: Write 50 to power limit register via Group Monitor write → confirm Fronius webserver shows 50% power limit active
Sign convention check
Confirm GA 9/0/1 is negative (export) on a sunny noon. If it reads positive when the Fronius webserver shows export, the smart meter CT direction is reversed — swap the CT secondary leads (S1/S2) or invert the Modbus register sign in IN701KNX MAPS configuration.
Poll interval verification
Observe GA 9/0/0 in Group Monitor — it should update every 10 seconds. If updates occur less frequently, check the IN701KNX poll interval setting in MAPS and verify there is no Modbus TCP timeout. Reduce timeout value if the inverter is slow to respond.
Need a Fronius KNX integration panel built and commissioned to spec?
We design low-voltage panels with Intesis Modbus–KNX gateway, SG Ready wiring, export limiting and full ETS6 commissioning documentation — delivered tested and verified to your site.
Request a quote →