Weishaupt Heatpump integration via modbus

Hi @tdupas
I configured the heat pump with a static ip (192.168.10.150/255.255.255.0) enabled modbus TCP (“on”) and used the same ip address in the modbus TCP settings:192.168.10.150/255.255.255.0
The HA must be in the same subnet as the WWP (in my case 192.168.10.xxx).
I’m able to read most registers (30005 is working too) but not all that @tobiasm provided from the Biblock.
Maybe that helps…

So, to get others on the right track :wink:

The modbus TCP ip/range is to be seen as a filter from where you want to allow client connections.
So 192.168.0.127/255.255.255.255 only allows client 192.168.0.127; 192.168.0.0/255.255.255.0 allows that entire 192.168.0.* subnet. It “just works” if you use the 255.255.255.0 ip for any range in the subnet of course, but wanted to help the next puzzled guy on how it seems to work.

My actual issue was the unit_id, usually when going directly to a modbus TCP end-device it doesn’t matter, it’s mostly relevant in a real serial “bus” to address the right device. But, the default is 0 I noticed when decoding the payload (since you can’t specify it on a python modbus tcp client). But in every read/write operation the python client allows you to specify it

And now it works for me, if it may be of any help to anyone how to test it

~ $ cat test.py 
from pymodbus.client.sync_diag import ModbusTcpDiagClient as ModbusClient 
import logging 

logging.basicConfig() 
log = logging.getLogger() 
log.setLevel(logging.DEBUG)

WWP = ModbusClient(host='192.168.0.100', port=502)
WWP.read_input_registers(42103, unit=1)
~ $ venv/bin/python test.py 
INFO:pymodbus.client.sync_diag:Connecting to modbus device ModbusTcpDiagClient(192.168.0.100:502)
DEBUG:pymodbus.transaction:Current transaction state - IDLE
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:SEND: 0x0 0x1 0x0 0x0 0x0 0x6 0x1 0x4 0xa4 0x77 0x0 0x1
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
DEBUG:pymodbus.client.sync_diag:Modbus device read took 0.0049 seconds, returned 8 bytes of 8 expected
DEBUG:pymodbus.client.sync_diag:Modbus device read took 0.0000 seconds, returned 1 bytes of 1 expected
DEBUG:pymodbus.transaction:Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
DEBUG:pymodbus.transaction:RECV: 0x0 0x1 0x0 0x0 0x0 0x3 0x1 0x84 0x2
DEBUG:pymodbus.framer.socket_framer:Processing: 0x0 0x1 0x0 0x0 0x0 0x3 0x1 0x84 0x2
DEBUG:pymodbus.factory:Factory Response[132]
DEBUG:pymodbus.transaction:Adding transaction 1
DEBUG:pymodbus.transaction:Getting transaction 1
DEBUG:pymodbus.transaction:Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
~ $ 
1 Like

Hi Florian,

Also intrested in the registers for WWP8. Could you sent these to me, or post it on this forum?

Kind regards,

Thijs

Hi Tobias, I also have a BIBlock 20 and despair so slowly. The software is 5.0x. I have the mode adabter from iobroker and that works great with other devices. Unfortunately I can not get a connection. What do I have to enter in the Biblock. The manual is not clear. Can both run Wemportal and modbus tcp and wem local, or only one or the other. With Modpoll I get the message wrong address. Can you send me an address that works and how you entered it.

Many greetings
Holger

Hi @FleischFlori
could you send me the documenation for the WWP LS8 you got from Weishaupt as well?

I am also not able to read the 31105. I read 31104 instead but the values are a little bit different.

Alex

Hi Holger,

I have the same issue and I am not able to connect ioBroker via Modbus-Adapter to my BiBlock. Did you get this issue solved? Any hints or tipps?

Kind regards

Matthias

hallo Tobias,
scheint das zu sein was ich brauche, seit heute läuft meine Weishaupt WP. HA habe ich auf einem RASPI 4 installiert, leider aber von Modbus keinen Schimmer.
Ich habe leider keine Ahnung wie ich auf die Daten zugreifen kann um mit HA dann die Steuerung zu automatisieren.
Wie komme ich weiter?
Gruß
Günter

Dear community,

my HA does not receive values. On the dashboard I only get “unavailable” on every sensor from the WP modbus integration. I activated Modbus TCP but I seem to not receive any values. Could You please check if what you have integrated into HomeAssistant is possible with my Hardware / Firmware / Software?

Any help is appreciated.
Thanks,
Rainer

Hardware:

Weisshaupt Wärmepumpe
pco5+ Carel - HW 2.2 SW:L_23.2

