Skip to content

Marstek Venus E v3: Modbus becomes unresponsive and manual discharge resets after reconnect #477

Description

@Remueb

Affected area

Battery communication or availability

Omnibattery version

1.4.0

Home Assistant version

2026.9.2

Installation details

Battery brand and exact model: Marstek Venus E 3.0
Battery firmware version: V150
Connection method or adapter: Ethernet, Modbus TCP port 502, Slave ID 1
Number of batteries: 1
Consumption sensor and update interval: EcoTracker IR, 60 s
Installation type (single-phase or three-phase): Three-phase

What happened?

When the Marstek Venus E v3 is manually commanded through Omnibattery to Force Mode "Discharge" with a discharge power of 500 W, the battery initially discharges correctly.

After a variable amount of time, Modbus communication becomes unresponsive. Omnibattery reports multiple failed reads, marks the battery unavailable and attempts a fresh connection.

Immediately after this communication failure/reconnect, Force Mode changes from "Discharge" to "None" and the discharge setpoint changes from 500 W to 0 W. The battery then stops discharging.

The problem is reproducible and has occurred several times after different operating durations.

During a controlled test I continuously monitored network connectivity. The Venus remained reachable on the local network during the actual Modbus failure, so the event did not coincide with a general Ethernet/IP connectivity loss.

Battery Manual Mode and RS485 Control Mode remained enabled during the controlled tests.

Steps to reproduce

  1. Enable Battery Manual Mode for the Marstek Venus E v3.
  2. Ensure RS485 Control Mode is enabled.
  3. Set Force Mode to "Discharge".
  4. Set discharge power to 500 W.
  5. Do not interact with the Marstek app or change any other settings.
  6. Wait while the battery discharges normally.
  7. After a variable amount of time, observe Modbus read failures and a fresh connection attempt in the Home Assistant log.
  8. Observe that Force Mode changes to "None", discharge power changes to 0 W and the battery stops discharging.

Expected behavior

Omnibattery should maintain the manually configured Discharge mode and 500 W discharge setpoint.

If the Modbus connection temporarily fails and reconnects, the previous manual control state should either remain active on the battery or be restored after communication has recovered.

A temporary communication failure should not permanently terminate the manually requested discharge.

Relevant Home Assistant logs

[Marstek Venus 3] Critical telemetry groups failed 3 consecutive polls: [('battery_power',), ('ac_power',), ('force_mode',), ('inverter_state',)]; attempting fresh reconnection

[Marstek Venus 3] Creating fresh connection to <local IP>:502 (consecutive failures: 3)

[Marstek Venus 3] All read attempts failed - marked unavailable

[Marstek Venus 3] Failed to read ['force_mode']

No response received after 2 retries, continue with next request

Diagnostics file

No response

Additional context

Possibly related to #445, which reports similar Modbus read failures and reconnect attempts with a Marstek Venus A. However, this report concerns a Venus E 3.0 and a different recovery behavior: communication recovers, but the manually configured Force Mode "Discharge" and 500 W discharge setpoint are lost and reset to None / 0 W after the communication failure/reconnect.

Additional network testing:

During a controlled reproduction test, continuous ICMP monitoring was performed.

862 packets sent
859 packets received
3 packets lost
Average latency: 1 ms

There was no ping loss at the time of the actual Modbus/discharge failure.

TCP testing also showed that while Omnibattery is active, an additional TCP connection to port 502 cannot be established. After disabling the Omnibattery integration, repeated TCP connections to port 502 succeed immediately.

This appears consistent with the Venus E v3 allowing only one Modbus TCP client/connection.

No second Home Assistant Modbus client for the Venus is configured.

Short inverter transitions between Discharge and Standby also occur during normal operation, but these normally recover without losing the 500 W command. The permanent loss of the command correlates with the Modbus communication failure/reconnect.

Confirmations

  • I am using the latest available Omnibattery release and restarted Home Assistant after updating.
  • I searched the documentation, existing issues, and existing discussions.
  • I can reproduce this unexpected behavior; this is not a request for installation or configuration help.
  • I removed passwords, tokens, API keys, complete serial numbers, IP addresses, and other sensitive information.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingimplementedBug fixed or feature implemented

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions