TapHome

SolaX Hybrid X1/X3 Gen 4

Modbus RTU
Eingereicht von
Zuletzt aktualisiert: 06. 2026
SolaX Hybrid X1/X3 Gen 4

Die SolaX X1-HYBRID und X3-HYBRID Gen 4 sind Energiespeicher-Wechselrichter, die sowohl einphasige (3–7,5 kW) als auch dreiphasige (5–15 kW) Konfigurationen unterstützen. Die TapHome-Vorlage kommuniziert über Modbus RTU per RS-485 und liest Eingangs- und Holding-Register für den Batterieladezustand, PV-String-Leistung, Netzleistungsfluss, Energiemengen, Lademodus und SOC für Nachtladung. Alle Schreibskripte sind auskommentiert, sodass die Vorlage effektiv schreibgeschützt ist.

Die Vorlage implementiert außerdem eine umfassende Fehlererkennung durch Analyse von 32-Bit-Wechselrichter-Fehlercodes und 16-Bit-Manager-Fehlercodes, die als Fehler in TapHome gemeldet werden.

Hardwareanschluss

Der SolaX Gen 4 Wechselrichter bietet einen RS-485 COM-Port für die Modbus RTU-Kommunikation an der Unterseite. Der COM-Port verwendet einen RJ45-Stecker.

SolaX X3-HYBRID G4 Unterseite — Anschlusslayout mit COM, BMS, Meter/CT, PV, BAT und GRID Anschlüssen

Pin-Belegung des COM-Anschlusses (RJ45):

PinBelegungBeschreibung
1Drycontact_A(in)Systemschalter-Anschluss
2Drycontact_B(in)Systemschalter-Anschluss
3+13V
4485ARS-485 Data+ (für TapHome)
5485BRS-485 Data− (für TapHome)
6GNDMasse
7Drycontact_A(out)Generator-Anschluss
8Drycontact_B(out)Generator-Anschluss

Verbinden Sie TapHome mit dem COM-Port des Wechselrichters:

  • Pin 4 (485A) am COM-Port des Wechselrichters zu A+/D+ am TapHome RS-485
  • Pin 5 (485B) am COM-Port des Wechselrichters zu B-/D- am TapHome RS-485
  • Pin 6 (GND) — empfohlen für zuverlässige Kommunikation

Der Wechselrichter selbst unterstützt Modbus TCP nicht nativ. Modbus TCP ist nur über das SolaX-Überwachungsmodul (WLAN-Dongle) verfügbar und wird von der TapHome-Vorlage nicht verwendet.

Für Installationen, bei denen eine RS-485-Verkabelung nicht praktikabel ist, bietet das Template SolaX Inverter (Cloud API) Überwachung über die SolaxCloud-Plattform per HTTPS — ohne physische Verbindung. Es unterstützt alle SolaX-Wechselrichtertypen, nicht nur den Gen 4 Hybrid.

Einige Holding-Register sind mit begrenzten EEprom-Schreibzyklen gekennzeichnet. Übermäßige Schreiboperationen können zu irreversiblen Hardwareschäden führen. Die TapHome-Vorlage hat alle Schreibskripte deaktiviert, daher ist dies bei der aktuellen Vorlage kein Problem.

Konfiguration

Modbus-Kommunikation aktivieren

Modbus RTU ist standardmäßig am RS-485 COM-Port des Wechselrichters verfügbar. Die folgenden Parameter müssen zwischen dem Wechselrichter und dem TapHome-Modul übereinstimmen:

  1. Slave ID – Standard ist 1, am Wechselrichter-Display konfigurierbar
  2. Baudrate – der Wechselrichter hat standardmäßig 19200 Baud, die TapHome-Vorlage verwendet jedoch 9600 Baud. Passen Sie einen der Werte an, damit beide übereinstimmen
  3. Datenformat – 8 Datenbits, keine Parität, 1 Stoppbit

Konfiguration am Wechselrichter-Display: Menu > Setting > Advance Setting > Modbus. Slave-Adresse und Baudrate einstellen. Die Baudrate kann auch aus dem Holding-Register H:0x00B0 gelesen und über Register 0x00CA geschrieben werden (Werte: 0=115200, 1=57600, 2=56000, 3=38400, 4=19200, 5=14400, 6=9600).

Um die Wechselrichtereinstellungen nicht ändern zu müssen, passen Sie die Baudrate in den TapHome-Moduleinstellungen auf 19200 an, um dem Wechselrichter-Standard zu entsprechen.

Kommunikationstiming

Das Protokoll erfordert ein Mindestintervall von 1 Sekunde zwischen aufeinanderfolgenden Modbus-Anweisungen und einen Zeichen-Lücken-Timeout von mindestens 100 ms. Der Antwort-Timeout beträgt 1 Sekunde. Die TapHome-Vorlage verwendet individuelle Poll-Intervalle pro Gerät (2,5 s bis 150 s), die diese Anforderungen erfüllen.

RS-485 COM-Port-Funktion

Register H:0x013E (485CommFunSelect) bestimmt, ob der RS-485-Port für die Modbus-Kommunikation (Wert 0) oder die EV-Lader-Kommunikation (Wert 1) verwendet wird. Stellen Sie sicher, dass dieser für die TapHome-Integration auf 0 (Modbus 485) eingestellt ist.

Gerätefunktionen

Batterieüberwachung
  • Battery SOC – liest den Batterieladezustand (A:0x1C) als Prozentsatz. Der Rohregisterwert in 1%-Einheiten wird durch 100 geteilt für den TapHome 0–1 Analogeingang (z.B. 85% wird zu 0,85)
  • Battery Temperature – liest die Batterietemperatur (A:0x18) in Grad Celsius. Polling alle 80 Sekunden
Solar-PV-Leistung
  • PV1 Power – DC-Leistungsausgang von PV-String 1 (A:0x0A), in kW angezeigt nach /1000-Umrechnung von Watt
  • PV2 Power – DC-Leistungsausgang von PV-String 2 (A:0x0B), in kW angezeigt nach /1000-Umrechnung von Watt
Netzleistung und Energiemessung
  • Grid Feed-in Power – Momentanleistung des Netzes (A:0x46, LittleEndianInt32) in kW. Positive Werte zeigen Einspeisung ins Netz, negative Werte zeigen Entnahme aus dem Netz
  • Daily / Actual Energy – kombiniert den täglichen Energieertrag vom Wechselrichter AC-Port (A:0x50, 0,1 kWh Auflösung) und die Echtzeit-Netzleistung (A:0x02) in kW. Das Netzleistungsregister ist X1-spezifisch (einphasig)
  • Total Energy – kumulativer Gesamtenergiertrag vom Wechselrichter AC-Port (A:0x52, LittleEndianInt32), in MWh angezeigt
Lademodus und Nachtladung
  • Charger Use Mode – liest den aktiven Solarlademodus (H:0x8B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) oder Manual Mode (3). Werte 4–9 sind reserviert. Das Schreibregister (H:0x1F) existiert in der Vorlage, ist aber auskommentiert, was es schreibgeschützt macht
  • Self-Use Night Charge SOC – liest den oberen SOC-Zielwert für die Nachtladung im Self-Use-Modus (H:0x94) als Prozentsatz. Das Schreibregister (H:0x63) und das Aktivierungsregister (H:0x62) sind beide auskommentiert, sodass die Nachtladekonfiguration nicht über TapHome geändert werden kann
Fehlererkennung

Das ReadScript auf Modulebene überwacht den Betriebsmodus des Wechselrichters (A:0x09) und zwei Fehlerregister:

  • Run Mode Fehler – löst einen Fehler aus, wenn Run Mode 3 (Fault) oder 4 (Permanent Fault) ist
  • Wechselrichter-Fehlercodes (A:0x40) – 32-Bit-Bitmap für 28 individuelle Fehler, einschließlich Netzspannungs-/Frequenzfehler, PV-Spannungsfehler, Batteriefehler, Isolationsfehler, Übertemperatur, Überstromschutz, Relaisfehler und Kommunikationsfehler
  • Manager-Fehlercodes (A:0x43) – 16-Bit-Bitmap für Leistungstyp-Fehler, EEPROM-Fehler, NTC-Sensorprobleme, Batterietemperaturwarnungen, Messgerätfehler und Lüfterfehler

Das Run Mode-Dienstattribut am Modul zeigt den aktuellen Wechselrichterstatus als Text an: Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle oder Standby.

Weitere Funktionen

Der Wechselrichter bietet eine umfangreiche Registerkarte mit über 300 Holding-Registern und 200 Eingangsregistern. Bemerkenswerte Funktionen, die noch nicht in der Vorlage implementiert sind, umfassen die Spannungs- und Stromüberwachung pro PV-String (A:0x03–0x06), Batteriespannungs-/Strom-/Leistungsmessungen, BMS-Verbindungsstatus, Netz-Ein/Aus-Status, X3 Netzspannung/-strom/-leistung pro Phase (12 Register bei A:0x6A–0x75), kumulierte Netzeinspeisung und -entnahme (über Zähler), gesamte Solarenergieerzeugung, BMS-Benutzer-SOC und -SOH sowie minimale/maximale Batteriezellentemperatur und -spannung. Schreibfunktionen umfassen System-Ein/Aus-Steuerung, Lademodusauswahl, manuelles Erzwingen von Laden/Entladen, minimaler Entlade-SOC, Nachtladekonfiguration und Fernleistungsregelung mit Wirk-/Blindleistungszielen. Diese können in einem zukünftigen Vorlagen-Update hinzugefügt werden.

Die Vorlage liest derzeit die X1 (einphasige) Netzleistung bei A:0x02. Für X3 (dreiphasige) Installationen ist die phasenweise Netzleistung bei den Registern A:0x6C, A:0x70 und A:0x74 verfügbar, ist aber in der aktuellen Vorlage nicht enthalten.

Fehlerbehebung

Keine Kommunikation mit dem Wechselrichter
  1. Überprüfen Sie die RS-485-Kabelverbindungen: A+ zu A+, B- zu B-, GND zu GND
  2. Prüfen Sie, ob Register H:0x013E auf 0 eingestellt ist (Modbus 485-Modus, nicht EV-Lader)
  3. Bestätigen Sie, dass die Baudrate zwischen Wechselrichter und TapHome übereinstimmt – der Wechselrichter hat standardmäßig 19200, die Vorlage standardmäßig 9600
  4. Überprüfen Sie, ob die Slave ID in TapHome mit der Wechselrichtereinstellung übereinstimmt (Standard: 1)
  5. Stellen Sie sicher, dass kein anderer Modbus-Master an demselben RS-485-Bus angeschlossen ist – Modbus unterstützt nur einen einzigen Master
Falsche Battery SOC-Anzeige

Das Battery SOC-Register (A:0x1C) meldet Werte in 1%-Einheiten. Die Vorlage teilt durch 100 für den TapHome 0–1 Analogeingang. Wenn der angezeigte Wert falsch erscheint, überprüfen Sie, ob das TapHome-Gerät als AnalogInput (Bereich 0–1, nicht 0–100) konfiguriert ist.

Vorzeichenkonvention der Netzleistung

Grid Feed-in Power (A:0x46) verwendet eine Vorzeichenkonvention, bei der positive Werte den Export (Erzeugung/Einspeisung ins Netz) und negative Werte den Import (Entnahme aus dem Netz) bedeuten. Das Netzleistungsregister Daily/Actual Energy (A:0x02) kann bei Netzentnahme ebenfalls negative Werte anzeigen.

Registerunterschiede X1 vs X3

