Fronius Control — control a Fronius inverter and its battery from Homey over Modbus TCP.
Solar power is worth the most when it is used, not when it is sold. This app lets Homey decide what your Fronius system does with it: charge the battery when electricity is cheap, discharge it when it is expensive, keep imports below your fuse rating, and hold production back on the hours when feeding the grid costs you money instead of paying you.
App Store:
Test version:
What it works with
- GEN24 inverters, with or without a battery. A GEN24 with a battery is added as two devices, a battery and a solar panel, so Homey Energy counts production and storage separately.
- SnapINverter models on a Datamanager 2.0: Symo, Primo and relatives. Production reading, production limiting and zero export.
- A Fronius Smart Meter is needed for anything that reacts to what passes the grid connection: peak shaving, import-capped charging, zero export.
Before you add a device
Modbus is switched off on a new Fronius inverter and no app can turn it on for you. Open the inverter’s web interface first.
GEN24, under Communication - Modbus:
- Mode: TCP Server
- SunSpec Model Type: int + SF
- Modbus Port: 502
- Meter Address Offset: 200
- Allow Control: on
- Restrict Control: off, or add Homey’s IP address
Two of those decide whether it works at all. int + SF is not what Fronius ships with, and the battery device reads a fixed set of addresses that only exist in that mode. On float you get “Modbus polling failed” and nothing else. Allow Control is what permits the inverter to accept a command instead of only answering questions.
Datamanager 2.0, under Settings - Modbus:
- Data output via Modbus: tcp
- Modbus port: 502
- Sunspec Model Type: either one, the app detects which is in use
- Inverter control via Modbus: on, if you want production or export limiting
Then add the device, enter the IP address and press Test connection. The app reads the model, serial number and power ratings out of the inverter itself, so there is nothing to look up in a datasheet. Unit ID is 1 on a GEN24. On a Datamanager it is the inverter number shown on the inverter’s own display, which is also 1 unless several inverters share one Datamanager.
What it can do
Battery: charge and discharge limits in watts, forced charge and discharge, hold (solar charge only), charging capped by grid import and by per-phase fuse size, peak shaving.
Production: production limit in watts, zero export, and handing control back to the inverter’s own export limit.
Known limits, and what is untested
- The zero-export loop has never been run against real export. It needs actual surplus to test honestly.
- Float mode is handled for SnapINverter but not for the GEN24 battery device. Use int + SF there.
- Primo is handled in the code but has never been tested against real hardware.
- Multiple Inverter Control writes to the same registers as this app. Don’t run both.
- A Fronius inverter accepts roughly two Modbus connections at a time, so another Modbus master competing for them will cause trouble.
Reports are welcome, particularly from hardware I don’t have.