[APP][Pro] Luxtronik Heat Pump Manager – Control and monitor your Luxtronik heat pump

Hi everyone :waving_hand:

I’m excited to share my Homey app for Luxtronik-based heat pumps. If you own a heat pump from Alpha Innotec, Novelan, Buderus, Roth, Elco, Nibe, Wolf Heiztechnik or CTA — and it has a Luxtronik 2.0 / 2.1 controller — this app is for you.


:fire: What is this app?

The Luxtronik Heat Pump Manager connects your heat pump directly to Homey via the local TCP interface (port 8889). No cloud, no third-party services — everything runs locally on your network.

:point_right: Install from the Homey App Store


:thermometer: What can it do?

Read all sensor values

The app reads all values exposed by the Luxtronik controller:

  • Heat Pump State — Heating · Hot Water · Defrost · Standby · EVU Lock · Cooling · External · Off · Unknown

  • Heating Status — detailed extended state string from the controller, fully translated (EN/DE):
    Heating · No Request · Grid Startup Delay · Switching Cycle Time · EVU Lock · Hot Water · Screed Program Level X – Y °C · Defrost · Defrost (Reverse Cycle) · Air Defrost · Pump Pre-run · Thermal Disinfection · Cooling · Pool / Photovoltaic · External Heating · External Hot Water · Flow Monitoring · Electric Auxiliary Heating · DHW Reheating

  • Hot Water Status — Lock Period · Heating Up · Temperature OK · Off

  • Temperatures — Outdoor (current + 24h average) · Flow · Return (actual + target) · Hot gas · Hot water (actual + target) · Heat source in/out · Suction air* · Room temperature* (* only shown when available)

  • Energy values — Heating / Hot Water / Total (kWh)

  • Operating hours — Compressor · Heating · Hot Water · Cooling* (* only shown when cooling is enabled)

  • Volume flow — l/h

  • Error alarm — Yes/No

  • Last poll time — local time of last successful connection (24h format)

  • Firmware version

Control your heat pump

All controls write directly to the Luxtronik controller:

  • Hot Water Thermostat — set target temperature 30–65 °C, view current hot water temp

  • Heating Thermostat — set correction value −5 to +5 °C, view current flow temperature

  • Hot Water Mode — Automatic · Auxiliary · Party · Holidays · Off

  • Heating Mode — Automatic · Auxiliary · Party · Holidays · Off

Special functions

:fire: Hot Water Boost (Auxiliary Heating)

Forces immediate hot water heating using the second heat source, ignoring the time schedule:

  1. Sets hot water mode to Auxiliary

  2. Auto-stops when target temperature is reached

  3. Auto-stops after configurable maximum duration (default: 60 min)

  4. Resets to Automatic afterwards

  5. Fires Flow trigger “Hot Water Boost ended”

:fire: Hot Water Boost (Party)

Same behaviour, but uses Party mode on the controller.

:microbe: Thermal Disinfection

Enables continuous disinfection mode (parameter 27) for legionella protection:

  • Auto-stops when hot water reaches configurable target temperature (default: 65 °C)

  • Fires Flow trigger “Thermal Disinfection ended”

  • Note: Requires a second heat source (ZWE) enabled for hot water

:low_battery: Estimated Power Sensor (optional, disabled by default)
Adds a measure_power capability showing estimated electrical consumption based on the current heat pump state:

  • Enable/disable via device settings

  • Configure individual watt values per state (Heating, Hot Water, Standby, Defrost, Cooling, EVU Lock, External, Off, etc.)

  • All values default to 0 — configure for your installation before enabling

  • Updates immediately when settings are changed

  • Useful for Homey Energy and power-based Flow automations

  • Note: values are estimates, not measurements

:locked: Connection Watchdog

  • Poll timeout: No response → device immediately marked unavailable

  • Watchdog timer: Checks every minute if last successful poll was too long ago (threshold: 3× poll interval)

  • Device automatically becomes available again when connection is restored


