OVUM Wärmepumpe: Modbus über ESP32 an HA

Guten Abend,

Ich möchte meine OVUM OPW170 gerne per Modbus in Home Assistent integrieren. Dazu will ich die Daten per RS485 an einen ESP32 übergeben, welcher dann per WiFi die Verbindung zu HA herstellt.
Hat das schon mal so oder so ähnlich wer von euch gemacht und kann mir seine Unterstützung anbieten? Ich hänge vor allem bei der Konfiguration des ESP32 über ESPHome.

Servus :wink: schau dir mal das hier an:
https://www.loxforum.com/forum/mein-projekt/398806-ovum-wärempumpe-in-loxone-integrieren
ich werde das in naher Zukunft auch ausprobieren, wenn es bei dir klappt, kannst du gerne davon berichten.

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.

2 „Gefällt mir“

Läuft das ganze stabil? Also keine Probleme bezüglich Abstürzen oder so? Musst du Ab und an mal Reseten?

Ich hatte mir früher überlegt das ganze per Waveshare Adapter und Ethernet zu lösen (wenn die Pumpe mal kommt).

Analog hierzu:

Aber irgendwie gefällt mir das mit ESPHome fast noch besser. Hab nur wegen der Performance ein bisschen Angst. Hab letzte Woche mit dem ESP32-C6 gearbeitet, der kam schnell an seine Grenzen. Zwei Floatberechnungen und das Ding war überfordert. :joy:

Wie hast du es mit den Anschlüssen gemacht? Modbus aus der Kiste raus und Spannung extern besorgt oder beides von drinnen?

Ich habe das so installiert und seitdem den ESP nicht mehr angeguckt. Keine Abstürze oder Probleme.
Die Stromversorgung kommt von extern, direkt hinter der Wärmepumpe ist ne Steckdose :). Die Kabel habe ich rausgeführt aus der Pumpe und den ESP in eine Abzweigdose verpackt, das baumelt nun daneben.

1 „Gefällt mir“

Das klingt ziemlich gut. :+1: