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
- Locate the inverter IP on your router or via the Fronius display (Setup → Network).
- Confirm the Solar API responds at
http://<ip>/solar_api/GetAPIVersion.cgi. - Add a Device row in System → Devices with driver
fronius_solarand the inverter IP. Port stays at 80. - Run the
get_inverterscommand from the device row's Run Command panel. The response lists every inverter id the gateway can see (typically just1for a single SnapINverter, more for Symo cluster setups). - Add one Zone per inverter you want to monitor. Set
zone.addressto the inverter id from step 4. The driver will populate per-inverter telemetry as zone attributes on the next poll. - (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
| Scope | Attribute | Direction | Notes |
|---|---|---|---|
| device | ip | required | LAN IP of the inverter / Datamanager. |
| device | port | optional | Default 80. |
| device | api_version | read-only | Auto-detected on connect. |
| device | status_interval | optional | Poll cadence in ms. Default 15000, minimum 5000. |
| device | pv_power_w | read-only | Site-level instantaneous PV production. |
| device | load_power_w | read-only | Site load. Available when a Fronius Smart Meter is present. |
| device | grid_power_w | read-only | Net grid power. Negative = export, positive = import. |
| device | battery_power_w | read-only | Battery charge (+) / discharge (-). |
| device | site_daily_energy_wh | read-only | Energy produced today. |
| device | site_yearly_energy_wh | read-only | Energy produced this calendar year. |
| device | site_total_energy_wh | read-only | Lifetime energy. |
| device | site_mode | read-only | Fronius site mode label (e.g. produce-only, bidirectional, meter). |
| zone | ac_power_w | read-only | Per-inverter AC output. |
| zone | daily_energy_wh | read-only | Per-inverter day energy. |
| zone | yearly_energy_wh | read-only | Per-inverter year energy. |
| zone | total_energy_wh | read-only | Per-inverter lifetime energy. |
| zone | inverter_status | read-only | running / idle / startup / standby / error. |
| zone | state | read-only | producing 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 (requiresaddress).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
modbusdriver if you need write control. - Battery and meter readings depend on hardware. If no Fronius Smart Meter / battery is paired, the corresponding fields stay
nulland the siteload_power_w/grid_power_wattributes 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=Systemand surfaces aggregated site numbers, but the Load / Grid / Battery split won't be available.
Troubleshooting
| Symptom | Likely cause |
|---|---|
http request error … 503 after dusk | Inverter is asleep — expected. |
http request error … ECONNREFUSED during daylight | Solar API switch turned off on the inverter, or IP changed. |
| All readings stuck at 0 / null | Solar API enabled but the inverter has no PV input mapped — confirm via the inverter display first. |
| PowerFlow returns Load=0 / Grid=0 | No Fronius Smart Meter paired. Install a meter or accept site-aggregate readings only. |
| Energy values reset to 0 unexpectedly | A firmware update on the Datamanager can reset the lifetime register; the driver simply reports what the API returns. |