Is there any interest in a Stiebel Eltron climate platform?

Thanks @fucm, I have got a fair bit working on pystiebeleltron/pystiebeleltron.py
https://github.com/fucm/python-stiebel-eltron/compare/master...cool2bdave:master.

I can read quite a few of the registers. There is quite a bit to do to provide support for all the registers and then to make it tidy.

I made much faster progress with the Node-Red option, which can also read modbus. Maybe I will get Node-Red running so at least I am capturing and storing the data and do the pystiebeleltron in the background. Thanks for all the work that you have done so far.

Thanks for the feedback!

I know this is a very old post, but if someone else is also trying to use the standard modbus platform to integrate his Stiebel Eltron heat pump I wanted to say that it is totally possible. Iā€™m able to read/write all registries and can control temperature and operation modes with the input number and input select integration.

Of course a ready to use integration like @cool2bdave is aiming for is still easier to use but I didnā€™t want to wait for my specific heat pump model to be available and it wasnā€™t that much of an effort to add all sensors/inputs.

I do have more to add to my fork and do plan to get back to it.
I managed to get the node-red English web page scraping working well. I have it here: https://github.com/cool2bdave/node-red

Hi Hannes,

I am new to HA and would like to monitor some data from my Tecalor heat pump (model TTC 05) with HA. Can you please give me a hint (or link) how to get started?

I read this thread and checked https://www.stiebel-eltron.ch/de/home/service/smart-home/modbus.html, but it seems my heat pump is not officially supported by Stiebel.

Hey @tony124,

seems your model isnā€™t listed in the list of compatible devices :confused:

On the other hand the WPF models from Stiebel Eltron are supported (afaik TTC 05 seems to be the counterpart to the WPF versions). My Tecalor THZ 504 is also just a rebranded Stiebel Eltron LWZ 504. Maybe you can find out what Stiebel Eltron model is the same as the Tecalor TTC 05.

First thing you need is a ISG Web with Modbus enabled. Modbus comes free since ISG Web > 10.0.1. You got this up and running?

thanks @nipplers for the quick and helpful reply.

I took a close look, it seems for ISG I have this:

HAUPTVERSIONSNUMMER 1
NEBENVERSIONSNUMMER 1
REVISIONSNUMMER 0
WPM 3i
SOFTWAREVERSION 8

so it seems I donā€™t have Modbus. I have sent an email to Stiebel Eltron to ask how to purchase and activate it.

If the Modbus method is not possible, can I use the Scrape sensor to pull the data from ISG?

1 Like

You have to register to the portal to update or ask a stiebel service worker to update it on site. See here: https://www.stiebel-eltron.de/content/dam/ste/de/downloads/2020_08_ISG_Update_und_Portalanmeldung.pdf

Regarding scraping I have no clue but as you have a ISG Web you of course can also scrape the website using the node red solutions in this thread.

I got a reply from Stiebel:

Auswahl Bestellnummer Produkt Preis Brutto (inkl. der gesetzl. Umsatzsteuer)
233236 EMI Energiemanagement Interface: 95,20 ā‚¬
190377 KNX IP Software (tecalor): 420,07 ā‚¬

I checked the manual for the above items, no mention of modbus TCP anywhere.

I donā€™t need to control the heat pump from HA, just want to collect data. Therefore I will try the scrape route first.

Hi all

I did push a new version to my node-red repo. It includes the mentioned MQTT discovery of home assistant, which really eases the setup pain in HA. You get a proper device, which can be assigned to areas, etc.

Is anyone interested in taking over the ownership of the pystiebeleltron package, resp. the HA Stiebel Eltron component? I canā€™t maintain it anymore, because I did loose the modbus support in the ISG.

I am trying to go with the node-red route by @fucm, but get stuck at this:

my ISG has username/password authentication enabled. I was trying to make the Node-Red http request node talking to http://IP-ADDR-OF-HEAT-PUMP/?s=1,0 using various auth types, but cannot get it work. Any idea what I am missing or should try?

An idea would be factory-reset of ISG, but Iā€™d prefer to have auth enabled (and also afraid of the unknown consequence of a factory-reset).

Hi @tony124,
I did enable my user/pass protection on my ISG and tried to get node-red to login into the ISG. I gave up, after 1.5h trying and did a reset. Itā€™s using some sort of form login which sends a POST HTTP request with the following content ā€œmake=send&user=username&pass=passwordā€

