TapHome

Midea M-Thermal Wärmepumpe

Modbus RTU
Submitted by
Last updated: 03. 2026
Midea M-Thermal Wärmepumpe

Die Midea M-Thermal A Series Split (R32) ist eine Inverter-Wärmepumpe bestehend aus einer Außeneinheit und einem Hydraulikmodul. Das System kommuniziert mit TapHome über Modbus RTU auf RS-485 mit 9.600 Baud und stellt Holding-Register für Steuerung und Überwachung bereit. Die Vorlage ermöglicht Ein-/Ausschalten von Heizung und Warmwasser, Betriebsmodusauswahl, Warmwasser-Thermostat, Temperatursensoren, Kompressordiagnostik und Kältemitteldrucküberwachung.

Dieselbe Modbus-Registerkarte wird von OEM-Klonen verwendet, darunter Wärmepumpen von Hyundai, Concept, Hajdu, Immergas und Clivet Swan. Die Vorlage ist mit diesen Geräten kompatibel, sofern dieselbe kabelgebundene Steuerung und dasselbe Hydraulikmodul verwendet werden.

Die Modbus-Registerkarte für dieses Gerät stammt aus Community-Quellen (Home Assistant Community). Die Registeradressen wurden von mehreren Nutzern verifiziert, sind jedoch von Midea nicht offiziell dokumentiert.

Hardwareanschluss

RS-485-Verdrahtung

Die Modbus RS-485-Verbindung wird über die Ports H1 und H2 auf der PCB der kabelgebundenen Steuerung bereitgestellt. Die kabelgebundene Steuerung muss mit dem Hydraulikmodul verbunden sein, um vollen Modbus-Datenzugriff zu erhalten.

Verbinden Sie die RS-485-Signalleitungen:

SignalRichtungPort
BUS1 (A+)<->H2
BUS2 (B-)<->H1

Wichtig — kabelgebundene Steuerung erforderlich

Die kabelgebundene Steuerung muss mit dem Hydraulikmodul verbunden sein, damit die Modbus-Kommunikation funktioniert. Ohne die kabelgebundene Steuerung sind die Register über RS-485 nicht erreichbar.

Technische Spezifikationen
  • Protokoll: Modbus RTU Slave, RS-485
  • Baudrate: 9.600, keine Parität, 1 Stoppbit, 8 Datenbits
  • Standard Slave-ID: 1 (Drehschalter S3, Position 0)
  • Modelle: MHA-V4W bis MHA-V16W (4–16 kW), Varianten D2N8-B und D2RN8-B
  • Hydraulikmodul: HB-A60/A100/A160/CGN8-B

Konfiguration

Slave-Adresse (Drehschalter S3)

Die Modbus-Slave-Adresse wird über den Drehschalter S3 auf der Haupt-PCB des Hydraulikmoduls eingestellt. Position 0 entspricht Slave-Adresse 1.

PCB-Layout des Midea M-Thermal Hydraulikmoduls mit Drehschalter S3

Wichtige Komponenten auf der Hydraulikmodul-PCB:

  • S3 (Bezeichnung 2) — Drehschalter für Modbus-Slave-Adresse
  • CN14 (Bezeichnung 21) — Kommunikation mit der kabelgebundenen Steuerung
  • CN19 (Bezeichnung 20) — Kommunikation zwischen Innen- und Außeneinheit
  • CN30 (Bezeichnung 22) — Kommunikation mit kabelgebundener Steuerung und parallelen internen Geräten
  • DIS1 (Bezeichnung 3) — Digitaldisplay für Fehlercodes
Modbus-Kommunikation aktivieren
  1. Gesamtes Wärmepumpensystem von der Stromversorgung trennen
  2. Rückwand der kabelgebundenen Steuerung entfernen
  3. RS-485 A- und B-Leitungen an Ports H1 und H2 der kabelgebundenen Steuerung anschließen
  4. PCB des Hydraulikmoduls zugänglich machen
  5. Sicherstellen, dass Drehschalter S3 auf der gewünschten Position steht (Position 0 = Slave-Adresse 1)
  6. Wärmepumpensystem einschalten

Bei der Konfiguration des TapHome-Moduls Modbus RTU mit 9.600 Baud, keine Parität, 1 Stoppbit, 8 Datenbits verwenden. Die Standard-Slave-ID ist 1 (S3 Position 0). Bei Verwendung eines Modbus TCP-zu-RTU-Gateways (z. B. WaveShare) den Gateway-Port auf 502 konfigurieren und die Slave-ID der S3-Schalterposition entsprechend einstellen.

Empfehlung für statische IP-Adresse

Bei Verbindung über ein Modbus TCP-zu-RTU-Gateway dem Gateway eine statische IP-Adresse oder DHCP-Reservierung zuweisen, um Verbindungsprobleme bei IP-Adressänderungen zu vermeiden.

Gerätefunktionen

Heizung und Warmwassersteuerung

Die Vorlage verwendet Register H:0 als Bitfeld zur Steuerung einzelner Funktionen:

  • Heizung (H:0 Bit 1) — aktiviert oder deaktiviert die Raumheizfunktion
  • Warmwasser (H:0 Bit 2) — aktiviert oder deaktiviert die Warmwasserbereitung
  • Desinfektion (H:5 Bit 4) — aktiviert den Anti-Legionellen-Desinfektionszyklus für den Warmwasserspeicher

Jede Funktion wird unabhängig über GETBIT/SETBIT-Operationen gesteuert, sodass Heizung und Warmwasser ohne gegenseitige Beeinflussung umgeschaltet werden können.

Betriebsmodus

Wärmepumpenmodus (H:1) wählt den Betriebsmodus: Auto (0), Auto (1), Kühlen (2), Heizen (3) und weitere Modi (4–9). Die Vorlage stellt dies als Mehrfachschalter dar.

Warmwasser-Thermostat

Warmwassertemperatur liest die aktuelle Speichertemperatur aus H:115 (T5-Sensor) und schreibt die Solltemperatur in H:4. Funktioniert als Thermostat — die aktuelle Temperatur wird zusammen mit dem Sollwert angezeigt.

Temperaturüberwachung

Die Vorlage bietet fünf Temperatursensoren:

  • Berechnete Wassertemperatur (H:110) — Wassertemperatur am finalen Austritt (T1-Sensor)
  • Witterungsgeführte Solltemperatur (H:136) — Solltemperatur der Heizkennlinie, berechnet vom Wärmepumpenregler
  • Wassereinlauftemperatur (H:104) — Wasser, das in den Wärmetauscher eintritt (Tw_in-Sensor)
  • Wasserauslauftemperatur (H:105) — Wasser, das den Wärmetauscher verlässt (Tw_out-Sensor)
  • Außentemperatur (H:107) — Außenlufttemperatur (T4-Sensor), Abfrageintervall 1 Sekunde
Kompressor- und Leistungsdiagnostik
  • Kompressorfrequenz (H:100) — aktuelle Inverter-Kompressordrehzahl in Hz
  • Kompressorbetriebszeit (H:122) — kumulierte Kompressor-Laufzeit in Stunden
  • Lüfterdrehzahl (H:102) — Lüfterdrehzahl der Außeneinheit in RPM (12 Geschwindigkeitsstufen, 200–730 RPM je nach Modell)
  • Leistung (H:140) — aktuelle Wärmepumpenleistungsabgabe (Rohwert / 100)
  • Wasserfluss (H:138) — Wasserdurchfluss im Hydraulikkreis in m³/h (Rohwert / 100)
Elektrische Überwachung
  • Spannung Außeneinheit (H:119) — Versorgungsspannung (Schutz: Einphasig >=265 V oder <=172 V, Fehlercode H7)
  • Strom Außeneinheit (H:118) — Kompressorstromaufnahme (Schutzgrenzen je nach Modell: 18 A für 4–6 kW, 30 A für 12–16 kW)
  • DC-Zwischenkreisspannung (H:134) — Inverter-DC-Zwischenkreisspannung (Rohwert × 10)
  • DC-Zwischenkreisstrom (H:133) — Inverter-DC-Zwischenkreisstrom
Kältemitteldruck
  • Hochdruck Außeneinheit (H:116) — Hochdruckseite des Kältemittels in kPa (Schutz aktiviert bei >4,3 MPa, Fehlercode P1)
  • Niederdruck Außeneinheit (H:117) — Niederdruckseite des Kältemittels in kPa (Schutz aktiviert bei <0,14 MPa, Fehlercode P0)
Servicediagnostik

Das Modul stellt zwei Serviceattribute bereit:

  • Softwareversion (H:130) — Firmware-Versionsnummer der Wärmepumpe
  • Attribut — Platzhalter-Serviceattribut (leere Leseformel)
Weitere Funktionen

Das Midea M-Thermal System stellt außerdem Register bereit für: Heizkurvenauswahl, Zwangswasserheizung, Zwangssteuerung des Speicher-Heizstabs (TBH) und internem Zusatzheizstab (IBH1), Smart-Grid-Maximaltemperatur sowie weitere Temperatursensoren einschließlich T1S (Endwasseraustritt), T3 (Luftseitiger WÜ-Ausgang), Tp (Druckleitung), Th (Saugleitung), T1, T2 (Flüssigkeitsleitung) und T2B (Gasleitung). Fehlercodeauslesen (H:124), Lastausgangs-Prozentsatz, Zielkompressorfrequenz, Systemstatusbit und kumulative Energiezähler (Stromverbrauch und Wärmeabgabe als Int32 über zwei Register) sind ebenfalls verfügbar. Leistungseinstellungen für IBH1, IBH2 und TBH können konfiguriert werden. Diese Funktionen können in einem zukünftigen Vorlagen-Update ergänzt werden.

Das aktuelle Fehlercode-Register (H:124) ist nicht in der Vorlage enthalten. Zur Überwachung von Wärmepumpenfehlern kann es als benutzerdefiniertes Modbus-Gerät in TapHome hinzugefügt werden, das Register H0124 als Int16 liest.

Fehlerbehebung

Keine Modbus-Kommunikation
  1. Sicherstellen, dass die kabelgebundene Steuerung mit dem Hydraulikmodul verbunden ist — ohne diese sind Modbus-Register nicht erreichbar
  2. RS-485-Signalleitungen prüfen: BUS1 an H2, BUS2 an H1
  3. TapHome-Einstellungen bestätigen: 9.600 Baud, keine Parität, 1 Stoppbit, 8 Datenbits
  4. Slave-Adresse prüfen: Position des Drehschalters S3 auf der Hydraulikmodul-PCB kontrollieren (Position 0 = Adresse 1)
  5. Bei TCP-zu-RTU-Gateway: Erreichbarkeit des Gateways und Übereinstimmung der Seriellport-Einstellungen prüfen
Kommunikationsfehler (Fehlercode H0)

Fehlercode H0 zeigt einen Kommunikationsfehler zwischen Außeneinheit und Hydraulikmodul an. Mögliche Ursachen:

  1. Abnorme Stromversorgung — Transformatoreingang (220 V AC) und -ausgang (13,5 V AC) prüfen
  2. Elektromagnetische Störungen durch benachbarte Hochfrequenzgeräte — umplatzieren oder abschirmen
  3. Kommunikationsleitungen P, Q, E zwischen Außeneinheit und Hydraulikmodul locker oder beschädigt — neu verbinden
Temperatursensorfehler (Codes E3–E9)

Fehlercodes E3, E4, H2, H3, Ed, HA, E5, E6, E9, EA zeigen Temperatursensorausfälle an:

  1. Sensoranschluss am entsprechenden PCB-Port prüfen (siehe PCB-Layout-Diagramm)
  2. Sensorwiderstand messen — zu niedriger Wert deutet auf Kurzschluss hin; Abweichung von der Widerstandstabelle zeigt defekten Sensor an
  3. Bei korrekten Anschlüssen und funktionsfähigem Sensor ggf. PCB austauschen
Druckschutzfehler
  • P0 (Niederdruck) — Saugdruck unter 0,14 MPa. Kältemittelfüllung und Expansionsventil prüfen
  • P1 (Hochdruck) — Druckdruck über 4,3 MPa. Kondensatorluftstrom, Lüfterbetrieb und Kältemittelüberfüllung prüfen
  • P4 (Hohe Druckleitungstemperatur) — Druckleitungstemperatur über 115 °C. Kompressorbetrieb und Kältemittelstand prüfen

Verfügbare Geräte

Midea Wärmepumpe Modul
Serviceattribute
Attributempty read formula — placeholder service attribute with no function
Softwareversionreads H:130 (UInt16); heat pump firmware version number

Midea Heat Pump

Serviceattribute
Attribute
Software version
MODBUSR(H, 130, UInt16)
Berechnete Wassertemperatur Temperatursensor Nur lesen

Wassertemperatur am finalen Austritt — T1-Sensor (H:110)

Register: H:110 Int16 (Temperature) Einheit: °C numeric

Berechnete Wassertemperatur

Temperatur lesen
MODBUSR(H, 110, Int16)
Leistung Variable Nur lesen

Aktuelle Wärmepumpenleistungsabgabe als Prozentsatz

Register: H:140 Int16 numeric

Leistung

Lesen
MODBUSR(H, 140, Int16) / 100
Witterungsgeführte Solltemperatur Temperatursensor Nur lesen

Solltemperatur der Heizkennlinie, berechnet vom Wärmepumpenregler basierend auf Außenbedingungen

Register: H:136 Int16 (Temperature) Einheit: °C numeric

Witterungsgeführte Solltemperatur

Temperatur lesen
MODBUSR(H, 136, Int16)
Kompressor-Betriebszeit Variable Nur lesen

Kumulierte Kompressor-Laufzeit in Stunden

Register: H:122 Int16 Einheit: h numeric

Kompressor-Betriebszeit

Lesen
MODBUSR(H, 122, Int16)
DC-Bus-Strom Variable Nur lesen

Inverter-DC-Zwischenkreisstrom

Register: H:133 Int16 Einheit: A numeric

DC-Bus-Strom

Lesen
MODBUSR(H, 133, Int16)
DC-Bus-Spannung Variable Nur lesen

Inverter-DC-Zwischenkreisspannung — Rohwert multipliziert mit 10

Register: H:134 Int16 Einheit: V numeric

DC-Bus-Spannung

Lesen
MODBUSR(H, 134, Int16) *10
Desinfektion Schalter

Anti-Legionellen-Desinfektionszyklus für den Warmwasserspeicher

Register: H:5H:5 Bool (bit 4) bitfield

Desinfektion

Schaltzustand lesen
GETBIT(MODBUSR(H, 5, Int16),4)
Schaltzustand schreiben
var reg := MODBUSR(H, 5 , UInt16);
MODBUSW(H, 5 , UInt16, SETBIT(reg,4,St));
Kompressorfrequenz Variable Nur lesen
Register: H:100 Int16 Einheit: Hz numeric

Kompressorfrequenz

Lesen
MODBUSR(H, 100, Int16)
Wasser-Einlasstemperatur Temperatursensor Nur lesen

Wasser, das in den Wärmetauscher eintritt (Tw_in-Sensor)

Register: H:104 Int16 (Temperature) Einheit: °C numeric

Wasser-Einlasstemperatur

Temperatur lesen
MODBUSR(H, 104, Int16)
Heizung Schalter

Aktiviert oder deaktiviert die Raumheizfunktion

Register: H:0H:0 Bool (bit 1) bitfield
Werte / Zustände: ${general_yes} · ${general_no}

Heizung

Schaltzustand lesen
GETBIT(MODBUSR(H, 0, Int16),1)
Schaltzustand schreiben
var reg := MODBUSR(H, 0 , UInt16);
MODBUSW(H, 0 , UInt16, SETBIT(reg,1,St));
Lüfterdrehzahl Variable Nur lesen

Lüfterdrehzahl der Außeneinheit in RPM

Register: H:102 Int16 Einheit: RPM numeric

Lüfterdrehzahl

Lesen
MODBUSR(H, 102, Int16)
Außeneinheit-Strom Variable Nur lesen
Register: H:118 Int16 Einheit: A numeric

Außeneinheit-Strom

Lesen
MODBUSR(H, 118, Int16)
Hochdruck Außeneinheit Variable Nur lesen

Hochdruckseite des Kältemittels — Schutz aktiviert über 4,3 MPa (Fehlercode P1)

Register: H:116 Int16 Einheit: kPa numeric

Hochdruck Außeneinheit

Lesen
MODBUSR(H, 116, Int16)
Niederdruck Außeneinheit Variable Nur lesen

Niederdruckseite des Kältemittels — Schutz aktiviert unter 0,14 MPa (Fehlercode P0)

Register: H:117 Int16 Einheit: kPa numeric

Niederdruck Außeneinheit

Lesen
MODBUSR(H, 117, Int16)
Außeneinheit-Spannung Variable Nur lesen
Register: H:119 Int16 Einheit: V numeric

Außeneinheit-Spannung

