
Der SolaX X3 Hybrid Ultra (Gen5) ist ein dreiphasiger Hybrid-PV-/Batterie-Wechselrichter mit einer Nennleistung von 10 kW bis 30 kW. Die TapHome-Vorlage kommuniziert mit dem Wechselrichter über Modbus RTU am RS-485-COM-1-Port (Pins REMOTE_485A / REMOTE_485B) und implementiert die Register-Map des SolaX Modbus-Protokolls V3.29. Sie liest PV-Strang-Leistung, Batterie-Ladezustand und -Temperatur, dreiphasige Netzspannung und -frequenz, lebenslange und tägliche Energiesummen, Einspeiseleistung vom externen Zähler und stellt schreibbare Lademodus, Nachtladungs-SOC (Eigenverbrauch) und maximale Einspeiseleistungsgrenze bereit.
Der X3-Ultra unterstützt Modbus TCP nicht nativ — TCP ist nur über ein SolaX-Überwachungsmodul (Pocket WiFi 3.0, Pocket LAN oder DataHub) verfügbar, das RTU am Port 502 zu TCP überbrückt. Für entfernte Installationen kann TapHome auch über ein RS-485-zu-Ethernet-Gateway eines Drittanbieters (z. B. Waveshare, USR-DR302) angeschlossen werden, das als Modbus RTU-over-TCP konfiguriert ist.
Modelle
Die TapHome-Vorlage deckt die gesamte X3-Ultra-Serie ab. Die PV3- und Batterie-2-SOC-Sensoren funktionieren nur bei der 3-MPPT-/Doppelbatterie-30-kW-Variante.
| Modell | Nennleistung AC | MPPT-Tracker | Hinweise |
|---|---|---|---|
| X3-ULT-15K | 15 kW | 2 | Standard 2-MPPT |
| X3-ULT-15KP | 15 kW | 3 | 3-MPPT (Modellcode H3BC) |
| X3-ULT-19.9K | 19,9 kW | 2 | Standard 2-MPPT |
| X3-ULT-20K | 20 kW | 2 | Standard 2-MPPT (Modellcode H3BD) |
| X3-ULT-20KP | 20 kW | 3 | 3-MPPT |
| X3-ULT-25K | 25 kW | 3 | Modellcode H3BF |
| X3-ULT-25KW | 25 kW | 3 | — |
| X3-ULT-30K | 30 kW | 3 | Doppelbatterie, PV3 aktiv (Modellcode H3BG) |
| X3-ULT-10K-GLV | 10 kW | — | Niederspannungsvariante (GLV) |
| X3-ULT-15K-GLV | 15 kW | — | Niederspannungsvariante (GLV) |
Der Modellcode kann zur Laufzeit über das Modul-Attribut Model ausgelesen werden (Register H:0x000E, 4-Zeichen-ASCII-String).
Kompatibilitätsumfang
Die Vorlage implementiert die Teilmenge des SolaX Modbus-Protokolls V3.29, die am häufigsten für das Heim-Energiemanagement verwendet wird — 19 Geräte, 2 modulebene Service-Attribute und eine Service-Aktion. Das vollständige Protokoll stellt deutlich mehr Register bereit; die nützlichsten nicht implementierten Funktionen (phasenweise Netzleistung und -strom, Batteriespannung/-strom/-leistung, BMS-Status, Inselbetriebsstunden, Fernsteuerung der Leistung usw.) können in einem zukünftigen Vorlagen-Update ergänzt werden. Die korrigierte Community-Vorlage im TapHome-Portal ergänzt bereits die Fernsteuerung der Leistung und Schreibvorgänge für Einstellungen, die nur bei einer Wertänderung erfolgen — siehe Bekannte Fehler der offiziellen Vorlage und Fernsteuerung der Leistung weiter unten.
Hardware-Anschluss
Der X3-Ultra hat einen einzigen multifunktionalen COM-1-Port (RJ45-Stil-Stecker mit beschrifteter Kabelhalterung). Dieselben physikalischen Pins erfüllen unterschiedliche Funktionen, je nachdem, in welche beschriftete Position der Kabelhalterung Sie verdrahten. Für die Modbus-Integration eines Drittanbieters verwenden Sie die Position RS485 — die Leitungen REMOTE_485A und REMOTE_485B.
COM-1-Port-Pinout

