Skip to content

2.0.0 — the panel

Latest

Choose a tag to compare

@sphings79 sphings79 released this 07 Sep 15:22

The integration now brings its own page, and it writes as well as reads.

The panel

A sidebar entry appears as soon as a battery is set up. Seven tabs, no custom cards to install — every element ships with the integration.

Overview state of charge as a double ring, the gap between the rings being the reserve; four cells that follow the direction of flow
Cells every pack's cell range on one shared axis, 112 cells on a Venus D
Packs state of charge per pack, with the discharge floor and the backup limit drawn in
Solar the MPPT inputs, and whether anything is actually connected to them
Energy day, month and lifetime side by side
Control writes: power, limits, modes, all six schedules
System device, firmware, connection, faults, limits

Behind the gear: seven colour schemes with their own light and dark versions, a light/dark override, which tab to open on, which tabs to hide, an extra decimal place, and import/export.

The panel finds its values by the register behind an entity rather than by its name, so renaming a device, moving it to another area or switching language leaves it working.

Control

Charge and discharge power, the power and SoC limits, work and forced mode, the backup and RS485 switches, all six schedules, and a confirmed restart.

Every control reads its own bounds from the entity, so the same editor is correct on a 1500 W Venus A and a 2500 W Venus D. Schedule times are converted between the HHMM the registers hold and a clock field.

A factory reset is deliberately not offered on the tab; it stays in the entity list.

New sensors

usable_energy, energy_to_full measured against a discharge floor you configure per battery, default 12 %
runtime_to_empty, runtime_to_full hours at the current power, counting only in the direction of flow
remaining_cycles, battery_health wear against the cell rating
backup_reserve_energy what sits below the floor, reachable only through the off-grid socket — Venus A and D
battery_1_voltage, battery_1_current, battery_1_cycle_count pack 1 was missing these

Fixed

  • Venus A was offered up to 2500 W for charge and discharge power and in every schedule slot. Its real limit is 1500 W.
  • A healthy battery reported a protection fault. Any non-zero MOSFET status was treated as an alarm, but the device closes one pack's MOSFETs at a time and that reading simply says which pack is working. It is now reported as exactly that.
  • Normal operation read as a fault in three more places. The pack spread warned above 5 percentage points, the pack table flagged rows more than 5 points from the median, and the overview judged the spread across the whole stack against the 100 mV limit for cells inside one pack. The device works one pack at a time, so the packs sit around ten points apart by design. Thresholds now sit above what normal working produces, and the overview reports the widest spread within a pack, which is the figure that finds a weak cell.
  • The phone scrolled sideways. The tab strip, the schedule editor and the pack columns each pushed the page instead of scrolling in their own box. Below 640 px the cell matrix writes each pack's range out instead of drawing a two-centimetre axis.
  • Three sensors had no name at all, and one registered as sensor.<device> with no suffix.

Upgrading from 1.x

Two things change underneath you.

An entity keeps the id it was registered with. If your install already has the unnamed pack 1 sensor, its display name will be right after this update but its entity id will not. Rename it, or delete it from the entity registry and restart so it is created again.

grid_standard reports lower-case states. Venus E v1/v2 only: Germany becomes germany, and so on for the rest. Home Assistant does not accept the old spelling as a translation key. An automation comparing against the old value needs adjusting; the displayed name is unchanged.

Also

  • Renamed to Marstek Modbus Suite, repository renamed to marstek-modbus-suite. Old links redirect and HACS follows the repository by id, so nothing needs reinstalling.
  • An icon of the project's own, in the sidebar and in HACS.
  • README rewritten in English and German, with per-model capability tables and a languages table. The register table moved to docs/.
  • scripts/check_translations.py asserts every entity a register map defines has a name in every catalogue, and runs in CI — a missing translation produces no error and no log line at runtime, so nothing else would catch it.
  • hassfest and the HACS validation now run on every push.