Ethernetcard Dimplex NWPM

Firmware
A1.6.0 - B1.3.0
Software
Version v12

Software
BIOS 6.43
BOOT 5.01
SOFTWARE WPM_L23b

2 Plugins installed:
GDTS NWPM Websites
Terminal Configurator V3

Hi,
I have discovered home-assistant via this thread. I just want to control my Weishaupt Heatpump in my home network without registering(!) on someone else’s (cloud) computer.

Unfortunately, I need more idiot proof instructions on what to do with the yaml code snippets above. :blush:

I have gotten Home Assistant running in a VM. I have added the VMs IP to the HeatPump.
I have added @tobiasm 's modbus config to configuration.yaml by means of the Studio Code Extension, but that is as far as I get. What do I need where (addons, extensions, code, templates …) to get a dashboard with info from the heatpump?

Sorry for beginner questions, but I have hope that home assistant will work better for me than manually running mbpoll from the terminal :smiley:

Update: You don’t have to answer that anymore. It still does not work, but I am about 6 problems further along now :wink:

Hi,
i´m looking for the extented statistic information, like switching cycles (Schaltspiele) and defrost cycles (Abtauen) and operation hours of the compressor. Do you have the addresses and can you share these?

Dear Tobias,
thanks for all your useful informations. We have a new WH Heatpump installed.
Now i copied your yaml script and test the configuration in HA with Konfiguration prüfen.
I received the following error message:
Error loading /config/configuration.yaml: mapping values are not allowed here

  • in “/config/sensors-wh-heatpump.yaml”, line 2, column 12*
    These where the first rows i copied - only changing the ip-adress:
    *- name: wpump
    type: tcp
    host: 192.168.178.78
    port: 502
    climates:
    • name: “WP_Warmwasser”
      address: 42103
      input_type: holding
      count: 1*
      Did you imagine where the error is?
      Greatings,
      Oberhesse

@FleischFlori
Hi Florian,
Also intrested in the registers for WWP8. Could you sent these to me, or post it on this forum?

Kind regards,

Hi Florian,

I also contacted Weishaupt, but unfortunately the support employee didn’t understand what I wanted from him.

Could you send me your list with registers?

LG, Stefan

I would also like the list of registers. I have some, but I seem to be missing quite a few.

thanks
c.


I am thinking of inserting a raspberry pi between the heatpump and my home network, running a simple webapp allowing me to see/modify the heatpump settings via a browser.

There is absolutely zero reason why this heatpump should talk to the mothership - I want local network only :slight_smile:

Hi there,
last weeks Weishaupt Ffm send me a PDF with Modbusdata of some Weishaupt Heatpumps named WBB, WWP LS und WGB. I don’t know how to upload them, can anybody give me a hint how to do this?

Hey.

You could upload them, for example, in GoogleDrive and share the Documents there. Than paste the link to the files here.

I would be very interested in the new documentation. Would be great if you could share these.

Hi there,
thank’ s for this .
Here is the link, Weishaupt Modbus Data as pdf
Weishaupt Modbus

2 Likes

Hi Maxrei,
can your share the code of your heatpump frontend? :slight_smile:

@maxrei would also be interested in your dashboard code - Tx for sharing

Hi @tobiasm - excellent work ! your modbus integration works well !

When I look at the exposed registers we can not get the data on electric power consumption of the heat pump which is annoying as the biblock is calculating the JAZ and has this information internal.

I would appreciate your feedback on the following idea - with “WP Leistungsanforderung” and the flags for the usage of the electric heaters 1 + 2 it should be possible to calculate the actual power consumption.

PLS See attached my “quick and dirty” first code -

  - platform: template
    sensors:
      heat_pump_electric_power:
        friendly_name: "Heat Pump Power"
        unit_of_measurement: 'kW'  # Watts
        value_template: >
          {% set base_power = states('sensor.wp_leistungsanforderung') | float * 2.750 %}
          {% set additional_power = 0 %}
          {% if states('sensor.wp_e1_status') == '1' %}
            {% set additional_power = additional_power + 3.500 %}
          {% endif %}
          {% if states('sensor.wp_e2_status') == '1' %}
            {% set additional_power = additional_power + 3.500 %}
          {% endif %}
          {{ base_power + additional_power }}

Basically I looked at the kw consumption at 100% Leistungsanforderung which is 2.75 kW and add 3.5 kW for each of the heaters.

This creates me a estimate for the power consumption of the biblock which would allow me also do calculate myself the JAZ.

Looking forward to your feedback and insights from this group :wink: Tx

1 Like