:repeat_button: Flow Cards

12 Triggers

Trigger Description
Heating mode changed Token: new mode
Hot water mode changed Token: new mode
Heat pump state changed Token: new state
Error occurred Token: error message
Error cleared When error disappears
Hot Water Boost (Auxiliary) ended On auto-stop
Hot Water Boost (Party) ended On auto-stop
Thermal Disinfection ended On auto-stop
Device became unavailable Watchdog triggered
Device became available again Connection restored
Outdoor temperature dropped below … °C Configurable threshold
Outdoor temperature rose above … °C Configurable threshold

13 Conditions

Heating/hot water mode · Heat pump state · Heating status (free text) · Hot water status (dropdown) · Hot water temperature above/below · Outdoor temperature above/below · Thermal Disinfection active · Hot Water Boost (Auxiliary/Party) active · Device available

11 Actions

Set heating/hot water mode · Set heating correction · Set hot water target temperature (absolute or relative offset) · Start/Stop Hot Water Boost (Auxiliary) · Start/Stop Hot Water Boost (Party) · Enable/Disable Thermal Disinfection


:gear: Setup

Requirements:

  • Luxtronik 2.0 / 2.1 controller reachable on your local network

  • Static IP address (or DHCP reservation) recommended

  • Port 8889 or 8888 (TCP) must be reachable

Installation:

  1. Install the app from the Homey App Store

  2. Add device: Devices → + → Luxtronik Heat Pump Manager

  3. Enter IP address and port (default: 8889)

  4. Done — all values and controls are immediately available

add heatpump (1)

Device settings:

Setting Default Description
IP Address Luxtronik controller IP
Port 8889 TCP port
Poll interval 60 s How often values are read (min. 10 s)
Boost duration 60 min Max duration for both boost modes
Disinfection target temp. 65 °C Auto-stop temperature for thermal disinfection (60–70 °C)
Poll timeout 30 s Max wait for controller response before marking unavailable
Watchdog threshold Missed poll intervals before watchdog triggers
Watchdog check interval 60 s How often the watchdog checks for a successful poll
Power sensor disabled Enable estimated power consumption sensor
Power per state 0 W Configurable watt value per heat pump state (0–20000 W)

:factory: Compatible manufacturers

Manufacturer Example models
Alpha Innotec LW / SW / WZS series
Siemens Novelan WPR NET
Roth ThermoAura, ThermoTerra
Elco Aquatop, Aerotop
Buderus Logamatic HMC20
Nibe AP-AW10
Wolf Heiztechnik BWL / BWS
CTA Aeroheat AH CI

:warning: Important notes

Changing settings writes directly to the controller. Incorrect values can put the heat pump into an error state. Only change settings if you know what you’re doing — consult your heat pump’s manual.

  • The heating correction shifts the heating curve. Positive = warmer, negative = cooler

  • All writes are protected against immediate polling overwrite (120s write protection window)

  • The app requires Homey Pro with firmware >= 11.0.0


:robot: About this app

This app was developed entirely with the help of Claude (Anthropic AI). All code, configuration and documentation were generated and iteratively refined through AI-assisted development.

Special thanks to Robin Flikkema for his original Luxtronik Homey App which served as the foundation and inspiration for this project.

The app is open source: :point_right: GitHub – com.luxtronik.heatpump

If you find this app useful, I’d appreciate a beer: :point_right: PayPal – Support development


:speech_balloon: Feedback welcome!

I’m happy to hear from you:

  • Does it work with your heat pump model?

  • What features are missing?

  • Any bugs or unexpected behaviour?

Drop a comment below or open an issue on GitHub.

Hi Andi,

I found your app, something i was looking out for a long time. I used the previous app for luxtronik but that can only read values not setting them.

So i installed the app, adds a device but that goes wrong. It says the connection is established and the device should be created (Wärmepumpe erfolgreich hinzugefügt), but it is not.

Could the fact that the old heatpump, same ip address, is still present at homey

