Wireless M-Bus to Home Assistant via ESP32 + MQTT — distributed receivers, WebUI and auto-discovery

wmbusmeters is an excellent decoder, but the commonly used Home Assistant setup expects the radio receiver to be connected directly to the HA host.

That becomes inconvenient when meters are out of range, when the receiver needs to be placed in a basement, stairwell or garage, when USB radio sticks compete for space around the host, or when several reception points are required.

This project separates the radio receiver from the decoder:

The ESP32 is placed wherever radio reception is best and performs only the radio-side work. It publishes raw Wireless M-Bus telegrams to MQTT.

Decoding, AES keys, meter drivers and Home Assistant entity creation remain on the Home Assistant host. Multiple ESP receivers can feed the same decoder, and no USB radio device is required on the HA machine.

What it provides

LISTEN mode
Every detected meter appears in the WebUI with its manufacturer, meter ID, suggested driver and a live preview of decoded values. This works before the meter is configured and requires no YAML and no restart.

One-click meter setup
Select a detected meter, choose or confirm its driver, enter an AES key when required, and add it. Home Assistant entities are then created automatically through MQTT Discovery from the fields actually present in the decoded JSON. There are no per-driver sensor templates and no need to manually list every field in configuration.yaml. Adding a meter triggers a soft pipeline reload — the add-on itself never restarts.

SEARCH mode
In apartment buildings, dozens of meters may be visible at the same time. SEARCH mode helps identify the correct one by matching decoded values against the reading shown on the physical meter.

Pipeline dashboard
The WebUI shows the complete data path:

ESP receiver → MQTT → decoder → Home Assistant

Each stage reports live activity and its real state. A stage is not shown as healthy unless data is actually passing through it.

Self-diagnosing startup
Broker connection problems are shown as actionable messages. Invalid credentials, an unreachable broker or missing configuration are reported directly instead of leaving the interface filled with unexplained dashes.

Additional features

  • automatic detection of the Mosquitto Home Assistant add-on through Supervisor;
  • EMQX detection through a broker probe;
  • support for several ESP receivers connected to one decoder;
  • per-meter AES keys configured in the WebUI;
  • English, Polish, German, Czech and Slovak interface languages;
  • standalone Docker operation without Home Assistant;
  • decode regression tests (golden telegram fixtures) run in CI inside every built image and gate each release — covering Techem, Qundis, Kamstrup, Diehl, Apator, BMETERS, Maddalena and Integra meters.

Project links

The radio component is based on work from SzczepanLeon's ESPHome components. In this project, decoding and meter drivers are moved from the ESP firmware to the server-side add-on.

This project is not intended to replace every existing wmbusmeters setup. When a USB receiver next to the Home Assistant host already provides reliable coverage, there may be no reason to change it.

It is intended for installations where the meters are not near the HA host, several reception points are needed, or users want radio firmware and meter decoding to be updated independently.