Writing a component for Luxtronik Heatpumps

Hi Bouni, I would like to write some basic features. Only the options that can be set by the user, so not the settings after the installation code. In this way, the user can’t destroy anything.

For example.

  • Enable/Disable hot water, cooling, heating.
  • Setpoint for the thermostat
  • Setpoint hot water temperature
1 Like

binary_sensor:
image

sensors.yaml



@Ruald That was my plan, too. Seems legit and if somebody wants to have more options its easy enough to extend that.

@Kabala Thank you very much for sharing your config!

Can you share this code in text? I would like to use some of it’s code. I’ve some custom code as well which I also share. Thanks.

history_graph:
  gr1:
      name: Warmtepomp grafiek
  entities:
    - sensor.luxtronik_id_web_temperatur_tvl
    - sensor.luxtronik_id_web_temperatur_ta
    - sensor.luxtronik_id_web_rbe_rt_ist
   hours_to_show: 96
   refresh: 60
  • platform: template
    #Warmtepomp
    comfort_print:
    friendly_name: Comfort print aanwezig
    value_template: ‘{ “{0:,.0s}”.format((states(“sensor.luxtronik_id_web_comfort_exists”)}’

    wmz_heizung:
      friendly_name: Verwarming
      value_template: '{{ ((states("sensor.luxtronik_id_web_wmz_heizung")| int) ) | round(0) }}'
      unit_of_measurement: 'kWh'
    
    wmz_brauchwasser:
      friendly_name: Tapwater
      value_template: '{{ ((states("sensor.luxtronik_id_web_wmz_brauchwasser")| int) ) | round(0) }}'
      unit_of_measurement: 'kWh'
    
    wmz_zeit:
      friendly_name: Totaal
      value_template: '{{ ((states("sensor.luxtronik_id_web_wmz_zeit")| int)) | round(0) }}'
      unit_of_measurement: 'kWh'
      
    betrzeitwp_uren: 
      value_template: '{{ ((states("sensor.luxtronik_id_web_zaehler_betrzeitwp")| int) / 3600) | round(0) }}'
      friendly_name: 'Bedrijfsuren compressor'
    
    zaehler_betrzeitkue:
      value_template: '{{ ((states("sensor.luxtronik_id_web_zaehler_betrzeitkue")| int) / 3600) | round(0) }}'
      friendly_name: Bedrijfsuren koeling      
    
    zaehler_betrzeitbw:
      value_template: '{{ ((states("sensor.luxtronik_id_web_zaehler_betrzeitbw")| int) / 3600) | round(0) }}'
      friendly_name: Bedrijfsuren warm water
    
    zaehler_betrzeithz:
      value_template: '{{ ((states("sensor.luxtronik_id_web_zaehler_betrzeithz")| int) / 3600) | round(0) }}'
      friendly_name: Bedrijfsuren verwarming
    
    zaehler_wpein_akt: 
      value_template: '{{ ((states("sensor.luxtronik_id_web_time_wpein_akt")| int) / 3600) | round(0) }}'
      friendly_name: 'Warmtepomp loopt sinds'
    
    zaehler_lgs_akt: 
      value_template: '{{ ((states("sensor.luxtronik_id_web_time_lgs_akt")| int) / 3600) | round(0) }}'
      friendly_name: 'Thermische desinfectie sinds'
      
    warmtepomp_compressor_frequentie:
      value_template: '{{ states("sensor.luxtronik_id_web_freq_vd")|float * 10 }}'
      friendly_name: 'Compressor frequentie'
      unit_of_measurement: 'Hz'
      
    warmtepomp_regelsignaal_circulatiepomp:
      value_template: '{{ states("sensor.luxtronik_id_web_hzio_pwm")|float * 10 }}'
      friendly_name: 'Regelsignaal circulatiepomp'
      unit_of_measurement: '%'
    

@Kabala Would you also share you LovelaceUI file? I love the style of your UI.

Especially since the Alpha Innotec app won’t work over VPN.






Thanks for sharing. Could you also show the type of cards you use? This are not the default Entity cards.

Dear @Bouni, I have experienced a problem with the status of the heat pump since the mode has been set to cooling. The operational status parameter is ‘ID_WEB_WP_BZ_akt’. Thats works for the status Heating, hot water but when the pump is cooling that parameter says “No request”. I’m 100% sure that the pump is cooling. I can ensure that by watching the the temperatures in and out AND the status on the RBE that says cooling.

Are there more people with this problem or am I the only one?

Hi @Ruald,

I cannot very at the moment because mine is not yet set to cooling but I will do that in a few days (not at home at the moment).
As soon as I’ve done that, I’ll check what we can do to show the status while in cooling mode.

1 Like

After hours of trying to make this beautiful component work I have go give up. Maybe somebody can help me? I’m running 0.89.2 in production and also tested it on 0.94.1. I downloaded the directory here https://github.com/Bouni/Home-Assistant-Luxtronik and copied it into my custom_components directory. I also copied the “all requirements” text file from Bouni’s repository into my configuration directory. Unfortunately both versions show me the following errors:

Traceback (most recent call last):
File “/srv/homeassistant/lib/python3.6/site-packages/homeassistant/setup.py”, line 154, in _async_setup_component
component.setup, hass, processed_config) # type: ignore
File “/usr/local/lib/python3.6/concurrent/futures/thread.py”, line 56, in run
result = self.fn(*self.args, **self.kwargs)
File “/home/hass/homeassistant/custom_components/luxtronik/init.py”, line 40, in setup
conf = config[DOMAIN]
KeyError: ‘luxtronik’

Thank you very much!
Markus

I have this in my configuration:

luxtronik:
host: "10.50.2.160"
port: 8889

It looks like the setup of the component is not sucessfully, can you remove the custom component and start over? Line 40 is part of the initialization.

I removed the luxtronik folder in custom_components and replaced it by the folder that I downloaded from Bouni’s github site. I also configured the sensor + binary_sensor as per the example provided. Now the error message changes. When checking the configuration (in configuration validation), I immediately get the following message:

Platform not found: binary_sensor.luxtronik
Platform not found: sensor.luxtronik

When starting homeassistant, I get the following error in the log:

Unable to find platform luxtronik. Search path was limited to path of component: custom_components

I feel like I’m doing something terribly wrong, but what?

Thanks for your help!

I don’t know HASS but the custom_components map with the component cannot be found, must be a configuration error in the path.

Guys, thanks for your help. Something amazing happened. After erasing my entire homeassistant database and restarting HASS, all of a sudden the component loaded as supposed. It works. Thanks!!!

Hi @Ruald and @Bouni,

With regards to ID_WEB_WP_BZ_akt not showing as cooling: I’ve got exactly that and therefore will probably switch to ID_WEB_HauptMenuStatus_Zeile3 for status monitoring. Will still have to see when these two differ.

In my previous scripted code I used ID_WEB_WP_BZ_akt by default for status, but when it was set to “no request” (5) I checked if ID_WEB_HauptMenuStatus_Zeile3 was set to 10 and then gave back the status value “cooling” instead of “no request”.

For some reason the pumps firmware never sets ID_WEB_WP_BZ_akt to “cooling” (7).

Sorry guys for not looking into this issue, I’m very busy at the moment.

If you take a look at the lookup table of the luxtronik module the heat pump should switch to cooling (value 7).
This knowledge comes from reverse engeneering the sources, but to be honest, it’s quite a mess.
So I would wonder if the value 7 is actually never used and they use other values for cooling.

I really need to reverse engeneer the AlphaApp to see what values are the best to use.
As of now I can say for sure that they use the same binary protocoll for the App if the phone is in the same network.

Hopefully I find the time to do so soon …

afbeelding

sensor.luxtronik_id_web_hauptmenustatus_zeile3

@Ruald @Bouni @hhermsen

Nope that is not te actual status. Look at my zeile 1,2 and 3.

Zeile3 says heating, but my heatpump isn’t heating since march 2019.

The Akt entity says no request, but the heatpump is cooling for several days.

Damm good point. I’ve look into the AlphaApp and when I check the Cooling status, I also got the status ‘No request’. So that’s the explanation about this problem. I will contact my installer and importer (Nathan) about this problem.