Hi Ronald,

Thanks for reaching out and glad you found the app!

The issue is most likely caused by the old app still being active and holding the TCP connection to the heat pump. Since both apps try to connect to the same IP address and port, they can interfere with each other during pairing.

Here’s what I’d recommend:

  1. Pause the old Luxtronik app before pairing the new one
  2. Pair the new Luxtronik Heat Pump Manager app

Please let me know if that solves the problem!

Andi

Andi,

I tried but it was not successfull. But something else I saw supprised me. The first time I tried

adding the heatpump was on my mobile, today I tried it on my laptop. The message that is was succesfull popped up, but at the same time the message that I should check the IP and port was visible .
I am sure the IP is correct, how can I check if the port is defined at the heatpump?

Hi Ronald

The luxtronik2 library actually defaults to port 8888, but the app uses 8889. Some Luxtronik controller firmware versions use one or the other. To check which port your controller is listening on, the user can run this from a terminal on the same network:

# Try port 8889 (app default)
telnet 192.168.1.106 8889

# Or try port 8888 (library default)
telnet 192.168.1.106 8888

If telnet is not available on Windows, you can use PowerShell:

Test-NetConnection -ComputerName 192.168.1.106 -Port 8889
Test-NetConnection -ComputerName 192.168.1.106 -Port 8888

A TcpTestSucceeded : True result tells them which port is open. If port 8889 fails and 8888 succeeds, they should enter 8888 in the pairing form.

Andi, the problem was fixed IP. Although the heat pump itself was at fixed IP and not DHCP, when looking at my network (Unifi) I noticed that the IP was flipping. I changed it there also at fixed IP and that was the trick.
Now the portscanner could reach te heatpump at 8889 and I now could add the heat pump to Homey without setting the old app to standby.

Thanx for the support. Now I dive in the flows:-)

I just installed it on my alpha innotec heat pump. The app looks great, thanks for the work

Looking forward to people sharing their flows here. Especially flows that help to save energy e.g. when abundant solar power is availlable

Two remarks for andi:

- in the charts there are some duplicates, e.g hot water target appears twice.

-some fields still in german

Hi, thanks for installing the app and for the kind words — great to hear it works on your Alpha Innotec! :tada:

Both issues you mentioned are already fixed and will be included in the next release: 2.0.21

Test version is ready: Luxtronik Heat Pump Manager | Homey

Duplicate charts (e.g. “Hot Water Target” appearing twice)
This was caused by two capabilities sharing the same title — one is the settable thermostat control, the other a read-only sensor. They have been renamed to clearly distinguish them:

  • “Hot Water Setpoint” → the value you can set

  • “Hot Water Target” → what the pump reports back as its current target

Fields showing in German
The status values like “Heizbetrieb” or “Aufheizen” were coming directly from the underlying luxtronik2 library, which returns German strings hardcoded in its source. The app now translates all known states to English (and keeps German for German-language users). Three Insights chart titles (Room Temperature, Room Target Temperature, Suction Air Temperature) were also still stored in German on existing devices — this is now corrected on app startup automatically.


Regarding energy-saving flows: great idea to collect those here! A few obvious starting points others might build on:

  • Switch hot water operation mode to Party when solar yield exceeds a threshold (e.g. via a power meter capability)

  • Trigger a hot water boost during peak solar hours

  • Reduce heating curve correction at night or when away

Would love to see what the community comes up with! If anyone shares a working solar-surplus flow, feel free to post it here.

I’ve added a new feature: Power‑Sensor Estimation as Luxtronik has no Sensors.

You have to enable it manually under settings and set estimated usage in Watt per state:

Thanks for your App, I like it very much.

It would be great if we could set the Cooling Mode, too.

Could you please open a issue on github for the feature request with detailed requirements?

Thank you

New features implemented: TEST Version

2.0.29
Apr 18, 2026
add estimated meter_power