Please let me know, if anyone has an idea how this is working with the ISG. I could integrate it into the flow.

1 Like

thank you @fucm for your help.

I also tried the MultiScrape sensor, but itā€™s not any better ā€“ cannot get pass the login page.

It seems disabling auth is the easiest way, but it is too risky to me: any device in my LAN can change the heat pump settings and might cause some serious damage, either by user mistake, or some unwanted malware.

I made some progress:

  • added a function node to prepare data for user auth: https://imgur.com/QUsUgKE
  • change the method to POST in node ā€œGet INFOā€

the content of the function node looks as follows:

msg.headers={ 
    'Content-Type': 'application/x-www-form-urlencoded'
};
msg.payload = {};
msg.payload={ 
    'user': 'some-user',
    'pass': 'some-pass'
};
return msg;

after that it seems node red can fetch the data from ServiceWelt. I got only 1 value parsed at the moment, it seems I need to adapt the nodes to match the content of my ServiceWelt page.

Modbus is free for a while now.
I integrated modbus completely in another Smarthome solution.
It also Supports to write Registers (hence Control the hatpump) and also Support Energy mgmt. (Hence eg Put the heatpump on boost Mode when solar Energy is there)
But I am new to HA and would need to learn how I Transfer My Integration to the Home Assistent world
My old solution

Hello Hannes,

may I ask you to provide the corresponding code section of your home assistant configuration.yaml ?

Thank you and best regards,
Jo

Hi Jo,

sure. Hereā€™s my modus section:

modbus:
  type: tcp
  host: 192.168.0.20
  port: 502

and here are my registers/sensors:

#
# The modbus sensor allows you to gather data from Modbus registers.
#
# https://www.home-assistant.io/integrations/sensor.modbus/
#
platform: modbus
registers:
  #############################
  ###  Raumtemperatur
  #############################
  - name:                'LWZ RAUMISTTEMP-HK1'
    slave:               1
    register:            1
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ RAUMTEMP-TAG'
    slave:               1
    register:            1001
    register_type:       holding
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  #############################
  ###  Heizen
  #############################
  - name:                'LWZ BETRIEBSART'
    slave:               1
    register:            1000
    register_type:       holding

  - name:                'LWZ AUSSENTEMPERATUR'
    slave:               1
    register:            6
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ ISTWERT-HK1'
    slave:               1
    register:            7
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ SOLLWERT-HK1'
    slave:               1
    register:            8
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ VORLAUFTEMP'
    slave:               1
    register:            11
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ RUECKLAUFTEMP'
    slave:               1
    register:            12
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ DRUCK-HEIZKREIS'
    slave:               1
    register:            13
    register_type:       input
    unit_of_measurement: bar
    device_class:        pressure
    scale:               0.1
    precision:           1

  - name:                'LWZ VOLUMENSTROM'
    slave:               1
    register:            14
    register_type:       input
    unit_of_measurement: l/min
    scale:               0.1
    precision:           1

  #############################
  ###  Warmwasser
  #############################
  - name:                'LWZ WW-ISTTEMP'
    slave:               1
    register:            15
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ WW-SOLLTEMP'
    slave:               1
    register:            16
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ WW-SOLL-TAG'
    slave:               1
    register:            1011
    register_type:       holding
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  #############################
  ###  LĆ¼ften
  #############################
  - name:                'LWZ ZULUFT-IST-LUEFTERDREHZAHL'
    slave:               1
    register:            17
    register_type:       input
    unit_of_measurement: Hz

  - name:                'LWZ ZULUFT-SOLL-VOLUMENSTROM'
    slave:               1
    register:            18
    register_type:       input
    unit_of_measurement: mĀ³/h

  - name:                'LWZ ABLUFT-IST-LUEFTERDREHZAHL'
    slave:               1
    register:            19
    register_type:       input
    unit_of_measurement: Hz

  - name:                'LWZ ABLUFT-SOLL-VOLUMENSTROM'
    slave:               1
    register:            20
    register_type:       input
    unit_of_measurement: mĀ³/h

  - name:                'LWZ ABLUFTFEUCHTE'
    slave:               1
    register:            21
    register_type:       input
    unit_of_measurement: '%'
    device_class:        humidity

  - name:                'LWZ ABLUFTTEMPERATUR'
    slave:               1
    register:            22
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ ABLUFTTAUPUNKT'
    slave:               1
    register:            23
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ STUFE-TAG'
    slave:               1
    register:            1017
    register_type:       holding

  - name:                'LWZ STUFE-NACHT'
    slave:               1
    register:            1018
    register_type:       holding

  #############################
  ###  Prozesswerte
  #############################
  - name:                'LWZ HEISSGASTEMP'
    slave:               1
    register:            27
    register_type:       input
    unit_of_measurement: Ā°C
    device_class:        temperature
    scale:               0.1
    precision:           1

  - name:                'LWZ HOCHDRUCK'
    slave:               1
    register:            28
    register_type:       input
    unit_of_measurement: bar
    device_class:        pressure
    scale:               0.01
    precision:           2

  - name:                'LWZ NIEDERDRUCK'
    slave:               1
    register:            29
    register_type:       input
    unit_of_measurement: bar
    device_class:        pressure
    scale:               0.01
    precision:           2

  #############################
  ###  WƤrmemenge
  #############################
  - name:                'LWZ WM-HEIZEN-TAG'
    slave:               1
    register:            3000
    register_type:       input
    unit_of_measurement: kWh

  - name:                'LWZ WM-HEIZEN-SUMME MWh'
    slave:               1
    register:            3002
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ WM-HEIZEN-SUMME kWh'
    slave:               1
    register:            3001
    register_type:       input
    unit_of_measurement: kWh

  - name:                'LWZ WM-WW-TAG'
    slave:               1
    register:            3003
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ WM-WW-SUMME MWh'
    slave:               1
    register:            3005
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ WM-WW-SUMME kWh'
    slave:               1
    register:            3004
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ WM-NE-HEIZEN-SUMME mWh'
    slave:               1
    register:            3007
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ WM-NE-HEIZEN-SUMME kWh'
    slave:               1
    register:            3006
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ WM-NE-WW-SUMME MWh'
    slave:               1
    register:            3009
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ WM-NE-WW-SUMME kWh'
    slave:               1
    register:            3008
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ WM-WRG-TAG'
    slave:               1
    register:            3010
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ WM-WRG-SUMME MWh'
    slave:               1
    register:            3012
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ WM-WRG-SUMME kWh'
    slave:               1
    register:            3011
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  #############################
  ###  Leistungsaufnahme
  #############################
  - name:                'LWZ P-HEIZUNG-TAG'
    slave:               1
    register:            3021
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ P-HEIZUNG-SUMME MWh'
    slave:               1
    register:            3023
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ P-HEIZUNG-SUMME kWh'
    slave:               1
    register:            3022
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ P-WW-TAG'
    slave:               1
    register:            3024
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  - name:                'LWZ P-WW-SUMME MWh'
    slave:               1
    register:            3026
    register_type:       input
    unit_of_measurement: MWh
    device_class:        power

  - name:                'LWZ P-WW-SUMME kWh'
    slave:               1
    register:            3025
    register_type:       input
    unit_of_measurement: kWh
    device_class:        power

  #############################
  ###  Laufzeiten
  #############################
  - name:                'LWZ VERDICHTER-HEIZEN'
    slave:               1
    register:            3027
    register_type:       input
    unit_of_measurement: h

  - name:                'LWZ VERDICHTER-WW'
    slave:               1
    register:            3029
    register_type:       input
    unit_of_measurement: h

  - name:                'LWZ ELEKTR-NE-HEIZEN'
    slave:               1
    register:            3030
    register_type:       input
    unit_of_measurement: h

  - name:                'LWZ ELEKTR-NE-WW'
    slave:               1
    register:            3031
    register_type:       input
    unit_of_measurement: h

I then use inputs and automation scripts to display and control room temerature, water temperature, global LWZ mode or ventilation like in this screen:

1 Like

hmm,t his a hard one to manage. We do have a WPL15ACS Heatpump + ISG, modbus enabeld.

what can we try to get this working

This works for me as well, thank you! I only had to change register to address and register_type to input_type.

Always happy to help :slight_smile:

The naming change came with Release 2021.7.4 and Iā€™m still running 2021.2.3.
As much as I like the frequent updates, fixes and features added to HASS, itā€™s sometimes hard to keep track of all the changes. Also breaking changes like this are hard to recognize when not reading EVERY changelogā€¦