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!
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?