Weishaupt Heatpump integration via modbus

Markus - thanks for sharing the SGR code - is your code working as designed ? so you can use the two automations based on extra solar power available ? How much energy do you store in addition in your warm water.

I do something similar - when I do have access sun forecast I do run a “legionellen 60 Celsius” program on my warm water. I temporarily set the warm water temperature every 14 days up if I do have access capacity.

Not using SGR but just changing with an automation the warm water temperature. The code works well :slight_smile:

Hi

I received in connecting to the modus.
No I want to start with a simple automation.
I can read the value off the humidity on the bathroom.
I want to turn on a ventilator when the humidity is going over 60.
This is my code:
<alias: Ventilator
description: “”
trigger:

  • platform: numeric_state
    entity_id:
    • sensor.wp_badkamervocht
      for:
      hours: 0
      minutes: 0
      seconds: 10
      above: 49.9
      below: 90
      condition:
      action:
  • type: turn_on
    device_id: b78f499726e2c48dbcc575100dfeaf6a
    entity_id: 48e4f6c5665e7da02928f342fdd21df7
    domain: switch
    mode: single>

Nothing is happening.

Could someone point me the mistake in the code please?

Thanks
Tom

Hello,

What is the purpose of activating “SG ready” mode, when one can just automatically alter the target water temperature (by doing a +5° around 2pm for example, and then -5° one hour later)?

Sorry for this stupid question, but I try to understand in what conditions this “SG ready” mode would make sense :slight_smile:

Thank you

Did the latest Home Assistant Core Update break the integration?

In my case 2024.4 broke it :frowning:

Any ideas?

May this change is the reason? 2024.4: Organize all the things! - Home Assistant

Do you have checked the (Modbus) logfiles?

No sorry. For now i restore the backup. Today i need my installtion fully working. Is there a way to view the logiles after the restored backup?

Today i was able to do the update again. Ive updated to 2024.4.2 without any problems with my weishaupt modbus integration. Thanks god :slight_smile:

Further more i was able to to implement the settings for “Warmwasser Normal” & “Absenk” with Home Assistant. Now iam able to set or control the temperatures for my heatup within HA / automations. Iam really happy about this. I want to share my code:

  climates:
      - name: "WP_Warmwasser" # WPWarmWasser_Normal
        address: 42103
        slave: 1
        input_type: holding
        data_type: int16
        max_temp: 60
        min_temp: 15
        offset: 0
        precision: 1
        scale: 0.1
        target_temp_register: 42103
        temp_step: 1
        temperature_unit: C
        unique_id: 2d82d1e5-0c3d-4dfc-9b21-2233ce2a2739
      - name: "WP_Warmwasser_Absenk" # WPWarmWasser_Absenk
        address: 42104
        slave: 1
        input_type: holding
        data_type: int16
        max_temp: 60
        min_temp: 15
        offset: 0
        precision: 1
        scale: 0.1
        target_temp_register: 42104
        temp_step: 1
        temperature_unit: C
        unique_id: 2d82d1e5-0c3d-4dfc-9b21-23133ce2a2739

HA 2024.4.2 works with BiBlock 12 WBB 12-B-RMD-AI

with 2024.4 i got some notifications regarding double used addresses, because I changed my yaml in the past.

I tried the Update 2024.4.2 but after the update my Weishaupt integration stoppt working. Are there any instructions/informations how to get the integration running with the new update? Thanks

Also after restart Home Assistant?

Same for me, latest update still broken also after restart.

Power off/on the headpump and disconnect the network cable. I did both when I had errors directly after the update. however, I finalized my network cabinet directly beforehand.

Reduce your code like below and test it.

- type: tcp
  name: wpump
  host: 192.168.0.242
  port: 502

  sensors:
    - 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
      unique_id: wp.aussentemperatur

my working yaml:

#https://community.home-assistant.io/t/weishaupt-heatpump-integration-via-modbus/436823
- type: tcp
  name: wpump
  host: 192.168.0.242
  port: 502

  climates:
    - name: "WP_Warmwasser_normal"
      address: 32102
      slave: 1
      input_type: input
      max_temp: 65
      min_temp: 15
      scale: 0.1
      target_temp_register: 42103
      temperature_unit: C

    - name: "WP_Raumtemperatursoll"
      address: 31101
      slave: 1
      input_type: input
      max_temp: 24
      min_temp: 16
      scale: 0.1
      target_temp_register: 41106
      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
    #System
    - name: WP_Systembetriebsart
      slave: 1
      address: 40001
      input_type: holding
      data_type: int16
      unique_id: wpump.systembetriebsart
    - 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_Fehler
      slave: 1
      address: 30003
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: uint16
      unique_id: wp.fehler
    - name: WP_Warnung
      slave: 1
      address: 30004
      input_type: input
      scale: 1
      offset: 0
      precision: 0
      data_type: uint16
      unique_id: wp.warnung
    - 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
      unique_id: wp.aussentemperatur
    - name: WP_Außentemperatur2
      slave: 1
      address: 30002
      input_type: input
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      offset: 0
      precision: 1
      data_type: int16
      unique_id: wp.aussentemperatur2

    - name: Raumsolltemperatur Komfort
      slave: 1
      address: 41105
      input_type: holding
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      data_type: int16
    - name: Raumsolltemperatur Normal
      slave: 1
      address: 41106
      input_type: holding
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.1
      data_type: int16
    - name: Raumsolltemperatur Absenk
      slave: 1
      address: 41107
      input_type: holding
      unit_of_measurement: °C
      state_class: measurement
      scale: 0.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_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
    - 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_Heizkurve
      slave: 1
      address: 41108
      input_type: holding
      state_class: measurement
      scale: 0.01
      offset: 0
      precision: 2
      data_type: int16
    - name: WP_Heizkreis_Betriebsart
      slave: 1
      address: 41103
      input_type: holding
      data_type: int16
      unique_id: wpump.heizkreis_betriebsart
    # 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: total_increasing
      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: total_increasing
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Gesamt_Jahr
      slave: 1
      address: 36104
      input_type: input
      unit_of_measurement: kWh
      state_class: total_increasing
      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: total_increasing
      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: total_increasing
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Heizen_Jahr
      slave: 1
      address: 36204
      input_type: input
      unit_of_measurement: kWh
      state_class: total_increasing
      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: total_increasing
      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: total_increasing
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_WW_Jahr
      slave: 1
      address: 36304
      input_type: input
      unit_of_measurement: kWh
      state_class: total_increasing
      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: total_increasing
      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: total_increasing
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16
    - name: WPST_Elektrisch_Jahr
      slave: 1
      address: 36704
      input_type: input
      unit_of_measurement: kWh
      state_class: total_increasing
      device_class: energy
      scale: 1
      offset: 0
      precision: 1
      data_type: int16

Yes, it‘s also Not working After the restart.

Tried again including disconnecting Ethernet & power cycles, unfortunately same result. Configuration attached below, really appreciate any ideas…

- name: wpump
  type: tcp
  host: 192.168.1.232
  port: 502
  climates:
      - name: "WP_Warmwasser"
        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

It has been a while but I once again tried to figure out how to get data from my weishaupt.
I found out that once the json setting is enabled I can connect to it and adjust the IP settings (DHCP is enabled by default):

I also found out that is seems to be running a “sevenstax” webserver.
Also the following files get called:
http://192.168.101.18/ajax/CanApiJson.json
http://192.168.101.18/script/ajax.js
http://192.168.101.18/script/Form_eth_log.js

Unfortunately I got no further information from weishaupt (they never answered my e-mails).

Try the newest Home Assistant Update there are some Modbus bugfixes.

2024.4.3 also is producing the same issues…

Same with me, it doesn’t work with version 2024.4.3 either, restarting doesn’t help either

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