Repository navigation
Installation and Setup
The integration reads the inverter over Modbus TCP and needs these settings on the Modbus page of the inverter's web interface (labels as the web interface shows them in English):
- Modbus Server via TCP activated, Modbus Port 502.
-
SunSpec Model Type
int + SF. Withfloatthe inverter model is not found and the setup reports that Modbus did not answer. - Inverter Address 1 and Meter Address Offset 200.
- Allow Control on, which the Modbus controls (battery modes, AC limit, power factor, inverter connection) need. Reading works without it.
- Optionally Restrict Control to Home Assistant's address, so only it may control the inverter over Modbus; reading stays open to every host.
With a Web API login the setup sets all of this itself (see Web API). Without one, set it by hand first.
Modbus TCP is unencrypted. Keep the inverter on a trusted local network and never expose port 502 to the internet.
Minimum Home Assistant version: 2026.9.0. The integration borrows its
Modbus connection from Home Assistant's own modbus integration.
HACS: in HACS, open the menu (three dots, top right) → Custom
repositories, add https://github.com/callifo/fronius_modbus with the type
Integration, open the repository in HACS, download it and restart Home
Assistant.
Manual: copy custom_components/fronius_modbus/ into the
custom_components/ directory of your Home Assistant configuration and
restart.
Then add it under Settings → Devices & services → Add integration → Fronius Modbus, or accept the card under Discovered. Add one entry per inverter.
The inverter announces itself over mDNS (_Fronius-SE-Inverter._tcp.local.),
and Home Assistant offers it under Discovered with its model name. Adding
it opens the setup with the host filled in.
- mDNS stays within one network segment. An inverter in another subnet is found only if the router repeats mDNS between them; otherwise add it by hand.
- An inverter announced with an IPv6 address only is not offered; add it by hand with its IPv4 address.
- An inverter already set up is not offered again, also when its entry uses a host name: the serial number it announces is matched against the one it reports over Modbus.
- An entry set up with an IPv4 address follows the inverter to a new address it announces: the host, a generated title and the stored Web API token move with it; a title you gave the entry stays. It moves only when the old address no longer reports the inverter's serial number over Modbus and the announced one does; an announced address that does not answer yet is read again for a few minutes. An entry set up with a host name is left as it is, since the name finds the new address itself.
Whenever the serial number cannot be read at the entry's address, even for a single failed read, a device in your network that sends mDNS and answers Modbus with the inverter's serial number could take the entry. If that is a concern, set the entry up with a host name.
| Parameter | Default | Meaning |
|---|---|---|
| Host | - | The inverter's IP address or host name. |
| Web API access role | Customer | Customer, Technician (adds the export limit control) or Without the web API (Modbus only). See Web API. |
| Update interval (seconds) | 10 | The Modbus poll. Minimum 5. |
| Grid meter power update interval (seconds, 0 = with the update interval) | 0 | Reads the primary meter's power on its own, 1 to 60 s and shorter than the update interval; 0 leaves it to the Modbus poll. See How Data Updates. |
| Web API update interval (seconds) | 60 | The Web API poll, separate from the Modbus poll. 5 to 3600. |
| Modbus IP restriction | Keep the inverter's setting | What the integration does with the inverter's Restrict Control setting whenever it writes the Modbus settings (see below). |
With a role, a second step asks for its password. The password is not stored; the integration keeps a derived token (see Web API).
If the inverter's Modbus is on and uses the float model type, the setup asks
before it switches to int + SF: an external device that reads the float
models may no longer work after the switch. Closing the dialog leaves the
inverter as it is and ends the setup.
The setup checks that the inverter answers over Modbus before it creates the entry, and refuses a device whose SunSpec common model does not name Fronius as the manufacturer. A Fronius model other than Primo GEN24, Symo GEN24, Verto or Tauro is set up, with a warning in the log that it is untested.
| Choice | What it writes |
|---|---|
| Keep the inverter's setting | Nothing: Restrict Control stays as the inverter has it. |
| Restrict control to allowed hosts and allow this Home Assistant | Switches Restrict Control on. If it was on, Home Assistant's address is added to the hosts already allowed. If it was off, every host could control the inverter, and Home Assistant's address becomes the only allowed one: add any other device that controls the inverter over Modbus, such as an energy manager, in the inverter's web interface. |
| Lift the restriction | Switches Restrict Control off: every host may control the inverter over Modbus. It stays off until you choose otherwise. |
Reading over Modbus stays open to every host either way. Without the web API nothing is written, so the choice has no effect.
Both change the settings of the setup: host, role, the intervals and the Modbus IP restriction. Both check that the inverter answers before the change is saved, and both refuse a host another entry already serves.
- Configure always offers the password step, so a stored token can be replaced; leave the password empty to keep it.
- Reconfigure asks for the password only when no stored token exists for the host and role.
A change reloads the entry. Switching an existing entry to Without the web API removes the entities that need the login; their history stays (see Web API).
-
Undo the controls you set:
Storage Control Modeto Auto,AC limit enableandPower factor controlto Disabled,Inverter connectionto Enabled, and disable the automations that drive them. The inverter keeps what was written over Modbus, with no timeout, also after the entry is gone. - Settings → Devices & services → Fronius Modbus, open the entry's menu and choose Delete. What the recorder already stored stays in its database.
- The stored Web API token for the entry's host and role is deleted with it, unless another entry still uses them.
- The Modbus settings the integration wrote on the inverter (Modbus TCP, SunSpec model type, Allow Control, Restrict Control, port and addresses) stay as they are; change them in the inverter's web interface if you no longer need them.
- For a HACS installation, remove the integration in HACS as well.