Skip to content

Repository files navigation

Fronius Symo Modbus — Home Assistant Integration

🇬🇧 English · 🇩🇪 Deutsch

🤖 AI-generated project / KI-generiertes Projekt

EN: This entire integration — code, tests, documentation and releases — was generated by AI (Anthropic Claude Code) in collaboration with the repository owner. It works and has been verified against real hardware (a Fronius Symo Advanced 10.0-3-M), but it is not an official Fronius or Home Assistant product. Review the code before relying on it. Contributions and fixes are welcome — see CLAUDE.md / AGENTS.md to continue working on it with AI tools.

DE: Diese gesamte Integration — Code, Tests, Dokumentation und Releases — wurde mit KI (Anthropic Claude Code) in Zusammenarbeit mit dem Repo-Inhaber erstellt. Sie funktioniert und wurde gegen echte Hardware (Fronius Symo Advanced 10.0-3-M) verifiziert, ist aber kein offizielles Produkt von Fronius oder Home Assistant. Prüfe den Code, bevor du dich darauf verlässt. Beiträge und Korrekturen sind willkommen — siehe CLAUDE.md / AGENTS.md, um mit KI-Tools weiterzuarbeiten.


🇬🇧 English

A custom Home Assistant integration that reads Fronius Symo (Advanced) inverters over Modbus TCP, using the SunSpec register map exposed by the Fronius Datamanager card. Everything is configured from the Home Assistant UI — no YAML.

Scope: read-only by default; an opt-in active-power-limit control can be enabled in the options. Modbus TCP only (no RTU), no Smart Meter entities yet. The architecture is extensible for those later.

Features

  • 🔌 Modbus TCP, fully GUI-configurable (IP, port, unit ID, scan interval) — connection settings can also be changed later via the integration's options.
  • 🧭 Automatic SunSpec model discovery — walks the model chain, so it works with both the float (models 111/112/113) and int+SF (101/102/103) layouts without hardcoded register addresses.
  • Inverter sensors: AC power, lifetime energy (Energy Dashboard ready), AC current, per-phase voltage, grid frequency, apparent/reactive power, power factor, DC power, DC current, cabinet temperature, operating state.
  • 🔆 Per-string (MPPT) sensors (SunSpec model 160): DC power, voltage, current, lifetime energy, state and temperature for each string.
  • 🎛️ Optional active-power-limit control (SunSpec model 123, opt-in): a power-limit slider (0–100 %) and an enable switch.
  • 🏷️ Device info from the common block (manufacturer, model, serial, firmware) plus diagnostic sensors (rated power/current, isolation resistance, PV connection, per-phase currents, line-line voltages — disabled by default).

DC current/voltage: on the Symo's multi-MPPT firmware the inverter block reports the aggregate DC current and voltage as "not implemented", so DC current is derived from the per-string sum and there is no aggregate DC voltage — use the per-string String N DC voltage sensors. After updating, the old empty DC voltage entity may linger as restored/unavailable; delete it in Settings → Devices & Services → Entities.

Prerequisites

On the inverter's Fronius Datamanager web interface, open Settings → Modbus and enable Modbus TCP (default port 502). The SunSpec model type (float default or int+SF) is auto-detected.

Installation (HACS — custom repository)

  1. In HACS, open the three-dot menu → Custom repositories.
  2. Add https://github.com/ferengi82/home-assistant-fronius-modbus with category Integration.
  3. Install Fronius Symo Modbus and restart Home Assistant.

Manual: copy custom_components/fronius_symo_modbus into your config/custom_components/ and restart.

Configuration

Settings → Devices & Services → Add Integration → Fronius Symo Modbus

Option Default Description
Host / IP address Inverter / Datamanager IP
Name Fronius Symo Device name in HA
Modbus TCP port 502 As configured on the Datamanager
Modbus unit / slave ID 1 Inverter Modbus ID
Scan interval 10 s Poll frequency

Host, port, unit ID, scan interval and inverter control can be changed later via the entry's Configure button (Options).

Performance note: The Datamanager is slow over Modbus — a full poll takes ~0.85–1.3 s, and it delivers at most ~1 read/second. Intervals below 5 s are not allowed (and would not make data fresher). 5–10 s is the sensible range.

Inverter control (active-power limit)

Disabled by default. To use it:

  1. On the Fronius Datamanager (Settings → Modbus), set "Inverter control via Modbus" to the same SunSpec type as the meter (float/int). Without this, writes are rejected.
  2. In Home Assistant, open the integration's Configure and enable Enable inverter control (write access).

You then get two entities: a number "Active power limit" (0–100 % of rated power) and a switch "Active power limit active". The limit only takes effect while the switch is on. ⚠️ Writing changes the inverter's real output — test carefully.

Hardware-verified on a Symo Advanced 10.0-3-M: setting 50 % with the switch on throttled AC output from ~6.9 kW to ~5.0 kW; disabling the limit restored full output.

Verifying against your inverter

pip install pymodbus
python scripts/dump_sunspec.py <inverter-ip> [--port 502] [--unit 1]

For developers / AI tools

See CLAUDE.md (architecture, conventions, build/test/deploy) and docs/SUNSPEC.md (register map). The Fronius brand assets are bundled under custom_components/fronius_symo_modbus/brand/.


🇩🇪 Deutsch

Eine benutzerdefinierte Home-Assistant-Integration, die Fronius Symo (Advanced)-Wechselrichter über Modbus TCP ausliest — anhand der SunSpec-Registerkarte der Fronius-Datamanager-Karte. Alles wird über die Home-Assistant-Oberfläche konfiguriert — kein YAML.

