Weishaupt Heatpump integration via modbus

This might be the issue, I haven’t seen a real solution.

then I seem to be the lucky one for whom sungrow and Weishaupt work.

1 Like

As I understand it, some changes have been made to the Modbus transmission in the new versions, as a result of which the Weishaupt integration no longer works! Does anyone have any idea how or where to contact the developers to find a solution? Thank you

thank you Andi1234, I tried the new Version, unfortunately the same problems

Thank you, may we ask how he solved the issue?
I have the same NWPM module with 502 port open, but no data out.
Thanks once more.

Check my aproach here: Dimplex HeatPump LS 8 AS + NWPM Integration using MODBUS TCP

Weishaupt WAB 8 mit Weishaupt WTC 15-A

Nice ! well done -

@Adrewyew - this is exactly how I implemented my “SG ready” - with a home assistant automation I increase the WW temperature +C when there is excess sun capacity. Every two weeks I also do set it to 60 Celsius if I have extra energy to kill of legionella.

Works very nice - without any HW wiring needed :wink:

Has anyone installed the new version 2024.5.0 and checked whether it solves the problem?

I have tested version 2024.5.0. Unfortunately, as with the other versions, all data is displayed for approx. 5-10 seconds after the start, then it disappears.

currently i updated my Microsoft Hyper-V testsystem to 2024.5.1 modbus is still working.

Here´s the solution :smiley:

copy your yaml to my MS Hyper-V 2024.5.1 testsystem, your yaml is not working.

your “climate:” is not working, remove it and try again - see below. I thinks it´s not allowed to use the same address for current temp and target temp.
I fixed the code - see below. The issue was that slave: 1 was missing at the climate

after a change you need to restart HA, only reload modbus is not working.

your welcome :wink:

- name: wpump
  type: tcp
  host: 192.168.1.232
  port: 502
  climates:
      - name: "WP_Warmwasser"
        slave: 1
        address: 42103
        input_type: holding
        data_type: int16
        max_temp: 50
        min_temp: 15
        offset: 0
        precision: 1
        scale: 0.1
        target_temp_register: 42103
        temp_step: 1
        temperature_unit: C
  sensors:
    #Warmwasser
    - name: WP_Warmwassersolltemperatur
      slave: 1
      address: 32101
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
      unique_id: wpump.wwsolltemp
    - name: WP_Warmwassertemperatur
      slave: 1
      address: 32102
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
      unique_id: wpump.wwtemp
    - name: "WP_WarmwasserPush"
      slave: 1
      address: 42102
      input_type: holding
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    #System
    - name: WP_Betrieb
      slave: 1
      address: 30006
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
      unique_id: wpump.betrieb
    - name: WP_Stoerungsfrei
      slave: 1
      address: 30005
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    - name: WP_Fehlercode
      slave: 1
      address: 30003
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    - name: WP_warnungscode
      slave: 1
      address: 30004
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    - name: WP_Außentemperatur
      slave: 1
      address: 30001
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
    #Waermepumpe
    - name: WP_Leistungsanforderung
      slave: 1
      address: 33103
      input_type: input
      unit_of_measurement: "%"
      state_class: measurement
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WP_Vorlauftemperatur
      slave: 1
      address: 33104
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
    - name: WP_Rücklauftemperatur
      slave: 1
      address: 33105
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
    #Heizkreis
    - name: WP_Raumsolltemperatur
      slave: 1
      address: 31101
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
    - name: WP_Vorlaufsolltemperatur
      slave: 1
      address: 31104
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
    - name: WP_Heizkurve
      slave: 1
      address: 41108
      input_type: holding
      state_class: measurement
      scale: 0.01
      offset: 0
      precision: 2
      data_type: int16
    # 2. WEZ
    - name: WP_E1_Status
      slave: 1
      address: 34104
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    - name: WP_E2_Status
      slave: 1
      address: 34105
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    - name: WP_E1_Stunden
      slave: 1
      address: 34106
      input_type: input
      unit_of_measurement: h
      state_class: measurement
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    - name: WP_E2_Stunden
      slave: 1
      address: 34107
      input_type: input
      unit_of_measurement: h
      state_class: measurement
      scale: 1
      offset: 0
      precision: 0
      data_type: int16
    #Stats
    - name: WPST_Gesamt_Tag
      slave: 1
      address: 36101
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Gesamt_Monat
      slave: 1
      address: 36103
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Heizen_Tag
      slave: 1
      address: 36201
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Heizen_Monat
      slave: 1
      address: 36203
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_WW_Tag
      slave: 1
      address: 36301
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_WW_Monat
      slave: 1
      address: 36303
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Kuehlen_Tag
      slave: 1
      address: 36401
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Kuehlen_Monat
      slave: 1
      address: 36403
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Elektrisch_Tag
      slave: 1
      address: 36701
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Elektrisch_Monat
      slave: 1
      address: 36703
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16

Unfortunately, it doesn’t work with the 2024.5.1 update either. The information is displayed for approx. 10 seconds, after which unavailable appears.

english below…

hat von euch schonmal jemand darüber nachgedacht, dass man bei SG ready die Wärmepumpe auf 2. WEZ (Heizstab) umschaltet?
Pro: Heizstab zu nutzen und nicht den Verdichter anzuschmeißen und somit die Taktungen zu reduzieren.
Contra: Der Strompreis von ~0,35 €/kWh im vergleich zur Einspeisevergütung 0,086€/kWh → Faktor 4: das kann aber die Wärmepumpe im besser Ist glaube ich der falsche Ansatz :slight_smile:
Neuer Ansatz (Beispiel):
3500 kWh WW → 3500 kWh Strom bei 2. WEZ → ~640 kWh Strom bei Wärmepumpe
delta: 2860 kWh * 0,086 €/kWh = 246 € Einspeisevergütung, da mir durch die Lappen gehen, wenn ich in der autarken Zeit im Jahr nur mit 2. WEZ heize.
Ist der Ansatz korrekt?


Have any of you ever thought about switching the heat pump to the 2nd heat exchanger (heating element) with SG ready?
Pro: Using the heating element and not starting the compressor and thus reducing the compressor cycles.
Contra: The electricity price of ~0.35 €/kWh compared to the feed-in tariff of 0.086€/kWh → Factor 4: but the heat pump can do better I think this is the wrong approach :slight_smile:
New approach (example):
3500 kWh WW → 3500 kWh electricity with 2nd WEZ–> ~640 kWh electricity with heat pump
delta: 2860 kWh * 0.086 €/kWh = 246 € feed-in tariff, as I will miss out if I only heat with 2. WEZ during the self-sufficient period of the year.
Is this approach correct?

Why would you do this ? the heat pump is 4 times more efficient - just to save 300 compressor starts in a year ? I think this is not a good tradeoff. If you want to save compressor starts increase your hot water temperature when there is enough sun.

With circulation switched off I can then have hot water for 3 days in a row from the heat pump. I also reduced my compressor starts but leveraged the efficiency of the heat pump.

Hi all, just to let you know - I installed Core 2024.5.3 a few days ago and it seem to be stable and all modbus parameters stay available. Wishing you happy updating.

Hi @MarkusLacht,

i also try to write register 35101 for activating SG Ready 1.

But i always get illegal data adress. As i unterstand 35101 is only a input register, no output. Therefore it won’t be usable for writing to it.

But what about register 45101? I’ve tried it, writing works without error, but value didn’t change. Anyone suceeding enabling SG Ready over Modbus TCP?

I have exactly the same problem does anyone know if a problem report has been raised?