Bridges EEBus heat pump devices to Home Assistant using MQTT discovery.
Uses the MA-MPC (Monitoring of Power Consumption) and EG-LPC (Limitation of Power Consumption) use cases from the enbility/eebus-go library.
Tested with: Vaillant VR921 (heat pump gateway).
Should work with any EEBus device that advertises HeatPumpAppliance, Compressor, or Inverter entity types.
- Discovers all EEBus devices on the local network continuously via mDNS.
- Initiates pairing with every discovered device automatically.
- Waits for the user to approve the pairing on the device side (e.g. myVaillant app).
- Publishes a Home Assistant MQTT device with sensor entities once paired.
- Forwards measurement events in real time as they arrive from the device.
- Re-publishes discovery automatically when Home Assistant restarts.
| Entity | Unit | Notes |
|---|---|---|
| Power | W | Total active power — enabled by default |
| Power L1 / L2 / L3 | W | Per-phase — disabled by default |
| Current L1 / L2 / L3 | A | Per-phase — disabled by default |
| Voltage L1 / L2 / L3 | V | Per-phase — disabled by default |
| Frequency | Hz | Grid frequency — disabled by default |
Per-phase entities can be enabled in Settings → Devices & Services → your device → Enable entity.
- Home Assistant with the Mosquitto broker addon installed and running.
- Your heat pump must support EEBus (e.g. Vaillant aroTHERM, VR921 gateway).
- The HA host and the heat pump must be on the same local network segment (mDNS/multicast must work between them).
- In Home Assistant, go to Settings → Add-ons → Add-on Store.
- Click the ⋮ menu (top right) → Repositories.
- Add the repository URL and click Add.
- Find EEBus MA-MPC Bridge in the store and click Install.
- Copy the
ha-addon/folder into your HA config directory underaddons/:/config/addons/eebus-bridge/ - In Home Assistant, go to Settings → Add-ons → Add-on Store and click ⋮ → Check for updates.
The addon will appear under Local add-ons. - Click Install.
The addon uses the Mosquitto broker automatically via mqtt:need — no MQTT credentials are required unless you use an external broker.
| Option | Default | Description |
|---|---|---|
eebus_port |
4714 |
TCP port the EEBus service listens on. Must be reachable from the heat pump. |
MQTT_HOST |
(Mosquitto) | Override MQTT broker hostname. Leave empty to use the built-in Mosquitto addon. |
MQTT_PORT |
1883 |
Override MQTT broker port. |
MQTT_USER |
(empty) | MQTT username — only needed for an external broker. |
MQTT_PWD |
(empty) | MQTT password — only needed for an external broker. |
discovery_prefix |
homeassistant |
HA MQTT discovery prefix. Change only if you customised it in the MQTT integration. |
topic_prefix |
eebus |
Prefix for all state and availability topics published by this addon. |
Pairing only needs to be done once. The certificate and trust are stored in /data/ and survive addon updates and restarts.
- Start the addon. On first run it generates a certificate and logs the local SKI:
[CERT ] NEW CERTIFICATE GENERATED [CERT ] LOCAL SKI : 3a1f... [CERT ] Add this SKI in the myVaillant app to enable pairing. - Register the SKI in your heat pump's app (e.g. myVaillant → Settings → Smart Home → EEBus → Add device). Enter the SKI shown in the logs.
- The addon logs:
[PAIR ] pairing initiated — approve on device SKI=24171f... [PAIR ] waiting for user to approve pairing on device SKI=24171f... - Approve the pairing in the app on the heat pump side.
- Once accepted, the addon publishes the device and entities to MQTT:
The device appears automatically in Settings → Devices & Services → MQTT.
[MQTT ] discovery published — 11 entities under "vr921_..."
| Topic | Retained | Description |
|---|---|---|
eebus/<ski>/state |
✅ | JSON payload with all current measurements |
eebus/<ski>/availability |
✅ | online / offline |
homeassistant/device/eebus_<ski8>/config |
✅ | MQTT discovery config (all entities) |
Example state payload:
{
"power": 1842.5
}No devices discovered
→ Confirm the heat pump and HA host are on the same network. EEBus uses mDNS (UDP multicast port 5353) — check that multicast traffic is not blocked by a managed switch or VLAN.
Pairing stuck at "waiting for user to approve"
→ Make sure you have added the addon's SKI in the heat pump app first. The heat pump initiates trust — the addon cannot force it.
remote feature not found in logs
→ SPINE feature negotiation is still in progress. This resolves itself within a few seconds of connection. If it persists, the device may not support MA-MPC.
Entities show as unavailable after HA restart
→ The addon re-publishes discovery when it receives HA's birth message on homeassistant/status. If this does not happen, restart the addon.
The TLS certificate and private key are stored at:
/data/cert.pem
/data/key.pem
These files persist across addon updates. Do not delete them — the heat pump trusts this specific certificate. If you regenerate the certificate you will need to re-pair all devices.