Skip to content

notDIRK/luxtronik2-hass

Repository files navigation

Luxtronik 2.0 Logo

Luxtronik 2.0 — Home Assistant Integration

Home Assistant is the primary, actively maintained way to use this project. This repository ships a HACS custom integration that talks directly to Luxtronik 2.0 heat pump controllers and exposes them as Home Assistant entities. A separate legacy Modbus TCP proxy exists as an unmaintained byproduct for users who specifically need raw Modbus access.

Home Assistant HACS Custom Python 3.10+ License: MIT

If you own a Luxtronik 2.0 heat pump from Alpha Innotec, Novelan, Buderus, Nibe, Roth, Elco, or Wolf, install the HACS integration below — it is the supported path.

Deutsche Version → README.de.md


Three Paths

This project supports three integration paths with clearly different maturity levels. Pick the one that matches your setup.

Path 1: HACS Home Assistant Integration — ✅ Supported

This is the primary use case and the only actively maintained path.

  • Install as a HACS Custom Repository pointing at https://github.com/notDIRK/luxtronik2-hass
  • Config flow UI — enter your heat pump's IP address, no YAML
  • 31+ entities exposed: temperatures, operating modes, power, status, setpoints, SG-Ready, heat quantity meters
  • Works with Home Assistant 2024.1+ (tested on 2026.4.x)
  • Python 3.12+ runtime (matches HA Core)
  • Talks directly to the heat pump via the luxtronik library — no extra services, no Modbus layer

Installation:

  1. In Home Assistant → HACS → Integrations → ⋮ menu → Custom repositories
  2. Add https://github.com/notDIRK/luxtronik2-hass with category Integration
  3. Install Luxtronik 2.0 (Home Assistant)
  4. Restart Home Assistant
  5. Settings → Devices & Services → Add Integration → search for Luxtronik 2.0
  6. Enter the IP address of your heat pump controller

Path 2: Legacy Modbus TCP Proxy — ⚠️ Experimental

Unmaintained legacy byproduct. This existed as a standalone proxy before the HACS integration. It is no longer actively maintained and lives in a separate archived repository.

Use this path only if you specifically need raw Modbus TCP access — for example to integrate with evcc or another Modbus-only tool that cannot call Home Assistant.

  • Repository: notDIRK/luxtronik2-modbus-proxy (archived, read-only)
  • Status: ⚠️ Experimental — no bug fixes, no new features, no support
  • Technology: Python proxy translating Luxtronik binary protocol (port 8889) → Modbus TCP (port 502)

If you are currently running this proxy together with the HACS integration, consider migrating fully to Path 1 — the integration covers every entity the proxy exposed and removes the single-connection bottleneck.

Path 3: Home Assistant Add-on — 📋 Planned v1.3

A first-class Home Assistant Add-on (for HA OS and Supervised installations) is planned for v1.3. It will package the integration as a supervisor add-on so users on HA OS can install it without HACS.

This path is not yet available. Track progress in the repository milestones.


Features (Path 1 — HACS Integration)

  • Read-only sensors: flow/return temperatures, outside temperature, hot water temperature, operating hours, heat quantity meters (heating, hot water, total kWh), power consumption, error states, SG-Ready status
  • Control entities: heating mode, hot water mode, SG-Ready mode, temperature setpoints
  • Bath Boost (Badebooster): on-demand hot water heating with progress tracking — details below
  • Smart Energy: Solar Boost + Night Heating Pause — details below
  • Write rate limiting to protect the controller from command floods
  • Single-connection safe: respects the Luxtronik 2.0 one-TCP-connection constraint via connect-per-call + asyncio lock
  • English + German translations built in
  • Stable entity IDs: entities use the device-name prefix luxtronik_2_0_* — they do not change if you rename the integration

Dashboard Preview

Dashboard example showing all Luxtronik 2.0 entities

Dashboard Setup

A ready-to-use dashboard YAML is included in this repository. To set it up:

  1. In Home Assistant, go to Settings → Dashboards → Add Dashboard
  2. Choose a name (e.g. "Waermepumpe") and an icon (mdi:heat-pump)
  3. Open the new dashboard → click (top right) → Edit DashboardRaw configuration editor
  4. Replace the entire content with the YAML from docs/examples/dashboard-waermepumpe.yaml
  5. Replace your-heatpump-ip in line 11 with your actual heat pump IP address
  6. Click Save, then Done

The dashboard shows operating status, temperatures, pump states, operating hours, setpoints, Smart Energy controls, and a 24-hour grid history graph — all using the stable luxtronik_2_0_* entity IDs.

Two dashboard languages are available:

Language File Description
English dashboard-heatpump-en.yaml All labels and descriptions in English
Deutsch dashboard-waermepumpe.yaml Alle Beschriftungen auf Deutsch
Bath Boost dashboard-bath-boost.yaml Standalone card with progress display (add to any dashboard)

Pick the one matching your Home Assistant language setting.


Bath Boost (Badebooster)

One button for a hot bath. Press the Bath Boost button and the heat pump immediately starts heating your hot water tank to a higher target temperature. Once reached, everything returns to normal automatically.

Quick start:

  1. Find the Badebooster button on your device page (Devices & Services > Luxtronik 2.0 > device)
  2. Press it — done. The heat pump starts heating immediately.
  3. Watch progress in the Badebooster Status sensor

How it works:

Step What happens
You press the button Hot water mode switches to "Party" (forces immediate heating) and setpoint is raised to target temperature
Heating in progress Status sensor shows "Active" with current temperature, progress %, and estimated remaining time
Target reached Mode automatically returns to "Automatic", setpoint restored to normal

Default temperatures:

Setting Default Range Where to change
Target temperature 65.0 °C 40–70 °C Settings > Luxtronik 2.0 > Configure > Bath Boost
Normal temperature 55.5 °C 30–65 °C Settings > Luxtronik 2.0 > Configure > Bath Boost

Entities created:

Entity Type Description
button.luxtronik_2_0_badebooster Button Press to start heating
sensor.luxtronik_2_0_badebooster_status Sensor Shows "Active" or "Idle" with progress attributes

The status sensor provides these attributes while active: current_temperature, target_temperature, progress_percent, estimated_remaining_minutes, activated_at.

Dashboard card: A ready-to-use dashboard card is included at docs/examples/dashboard-bath-boost.yaml. See the Dashboard Setup section for how to add cards.

Note: Bath Boost takes priority over Solar Boost. If Solar Boost is active when you press Bath Boost, your manual request wins.


Smart Energy

Two optional automation features for heat pumps with multi-layer buffer tanks and DHW (domestic hot water) heat exchangers. Both can be enabled independently via Settings → Devices & Services → Luxtronik 2.0 → Configure.

Solar Boost

Automatically raises the hot water setpoint when your solar system feeds surplus power into the grid — storing free solar energy in the buffer tank instead of exporting it.

  • Trigger: Grid feed-in exceeds a configurable threshold (default: 1500 W)
  • Action: Hot water setpoint raised from normal (default: 55.5 °C) to boost temperature (default: 65.0 °C)
  • Minimum runtime: Once activated, boost stays active for a configurable duration (default: 30 min) to prevent rapid cycling during cloud cover
  • Grid sensor convention: Positive values = consumption (buying), negative values = feed-in (selling). Example: sensor.grid_total = -2000 means 2000 W feed-in
  • Spike protection: A 60-second debounce prevents false triggers from short grid spikes (e.g. when the compressor stops and briefly causes feed-in overshoot)

Hot Water Hysteresis

Your Luxtronik controller has a WW hysteresis setting (typically 5 K) that affects when hot water heating actually starts. The controller only begins heating when the tank temperature drops below the setpoint by the hysteresis amount.

Example: With a setpoint of 55.5 °C and 5 K hysteresis, the controller will not start heating until the temperature drops to 50.5 °C (55.5 - 5.0 = 50.5).

This matters for Solar Boost because:

  • Solar Boost raises the setpoint (e.g. to 65 °C), but the heat pump will not actually start heating until the tank drops to 60 °C (with 5 K hysteresis)
  • If your tank is already at 58 °C, Solar Boost will raise the setpoint but no heating occurs — the surplus solar energy is still exported to the grid

Automatic: The integration reads the WW hysteresis value directly from the controller (parameter 74, ID_Einst_BWS_Hyst_akt) — no manual configuration needed. The sensor sensor.luxtronik_2_0_luxtronik_ww_hysteresis updates every poll cycle (default: 30s). The dashboard calculates and displays the effective start temperature automatically.

Dashboard visualization:

Symbol Meaning
🔌 Netzbezug: 1078 W Consuming from grid (positive value)
☀️ Einspeisung: 2000 W Feeding into grid (negative value)
🟢 Boost condition met Feed-in > threshold
🟡 Below threshold Feed-in present but below threshold
🔴 No solar surplus Consuming from grid

Night Heating Pause

Automatically disables floor heating during night hours to prevent the heating circuit from cooling down the buffer tank overnight. This preserves hot water for the morning — critical for systems where the floor heating and DHW share the same buffer.

  • Default window: 18:00 – 09:00 (configurable)
  • Action: Heating mode set to "Off" during the window, restored to "Automatic" outside
  • Why: In a multi-layer buffer tank with DHW heat exchanger, the floor heating loop can drain heat from the buffer overnight, leaving no hot water in the morning

Configuration

All features are configured in the integration's options flow:

  1. Settings → Devices & Services → Luxtronik 2.0 → Configure
  2. Select Solar Boost, Night Heating Pause, or Bath Boost from the menu
  3. Enable the feature and adjust thresholds/temperatures/times
  4. The dashboard shows toggle switches, grid status, and a 24-hour history graph

Smart Energy switches can also be toggled at runtime via the switch entities (switch.luxtronik_2_0_solar_boost, switch.luxtronik_2_0_night_heating_pause).

Runtime status attributes: The switches expose live runtime information as state attributes:

Switch Attribute Example Description
Solar Boost boost_active true Whether the boost is currently raising the setpoint
Solar Boost boost_activated_at 2026-04-13T09:19:06 When the system last activated the boost
Solar Boost boost_running_since 2h 15min How long the current boost has been active
Night Pause pause_active true Whether floor heating is currently paused
Night Pause pause_window 18:00 – 09:00 The configured pause time window

Heat Quantity Meters

The integration reads the Luxtronik heat quantity meters (Waermemengenzaehler) directly from the controller. These sensors are enabled by default and show the total thermal energy delivered since commissioning.

Sensor Luxtronik Index Description
sensor.luxtronik_2_0_luxtronik_heat_quantity_heating calc 151 (ID_WEB_WMZ_Heizung) Thermal energy delivered for space heating (kWh)
sensor.luxtronik_2_0_luxtronik_heat_quantity_hot_water calc 152 (ID_WEB_WMZ_Brauchwasser) Thermal energy delivered for hot water (kWh)
sensor.luxtronik_2_0_luxtronik_heat_quantity_total calc 154 (ID_WEB_WMZ_Seit) Total thermal energy since commissioning (kWh)

These values use the ENERGY device class with TOTAL_INCREASING state class, making them compatible with the HA Energy Dashboard for long-term tracking.

The dashboard includes a dedicated card showing all three meters.

Requirements

  • Home Assistant 2024.1 or newer
  • A Luxtronik 2.0 heat pump controller reachable on your LAN
  • The heat pump's IP address

Compatible Heat Pumps

Any heat pump with a Luxtronik 2.0 controller, including models from:

  • Alpha Innotec
  • Novelan
  • Buderus (selected models)
  • Nibe (selected models)
  • Roth
  • Elco
  • Wolf

If your unit predates Luxtronik 2.1 and has no firmware upgrade path, this integration is for you.

Migration from v1.1

If you previously used the old luxtronik2_modbus_proxy HACS integration (v1.1), see MIGRATION.md for the step-by-step upgrade path. Your user-visible entity IDs stay stable across the upgrade because they derive from the device-name slug, not the integration domain.

Support

License

MIT — matching the luxtronik library ecosystem.

Credits

  • luxtronik library by Bouni — the binary protocol client this integration depends on
  • The Home Assistant community