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
- 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 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.cgion connect, records the detected version inapi_version, and starts polling. - Run the
get_inverterscommand from the device's Run Command panel. The response lists every inverter id the gateway can see (typically just1for a single SnapINverter, more for Symo cluster setups). - (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.
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.
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
| Scope | Attribute | Direction | Notes |
|---|---|---|---|
| device | ip | required | LAN IP of the inverter / Datamanager. |
| device | port | optional | Default 80. |
| device | api_version | read-only | Detected Solar API major version. Set automatically on connect. |
| device | status_interval | optional | Poll cadence in ms. Default 15000, minimum 5000, maximum 600000. |
| device | pv_power_w | read-only | Site-level instantaneous PV production (PowerFlow P_PV). |
| device | load_power_w | read-only | Site 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. |
| device | grid_power_w | read-only | Net grid power (PowerFlow P_Grid). Positive = importing from the grid, negative = exporting. |
| device | battery_power_w | read-only | Battery power (PowerFlow P_Akku). Positive = discharging (battery supplying the home), negative = charging. |
| 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 operating mode reported by PowerFlow (e.g. produce-only, meter, bidirectional). |
| 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 | battery_soc | read-only | Battery state of charge (%). Reported per inverter only on hybrid units (Symo GEN24 with storage); absent on PV-only inverters. |
| zone | inverter_status | read-only | running / idle / startup / standby / bootloading / error. An unrecognized firmware status code surfaces as state_<n>. |
| zone | state | read-only | producing 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 sameGetInverterInfopayload asget_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 (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).
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
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_w/battery_power_wattributes 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=Systemand surfaces aggregated site PV power and daily/yearly/total energy, but the Load / Grid / Battery split won't be available.
Troubleshooting
| Symptom | Likely cause / fix |
|---|---|
| Device flips to offline every evening and recovers at dawn | Inverter 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 daylight | The 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 daylight | Solar API enabled but the inverter has no PV input mapped — confirm production on the inverter display first. |
| Power Flow shows Load = 0 / Grid = 0 | No Fronius Smart Meter paired. Install a meter, or accept site-aggregate readings only. |
| Per-inverter zone never updates | The 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 unexpectedly | A firmware update on the Datamanager can reset the lifetime register; the driver reports exactly what the API returns. |
Related documentation
- 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