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 :-)