A project by qlines.net
energyhub

Concepts · Chapter 19

Local control without the cloud: Modbus, Home Assistant & evcc

Why controlling your battery and heat pump locally is worth it — and which brands make it easy or hard.

Updated: 4 min read Deutsch →

Local control without the cloud: Modbus, Home Assistant & evcc

Many PV and heat-pump systems can only be controlled through the manufacturer's app and cloud. That works — until the maker changes the app, introduces a subscription, or shuts the cloud down. Control it locally instead and you keep the reins: your own logic for dynamic electricity tariffs, PV-surplus use, no subscription, no lock-in.

This piece explains how local control works technically, and which brands make it easy or hard.

What "local control" means

Two different things hide behind the phrase:

  • Reading (monitoring): seeing generation, consumption, battery state on your own network — nearly everything does this.
  • Writing (controlling): actively commanding the inverter to charge the battery now (because power is cheap) or to hold. This is where brands diverge.

The tool for it is usually Modbus TCP — an open protocol over which a device on your home network (a Raspberry Pi, a Home Assistant server) talks to the inverter. The smart meter reports to the inverter internally; you connect only to the inverter over your LAN.

Why it matters

  • Dynamic tariff: with a tariff like Tibber or aWATTar you want to charge the battery when power is cheap and discharge when it's expensive. Doable locally, for free.
  • PV surplus: steer excess solar deliberately into the battery, heat pump, or car instead of exporting it cheaply.
  • No cloud dependency: keeps working if the maker's servers fail or a subscription appears.

evcc is the recommended open-source tool for this: it takes on the battery-manager role and handles the clean interplay of self-consumption, minimum state of charge, and tariff logic — so you don't have to program all of it yourself.

The key technical pitfall: reading AND writing at once

The moment you send the inverter commands, you become the battery manager — the inverter does what you tell it and stops running its own self-consumption logic. You then have to think about self-consumption, minimum state of charge, and a failsafe yourself (which is why evcc beats hand-coding).

And here brands differ sharply:

Fronius (GEN24 / Verto): when "inverter control via Modbus" is enabled, the manual states no Modbus participants are possible — "sending and receiving data at the same time is not possible." You must work around it: read via the Solar API (HTTP) and write via Modbus (split channels). The battery also occupies 2 Modbus participant slots.

Sungrow (SH-T series): the manual explicitly allows "a suitable third-party EMS or logger to control charging and discharging of the batteries via Modbus TCP." Reading and writing coexist; no Fronius-style mutual exclusion. The EMS defaults to self-consumption and reverts to it when idle — a clean, documented failsafe.

Brand reality for local battery control

From "easy" to "fiddly," roughly (as of 2026, for DIY control):

Victron → Sungrow ≈ SMA ≈ Sigenergy → GoodWe → Fronius → Huawei → Tesla/Enphase

Important: none of the mainstream hybrid inverters are truly "closed" — but the effort varies a lot. Sungrow and GoodWe sit at the friendly end; Fronius is the fiddliest of the common brands (because of the read/write limitation above). GoodWe also brings an official Home Assistant integration and a free HEMS, but has a smaller community than Sungrow.

The cloud-subscription issue, using Fronius as an example

Fronius's Solar.web Premium (~€36/yr, cloud) contains the "Energiekosten-Assistent" that does dynamic-tariff control automatically. The free Basic version only monitors — automated price-based charging is Premium-locked in Fronius's software.

It's not a big sum. But it shows the platform difference: GoodWe and Sigenergy deliver the same function free and locally, and evcc/Home Assistant does it for free on any inverter. The function is only "paywalled" within Fronius's own software.

Practical recommendations

  • If you genuinely want to control locally, the inverter platform is a real selection criterion — not just price and battery size.
  • Check the evcc compatibility page for the exact model at the time of installation.
  • Have the installer confirm they'll enable Modbus control (some brands need an installer account for this) and that the warranty stays intact with local Modbus use.
  • Test the failsafe: pull the network cable to the Pi mid-charge and watch whether the inverter reverts cleanly to its internal behaviour.

Bottom line

Local control without the cloud is possible, free, and for many people the real goal — but how easily it works depends heavily on the brand. If "my own algorithm, local, no compromise" matters to you, choose the platform for it. Sungrow is currently the most open of the common options, GoodWe a good alternative with a free HEMS, Fronius workable but fiddly.

Brand behaviour and software support change with firmware updates — verify the details for your specific model at the time of purchase.

In this section