Umfang: standardmäßig nur lesend; eine optionale Wirkleistungs-Begrenzung lässt sich in den Optionen aktivieren. Nur Modbus TCP (kein RTU), noch keine Smart-Meter-Entitäten. Die Architektur ist dafür erweiterbar.

Funktionen

  • 🔌 Modbus TCP, vollständig über die GUI konfigurierbar (IP, Port, Unit-ID, Abfrageintervall) — Verbindungseinstellungen sind auch nachträglich über die Optionen änderbar.
  • 🧭 Automatische SunSpec-Model-Erkennung — läuft die Model-Chain ab und funktioniert daher mit beiden Datamanager-Layouts (float 111/112/113 und int+SF 101/102/103), ohne harte Registeradressen.
  • Wechselrichter-Sensoren: AC-Leistung, Gesamtenergie (Energie-Dashboard-tauglich), AC-Strom, Spannung je Phase, Netzfrequenz, Schein-/Blindleistung, Leistungsfaktor, DC-Leistung, DC-Strom, Gehäusetemperatur, Betriebszustand.
  • 🔆 Per-String-Sensoren (MPPT) (SunSpec-Model 160): DC-Leistung, -Spannung, -Strom, Gesamtenergie, Status und Temperatur je String.
  • 🎛️ Optionale Wirkleistungs-Steuerung (SunSpec-Model 123, opt-in): ein Limit-Regler (0–100 %) und ein Aktivierungs-Schalter.
  • 🏷️ Geräteinfos aus dem Common Block (Hersteller, Modell, Seriennummer, Firmware) plus diagnostische Sensoren (Nennleistung/-strom, Isolationswiderstand, PV-Verbindung, Phasenströme, Leiter-Leiter-Spannungen — standardmäßig deaktiviert).

DC-Strom/-Spannung: Bei der Multi-MPPT-Firmware des Symo meldet der Wechselrichter-Block den aggregierten DC-Strom und die DC-Spannung als „nicht implementiert". Daher wird der DC-Strom aus der Summe der Strings abgeleitet, und es gibt keine aggregierte DC-Spannung — nutze die Sensoren String N DC-Spannung. Nach dem Update kann die alte, leere DC-Spannung-Entität als wiederhergestellt/nicht verfügbar zurückbleiben; lösche sie unter Einstellungen → Geräte & Dienste → Entitäten.

Voraussetzungen

Im Webinterface des Fronius Datamanager unter Einstellungen → Modbus Modbus TCP aktivieren (Standard-Port 502). Der SunSpec-Datentyp (float Standard oder int+SF) wird automatisch erkannt.

Installation (HACS — benutzerdefiniertes Repository)

  1. In HACS oben rechts das Drei-Punkte-Menü → Benutzerdefinierte Repositories.
  2. https://github.com/ferengi82/home-assistant-fronius-modbus mit Kategorie Integration hinzufügen.
  3. Fronius Symo Modbus installieren und Home Assistant neu starten.

Manuell: Ordner custom_components/fronius_symo_modbus nach config/custom_components/ kopieren und neu starten.

Konfiguration

Einstellungen → Geräte & Dienste → Integration hinzufügen → Fronius Symo Modbus

Option Standard Beschreibung
Host / IP-Adresse IP des Wechselrichters / Datamanagers
Name Fronius Symo Gerätename in HA
Modbus-TCP-Port 502 Wie am Datamanager konfiguriert
Modbus Unit-/Slave-ID 1 Modbus-ID des Wechselrichters
Abfrageintervall 10 s Abfragefrequenz

Host, Port, Unit-ID, Abfrageintervall und Wechselrichter-Steuerung lassen sich nachträglich über die Schaltfläche Konfigurieren (Optionen) ändern.

Performance-Hinweis: Der Datamanager ist über Modbus langsam — ein vollständiger Abruf dauert ~0,85–1,3 s, und er liefert höchstens ~1 Lesevorgang/Sekunde. Intervalle unter 5 s sind nicht erlaubt (und würden die Daten nicht frischer machen). 5–10 s ist der sinnvolle Bereich.

Wechselrichter-Steuerung (Wirkleistungs-Limit)

Standardmäßig deaktiviert. So aktivierst du sie:

  1. Am Fronius Datamanager (Einstellungen → Modbus) „Wechselrichter-Steuerung über Modbus" auf denselben SunSpec-Typ wie den Zähler (float/int) stellen. Ohne dies werden Schreibzugriffe abgelehnt.
  2. In Home Assistant in den Konfigurieren-Optionen der Integration Wechselrichter-Steuerung aktivieren (Schreibzugriff) einschalten.

Es erscheinen zwei Entitäten: eine Number „Wirkleistungs-Limit" (0–100 % der Nennleistung) und ein Schalter „Wirkleistungs-Limit aktiv". Das Limit wirkt nur, solange der Schalter an ist. ⚠️ Schreibzugriffe ändern die tatsächliche Ausgangsleistung des Wechselrichters — vorsichtig testen.

An einem Symo Advanced 10.0-3-M verifiziert: 50 % mit eingeschaltetem Schalter drosselte die AC-Leistung von ~6,9 kW auf ~5,0 kW; nach Deaktivieren des Limits lief der Wechselrichter wieder voll.

Test gegen den eigenen Wechselrichter

pip install pymodbus
python scripts/dump_sunspec.py <wechselrichter-ip> [--port 502] [--unit 1]

Für Entwickler / KI-Tools

Siehe CLAUDE.md (Architektur, Konventionen, Build/Test/Deploy) und docs/SUNSPEC.md (Registerkarte). Die Fronius-Brand-Assets liegen unter custom_components/fronius_symo_modbus/brand/.


License / Lizenz

MIT

About

Home Assistant integration for Fronius Symo (Advanced) inverters via Modbus TCP (SunSpec). HACS-installable.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages