Weishaupt Heatpump integration via modbus

Hello markus,

thank you very much for your tip with the shelly pro 2.
I have already found a similar work-around:
For the SG_ready input I use a shelly1 and for the circulation pump I have a shelly plug so that I can switch it via the smarthome application - e.g. via presence or a movement in the bathroom.

However, what annoys me a little is, that the weishaupt-developers obviously don’t really develop the modbus interface for the biblock further - or don’t document the information about it and make it public (only when asked intensively). Unfortunately, a lot of information can still only be accessed via the WEM portal.


Hey guys,

been on trips for some time and now back. I had a look at mine and i can not confirm this behaviour. Yes, my “Raumsolltemperatur” differs to the one on the Info site (there it is 16 because is have it still in summer mode) - in homeassistant i have 21.5 which is the “Absenk” Target temperature of HK1 - a bit strange, maybe it just shows the last actively set Target temperature before i moved it to Summermode.
If i read out the Holding registers for Absenk, Komfort, Normal directly, it shows the correct values.
So i would claim that on my V5.x firmware it works - and they told me they have been working on the modbus side quite a lot in the recent major software releases…

@marcdani did you manage to get your energy dashboard to work? What about the error in the log? i have the same in my log but were not able to find out the one causing the issue…

And yes i do agree - the politics of how weishaupt is delivering these updates is not very innovative. I Understand, of course, that they do not want to push updates to all heatpumps regularly, as long as they are working stable, but they should spinn off the modbus api part and provide independant releases while keeping the core functionality stable.


1 Like

Hi Tobias,

thanks for your feedback.
I can now confirm that the values are correct after switching to the “Heizen” mode.
It seems to be as you described, that the old values were obviously still present before the changeover to “Sommer” mode.


Hi Guys,

i am not sure if we talk about the same parameter. I am facing a issue with the following ones:

Idea is that i can configure (and backup) the settings required for optimization via HomeAssistant or IP-Symcon. I tried both to read-out the Parameters (holding register) but they don’t show the correct Komfort / Normal / Absenk temperatures. Heizkennlinie is working as expected.

My plan is to find within this winter the best matching combination from Heizkennlinie and Room temperature to ensure biblock is not permanently switching on/off and to ensure the efficiency is as high as possible.


Hi guys,

I have noticed that the modbus registers 33106 to 33110 are filled with values. However, these are not yet documented in the Excel file.
Do any of you have an idea what information these input registers contain?

Thanks in advance


thank you for your great information. I was looking for that some month ago. I tried to implement your ideas, but I saw, that my Weishaupt BiBlock 20kW has software V4.0 implemented. Is there any information out there, how I can get the new Software on my BiBlock heatpump?

Goal woud be, to set the actual power setpoint along to the current solar power… I did that for two electric heaters. They are using the power, along the overflow of photovoltaic power in regards to clouds, sun position etc. Works perfekt (like charging the electric car with the openWB Wallbox in the PV-Mode).

Kind regards and thanks for all hints in advance


1 Like

Hi Matthias,

you can try if/what of these modbus values are working with your software version.
Otherwise you need to contact Weishaupt. Software Update is only possible on-site by an Weishaupt technician.


Hi there,
I am trying to connect to may Hetpump via Modus but fail to make any connection.
Version RG1 V3.0

Following the manual there are 2 settings which seem relevant:

Network configuration:
(also used for WEM Portal) currently set to

Modbus TCP:

  • Should be the IP address of the client (!?) Set to
  • Also mentions that this should not be part of the Home Network to limit access from others. Seems strange as the Heatpump only has one Ethernet port.

How did you guy get access via Modus?


Hello, I would also be interested in which ip address should I enter under modbus on the heating? The same as in networks or another?

Hallo mich würde das auch interessieren welche ip Adresse ich unter modbus eintragen soll an der Heizung ? Die gleiche wie im Netzwerke oder eine andere?

The IP in the WP has to be the IP of your HA instance (see as the IP that is allowed to connect via modbus to the WP) and the netmask needs to be the same as all devices in your network (in 99%

This way I could connect via a modbus tester on an andoid device, but still got errors via HA modbus and via modpull (installed at hassio) :slightly_frowning_face:

Also ich habe in der Wärmepumpe unter modbus die IP adresse eingegben die unter standert gatteway steht( sprich router ip)
und unter der Modbus Konfiguration im HA
im Yaml config ordner die ip von der Heizung

how did you realize this with the temperature control
target room temperature
hot water target temperature

DHW reduction/comfort change (time change)
Set room temperature reduction/normal/comfort change

wie habt ihr das realieserit mit der temperatur regelung

warmwasser absenk/Komfort änderung (zeitänderung)
Raumsolltemperatur Absenk/Normal/Komfort änderung

    - name: "WP_Warmwasser"
      address: 42103
      input_type: holding
      count: 1
      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

das funktioniert bei mir auch nicht

that doesn't work for me either

Hi there,
I am also running a BiBlock (SW V4.0). Modbus works fine for everything but the statistics (3610x).
connection to Modbus port 502 with python pymodbus libary:
client.read_input_registers(36101, 4, unit=1).registers[0:4] → [111, 112, 155, 11103]
client.read_input_registers(36102, 3, unit=1).registers[0:3] → [112, 155, 11103]
None of these values matches to anything I read from WEM portal or at the display. Even more: values are not changing.
Weishaupt told me to wait until spring when SW V5.x shall be available.
Any better ideas here?

I try to use your solution but I block on part 3 of your solution I don’t know where to put the file I block.
I’m new to HA, I’m having trouble understanding how yaml works


For me reading out the statistics did work last year (but only full kWh, no real float value). Since 01.01.2023 the register remain on the state of 31.12 - I am 100% sure that there is a bug in the firmware of the Biblock.

I am also in contact with Weishaupt and they also confirmed that an update is required to 5.0x to solve it. At least for the wbb20 multiple 5x. are already released… did they say why you should wait and why not to choose a already released V5?


Hi Rainer,
I figured out that register 33107 should be the temperature “Wärmetauscher Innen” (accoding to the WEM-Portal). No clue what the other values could be.
Regards, Tobias

Hi all,
first thanks for the great register overview you provided @tobiasm. I also tried to get some information about hte Modbus directly from Weishaupt, but they weren’t able or wanted to give me more technical details. So far can read out many (but not all) registers. One that I would realy like to read out ist the “Vorlautemperatur HK1”
Has anyone successfully read the register 31105 “Flow temperature HK1”? I always get only the -32768 (no sensor) delivered. In the WEM portal, however, a correct value for “Flow temperature HK1” is output. I have seen that @tobiasm takes the register 33104 as flow temperature. However, this is probably only the temperature after the condenser (LWT) and always deviates more or less from the flow temperature of the HK1.

Just to jump in here.

At first thanks @tobiasm for good documentation. First I make all sensors. All works fine except of mentioned registers “Gesamt Energie/WW/Heizen Jahr”. It shows 0,0.
Also both states for additional e-heating elements are not available.

Weishaupt sent me a new file with all registers for my heatpump WWP8 and these are correct in yaml. Using wemportal integration works great but not so fast like modbus.

I am just experimenting wiht modbus and I am not very familiar with it. Is there a way to scan modbus of all registers that are send from heat pump? Maybe I can compare with data from wemportal. Also I want a sensor for rotation of pump that is not in Weishaupt’s list.

Can anybody help on this topics?


Hi @FleischFlori,
i also have a WWP8. Can you send me the document with the modbus registers or post it somewhere? Best regards, Tobias

hi @FleischFlori and @tsenger
I’d be interested as well, since I can’t get it to work

I have a WWP LS 8. I configured the heat pump with a static ip (
I’ve enabled modbus TCP (“on” state, also tried "service); as ip/netmask over there I’ve tried as complete subnet, or (ip where I’m calling it from)

what I’m trying

~ $** cat test.py
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
import logging
log = logging.getLogger()

WWP = ModbusClient(host='', port=502)
testconnect = WWP.connect()
rr = WWP.read_input_registers(30005, 1)

~ $** venv/bin/python test.py
DEBUG:pymodbus.client.sync:Connection to Modbus server established. Socket ('', 36481)
DEBUG:pymodbus.transaction:Current transaction state - IDLE
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:SEND: 0x0 0x1 0x0 0x0 0x0 0x6 0x0 0x4 0x75 0x35 0x0 0x1
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
DEBUG:pymodbus.transaction:Transaction failed. (Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received))
DEBUG:pymodbus.transaction:Getting transaction 1
DEBUG:pymodbus.transaction:Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'

so it does have an open socket to 502, but … am I using the wrong registers, or is it denying me because I misinterpreted the modbus TCP setting. Would appreciate some insights

1 Like