Skip to main content

Fronius Solar Inverter

Telemetry driver for Fronius residential and commercial PV inverters, including the SnapINverter family (Symo / Primo / Galvo / Eco), Symo GEN24, and the Tauro commercial inverter. Talks the on-device Solar API v1 directly on the LAN — no cloud account, no token, no SDK.

This is a monitoring integration: it reads live power, energy, and inverter status. It does not switch, curtail, or set anything on the inverter (see Known limitations). Its site-level readings feed the generic Power Flow dashboard automatically — see Power Management.

Prerequisites

  • Inverter equipped with a Fronius Datamanager 2.0 card or built-in WLAN/LAN module (GEN24, Tauro).
  • Solar API enabled on the inverter: Settings → Fronius Solar API → On.
  • Inverter reachable on the network. Static DHCP reservation strongly recommended — Fronius inverters renew slowly and an IP change will look like a hard offline.

Verify the inverter is exposing the API by hitting http://<inverter-ip>/solar_api/GetAPIVersion.cgi in a browser — you should see a JSON blob with APIVersion and BaseURL.

Setup steps

  1. Locate the inverter IP on your router or via the Fronius display (Setup → Network).
  2. Confirm the Solar API responds at http://<ip>/solar_api/GetAPIVersion.cgi.
  3. Add the device under System → Devices → Add Device: pick the Fronius Solar Inverter driver, enter the inverter IP in IP Address, and leave Port at 80. Save. The device probes GetAPIVersion.cgi on connect, records the detected version in api_version, and starts polling.
  4. Run the get_inverters command from the device's Run Command panel. The response lists every inverter id the gateway can see (typically just 1 for a single SnapINverter, more for Symo cluster setups).
  5. (Optional, for a per-inverter breakdown) Add one Zone per inverter you want to monitor and set the zone Address to the inverter id from step 4. The site-level dashboard does not need any zones — the whole-site telemetry lives on the device row itself.
Subsystem placement

When you create per-inverter zones, put them under the Power subsystem. The driver hints energy/monitoring, but a stock install seeds a subsystem named Power (not energy), so the New Zone editor will not pre-select a subsystem for you — choose Power by hand. These are ordinary zones (they appear under Zones); this driver is not an AV integration.

The driver does not auto-create zones

A zone is only populated if you create it first and bind it to this device with its Address set to the inverter id. The polling loop matches each inverter id from the API against existing zone addresses and skips ids with no matching zone — it never inserts a zone or a subsystem. The site-level device attributes, by contrast, always update on every poll regardless of whether any zones exist.

Attribute reference

ScopeAttributeDirectionNotes
deviceiprequiredLAN IP of the inverter / Datamanager.
deviceportoptionalDefault 80.
deviceapi_versionread-onlyDetected Solar API major version. Set automatically on connect.
devicestatus_intervaloptionalPoll cadence in ms. Default 15000, minimum 5000, maximum 600000.
devicepv_power_wread-onlySite-level instantaneous PV production (PowerFlow P_PV).
deviceload_power_wread-onlySite load (PowerFlow P_Load). Available only when a Fronius Smart Meter is paired. Fronius reports household consumption as a negative value, so this attribute is intentionally left untagged — the Power Flow dashboard derives Home load from the solar / grid / battery flows instead of reading this directly.
devicegrid_power_wread-onlyNet grid power (PowerFlow P_Grid). Positive = importing from the grid, negative = exporting.
devicebattery_power_wread-onlyBattery power (PowerFlow P_Akku). Positive = discharging (battery supplying the home), negative = charging.
devicesite_daily_energy_whread-onlyEnergy produced today.
devicesite_yearly_energy_whread-onlyEnergy produced this calendar year.
devicesite_total_energy_whread-onlyLifetime energy.
devicesite_moderead-onlyFronius site operating mode reported by PowerFlow (e.g. produce-only, meter, bidirectional).
zoneac_power_wread-onlyPer-inverter AC output.
zonedaily_energy_whread-onlyPer-inverter day energy.
zoneyearly_energy_whread-onlyPer-inverter year energy.
zonetotal_energy_whread-onlyPer-inverter lifetime energy.
zonebattery_socread-onlyBattery state of charge (%). Reported per inverter only on hybrid units (Symo GEN24 with storage); absent on PV-only inverters.
zoneinverter_statusread-onlyrunning / idle / startup / standby / bootloading / error. An unrecognized firmware status code surfaces as state_<n>.
zonestateread-onlyproducing when AC power is above 5 W, otherwise idle.