Einige Register sind modellspezifisch. Netzspannung (A:0x00), Strom (A:0x01) und Leistung (A:0x02) sind X1-Einphasenregister. Für dreiphasige X3-Modelle befinden sich die entsprechenden phasenweisen Messwerte bei A:0x6A–0x75. Die Vorlage verwendet das X1-Netzleistungsregister, das bei X3-Modellen möglicherweise nicht korrekt meldet.

Verfügbare Geräte

SolaX Hybrid Gen 4 Modul
Serviceattribute
BetriebsmodusBetriebszustand des Wechselrichters — Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby

SOLAX Hybrid Gen 4

Lesen (Modul)
var reg := MODBUSR(A, 0x09, UInt16);
IF(reg = 3, ADDERROR("Run Mode Fault"));
IF(reg = 4, ADDERROR("Run Mode Permanent Fault"));
#error table  2-3 for x3
var x3 := MODBUSR(A, 0x0040, Uint32);
IF(GETBIT(x3, 0) = 1, ADDERROR("TZ Protect Fault"));
IF(GETBIT(x3, 1) = 1, ADDERROR("Grid Lost Fault"));
IF(GETBIT(x3, 2) = 1, ADDERROR("Grid Volt Fault"));
IF(GETBIT(x3, 3) = 1, ADDERROR("Grid Freq Fault"));
IF(GETBIT(x3, 4) = 1, ADDERROR("PV Volt Fault"));
IF(GETBIT(x3, 5) = 1, ADDERROR("Bus Volt Fault"));
IF(GETBIT(x3, 6) = 1, ADDERROR("Bat Volt Fault"));
IF(GETBIT(x3, 7) = 1, ADDERROR("AC10mins Volt Fault"));
IF(GETBIT(x3, 8) = 1, ADDERROR("DCI OCP Fault"));
IF(GETBIT(x3, 9) = 1, ADDERROR("DCV OCP Fault"));
IF(GETBIT(x3, 10) = 1, ADDERROR("SW OCP Fault"));
IF(GETBIT(x3, 11) = 1, ADDERROR("RC OCP Fault"));
IF(GETBIT(x3, 12) = 1, ADDERROR("Isolation Fault"));
IF(GETBIT(x3, 13) = 1, ADDERROR("Temp Over Fault"));
IF(GETBIT(x3, 14) = 1, ADDERROR("BatConnDir Fault"));
IF(GETBIT(x3, 15) = 1, ADDERROR("Off-grid Overload"));
IF(GETBIT(x3, 16) = 1, ADDERROR("Overload"));
IF(GETBIT(x3, 17) = 1, ADDERROR("Bat Power Low"));
IF(GETBIT(x3, 18) = 1, ADDERROR("BMS Lost"));
IF(GETBIT(x3, 19) = 1, ADDERROR("Fan Fault"));
IF(GETBIT(x3, 20) = 1, ADDERROR("Low Temp Fault"));
IF(GETBIT(x3, 23) = 1, ADDERROR("INV Volt Sample Fault"));
IF(GETBIT(x3, 24) = 1, ADDERROR("Inner Comm Fault"));
IF(GETBIT(x3, 25) = 1, ADDERROR("INV EEPROM Fault"));
IF(GETBIT(x3, 26) = 1, ADDERROR("RCD Fault"));
IF(GETBIT(x3, 27) = 1, ADDERROR("Grid Relay Fault"));
IF(GETBIT(x3, 28) = 1, ADDERROR("Off-grid Relay Fault"));
IF(GETBIT(x3, 29) = 1, ADDERROR("PV ConnDir Fault"));
IF(GETBIT(x3, 30) = 1, ADDERROR("Charger Relay Fault"));
IF(GETBIT(x3, 31) = 1, ADDERROR("Earth Relay Fault"));

#error 2-5 Manager error code
var err := MODBUSR(A, 0x0043, Uint16);
IF(GETBIT(err, 0) = 1, ADDERROR("Power Type Fault"));
IF(GETBIT(err, 1) = 1, ADDERROR("Port OC Warning"));
IF(GETBIT(err, 2) = 1, ADDERROR("Mgr EEPROM Fault"));
IF(GETBIT(err, 4) = 1, ADDERROR("NTC Sample Invalid"));
IF(GETBIT(err, 5) = 1, ADDERROR("Battery Temperature Low"));
IF(GETBIT(err, 6) = 1, ADDERROR("Battery Temperature High"));
IF(GETBIT(err, 9) = 1, ADDERROR("Meter Fault"));
IF(GETBIT(err, 10) = 1, ADDERROR("Bypass Relay Fault"));
IF(GETBIT(err, 11) = 1, ADDERROR("Fan 2 Fault"));
Serviceattribute
Run Mode
SWITCH(MODBUSR(A, 0x09, UInt16), 
0, "Waiting",
1, "Checking",
2, "Normal",
3, "Fault",
4, "Permanent Fault",
5, "Update",
6, "Off-grid waiting",
7, "Off-grid",
8, "Self Testing ",
9, "Idle",
10, "Standby",
"Other"
);
Batterie-SOC Analogeingang Nur lesen

Batterieladezustand in Prozent (0–100 %) — in TapHome als Analogeingang 0–1 angezeigt

Register: A:0x1C UInt16 Einheit: % numeric

Batterie-SOC

Eingangslevel lesen
MODBUSR(A, 0x1C, UInt16)/100
Batterietemperatur Temperatursensor Nur lesen
Register: A:0x18 UInt16 Einheit: °C numeric

Batterietemperatur

Temperatur lesen
MODBUSR(A,0x0018, UInt16)
Tagesertrag / Aktuelle Energie Stromzähler Nur lesen

Kombiniert tägliche Energieeinspeisung ins Netz (kWh) und Echtzeit-Netzleistung (kW) — negative Netzleistung zeigt Bezug

Register: A:0x50, A:0x02 UInt16, Int16 Einheit: kWh / kW numeric

Tagesertrag / Aktuelle Energie

Gesamtverbrauch lesen
MODBUSR(A, 0x50, UInt16) /10
Bedarf lesen
MODBUSR(A,0x02, Int16)/1000
Lademodus Mehrwertschalter Nur lesen

Aktiver Solarlademodus — Self Use, Feedin Priority, Backup oder Manual (schreibgeschützt)

Register: H:0x8BH:0x1F UInt16 numeric
Werte / Zustände: Self Use Mode · Feedin Priority · Backup Mode · Manual Mode

Lademodus

Schaltzustand lesen
MODBUSR(H, 0x008B, Uint16)
Schaltzustand schreiben
#MODBUSW(H, 0x001F, uint16, Mu)
Netzeinspeisung Variable Nur lesen

Momentane Netzleistung in kW — positive Werte = Einspeisung, negative Werte = Bezug

Register: A:0x46 LittleEndianInt32 Einheit: kW numeric

Netzeinspeisung

Lesen
MODBUSR(A, 0x46,LittleEndianInt32)/1000
PV1-Leistung Variable Nur lesen
Register: A:0x0A UInt16 Einheit: kW numeric

PV1-Leistung

Lesen
MODBUSR(A,0x0a, UInt16)/1000
PV2-Leistung Variable Nur lesen
Register: A:0x0B UInt16 Einheit: kW numeric

PV2-Leistung

Lesen
MODBUSR(A,0x0b, UInt16)/1000
Nachtladungs-SOC (Eigenverbrauch) Dimmer Nur lesen

Oberer SOC-Zielwert für die Nachtladung im Eigenverbrauchsmodus (schreibgeschützt, 10–100 %)

Register: H:0x94H:0x63 UInt16 Einheit: % numeric

Nachtladungs-SOC (Eigenverbrauch)

Initialisierung
#MODBUSWNE(H, 0x0062, Uint16, 1);
Level lesen
MODBUSR(H, 0x0094, Uint16) / 100
Level schreiben
#MODBUSW(H, 0x0063, Uint16, Le * 100)
Gesamtenergie Variable Nur lesen

Kumulativer Gesamtenergiertrag vom Wechselrichter AC-Port in MWh