2.0.28
Apr 18, 2026
fix Invalid Flow Card cooling_operation_mode_changed

2.0.27
Apr 18, 2026
Add control for cooling mode

New features implemented in 2.0.34: TEST Version

Added: Added 21 new read‑only sensor capabilities, new flow actions, reorganized device settings into 7 groups, and updated the in‑app help page.

Changed: Replaced target_temperature.tdi with tdi_target_temperature and now use the controller as the single source of truth.

Fixed: Synced all settings after each poll, blocked writes before first poll, and added _shouldWrite to prevent unintended controller writes.

2.0.35

Fixed: Room temperature (measure_temp_room) and room target temperature (measure_temp_room_target) now correctly read from the controller when an RBE room display is connected.

Thanks for the great app! This made me switch back from Home Assistant to Homey. Because I’m now able to adjust some settings and I prefer homey for the flows.

I just setup my homey self hosted instance and made connection with my alpha innotec heatpump. This was quite easy! The status is quite often Unknown? What is that status? Does that have something to do with polling? Not being able to read the status? Once I checked on the display from the heatpump it self and it was a message something like compressor is coming up in xx:xx time. So is it network related or something else so I can hopefully fix it.

Thanks for the kind words, glad the app helped you switch back to Homey!

That was the reason for me as well to build this app - I’m now also Home Assistant-free :slight_smile:

“Unknown” has nothing to do with your network or polling. The app is successfully reading data from your controller — but the controller returned a numeric status code that the app doesn’t have a label for yet, so it shows “Unknown” instead of a readable text.

The “compressor coming up in X:XX” message you saw on the display is a good clue. That’s most likely “Schaltspielzeit” (switching cycle delay) — a built-in protection that prevents the compressor from starting too frequently in a short period. The Luxtronik controller sends a specific number for this state internally, and if that number isn’t mapped in the app yet, “Unknown” appears instead of the correct label.

What you can do: Open the Homey app settings → Debug page, then check the value of heatpump_state3 (and WP_BZ_akt) at a moment when the status shows “Unknown”. Share that number here and I can add the missing mapping — after the next app update it will show the correct label instead of “Unknown”.

For reassurance: If the connection were actually broken, the device would show as “Unavailable” in Homey (greyed out) — not “Unknown”. Unknown purely means the state is readable but not yet labeled.

BR

Andi

Hi Andi,

Thank you for the quick reply.

I have been checking the debug page for the values :

heatpump_state3 : 18

WP_BZ_akt : 5

TypeHeatpump : LD7REV

Heatpump_extendet_state_string : Unknown [18]

Heatpump_state_string : Verdichter heizt auf seit 50min und 18 sekunden

Is that enough info or do you need to know more ?

I’m also curious how other users control their heatpump with homey. Any nice flows/ideas we can share with eachother. I just started but my goal is to control the Actions of the heatpump based on my solar panels and dynamic pricing in the future. At the moment i’m only monitoring.

Thanks for the debug info — that’s exactly what was needed!

State 18 = “Compressor Heating Up” (Verdichter heizt auf) — this is a warm-up phase where the compressor is preparing before starting its actual operation. The luxtronik2 library didn’t have this state mapped, which is why it showed “Unknown”. This has been fixed and will show correctly in the next app update.

After the update:

  • The heat pump state will show “Heating” (:fire:) instead of “Unknown” (:red_question_mark:) during compressor warm-up
  • The heating status text will show “Compressor Heating Up” instead of “Unknown [18]”

Regarding your solar + dynamic pricing plans — great idea! Some things you can do with the app’s flow cards:

  • Switch heating/hot water mode to “Off” or “Automatic” based on electricity price
  • Set hot water target temperature lower during expensive hours, higher during cheap/solar surplus hours
  • Use the hot water boost (auxiliary heating) to heat water quickly when solar production is high
  • Monitor the outdoor temperature conditions to anticipate heating demand

TEST 2.0.46: Luxtronik Wärmepumpen Manager | Homey