Hi, I have managed to share/modify the data of my “simple minded” Boesch / Dimplex LWPS9 heatpump via Home Assistant.
This is what I used:
Modbus RTU module:
Waveshare Modbus to Wifi/Ethernet gateway (Waveshare Industrial Grade Serial Server RS232/485 to WiFi and Ethernet, Modbus Gateway, MQTT Gateway, Metal Case, Wail-Mount and Rail-Mount Support):
Power adapter for Waveshare gateway (DC 15V 1A 1000mA 5.5mm plug):
Heatpump manager is FW version L22.17
Waveshare setup:
-
Powered on waveshare gateway
-
connected to default wifi from waveshare
-
looked up the „gateway“ address that was stated for the waveshare wifi (10.10.110.254 )
-
Connected to this ip via Chrome browser.
-
Default login for waveshare: user: „admin“ password: „admin“
-
Under Quick Configure, Wifi settings:
switched Mode to „STA Mode“
entered the settings for my IoT wifi (SSID, key= wifi password) -
in Uart settings (these are the setttings that I read on the Dimplex heatpump manager display under “Network” - set this to “Modbus” (not “Modbus extended”) in the heatpump manager; the address range I set to “1 … 127”):
-
Last, under „Device Management“, don’t forget to change the default login and password
-
Apply all settings & perform a restart of the waveshare gateway via the respective buttons
-
In my router DHCP settings, I reserved a dedicated IP address for the waveshare gateway (192.168.0.137 in my example)
Wiring:
- Switched off power to the heatpump manager/control
- put the Modbus RTU module in place
- connected a bus wire between the modbus RTU and the waveshare gateway:
GND to PE
“+” to A
“-” to B - Switched on power for the heatpump manager and connected power plug for the waveshare gateway.
Confirmed that I can reach the waveshare gateway via wifi on IP 192.168.0.137.
Home Assistant setup:
Enabled Modbus integration by adding the „modbus:“ line to the configuration.yaml:
modbus: !include modbus.yaml
Then created the „modbus.yaml“ in the same „CONFIG“ folder where the configuration.yaml is:
Initially, I took the content of the modbus.yaml from Rod McBain’s instructions: Mastering Modbus: Heat Pump Integration with Home Assistant – Rod McBain
I modified the registers and inputs according to the register information from dimplex: https://dimplex.atlassian.net/wiki/spaces/DW/pages/3440443393/Modbus+RTU+-+Datenpunktliste and the full PDF here: https://devicedb.my-gekko.com/download_docu.php?id_pk=92&ext=pdf
This is my modbus.yaml now:
- name: waveshare1
type: tcp
host: 192.168.0.137
port: 8899
delay: 2
timeout: 5
binary_sensors:
#Ausgänge
- name: "wp_ausgang_verdichter1"
unique_id: "modbus.wp_ausgang_verdichter1"
scan_interval: 10
address: 41
slave: 1
input_type: coil
- name: "wp_ausgang_ventilator"
unique_id: "modbus.wp_ausgang_ventilator"
scan_interval: 10
address: 43
slave: 1
input_type: coil
- name: "wp_ausgang_WEZ2"
unique_id: "modbus.wp_ausgang_WEZ2"
scan_interval: 10
address: 44
slave: 1
input_type: coil
- name: "wp_ausgang_flanschheizung"
unique_id: "modbus.wp_ausgang_flanschheizung"
scan_interval: 10
address: 50
slave: 1
input_type: coil
- name: "wp_ausgang_heizungspumpe"
unique_id: "modbus.wp_ausgang_heizungspumpe"
scan_interval: 10
address: 45
slave: 1
input_type: coil
sensors:
#Betriebsdaten
- name: "wp_modus"
unique_id: "wp_modus"
scan_interval: 60
address: 142
slave: 1
input_type: input
- name: "wp_temp_außen"
unique_id: "modbus.wp_temp_außen"
scan_interval: 10
address: 1
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_rücklauf"
unique_id: "modbus.wp_temp_rücklauf"
scan_interval: 10
address: 2
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_rücklauf_soll"
unique_id: "modbus.wp_temp_rücklauf_soll"
scan_interval: 10
address: 53
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_vorlauf"
unique_id: "modbus.wp_temp_vorlauf"
scan_interval: 10
address: 5
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_wärmequellenaustritt"
unique_id: "modbus.wp_temp_wärmequellenaustritt"
scan_interval: 10
address: 7
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_raumsensor1"
unique_id: "modbus.wp_temp_raumsensor1"
scan_interval: 10
address: 11
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_humidity_raumsensor1"
unique_id: "modbus.wp_humidity_raumsensor1"
scan_interval: 10
address: 13
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: humidity
unit_of_measurement: "%"
#Statusmeldungen
- name: "wp_statusmeldungen"
unique_id: "modbus.wp_statusmeldungen"
scan_interval: 10
address: 103
slave: 1
input_type: input
#Historie/Laufzeiten
- name: "wp_runtime_verdichter1"
unique_id: "modbus.wp_runtime_verdichter1"
scan_interval: 60
address: 72
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
- name: "wp_runtime_ventilator"
unique_id: "modbus.wp_runtime_ventilator"
scan_interval: 60
address: 74
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
- name: "wp_runtime_wärmeerzeuger2_E10"
unique_id: "modbus.wp_runtime_wärmeerzeuger2_E10"
scan_interval: 60
address: 75
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
- name: "wp_runtime_heizungspumpe_M13"
unique_id: "modbus.wp_runtime_heizungspumpe_M13"
scan_interval: 60
address: 76
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
- name: "wp_runtime_warmwasserpumpe_M18"
unique_id: "modbus.wp_runtime_warmwasserpumpe_M18"
scan_interval: 60
address: 77
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
- name: "wp_runtime_flanschheizung_E9"
unique_id: "modbus.wp_runtime_flanschheizung_E9"
scan_interval: 60
address: 78
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
- name: "wp_runtime_zusatzumwälzpumpe_M16"
unique_id: "modbus.wp_runtime_zusatzumwälzpumpe_M16"
scan_interval: 60
address: 71
slave: 1
input_type: input
data_type: uint16
device_class: duration
unit_of_measurement: "h"
state_class: total_increasing
#Heizkreis 1
- name: "wp_temp_raum_soll"
unique_id: "modbus.wp_temp_raum_soll"
scan_interval: 10
address: 46
slave: 1
input_type: input
data_type: uint16
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_hk_hysterese"
unique_id: "modbus.wp_hk_hysterese"
scan_interval: 60
address: 47
slave: 1
input_type: input
data_type: uint16
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "K"
#Warmwasser
- name: "wp_temp_warmwasser"
unique_id: "modbus.wp_temp_warmwasser"
scan_interval: 10
address: 3
slave: 1
input_type: input
scale: 0.1
precision: 1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_warmwasser_soll"
unique_id: "modbus.wp_temp_warmwasser_soll"
scan_interval: 10
address: 174
slave: 1
input_type: input
data_type: uint16
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_warmwasser_minimum"
unique_id: "modbus.wp_temp_warmwasser_minimum"
scan_interval: 60
address: 58
slave: 1
input_type: input
data_type: uint16
scale: 0.1
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_temp_warmwasser_maximum"
unique_id: "modbus.wp_temp_warmwasser_maximum"
scan_interval: 60
address: 175
slave: 1
input_type: input
data_type: uint16
device_class: temperature
unit_of_measurement: "°C"
- name: "wp_warmwasser_hysterese"
unique_id: "modbus.wp_warmwasser_hysterese"
scan_interval: 60
address: 172
slave: 1
input_type: input
data_type: uint16
device_class: temperature
unit_of_measurement: "K"
# 2. Wärmeerzeuger
- name: "wp_grenztemperatur_2WEZ"
unique_id: "modbus.wp_grenztemperatur_2WEZ"
scan_interval: 60
address: 147
slave: 1
input_type: input
device_class: temperature
unit_of_measurement: "°C"
switches:
climates:
- name: "wp_climate_raumtemperatur"
unique_id: "modbus.wp_climate_raumtemperatur"
address: 11
slave: 1
input_type: input
max_temp: 30.0
min_temp: 15.0
offset: 0
precision: 1
scale: 0.1
target_temp_register: 46
temp_step: 0.1
temperature_unit: C
write_registers: true
hvac_mode_register:
address: 142
values:
state_off: 0
state_auto: 1
# - name: "wp_climate_warmwasser"
# unique_id: "modbus.wp_climate_warmwasser"
# address: 3
# scale: 0.1
# precision: 1
# slave: 1
# input_type: input
# max_temp: 65
# min_temp: 10
# offset: 0
# target_temp_register: 174
# temp_step: 1
# temperature_unit: C
I had to set the last climate to comments, because I have not yet managed to integrate a separate scale for the target temperature setting (i.e. the current temperature and target temperature registers have a different scaling, so either scale I choose, I get one value wrong).