Register: A:0x52 LittleEndianInt32 Einheit: MWh numeric

Gesamtenergie

Lesen
MODBUSR(A, 0x52,LittleEndianInt32) / 1000
Verbindung: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Mögliche Verbesserungen (25)
  • A:0x00 Grid Voltage (X1) — 0.1V, UInt16. X3 per-phase voltages at A:0x6A/0x6E/0x72
  • A:0x01 Grid Current (X1) — 0.1A, Int16. X3 per-phase currents at A:0x6B/0x6F/0x73
  • A:0x03, A:0x04 PV Voltage 1 & 2 — 0.1V, UInt16. Useful for string-level diagnostics
  • A:0x05, A:0x06 PV Current 1 & 2 — 0.1A, UInt16. Useful for string-level diagnostics
  • A:0x08 Radiator Temperature — 1°C, Int16. Inverter internal radiator/heatsink temperature
  • A:0x14 Battery Voltage — 0.1V, Int16. Battery pack voltage
  • A:0x15 Battery Current — 0.1A, Int16. Positive=charge, negative=discharge
  • A:0x16 Battery Power — 1W, Int16. Positive=charging, negative=discharging
  • A:0x17 BMS Connect State — 0=Disconnected, 1=Connected. Critical for battery health monitoring
  • A:0x1A Grid Status — 0=OnGrid, 1=OffGrid. Important for backup/off-grid scenarios
  • A:0x48–0x49 Feed-in Energy Total (Meter) — 0.01kWh, UInt32 LE. Cumulative energy exported to grid via meter
  • A:0x4A–0x4B Consumed Energy Total (Meter) — 0.01kWh, UInt32 LE. Cumulative energy consumed from grid via meter
  • A:0x6A–0x75 X3 Per-Phase Grid Readings — Voltage/current/power/frequency per phase R/S/T. 12 registers total. Essential for 3-phase monitoring
  • A:0x94–0x95 Solar Energy Total — 0.1kWh, UInt32 LE. Cumulative PV production (both strings combined)
  • A:0x96 Solar Energy Today — 0.1kWh, UInt16. Today PV production
  • A:0xBE BMS User SOC — 1%, UInt16. SOC as reported by BMS (may differ from A:0x1C)
  • A:0xBF BMS User SOH — 1%, UInt16. Battery state of health
  • Write 0x001C System ON/OFF — 0=OFF, 1=ON. Remote system power control
  • Write 0x001F Charger Use Mode (write) — Write register exists in template but is COMMENTED OUT. 0=Self Use, 1=Feed-in, 2=Backup, 3=Manual
  • Write 0x0020 Manual Mode — 0=Stop, 1=Force charge, 2=Force discharge. Requires Charger Use Mode = 3 (Manual)
  • Write 0x0061 SelfUse Discharge Min SOC — 10%–100%. Minimum SOC before discharge stops in Self-Use mode
  • H:0x8C Manual Mode Readback — 0=Stop, 1=Force charge, 2=Force discharge. Readback of current manual mode setting
  • A:0xBA, A:0xBB Battery Temp High/Low — 0.1°C, Int16. Min/max battery cell temperatures
  • A:0xBC, A:0xBD Cell Voltage High/Low — 0.001V, UInt16. Min/max individual cell voltages. Important for battery health
  • Write 0x007C–0x0082 Remote Power Control — Active/reactive power targets, duration. Enables advanced energy management and grid services

Quellen

Haben Sie ein Problem mit dieser Gerätevorlage gefunden?

Sagen Sie uns, was nicht funktioniert, was fehlt oder wie sich die Vorlage verhalten sollte. Ihr Feedback hilft uns, den Katalog genau zu halten.

Von TapHome verifiziert

Möchtest du das in deinem TapHome Core verwenden?

Öffne diese Vorlage im Kundenportal, um sie auf eine deiner Wohnungen anzuwenden, oder entwirf eine Anpassung und reiche sie an den Katalog ein.

Im Portal öffnen