TapHome

SolaX SK-SU Hybrid Inverter

Modbus TCP
Submitted by
Last updated: 03. 2026
SolaX SK-SU Hybrid Inverter

The SolaX SK-SU series (SK-SU3000E, SK-SU3700E, SK-SU5000E, SK-SU3000C, SK-SU5000C) are single-phase hybrid inverters from the Gen2 X1 Hybrid family. They combine solar PV conversion with battery storage management in a single unit. TapHome connects directly to the inverter via Modbus TCP over Ethernet — no additional gateway or WiFi dongle is required.

The template provides real-time monitoring of AC output power, PV string production, battery state of charge and power, grid feed-in/consumption, daily and total energy production, and temperature sensors for the inverter and battery.

Enabling Modbus communication

The SK-SU series has a built-in Ethernet module that supports Modbus TCP natively. No additional hardware (Pocket WiFi dongle) is needed.

  1. Connect an Ethernet cable from the inverter’s Ethernet port to your local network router or switch
  2. Check the router’s DHCP table to find the IP address assigned to the inverter
  3. Verify that TapHome Core is on the same network/subnet as the inverter
  • Protocol: Modbus TCP
  • Port: 502
  • Default Slave ID: 1
  • Function code: 0x04 (Read Input Registers)
  • Byte order: Little-endian for 32-bit values

Assign a static IP address to the inverter in the router’s DHCP settings to prevent the address from changing after a power cycle.

Only one active Modbus TCP connection to the inverter is supported at a time. Close any other Modbus tools (QModMaster, SolaX Cloud monitoring via dongle) before connecting TapHome.

Configuration

When importing the template in TapHome, provide:

  • IP Address — the inverter’s IP on the local network (default: 192.168.1.0)
  • Slave ID — Modbus slave address (default: 1)

The inverter’s recommended minimum query cycle is approximately 1 second. The template uses poll intervals of 2.5–150 seconds depending on the device, which is well within this limit.

Device capabilities

The template exposes the following devices:

Solar production
  • PV String 1 Power — real-time power output from PV string 1 in kW (register 0x0A, UInt16, divided by 1000)
  • PV String 2 Power — real-time power output from PV string 2 in kW (register 0x0B, UInt16, divided by 1000)
  • AC Power — total inverter AC output power in kW (register 0x02, Int16, divided by 1000)
Battery monitoring
  • Battery SOC — battery state of charge as a percentage (register 0x1C, UInt16). Displayed as 0–100% in TapHome using AnalogInput with level conversion (divided by 100 for 0.0–1.0 range).
  • Battery Power — charge/discharge power in kW (register 0x16, Int16, divided by 1000). Positive values indicate charging, negative values indicate discharging.
  • Battery Temperature — battery temperature in °C (register 0x55, UInt16, divided by 10). This is a Gen2 SK-SU specific register.
Grid metering
  • Grid Feed-in / Consumption — real-time grid power in kW (registers 0x46–0x47, LittleEndianInt32, divided by 1000). Positive values mean energy is being exported to the grid, negative values mean energy is being imported from the grid.
  • Daily / Instant Production — electricity meter combining daily energy production in kWh (register 0x50, UInt16, divided by 10) with instantaneous AC power in kW (register 0x02).
Energy totals
  • Total Energy Production — cumulative total energy produced by the inverter in kWh (registers 0x52–0x53, LittleEndianInt32, divided by 1000).
Temperature monitoring
  • Inverter Temperature — internal inverter temperature in °C (register 0x08, Int16).
  • Battery Temperature — see Battery monitoring section above.
Service attributes

The module exposes one service attribute:

  • Run Mode — current inverter operating mode read from register 0x09. Values: 0=Wait, 1=Check, 2=Normal, 3=Fault, 4=Permanent Fault, 5=Update, 6=Off-grid waiting, 7=Off-grid, 8=Self Test, 9=Idle, 10=Standby.
Alarms

The template monitors three error registers and raises alarms when faults are detected:

RegisterAlarm
0x40Inverter fault
0x42Charging fault
0x43Manager fault
Additional capabilities not in the template

The SolaX SK-SU also exposes Modbus registers for grid voltage and current, PV string voltages and currents, grid frequency, battery voltage and current, BMS battery temperature, cumulative grid import/export energy, and the Use Mode setting (Self Use, Feed-in Priority, Backup, Manual). These can be added to the TapHome template in a future update.

Troubleshooting

No Modbus communication
  1. Verify the Ethernet cable is connected to the inverter’s Ethernet port (not the WiFi dongle port)
  2. Confirm the inverter’s IP address — check the router’s DHCP lease table
  3. Ensure TapHome Core and the inverter are on the same network/subnet
  4. Check that no firewall is blocking port 502
  5. Close any other Modbus TCP connections to the inverter (only one connection is supported)
Readings show zero during night / no sunlight

This is normal. When PV production is zero, the inverter enters Wait or Idle mode (Run Mode 0 or 9). AC power and PV string power readings will be zero. Battery and grid power readings will continue to update.

Battery SOC shows unexpected values

