Ich habe die Wärmepumpe (Brauchwasser) nun erfolgreich in HA eingebunden. Nötig war dafür:
Die Verkabelung sieht so aus:
ESP32 zu RS485 Board (4x Jumper-Leitung)
ESP32 |
RS485 Board ESP32-Seite |
G16 |
TXD |
G17 |
RXD |
3V3 |
VCC |
GND |
GND |
RS485 Board zu OVUM Modbus (3x 0,75mm² Leitung)
RS485 Board Modbus-Seite |
OVUM Wärmepumpe |
A+ |
ModBUS CN1, port 4 (B Data +) |
B- |
ModBUS CN1, port 3 (B Data -) |
GND |
GND |
Den ESP32 habe ich mittels ESPHome bespielt. Hier meine ovum.yaml. Die Punkte mit XXX entsprechend nach euren Anforderungen ersetzen. Achtung, ich nutze ein OTA-Passwort. Das müsst ihr entsprechend konfigurieren.
substitutions:
name: esp32-ovum
friendly_name: OVUM
esphome:
name: ${name}
name_add_mac_suffix: false
friendly_name: ${friendly_name}
esp32:
board: esp32dev
api:
encryption:
key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ota:
safe_mode: true
password: !secret ota_password
logger:
level: DEBUG
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: XXX.XXX.XXX.XXX
gateway: XXX.XXX.XXX.XXX
subnet: XXX.XXX.XXX.XXX
time:
- platform: homeassistant
id: homeassistant_time
uart:
id: mod_bus
tx_pin: 17
rx_pin: 16
baud_rate: 19200
stop_bits: 1
parity: EVEN
modbus:
id: modbus1
uart_id: mod_bus
send_wait_time: 500ms
modbus_controller:
- id: ovum
address: 0x1 # address of the ModBUS slave device on the bus
modbus_id: modbus1
update_interval: 10s
Die Modbus-Adressen habe ich aus der Anleitung der Wärmepumpe. Zu finden auf Seite 48: Bonder
Die Parameter in der Tabelle SetPoint sind Holding Register, werden also mit register_type: holding eingelesen bzw. geschrieben.
Die Parameter in der Tabelle DataPoint sind Read Register, werden also mit register_type: read eingelesen.
Alle Sensoren, Schalter etc. die in HA nutzbar gemacht werden sollen, landen auch in der ESP32-Konfiguration.
Ich lese die aktuelle Temperatur des Wassers (t2), die eingestellte Zieltemperatur (t_setpoint), die Verdichter-Temperatur (t1), den Status der Wärmepumpe sowie des Heizstabes aus.
Außerdem kann ich per Schalter die Boost-Funktion und den PV-Modus aktivieren bzw. deaktivieren.
sensor:
- platform: modbus_controller
modbus_controller_id: ovum
name: "Verdichter Temperatur"
id: t1
register_type: read
address: 7
unit_of_measurement: "°C"
device_class: temperature
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ovum
name: "Ist Temperatur"
id: t2
register_type: read
address: 8
unit_of_measurement: "°C"
device_class: temperature
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ovum
name: "T_setpoint"
id: t_setpoint
register_type: holding
address: 4
unit_of_measurement: "°C"
device_class: temperature
value_type: U_WORD
accuracy_decimals: 1
binary_sensor:
- platform: modbus_controller
modbus_controller_id: ovum
name: "OVUM Heizstab"
register_type: read
address: 10
- platform: modbus_controller
modbus_controller_id: ovum
name: "OVUM Wärmepumpe"
register_type: read
address: 9
switch:
- platform: modbus_controller
modbus_controller_id: ovum
id: boostfunktion
register_type: holding
address: 22
bitmask: 1
name: "Boostfunktion"
icon: "mdi:toggle-switch"
select:
- platform: modbus_controller
name: "PV Modus"
address: 17
value_type: U_WORD
optionsmap:
"Aus": 0
"WP": 1
"EL": 2
"EL+WP": 3
Das Tolle ist nun, dass ich bei PV-Überschuss den PV-Modus der OVUM aktivieren kann und dann der Heizstab arbeitet. So wird das Brauchwasser mit PV-Überschuss erwärmt.
Modbus ist ne feine Sache, wenn man einmal dahinter gestiegen ist. Nur die Dokumentation von OVUM ist erst einmal schwer zu begreifen als Einsteiger.