Marstek Venus e3 via Home Assistant: Forced discharge commands do not seem to work

Hi everyone,

I’m trying to control a Marstek Venus (Modbus over tcp/ip with Home Assistant integration) and I’m running into an issue where the battery accepts the commands but does not actually execute them.
I used the modbus from GitHub - ViperRNMC/marstek_venus_modbus · GitHub
Goal:
I want the Marstek battery to start discharging when:

  • SolarEdge battery SOC ≤ 10%
  • Grid consumption (P1 meter) > 250W

What works:
Home Assistant automations are triggered correctly and all values are being written successfully:

  • select.marstek_venus_modbus_gebruikersmodus → set to manual
  • select.marstek_venus_modbus_geforceerde_modus → set to discharge
  • number.marstek_venus_modbus_forceer_ontlaadvermogen → dynamically set (e.g. 300–800W)

Automation trace shows no errors , everything executes fine.


The problem:
Even though all values are updated, the battery does nothing :

  • AC power = 0 W
  • Battery current = 0 A
  • Battery power = 0 W
  • Status remains effectively standby

So the commands are not shown in the app altough the modbus device is changing values, but the battery does not start discharging.


Important detail:
When I change these values manually in Home Assistant (same entities), I get the exact same behavior → values change, but no actual discharge happens.

Can someone please shine a light on this?
Help will be much apreciated!

Here you can see the values that the modbus device accepted in HA

I have a Venus C which is using similar or same software. Did you set RS485 Bedrifsmodus On before setting the discharge power?

I have the same issue with the same battery and modbus integration, even when setting the RS485 mode to on, and setting the battery to stop.

Initialy the command gets accepted, but after some time the settings are overruled by Marstek themselves (or so it seems).

I opened a case at Marstek to see what’s going on.

Hi all I had the same issue.

You need to first issue the command (like force charge). Next you need to enable RS485 control mode. So not the other way around which I know would make more sense, but if you do that it gets overruled and control mode gets disabled again.

RS485 control mode entity is disabled by default so you need to enable it first.

Hi, could anyone confirm @Martijnk 's answer? I’m looking into a battery for optimisation my dynamic tariffs and it seems a lot of issues with the Marstek api’s. I heard the modbus tcp is the most reliable but if there’s even issues with this integration I’m in doubt to go with the Marstek Venus e3. Did you guys got to solve it by disabling RS485 control mode afterwards?