The template reads register 0x1C (Battery Capacity) and divides by 100 for the AnalogInput 0.0–1.0 range. Verify the battery is connected and the BMS is communicating (BMS_Connect_State register 0x11 should be 1).

Available devices

SolaX SK-SU Hybrid Inverter Module
Service Attributes
Run ModeCurrent inverter operating mode — Wait, Check, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Test, Idle, Standby

SOLAX Hybrid SK-SU 5000/3000

Read (module)
#alarms
IF(MODBUSR(A, 0x40, Uint16) = 1, ADDERROR("Porucha meniča"));
IF(MODBUSR(A, 0x42, Uint16) = 1, ADDERROR("Porucha nabíjania"));
IF(MODBUSR(A, 0x43, Uint16) = 1, ADDERROR("Porucha  riadenia meniča"));
Service Attributes
Solax Run Mode
MODBUSR(A, 0x09, Uint16);
AC Power Variable Read-only

Inverter AC output power (grid-side)

Register: A:0x02 Int16 Unit: kW numeric

AC Power

Read
MODBUSR(A,0x02, Int16)/ 1000
Battery SOC Analog Input Read-only

Battery state of charge as percentage (0–100%)

Register: A:0x1C UInt16 Unit: % numeric

Battery SOC

Read input level
MODBUSR(A, 0x1C, UInt16)/100
Battery Power Variable Read-only

Battery charge/discharge power — positive=charging, negative=discharging

Register: A:0x16 Int16 Unit: kW numeric

Battery Power

Read
MODBUSR(A, 0x16, Int16)/1000
Total Energy Production Variable Read-only

Cumulative total energy produced by the inverter

Register: A:0x52 LittleEndianInt32 Unit: kWh numeric

Total Energy Production

Read
MODBUSR(A, 0x52,LittleEndianInt32) / 1000
Daily / Instant Production Electricity Meter Read-only

Electric meter — daily energy production and instantaneous AC power

Register: A:0x50 (total), A:0x02 (demand) UInt16 / Int16 Unit: kWh / kW numeric

Daily / Instant Production

Read total consumption
MODBUSR(A, 0x50, UInt16) /10
Read demand
MODBUSR(A,0x02, Int16)/1000
Grid Feed-in / Consumption Variable Read-only

Grid power — positive=export to grid, negative=import from grid

Register: A:0x46 LittleEndianInt32 Unit: kW numeric

Grid Feed-in / Consumption

Read
MODBUSR(A, 0x46,LittleEndianInt32)/1000
PV String 1 Power Variable Read-only

Solar string 1 real-time power output

Register: A:0x0A UInt16 Unit: kW numeric

PV String 1 Power

Read
MODBUSR(A,0x0a, UInt16)/1000
PV String 2 Power Variable Read-only

Solar string 2 real-time power output

Register: A:0x0B UInt16 Unit: kW numeric

PV String 2 Power

Read
MODBUSR(A,0x0b, UInt16)/1000
Battery Temperature Temperature Sensor Read-only

Battery temperature sensor

Register: A:0x55 UInt16 Unit: °C numeric

Battery Temperature

Read temperature
MODBUSR(A, 0x55, UInt16) /10
Inverter Temperature Temperature Sensor Read-only

Internal inverter temperature

Register: A:0x08 Int16 Unit: °C numeric

Inverter Temperature

Read temperature
MODBUSR(A, 0x08, Int16)
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (15)
  • A:0x00 Grid Voltage — UInt16, 0.1V, read-only — grid voltage measurement
  • A:0x01 Grid Current — Int16, 0.1A, read-only — grid current measurement
  • A:0x03 PV1 Voltage — UInt16, 0.1V — PV string 1 voltage
  • A:0x04 PV2 Voltage — UInt16, 0.1V — PV string 2 voltage
  • A:0x05 PV1 Current — UInt16, 0.1A — PV string 1 current
  • A:0x06 PV2 Current — UInt16, 0.1A — PV string 2 current
  • A:0x07 Grid Frequency — UInt16, 0.01Hz — grid frequency
  • A:0x0E Battery Voltage — UInt16, 0.1V — battery voltage
  • A:0x0F Battery Current — Int16, 0.1A — battery current (positive=charge, negative=discharge)
  • A:0x10 Battery Power — Int16, 1W — battery power
  • A:0x12 Battery Temperature (BMS) — Int16, 1°C — BMS-reported battery temperature
  • A:0x48 Total Energy to Grid — UInt32, 0.01kWh — cumulative energy exported to grid (from meter)
  • A:0x4A Total Energy from Grid — UInt32, 0.01kWh — cumulative energy imported from grid (from meter)
  • H:0x7B Use Mode — UInt16, R/W — 0=Self Use, 1=Feed-in Priority, 2=Backup, 3=Manual. Writable holding register for mode selection
  • A:0x40 Inverter Fault Code — UInt32 (2 registers), bitmask — inverter error codes. Template uses this for ADDERROR alarms but not as a readable device

Sources

  • SolaX Hybrid X1/X3 — Modbus TCP & RTU Communication Protocol V3.21
    PDF
  • Home Assistant SolaX Modbus Integration — Gen2 Register Map
    github.com 2026-03-29
  • SolaX KB: How to Get Device Data by Modbus TCP