Pin-Zuordnung der RS485-Position (die einzige für TapHome relevante Position):
| Pin | Signal | TapHome-Verdrahtung |
|---|---|---|
| 1 | REMOTE_485A | A+ / D+ |
| 2 | REMOTE_485B | B− / D− |
| 3 | PARALLEL_485AA | nicht verwenden (nur SolaX-Zubehör) |
| 4 | PARALLEL_485AA | nicht verwenden (nur SolaX-Zubehör) |
| 5 | PARALLEL_485BB | nicht verwenden (nur SolaX-Zubehör) |
| 6 | PARALLEL_485BB | nicht verwenden (nur SolaX-Zubehör) |
| 7 | REMOTE_485A | Duplikat von Pin 1 (für Daisy-Chain) |
| 8 | REMOTE_485B | Duplikat von Pin 2 (für Daisy-Chain) |
Die Pins 3–6 gehören zum SolaX-proprietären PARALLEL_485-Kanal und sind für SolaX-Zubehör reserviert (Adapter Box G2, EV-Charger, DataHub, parallele Wechselrichter). Schließen Sie keinen Modbus-Master eines Drittanbieters an diese Pins an.
Ältere SolaX-Wechselrichter (Gen4 X3-Hybrid) verwendeten Pin 4 = 485A und Pin 5 = 485B. Das X3-Ultra-COM-1-Pinout ist anders — überprüfen Sie vor dem Crimpen immer die Kabelhalterungs-Beschriftung an Ihrer Einheit. Manche Community-Dokumentation verweist noch auf das ältere Gen4-Pinout.
RS-485-Verdrahtung

