Ich beschreibe hier den Weg wie ich meine Wärmepumpe (Smarterm A9) und Lüftung (Exos x²) unter Verwendung eines Modbus RTU/TCP Gateways (Waveshare RS232 485 422 TO POE ETH B) in meine Home Assistant (HA) Instanz integrieren konnte.
Voraussetzungen:
Einstellungen am Touchdisplay von D&W:
Betriebsparameter LU (D&W ID130)
Gateway konfigurieren:
Verkabelung an der Hauptplatine des Exos:
Home Assistant konfigurieren:
Grundlegende Infos zur Entitäten-Konfiguration
Da D&W Geräte nur den Datentyp INT32 unterstützen ist es nicht möglich „Binary Sensors“, z.B. für „Anforderung Brauchwasser --> Vorhanden/Nicht vorhanden“ in der Modbus YAML zu nutzen.
Es klappt jedoch über den Umweg eines Template: Dazu in der configuration.yaml den Eintrag "template: !include template_sensors.yaml“ einfügen und eine neue Datei „template_sensors.yaml“ anlegen.
In dieser Datei kann z.B. folgendes stehen:
Damit können z.B. im Dashboard die Zustände "Ein" und "Aus" angezeigt werden.
Ähnlich klappt es auch mit der Anzeige z.B. von "Status Wärmepumpe". Dazu folgendes in der "template_sensors.yaml“ einfügen:
Beispiel Dashboard
image.png
Bitte gerne um deine Kommentare :-)
Voraussetzungen:
- Deine Anlage hat bereits den Modbus-Stecker. In meinem Fall (Baujahr 2016) findet sich der 3-polige Modbus Stecker rechts oben auf der Hauptplatine des Exos. Infos zum Stecker: https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/1553800-drexel-weiss-lüftungsanlage-knx?p=1849126#post1849126
- HA Basics (YAML, Entitäten)
Einstellungen am Touchdisplay von D&W:
Betriebsparameter LU (D&W ID130)
- Betriebsart: Serial Interface --> Modbus (RTU)
- Schnittstelle seriell --> RS485
- RS485 Endtermination --> Ein
- Parität Serielle Schnittstelle --> keine Parität
- Baudrate: Serial Interface --> 19200 baud
- Modbus Adresse --> 2
- Betriebsart: Serial Interface --> Modbus (RTU)
- Schnittstelle seriell --> RS232 (vermutlich ist diese Einstellung ohnehin unwirksam)
- Parität Serielle Schnittstelle --> keine Parität (vermutlich ist diese Einstellung ohnehin unwirksam)
- Baudrate: Serial Interface --> 19200 baud (vermutlich ist diese Einstellung ohnehin unwirksam)
- Modbus Adresse --> 1
Gateway konfigurieren:
- Gateway an deinen PoE-Switch anschließen. Alternativ kannst du auch ein externes Netzteil verwenden.
- Software „VirCom“ von der Herstellerhomepage herunterladen und starten:
- Das Gateway sollte nach einem Klick auf „Device“ aufgelistet sein. Falls nicht, versuche „Auto Search“.
- „Edit Device“ klicken.
- Im Bereich „Network“ empfehle ich „IP Mode --> Static“ um dem Gateway eine fixe IP zu verpassen. Das hängt jedoch von deinen bevorzugten Netzwerkeinstellungen ab. Wichtig ist „Port: 502“ und „Work Mode: TCP Server“. Weitere Einstellungen wie „IP Adress; Net Mask und Gateway sollten soweit klar sein.
- Im Bereich „Serial“ sind noch „Baud Rate: 19200; Data Bits: 8; Parity: None; Stop Bits: 1 und Flow Control: None einzustellen.
- Im Bereich „Advanced Settings“ sollte noch dein DNS Server definiert werden und GANZ WICHTIG „Transfer Protocol: Modbus_TCP Protocol“
- Danach noch in den „More Advanced Settings …“ im Bereich „RS485 Multi-Host Support Settings“ den „Modbus Gateway Type: Simple Modbus TCP to RTU“ einstellen.
- Zum Schluss noch speichern „Save As Default“ und „Restart Dev“ klicken.
Verkabelung an der Hauptplatine des Exos:
- Pinbelegung (von oben nach unten)
| RS485 - |
| RS485 + |
| GND |
| RS485 + |
| GND |
-
- Das Twisted-Pair Kabel (wichtig für Modbus, z.B. Cat5) kannst du im oberen, hinteren Bereich der Lüftung nach außen z.B. zu deinem Schaltschrank führen.
Home Assistant konfigurieren:
- Anlegen einer neuen Datei „modbus.yaml“
- In der „configuration.yaml“ die Zeile „modbus: !include modbus.yaml“ einfügen.
- Header der modbus.yaml
Code:
- name: modbus_gateway type: tcp host: 192.168.1.254 port: 502 message_wait_milliseconds: 100 delay: 1
- D&W Geräte --> data_type: int32 (immer!)
- Register lesen --> input_type: input
- Register schreiben --> input_type: holding
- Nachkommstellen aus der D&W Registertabelle müssen in HA bei „scale“ zusätzlich berücksichtigt werden: z.B. Divisor: 10; Komma: 2 --> scale: 0.001; precision: 2
Code:
sensors:
- name: wp_temp_speicher_oben
unique_id: wp_temp_speicher_oben
slave: 1
data_type: int32
address: 212
input_type: input
scale: 0.001
precision: 1
unit_of_measurement: °C
Es klappt jedoch über den Umweg eines Template: Dazu in der configuration.yaml den Eintrag "template: !include template_sensors.yaml“ einfügen und eine neue Datei „template_sensors.yaml“ anlegen.
In dieser Datei kann z.B. folgendes stehen:
Code:
- binary_sensor:
- name: "wp_anforderung_brauchwasser_binary"
state: >
{{ (states('sensor.wp_anforderung_brauchwasser') | int(0) // (2 ** 0)) % 2 == 1 }}
Ähnlich klappt es auch mit der Anzeige z.B. von "Status Wärmepumpe". Dazu folgendes in der "template_sensors.yaml“ einfügen:
Code:
- sensor:
- name: wp_status_waermepumpe_text
state: >
{% set mapping = {
0: "Wiedereinschaltsperre",
1: "Wärmepumpe aus",
2: "Vorlaufzeit Solepumpe",
3: "Vorlaufzeit Ventilatoren",
4: "Öffnen Heißgasventil",
5: "Öffnen Flüssiggasventil",
6: "Start Kompressor",
7: "Mindestlaufzeit Wärmepumpe",
8: "Wärmepumpe ein",
9: "Kältemittel absaugen",
10: "Beim Abtauen Absaugen",
11: "Abtauen ein",
12: "Nach Abtauen abtropfen",
13: "Pufferentladung",
14: "Abtaumodus Definieren",
15: "Abtauen Ventilatorlaufzeit",
16: "Kühlen",
17: "Ventilator Nachlaufzeit",
18: "UP NT Vorlaufzeit",
19: "Abtauen warten SEC",
20: "Abtauen nur mit Ventilator",
21: "Abtauen Stopp"
} %}
{{ mapping.get(states('sensor.wp_status_waermepumpe') | int, "Unbekannter Status") }}
icon: mdi:heat-pump
Beispiel Dashboard
image.png
Bitte gerne um deine Kommentare :-)

