Skip to main content

elli-2-modbus

English | Deutsch

Python library and CLI for local control of Elli Charger 2 wallboxes over Modbus TCP. No cloud, no EEBUS, and no dependencies.

The Home Assistant integration built on it is ha-elli-2-modbus.

Supported wallboxes

Second-generation Elli wallboxes with firmware R03.004.045.121-elli or newer (the version that added the Modbus server):

  • Elli Charger Connect 2, Pro 2, Pro 2 Eichrecht
  • Volkswagen ID. Charger Connect 2 / Pro 2
  • Škoda Charger Connect 2 / Pro 2
  • CUPRA Charger 2 / Pro 2

Modbus runs alongside the Elli backend, so the Elli app, OCPP and firmware updates keep working.

Enable Modbus on the wallbox

Short version (detailed guide: docs/enable-modbus.md):

  1. Open the charger configuration in a browser at https://<IP or hostname>. Alternatively, connect to the wallbox hotspot and open https://10.0.2.1. Accept the certificate warning (Advanced → continue).
  2. Log in as Service User with the service user password from the access data card.
  3. Software update: the firmware must be R03.004.045.121 or newer.
  4. Connections → Modbus server: switch it on. Port 502, unit ID 1.
  5. Give the wallbox a fixed IP address (a DHCP reservation in your router).
  6. If something else controls the current, set Charging management → Charging settings → PV surplus charging to off.
  7. Test: elli-2-modbus status <ip>

The interface is also available in German, with the same steps: Verbindungen → Modbus-Server, Ladeverwaltung → Ladeeinstellungen.

CLI

pip install elli-2-modbus

elli-2-modbus status 192.168.1.50          # read everything
elli-2-modbus status 192.168.1.50 --json
elli-2-modbus set-current 192.168.1.50 10  # allow charging with up to 10 A
elli-2-modbus stop 192.168.1.50            # block charging
elli-2-modbus set-failsafe 192.168.1.50 0  # what happens when Modbus traffic stops
elli-2-modbus set-watchdog 192.168.1.50 30
elli-2-modbus simulate --port 5020         # simulated wallbox for testing

Without installing, from the repo: PYTHONPATH=src python3 -m elli2modbus status <ip>

Library

from elli2modbus import ElliCharger

async with ElliCharger("192.168.1.50") as charger:
    info = await charger.read_info()      # layout version, min/max current
    status = await charger.read_status()  # state, currents, voltages, power, energy, limits
    if status.vehicle_connected:
        await charger.set_current(10)     # 0.1 A resolution
    await charger.stop()

The library raises three errors: ModbusConnectionError when the wallbox cannot be reached, ModbusExceptionResponse when it rejects the request, and ValueError when a value is out of range.

Things to know

  • Watchdog: if the wallbox sees no Modbus traffic for the watchdog time (default 15 s), it falls back to the failsafe current. Poll faster than that, and set the failsafe current deliberately: 0 stops charging, 6 A or more keeps charging.
  • Maximum 16 A over Modbus for now, including the 22 kW variants. Elli has announced 32 A for a future firmware.
  • No phase switching over Modbus.
  • Register 261 can report less than you wrote, because the wallbox's internal limits take priority. status.current_limit shows the limit that is actually in effect.
  • Power is reported as apparent power (VA).

Register reference: docs/registers.md.

Development

python3 -m venv .venv && . .venv/bin/activate
pip install -e ".[test]"
pytest

The simulator only implements registers from Elli's register list. Undocumented ones (for example Heidelberg's 13, 258, 259) return Modbus exception 2, like the real device.

Not affiliated with Elli or Volkswagen Group Charging GmbH.

Metadata

Release files for elli-2-modbus 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for elli-2-modbus 0.1.0
File Size Uploaded
elli_2_modbus-0.1.0.tar.gz 17.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elli-2-modbus 0.1.0
File Interpreter ABI Platform
elli_2_modbus-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.6 kB

Release files / elli_2_modbus-0.1.0.tar.gz

Download URL elli_2_modbus-0.1.0.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
67273035120e1da8546c497c9acb705767c498a815443f5d5c37a28d67139abd
BLAKE2b-256 checksum
How to use checksums
d2028496afe79e0c4b161d8bd404bb6d98e8772e7130c4c3bde10aefff0d40f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / elli_2_modbus-0.1.0-py3-none-any.whl

Download URL elli_2_modbus-0.1.0-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3aecb5d2d15d2c63872a31a56f844cc064a4a4d6f5cfec0ca4da31fa18023c50
BLAKE2b-256 checksum
How to use checksums
18cff7a777b898936982a81d8ef670144d62248f02fefb8e237be9bf1f1789e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page