Verdrahtungsregeln aus dem X3-Ultra-Benutzerhandbuch (Abschnitt 8.6.4):
- Kabeltyp: Standard-Cat5- oder Cat6-UTP-Twisted-Pair
- Maximale Länge: 30 m RS-485-Kabel zwischen Wechselrichter und TapHome CCU
- Polarität ist wichtig: wenn keine Kommunikation, tauschen Sie A und B
- Ein einziger Modbus-Master: auf dem Bus ist nur ein Master erlaubt. Wenn ein SolaX-Überwachungsmodul die Leitung teilt, ist mit Konflikten zu rechnen
Die COM-1-Kabelhalterung hat dedizierte beschriftete Positionen für jeden Kanal — verdrahten Sie Ihr Cat5/Cat6-Kabel in den Schlitz mit der Beschriftung RS485 (nicht in Parallel-1, Parallel-2, BMS-1, BMS-2 oder DRM).
Anschlussoptionen
- Direktes Modbus-RTU-CCU: verdrahten Sie das COM-1-RS485-Paar direkt mit dem TapHome Modbus-RTU-CCU. Niedrigste Latenz, empfohlen für Echtzeit-Steuerung.
- RS-485-zu-Ethernet-Gateway (Modbus RTU-over-TCP): für Installationen, bei denen der Wechselrichter weit vom TapHome Core entfernt ist, verwenden Sie ein Waveshare RS485-zu-Ethernet-, USR-DR302- oder ähnliches Gateway, das als Modbus RTU-over-TCP am Port 502 konfiguriert ist. Der Vorlagen-Importparameter
IpAddressermöglicht dieses Muster. - SolaX Pocket WiFi 3.0 / Pocket LAN / DataHub (Modbus TCP): wenn das SolaX-Überwachungsmodul bereits installiert ist, überbrückt es RTU am Port 502 zu TCP mit einem Abfragezyklus von etwa 1 Sekunde — langsamer als direktes RTU und nicht für Echtzeit-Steuerschleifen empfohlen.
Konfiguration
Modbus-Kommunikation am Wechselrichter aktivieren
Navigieren Sie am Wechselrichter-LCD zu:
| |
Das Menü Advanced Settings erfordert möglicherweise ein Installateur-Passwort. Überprüfen oder setzen Sie Folgendes:
| Parameter | TapHome-Vorlagen-Standard | Wechselrichter-Standard | Bereich |
|---|---|---|---|
| Modbus-Adresse (Slave-ID) | 1 | 1 | 1–255 |
| Baudrate | 19200 | 19200 | 9600 / 19200 / 38400 / 57600 / 115200 |
| Parität | None | None | None / Odd / Even |
| Datenbits | 8 | 8 | — |
| Stoppbits | 1 | 1 | 1 oder 2 |
Die Baudrate muss zwischen Wechselrichter und TapHome übereinstimmen. Das Protokoll V3.29 spezifiziert 19200 als X3-Ultra-Standard; einige ältere SolaX-Vorlagen und Dokumentationen erwähnen noch 9600. Falls die Kommunikation fehlschlägt, prüfen Sie zuerst die Baudrate.
Der Wechselrichter kann die Modbus-Slave-Adresse auch über das Holding-Register H:0x00AC und die Baudrate über das Holding-Register H:0x00AD bereitstellen.
Importparameter in TapHome
Beim Import der Vorlage in TapHome müssen zwei Parameter gesetzt werden:
| Parameter | Zweck |
|---|---|
| IpAddress | IP-Adresse des RS-485-zu-TCP-Gateways (oder des SolaX Pocket WiFi/LAN-Überwachungsmoduls). Beim Standardwert belassen, wenn der Wechselrichter direkt mit dem TapHome Modbus-RTU-CCU verbunden ist. |
| SlaveId | Modbus-Slave-Adresse des Wechselrichters (Standard 1). Muss mit der Modbus-Adresseinstellung des Wechselrichters übereinstimmen. |
Kommunikations-Timing
Das SolaX Modbus-Protokoll erfordert ein Mindestintervall zwischen aufeinanderfolgenden Anfragen und verwendet individuelle Abfrageintervalle pro Gerät in der Vorlage (von einigen Sekunden für Netzspannung/-frequenz bis zu 80 s für Batterietemperatur). Pollen Sie kein Gerät aggressiv — der Wechselrichter drosselt Anfragen intern.
Gerätefunktionen
Batterieüberwachung
- Batterie 1 SOC — Ladezustand der primären Batterie als 0–1-Analogeingang (Rohregister in 1-%-Einheiten, geteilt durch 100 für den TapHome-Bereich 0–1)
- Batterie 2 SOC — Ladezustand der zweiten Batterie, nur bei der X3-ULT-30K Doppelbatterie-Variante funktionsfähig; andere Modelle liefern 0
- Batterietemperatur — Temperatur des Batterie-Packs in °C, alle 80 Sekunden abgefragt
Solar-PV-Leistung
- PV1-Leistung (Ost) — DC-Leistung von PV-Strang 1 in kW
- PV2-Leistung (Ost) — DC-Leistung von PV-Strang 2 in kW
- PV3-Leistung (West) — DC-Leistung von PV-Strang 3 in kW, nur bei 3-MPPT-Modellen (siehe Modelltabelle) funktionsfähig; andere Modelle liefern 0
Die Suffixe „Ost" / „West" sind eine Richtungsbenennung, die aus der ursprünglichen slowakischen Vorlage übernommen wurde — die PV-Strang-Nummer entspricht dem physischen MPPT-Eingang am Wechselrichter, nicht der tatsächlichen Ausrichtung der Anlage.
Netz- und Energiemessung
- Netzspannung L1 / L2 / L3 — phasenweise Netzspannung in Volt (Register
A:0x006A,A:0x006E,A:0x0072) - Netzfrequenz L1 / L2 / L3 — phasenweise Netzfrequenz in Hertz (Register
A:0x006D,A:0x0071,A:0x0075) - Netzeinspeisung (Zähler) — gedacht als Einspeiseleistung vom externen SolaX-Zähler / CT, aber die offizielle Vorlage liest das Register
A:0x0046mit falscher Wortreihenfolge (Int32stattLittleEndianInt32), sodass der Wert bedeutungslos ist (zum Beispiel −7340,033 statt −0,117 kW). Es ist kein Alias von Netz-Bezug / -Einspeisung — verwenden Sie dieses Gerät oder korrigieren Sie das Skript wie unter Bekannte Fehler der offiziellen Vorlage beschrieben - Netz-Bezug / -Einspeisung — die korrekte Ablesung der Zähler-/CT-Leistung (
A:0x0046,LittleEndianInt32) in kW; positiv = Einspeisen, negativ = Bezug - Tages-/Aktuelle Wechselrichter-Erzeugung — kombiniert in der offiziellen Vorlage die heutige Wechselrichter-Energie (Register
A:0x0050, ein Tageszähler, der jede Nacht zurückgesetzt wird) mit dem RegisterA:0x0002, das SolaX nur für einphasige X1-Modelle dokumentiert — am X3-Ultra liefert es 0. Die korrigierten Skripte finden Sie unter Bekannte Fehler der offiziellen Vorlage - Gesamt erzeugte Energie — kumulative Gesamtenergie, die vom AC-Port des Wechselrichters ins Netz eingespeist wurde, in kWh
Lade- und Einspeisesteuerung (schreibbar)
- Lademodus — Betriebsmodus des Batterieladers: Self Use, Feed-in Priority, Backup oder Manual
- Nachtladungs-SOC (Eigenverbrauch) — oberer SOC-Zielwert (10–100 %) für das Laden der Batterie aus dem Netz während der Nacht im Eigenverbrauchsmodus
- Max. Einspeiseleistungs-Grenze — maximal zulässige Einspeiseleistung ins Netz in kW (kein Prozentsatz): Das Register zählt bei X3-Modellen in 10-W-Schritten, und die Vorlage teilt durch 100
Für alle drei oben genannten schreibbaren Geräte gilt das EEprom-Schreiblimit (Lademodus →
SH:0x001F, Nachtladungs-SOC →SH:0x0063, Max. Einspeiseleistung →SH:0x0042). Die zugrundeliegenden Register sind EEprom-gestützt mit begrenzten Schreibzyklen — häufige Schreibvorgänge (alle paar Sekunden in einer Automatisierungsschleife) beschädigen das EEprom des Wechselrichters dauerhaft. Verwenden Sie nur manuelle Änderungen oder geplante Schreibvorgänge mit niedriger Frequenz.
Modulebene-Attribute und -Aktionen
- Betriebsmodus (Service-Attribut) — Betriebszustand des Wechselrichters als Text: Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby
- Model (Service-Attribut) — Modellcode des Wechselrichters als 4-Zeichen-ASCII-String (H3BC = 15K/15KP, H3BD = 19,9K/20K/20KP, H3BF = 25K, H3BG = 30K)
- Admin entsperren (Service-Aktion) — schreibt die Konstante
2014inSH:0x0000, um die erweiterten Wechselrichter-Einstellungen zu entsperren (selten erforderlich, nur zur Diagnose)
Fehlererkennung
Das Modul-ReadScript überwacht das Betriebsmodus-Register (A:0x0009) und meldet einen TapHome-Systemfehler, wenn der Wechselrichter in den Zustand 3 (Fault) oder 4 (Permanent Fault) eintritt. Zwei Fehlerregister werden Bit für Bit analysiert:
- Wechselrichter-Fehlercodes (32-Bit,
A:0x0040–A:0x0041) — 31 individuelle Fehler, darunter Netzspannungs-/Frequenzfehler, PV-Spannungsfehler, Batteriefehler, Isolationsfehler, Übertemperatur, Überstromschutz, Relaisfehler und Kommunikationsfehler - Manager-Fehlercodes (16-Bit,
A:0x0043) — 11 Fehlerbits, darunter Leistungstyp-Fehler, EEPROM-Fehler, NTC-Sensor-Probleme, Batterietemperatur-Warnungen, Zählerfehler und Lüfterfehler
Einzelne Fehler erscheinen als diskrete Fehler im TapHome-Systemprotokoll, sodass Installateure das fehlerhafte Subsystem identifizieren können, ohne das Wechselrichter-LCD ablesen zu müssen.
Bekannte Fehler der offiziellen Vorlage
Die offizielle TapHome-Vorlage für den X3-Ultra liest mehrere Register falsch und schreibt eine Einstellung periodisch (geprüft anhand des SolaX Modbus-Protokolls V3.29 und V001.02 sowie anhand von Werten in installierten Anlagen). Ein aus der offiziellen Vorlage importiertes Modul aktualisiert sich nicht selbst, wenn sich die Vorlage ändert. Korrigieren Sie entweder die Skripte des bestehenden Moduls und seiner Geräte von Hand, oder importieren Sie die korrigierte Community-Vorlage aus dem TapHome-Portal: SolaX X3-Ultra Hybrid Inverter — monitoring and power control (anmelden, XML herunterladen und als neues Modul importieren).
| Wo | Offizielles Skript | Korrigiertes Skript | Auswirkung des Fehlers |
|---|---|---|---|
| Modul — Leseskript | var x3 := MODBUSR(A, 0x0040, Uint32); | var x3 := MODBUSR(A, 0x0040, LittleEndianUint32); | Die beiden Hälften des 32-Bit-Fehlercodes sind vertauscht: Ein Fehler in Bit 1 (Grid Lost Fault) wird als Bit 17 (Bat Power Low) gemeldet. Parallel Fault (Bit 21) und Hard Limit Fault (Bit 22) werden überhaupt nicht gemeldet |
| Netzeinspeisung (Zähler) | MODBUSR(A,0x0046, Int32)/1000 | MODBUSR(A, 0x0048, LittleEndianUint32) / 100 — Gesamtenergie ins Netz in kWh | Die Leistung liest bereits Netz-Bezug / -Einspeisung korrekt; dieses Gerät zeigt eine bedeutungslose Zahl. Gesamtenergie aus dem Netz: MODBUSR(A, 0x004A, LittleEndianUint32) / 100 |
| Tages-/Aktuelle Wechselrichter-Erzeugung — Gesamtverbrauch | MODBUSR(A, 0x50, UInt16) /10 | MODBUSR(A, 0x0094, LittleEndianUint32) / 10 | 0x0050 ist ein Tageszähler, der jede Nacht auf 0 fällt; 0x0094 ist die gesamte PV-Energie |
| Tages-/Aktuelle Wechselrichter-Erzeugung — Momentanleistung | MODBUSR(A,0x02, Int16)/1000 | (MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16) + MODBUSR(A, 0x0124, UInt16)) / 1000 | 0x0002 ist die Netzleistung einphasiger X1-Modelle und liefert am X3-Ultra 0 |
| Batterietemperatur | MODBUSR(A,0x0018, UInt16) | MODBUSR(A, 0x0018, Int16) | Unter 0 °C zeigt die offizielle Vorlage etwa 65535 °C |
| Nachtladungs-SOC (Eigenverbrauch) — Schreibskript | MODBUSW(SH, 0x0063, Uint16, Le * 100) mit eingeschaltetem periodischem Schreiben | IF(MODBUSR(H, 0x0094, UInt16) != ROUND(Le * 100), MODBUSW(SH, 0x0063, Uint16, ROUND(Le * 100))); | Das offizielle Gerät schreibt den Nachtladungs-Zielwert bei jeder Abfrage (etwa alle 55 s) in den Wechselrichter — 0x0063 ist ein EEPROM-Register mit etwa 1 Million Schreibzyklen. Mit dem korrigierten Skript schreibt es nur, wenn sich der Wert tatsächlich ändert |
Das Register H:0x0094 ist auch im Protokoll V3.29 der Ziel-Ladezustand der Nachtladung (SelfUse_NightCharge_UpperSoC); die Nachtladung aus dem Netz wird im niederwertigen Byte von H:0x0093 eingeschaltet (Schreibregister 0x0062).
Fernsteuerung der Leistung
Die korrigierte Community-Vorlage ergänzt das Gerät Remote control - AC power target. Es nutzt den SolaX-Fernsteuerungsmodus (VPP) 1: Ein positiver Zielwert in kW lässt den Wechselrichter an seinem AC-Port Leistung aufnehmen (er lädt die Batterie, aus dem Netz, wenn die PV-Leistung nicht reicht), ein negativer Zielwert lässt ihn Leistung abgeben (er entlädt die Batterie, und was das Haus nicht verbraucht, geht ins Netz); 0 beendet die Fernsteuerung. Die Vorlage entsperrt bei Bedarf die Wechselrichter-Einstellungen mit dem Standardpasswort 2014 und wiederholt den Befehl alle 60 s. Die Fernsteuerung startet nicht, solange sich der Wechselrichter im Arbeitsmodus Manual befindet.
SolaX kennzeichnet die Fernsteuerungsregister (0x007C–0x0088) in seinem Protokoll nicht als EEPROM-Register, bestätigt das Gegenteil aber auch nicht schriftlich. Diese Vorlage stützt sich auf die Erfahrung der Home-Assistant- und openHAB-Communitys, die diese Register alle paar Sekunden bis Minuten schreiben. Die oben genannten Einstellungen sind EEPROM-Register (von SolaX mit ★ gekennzeichnet, etwa 1 Million Schreibzyklen): Ändern Sie sie selten und nie aus häufigen Automatisierungen — für das Laden und Entladen nach Spotpreisen verwenden Sie den AC-Leistungszielwert der Fernsteuerung.
Fehlerbehebung
Keine Kommunikation mit dem Wechselrichter
- Überprüfen Sie, dass die RS-485-Verdrahtung an den REMOTE_485A / REMOTE_485B-Pins liegt (1+2 oder 7+8 an der COM-1-RS485-Position), nicht an den PARALLEL_485-Pins 3–6
- Prüfen Sie, dass die Baudrate zwischen Wechselrichter (
Menu → Setting → Advance Setting → Modbus) und TapHome-Modul übereinstimmt — beide müssen standardmäßig 19200 sein - Bestätigen Sie, dass die Slave-ID übereinstimmt (Standard
1) - Überprüfen Sie, dass nur ein Modbus-Master am RS-485-Bus angeschlossen ist — Modbus unterstützt keinen Multi-Master
- Tauschen Sie die A- und B-Adern, falls die Kabelpolarität unsicher ist
- Bestätigen Sie, dass das Kabel 30 m Gesamt-RS-485-Länge nicht überschreitet
PV3 oder Batterie-2-SOC liest null
Diese Geräte funktionieren nur am X3-ULT-30K (3-MPPT-/Doppelbatterie-Variante). Bei kleineren Modellen liefern die Register A:0x0124 (PV3-Leistung) und A:0x012D (Batterie-2-SOC) null. Verbergen Sie die nicht verwendeten Geräte in der TapHome-UI für Nicht-30K-Installationen.
Batterietemperatur liest einen unerwartet hohen Wert
Das Batterietemperatur-Register (A:0x0018) wird von der offiziellen Vorlage als UInt16 gelesen, der Wert ist jedoch vorzeichenbehaftet. Temperaturen unter null (z. B. −1 °C) laufen zu großen positiven Werten über (z. B. 65535). Ändern Sie das Skript in MODBUSR(A, 0x0018, Int16) — siehe Bekannte Fehler der offiziellen Vorlage.
Schreibvorgänge in Lademodus / Nachtladungs-SOC / Max. Einspeiseleistung wirken sich nicht aus
Diese Register sind EEprom-gestützt und der Wechselrichter begrenzt Schreibvorgänge, um das EEprom zu schützen. Stellen Sie sicher, dass die Schreibvorgänge selten sind (manuell oder geplant, nicht in einer engen Automatisierungsschleife). Einige Firmware-Versionen erfordern auch, dass der Lademodus auf Manual (3) eingestellt ist, bevor bestimmte erzwungene Lade-/Entladungs-Submodi reagieren.
Modbus TCP über das SolaX-Überwachungsmodul ist langsam
Pocket WiFi 3.0 / Pocket LAN / DataHub überbrücken RTU zu TCP mit einem Abfragezyklus von etwa 1 Sekunde und handhaben nur einen Modbus-TCP-Client gleichzeitig. Wenn SolaX-Cloud-Monitoring ebenfalls Daten zieht, ist mit Konflikten zu rechnen. Für Echtzeit-Steuerung (Frequenzantwort, Peak Shaving) verwenden Sie direktes Modbus RTU oder ein dediziertes RS-485-zu-Ethernet-Gateway eines Drittanbieters.