Lesen
MODBUSR(H, 119, Int16)
Wasser-Auslasstemperatur Temperatursensor Nur lesen

Wasser, das den Wärmetauscher verlässt (Tw_out-Sensor)

Register: H:105 Int16 (Temperature) Einheit: °C numeric

Wasser-Auslasstemperatur

Temperatur lesen
MODBUSR(H, 105, Int16)
Wärmepumpen-Modus Mehrwertschalter

Betriebsmodusauswahl — Auto, Kühlen, Heizen und weitere Modi

Register: H:1H:1 Int16 numeric
Werte / Zustände: Auto · Auto · Chladenie · Kurenie

Wärmepumpen-Modus

Schaltzustand lesen
MODBUSR(H, 1, Int16)
Schaltzustand schreiben
MODBUSW(H, 1, Int16, Mu)
Brauchwassertemperatur Thermostat

Warmwasserspeicher-Thermostat — liest aktuelle Speichertemperatur, schreibt Solltemperatur

Register: H:115 (current), H:4 (setpoint)H:4 Int16 Einheit: °C numeric

Brauchwassertemperatur

Temperatur lesen
MODBUSR(H, 115, Int16)
Solltemperatur lesen
MODBUSR(H, 4, Int16)
Solltemperatur schreiben
MODBUSW(H, 4, Int16, Se)
Brauchwasser Schalter

Aktiviert oder deaktiviert die Warmwasserbereitung

Register: H:0H:0 Bool (bit 2) bitfield

Brauchwasser

Schaltzustand lesen
GETBIT(MODBUSR(H, 0, Int16),2)
Schaltzustand schreiben
var reg := MODBUSR(H, 0 , UInt16);
MODBUSW(H, 0, UInt16, SETBIT(reg,2,St));
Außentemperatur Temperatursensor Nur lesen

Außenlufttemperatur — T4-Sensor (H:107)

Register: H:107 Int16 (Temperature) Einheit: °C numeric

Außentemperatur

Temperatur lesen
MODBUSR(H, 107, Int16)
Wasserdurchfluss Variable Nur lesen

Wasserdurchfluss im Hydraulikkreis in m³/h

Register: H:138 Int16 Einheit: m³/h numeric

Wasserdurchfluss

Lesen
MODBUSR(H, 138, Int16) / 100
Verbindung: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Mögliche Verbesserungen (21)
  • H:6 Curve Selection — Heating curve selection — weather-compensated heating curve parameter
  • H:7 Forced Water Heating — Manual water heating trigger — forces heating cycle
  • H:8 Forced TBH — Tank Booster Heater — forces DHW tank electric backup heater on
  • H:9 Forced IBH1 — Internal Backup Heater 1 — forces electric backup heater on
  • H:10 Smart Grid Max Setpoint (t_SG_MAX) — Maximum setpoint for smart grid operation
  • H:11 T1S Temperature — Final water outlet temperature (T1S sensor). H:110 (T1) is now implemented as 'Calculated Water Temperature'
  • H:101 Operating Mode (read) — Current operating mode status readback — different from the control register H:1
  • H:106 T3 Temperature — Air side heat exchanger refrigerant outlet temperature
  • H:108 Tp Temperature (Discharge) — Discharge pipe temperature. Protection: >115°C triggers P4 error
  • H:109 Th Temperature (Suction) — Suction pipe temperature
  • H:112 T2 Temperature (Liquid pipe) — Water side heat exchanger liquid pipe temperature
  • H:113 T2B Temperature (Gas pipe) — Water side heat exchanger gas pipe temperature
  • H:124 Current Fault Code — Active error code — could enable fault monitoring in TapHome
  • H:128 Bit Status 1 — System status bit field
  • H:129 Load Output — Current load percentage output
  • H:132 Target Frequency — Requested compressor speed — useful to compare against actual frequency (H:100)
  • H:143–144 Electricity Consumption — Int32 across 2 registers — cumulative electricity consumption in kWh. Requires 32-bit read support
  • H:145–146 Power Output — Int32 across 2 registers — cumulative heat energy output in kWh. Requires 32-bit read support
  • H:250 IBH1 Power — Internal Backup Heater 1 power setting
  • H:251 IBH2 Power — Internal Backup Heater 2 power setting
  • H:252 TBH Power — Tank Booster Heater power setting

Quellen