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.

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 a Device row in System → Devices with driver fronius_solar and the inverter IP. Port stays at 80.
  4. Run the get_inverters command from the device row'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. Add one Zone per inverter you want to monitor. Set zone.address to the inverter id from step 4. The driver will populate per-inverter telemetry as zone attributes on the next poll.
  6. (Optional) Wire the device-level site attributes (pv_power_w, grid_power_w, battery_power_w, load_power_w, site_daily_energy_wh) into a dashboard widget for whole-home energy flow.

Attribute reference

ScopeAttributeDirectionNotes
deviceiprequiredLAN IP of the inverter / Datamanager.
deviceportoptionalDefault 80.
deviceapi_versionread-onlyAuto-detected on connect.
devicestatus_intervaloptionalPoll cadence in ms. Default 15000, minimum 5000.
devicepv_power_wread-onlySite-level instantaneous PV production.
deviceload_power_wread-onlySite load. Available when a Fronius Smart Meter is present.
devicegrid_power_wread-onlyNet grid power. Negative = export, positive = import.
devicebattery_power_wread-onlyBattery charge (+) / discharge (-).
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 mode label (e.g. produce-only, bidirectional, meter).
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.
zoneinverter_statusread-onlyrunning / idle / startup / standby / error.
zonestateread-onlyproducing when AC power > 5 W, otherwise idle.

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 PowerFlow.

Commands

  • get_inverters — list inverters known to the Solar API.
  • 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).

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 attributes simply won't appear.
  • Inverter sleeps at night. When the sun is down a SnapINverter powers down the Datamanager card too; HTTP returns 503 / connection refused. The driver logs the failure and re-polls — this is expected behavior, not a configuration issue.
  • Old Datamanager firmware (<3.0) lacks the PowerFlow endpoint. The driver falls back to GetInverterRealtimeData?Scope=System and surfaces aggregated site numbers, but the Load / Grid / Battery split won't be available.

Troubleshooting

SymptomLikely cause
http request error … 503 after duskInverter is asleep — expected.
http request error … ECONNREFUSED during daylightSolar API switch turned off on the inverter, or IP changed.
All readings stuck at 0 / nullSolar API enabled but the inverter has no PV input mapped — confirm via the inverter display first.
PowerFlow returns Load=0 / Grid=0No Fronius Smart Meter paired. Install a meter or accept site-aggregate readings only.
Energy values reset to 0 unexpectedlyA firmware update on the Datamanager can reset the lifetime register; the driver simply reports what the API returns.