Omnibattery — one integration for pluggable solar batteries (Marstek, Zendure, and more)
Repo: GitHub - ffunes/Omnibattery: Custom integration to monitor and control Marstek Venus and Zendure batteries in Home Assistant. · GitHub
Docs: Omnibattery
Omnibattery is the continuation of Marstek Venus Energy Manager. Same author, same
codebase lineage, now multi-brand — so the name had to go. Everything the old integration
did, it still does; it just isn’t Marstek-only anymore.
Supported hardware
- Marstek Venus E (v2/v3), Venus C, Venus D, Venus A — Modbus TCP, Modbus RTU/serial,
or via the LilyGo RS485 / ESPHome bridge - Zendure SolarFlow 2400 AC+ / 2400 Pro — local HTTP API, no cloud
You can mix brands in the same install and they share one control loop, one dashboard
and one set of sensors.
What it does
- Zero import/export PD controller — keeps grid exchange near zero. One-click tuning
profiles (very smooth → very aggressive) plus a control-quality sensor that tells you if
it’s stable, oscillating or sluggish, so you don’t have to hand-tune gains. - Integrated dashboard — its own sidebar panel: all controls, graphs and a power-flow
diagram. No YAML, no card hunting. - Multi-battery — up to 6, with SOC-based priority and load sharing.
- Predictive grid charging — charges from the grid only when tomorrow’s forecast +
current SOC won’t cover your consumption. Fixed slots, dynamic pricing, or real-time
pricing (Nordpool, Tibber via service call, and other price sensors). - Time slots — per-battery windows with independent charge/discharge, SOC and power
overrides, and a manual fixed-power mode. - Peak shaving, load exclusion (mask your EV charger so the battery doesn’t chase
it), weekly full charge for LFP balancing, solar-aware charge delay, and
temperature-based charge derating.
Everything is local polling. No cloud for either brand.
Install
HACS → Custom repositories → https://github.com/ffunes/omnibattery (type: Integration),
install, restart.
Coming from Marstek Venus Energy Manager?
Nothing is lost. Configuration, entity IDs (they stay marstek_venus_*), recorder
history, long-term statistics, dashboards and automations all survive the move.
HACS cannot rename an integration’s domain in place, so this is a migrate-across, not an
in-place update. The important part:
Update the old integration to v2.0.6 FIRST, and restart. That release writes a
recovery snapshot of your whole configuration to.storagethat survives the domain
switch. Skip it and you may have to reconfigure from scratch.
Then install Omnibattery, restart, and go to Settings → Devices & Services → Add
Integration → Omnibattery. It detects your old config and offers to migrate it — confirm,
then Ctrl+F5 to reload the panel. Full step-by-step (including recovery if you already
deleted the old integration) is in the README.
Take a Home Assistant backup before you start anyway.
Support is on GitHub, not here
Please open an issue: Issues · ffunes/Omnibattery · GitHub
I’m not being unfriendly — the forum is simply a bad support tool. Threads interleave,
posts get buried, there’s no state, no labels, no “is this fixed yet”, and I have no
reliable way to tell an open bug from one that was answered 200 posts ago. Bug reports and
feature requests posted here will get lost, and that’s worse for you than being told
where to go.
An issue gets tracked, labelled, linked to the commit that fixes it, and closed. It also
means the next person with your problem can find the answer.
Bug? → GitHub issue, with diagnostics + debug logs attached
Feature idea? → GitHub discussion
“Does it support X?” / general chat → the forum is fine for that
Disclaimer: this software talks to Modbus registers on high-voltage battery systems and
is provided as-is, no warranty. Use at your own risk — see the README.