All of the device and zone attributes above are cataloged, so they autocomplete in the Attribute editor's name picker and can drive attribute triggers (e.g. fire a notification when state flips to idle during daylight hours, or when battery_soc drops below a threshold).

Zone address format

zone.address is the Fronius Device Id (typically 1, 2, …). Run get_inverters to enumerate. Address is mandatory if you want per-inverter telemetry; the device row alone is enough for whole-site Power Flow.

Commands

  • get_inverters — list inverters discovered by the Solar API. (This returns the same GetInverterInfo payload as get_inverter_info; it is the friendlier name to run during setup.)
  • get_powerflow — current site PowerFlow snapshot (PV / Load / Grid / Battery).
  • get_inverter_realtime — live telemetry for one inverter (requires address).
  • get_inverter_info — static info (DT, custom name, PV peak power) per inverter.
  • get_meter_realtime — Fronius Smart Meter realtime (if a meter is paired).
  • get_storage_realtime — battery / storage realtime (if a storage system is paired).
  • get_api_version — probe Solar API version (also runs automatically on connect).

Energy dashboard

Unlike some meter integrations, Fronius is wired into the generic energy dashboard. Add the Power Flow widget to any UI page (UIs → Pages → add widget → Power Flow) and the inverter's Solar, Grid, and Battery flows appear automatically — there is no per-attribute configuration to do. The dashboard reads the device's site-level pv_power_w / grid_power_w / battery_power_w, and derives the Home node's load from those flows when no separate Smart Meter load reading is available. See Power Management.

Known limitations

  • Monitoring only. The Solar API does not expose curtailment, on/off, or setpoint commands — control of a Fronius inverter requires Modbus TCP with a paid Fronius unlock, which is intentionally out of scope for this driver. Use the modbus driver if you need write control.
  • Battery and meter readings depend on hardware. If no Fronius Smart Meter / battery is paired, the corresponding fields stay null and the site load_power_w / grid_power_w / battery_power_w attributes simply won't appear.
  • Inverter sleeps at night. When the sun is down a SnapINverter powers down the Datamanager card too, so its web server stops answering and the device shows offline in GEM until sunrise — every failed poll marks the connection down, and the first successful poll at dawn brings it back automatically. This is expected behavior, not a configuration issue; suppress overnight "device down" alerts accordingly.
  • Old Datamanager firmware (<3.0) lacks the PowerFlow endpoint. The driver falls back to GetInverterRealtimeData?Scope=System and surfaces aggregated site PV power and daily/yearly/total energy, but the Load / Grid / Battery split won't be available.

Troubleshooting

SymptomLikely cause / fix
Device flips to offline every evening and recovers at dawnInverter is asleep — expected. The Datamanager powers down with the PV, so the connection refuses/times out overnight and re-establishes at sunrise. No action needed.
http request error … ECONNREFUSED (or a timeout) during daylightThe Solar API switch is turned off on the inverter, or the IP changed. Re-enable Settings → Fronius Solar API → On and confirm the IP (use a DHCP reservation).
All readings stuck at 0 / null in daylightSolar API enabled but the inverter has no PV input mapped — confirm production on the inverter display first.
Power Flow shows Load = 0 / Grid = 0No Fronius Smart Meter paired. Install a meter, or accept site-aggregate readings only.
Per-inverter zone never updatesThe zone Address must equal an inverter id returned by get_inverters, and the zone must be bound to this Fronius device.
Energy values reset to 0 unexpectedlyA firmware update on the Datamanager can reset the lifetime register; the driver reports exactly what the API returns.
  • Devices — adding and managing device rows
  • Zones — per-inverter zones
  • Subsystems — the Power subsystem these zones belong to
  • Commands — running the get_* commands
  • Power Management — the generic energy-flow dashboard this driver feeds