---
title: "Kostal PLENTICORE plus"
description: "Kostal PLENTICORE plus or PIKO IQ on Modbus TCP (port 1502): PV string power, battery SOC with min/max limits, yield statistics and diagnostics in TapHome."
url: "https://taphome.com/en/compatibility/plentycoreinverter/"
language: en
lastmod: 2026-10-31
generator: hugo
ai:
  topics: ["modbus-tcp","inverter","solar-pv","battery-management","ethernet"]
  questions: ["How to integrate Kostal PLENTICORE with TapHome?","What does the Kostal PLENTICORE TapHome template monitor and control?","How to connect Kostal PIKO IQ via Modbus TCP to TapHome?","How to configure battery SOC limits on Kostal PLENTICORE via TapHome?","Why does the Kostal inverter use TCP port 1502 instead of 502?","What PV string data is available from Kostal PLENTICORE in TapHome?"]
---

# Kostal PLENTICORE plus

Communication: Modbus TCP

- [Kostal Solar Electric Official Website](https://www.kostal-solar-electric.com)

> Network address
> 
> TapHome reaches this device at the address entered on import. Give the device a fixed address — an IP reservation in the router, or its mDNS name if it supports one — otherwise the integration stops working when the router changes the address.
> 
> [Network Preparation](https://taphome.com/en/docs/setup/network-preparation/)

## Integration guide

The Kostal PIKO IQ and PLENTICORE plus series are hybrid solar inverters with up to three MPPT trackers and optional battery storage. TapHome connects directly to the inverter via Modbus TCP over Ethernet. The template covers models PIKO IQ, PLENTICORE G1, G2, G3 and PLENTICORE MP G3 across power classes from 3 kW to 10 kW.

The template provides PV string monitoring (power, current, voltage for each DC input), battery state-of-charge with configurable min/max limits, yield statistics (daily, monthly, yearly, total), AC power output and inverter diagnostics.

## Network connection

The inverter has an RJ45 Ethernet port on the Smart Communication Board. Connect it to the same local network as TapHome Core using a standard Ethernet cable.

- **Protocol:** Modbus TCP
- **Port:** 1502 (non-standard -- differs from the default Modbus TCP port 502)
- **Default Unit-ID:** 71
- **Byte order:** Big-endian ABCD required by this template (the inverter's default is Little-endian CDAB)

> [!WARNING]
> The Kostal inverter uses TCP port **1502**, not the standard Modbus port 502. Ensure this is configured correctly in TapHome during template import. The default Unit-ID is **71** (the TapHome template parameter defaults to 1 -- adjust to 71 to match the factory setting).

## Configuration

### Enabling Modbus TCP communication

Modbus TCP must be explicitly enabled on the inverter before TapHome can communicate with it:

1. Open the inverter's web interface (navigate to the inverter's IP address in a browser)
2. Go to **Settings > Modbus/SunSpec (TCP)**
3. Enable **Modbus TCP**
4. Set the byte order to **Big-endian (ABCD)** -- this template reads Float values in ABCD order, so with the inverter's default Little-endian (CDAB) the values are nonsensical. To keep the default, use the [Kostal PLENTICORE plus](https://taphome.com/en/compatibility/kostalplenticore/) template instead
5. Note the **Unit-ID** (default 71) and the **TCP port** (default 1502)

When importing the template in TapHome, provide:

- **IP Address** -- the inverter's IP on the local network
- **Slave ID** -- set to **71** (matching the inverter's Unit-ID)

## Device capabilities

### PV string monitoring

Three PV string sensors (DC1, DC2, DC3) each report:

- **Power** (kW) -- instantaneous output from the MPPT tracker
- **Current** (A) and **Voltage** (V) -- available as service attributes on each power device

DC3 can optionally be used for battery connection instead of a third PV string, depending on the inverter model and installation.

- **Total DC Power** -- combined output from all connected PV strings (register H:1066)
- **Total AC Active Power** -- total power fed to the AC grid side (register H:172)

### Battery management

- **Battery SOC** -- current state of charge (0--100%). The template also exposes battery voltage, temperature, and battery type as service attributes.
- **SOC Settings (service action)** -- configure the minimum SOC (1--90%) and maximum SOC (10--100%) limits directly from TapHome. This controls how deeply the battery is discharged and how fully it is charged.

| Service Attribute | Description |
|-------------------|-------------|
| Battery Voltage | Current battery voltage (V) |
| Battery Temperature | Current battery temperature (°C) |
| Minimum SOC | Configured lower SOC limit (%) |
| Maximum SOC | Configured upper SOC limit (%) |
| Battery Type | Connected battery brand (BYD, LG, BMZ, Pylontech, Dyness, VARTA, etc.) |

### Yield statistics

Four energy counters track PV production over different time periods:

| Device | Description |
|--------|-------------|
| Daily Yield | Energy produced today (kWh) |
| Monthly Yield | Energy produced this month (kWh) |
| Yearly Yield | Energy produced this year (kWh) |
| Total Yield | Cumulative energy since installation (kWh) |

All yield values are read from the inverter in Wh and converted to kWh by the template.

### Inverter diagnostics

Module-level service attributes provide system status:

| Service Attribute | Description |
|-------------------|-------------|
| Inverter State | Current operating state (Off, Init, FeedIn, Throttled, Standby, Overheating, Shutdown, and others -- 19 states total) |
| Grid Frequency | AC grid frequency (Hz) |
| MODBUS Enable | Whether Modbus TCP communication is active |
| IP Enable | Whether IP networking is enabled |

### Additional capabilities

The Kostal PLENTICORE also exposes Modbus registers for per-phase AC power monitoring, home consumption breakdown (from PV, battery, and grid), battery charge/discharge cycling data, external power meter readings, and active power curtailment control. Detailed battery energy counters (DC charge/discharge, AC charge/discharge, grid export) and I/O board switched outputs are also available. These can be added to the TapHome template in a future update.

## Troubleshooting

### No Modbus communication

1. Verify Modbus TCP is enabled in the inverter web UI under **Settings > Modbus/SunSpec (TCP)**
2. Confirm the TCP port is **1502** (not the standard 502)
3. Verify the Unit-ID matches between the inverter (default 71) and TapHome template configuration
4. Ensure the byte order on the inverter matches the template: **Big-endian (ABCD)**
5. Check that TapHome Core and the inverter are on the same network/subnet

### Incorrect readings or zero values

- The inverter reports zero power values when it is not producing (nighttime, inverter off). This is normal behavior.
- If values appear incorrect, verify the byte order setting -- this template expects Big-endian (ABCD); the inverter's default Little-endian (CDAB) produces garbled Float values.

### Battery SOC not updating

- Verify a compatible battery is connected and recognized (check the Battery Type service attribute)
- If Battery Type shows "No battery (PV-functionality)", the inverter is operating in PV-only mode without battery storage

## Available devices 10

These devices appear in TapHome after import.

PlentyCore Module

Service Attributes

|                |                                                                                                                      |
|----------------|----------------------------------------------------------------------------------------------------------------------|
| MODBUS enable  | Whether Modbus TCP communication is enabled on the inverter                                                          |
| IP enable      | Whether IP networking is enabled on the inverter                                                                     |
| Grid Frequency |                                                                                                                      |
| Inverter State | Current operating state — Off, Init, FeedIn, Throttled, Standby, Overheating, Shutdown, and others (19 states total) |

Service Attributes

MODBUS enable

```taphome
IF(MODBUSR(H, 2, Bool), "Enabled", "Disabled");
```

IP enable

```taphome
IF(MODBUSR(H, 416, Bool), "Enabled", "Disabled");
```

Grid Frequency

```taphome
ROUND(MODBUSR(H, 152, Float, 2)) + " Hz";
```

Inverter State

```taphome
SWITCH(MODBUSR(H, 56, Uint16), 
0, "Off",
1, "Init",
2, "IsoMeas",
3, "GridCheck",
4, "StartUp",
5, "-",
6, "FeedIn",
7, "Throttled",
8, "ExtSwitchOff",
9, "Update",
10, "Standby",
11, "GridSync",
12, "GridPreCheck",
13, "GridSwitchOff",
14, "Overheating",
15, "Shutdown",
16, "ImproperDcVoltage",
17, "ESB",
18, "Unknown",
"Error"
);
```

Battery SOC Analog Input Read-only

Battery state of charge (0–100%) with voltage, temperature, and configurable min/max SOC limits

Register: H:210 Float Unit: %

Service Attributes

|                     |                                                                                              |
|---------------------|----------------------------------------------------------------------------------------------|
| Battery Voltage     |                                                                                              |
| Battery Temperature |                                                                                              |
| Minimum SOC         | Configured lower state-of-charge limit (1–90%)                                               |
| Maximum SOC         | Configured upper state-of-charge limit (10–100%)                                             |
| Battery Type        | Connected battery brand — No battery, PIKO Battery Li, BYD, BMZ, LG, Pyontech, Dyness, VARTA |

Service Actions

|              |                                                                      |
|--------------|----------------------------------------------------------------------|
| SOC settings | Configure minimum and maximum state-of-charge limits for the battery |

Read input level

```taphome
MODBUSR(H, 210, Float, 2)/100
```

Service Attributes

Battery Voltage

```taphome
ROUND(MODBUSR(H, 216, Float, 2)) + " V";
```

Battery Temperature

```taphome
MODBUSR(H, 214, Float, 2) + " °C"
```

Minimum SOC

```taphome
MODBUSR(H, 1042, Float, 2) + "%"
```

Maximum SOC

```taphome
MODBUSR(H, 1044, Float, 2) + "%"
```

Battery Type

```taphome
SWITCH(MODBUSR(H, 588, Uint16),
 0, "No battery (PV-functionality)",
 2, "Li-Io battery SONY / MURATA",
 4, "Li-Io battery BYD / BBOX",
 "Unknown"
 );
```

Service Actions

SOC settings

Parameters: Minimum SOC (1–90 mis), Maximum SOC (10–100 mas)

```taphome
MODBUSW(H, 1042, Float, mis,  2);
MODBUSW(H, 1044, Float, mas, 2);

```

Daily Yield Variable Read-only

Energy produced today (Wh converted to kWh)

Register: H:322 Float Unit: kWh

Read

```taphome
MODBUSR(H, 322, Float, 2)/1000
```

Monthly Yield Variable Read-only

Energy produced this month (Wh converted to kWh)

Register: H:326 Float Unit: kWh

Read

```taphome
MODBUSR(H, 326, Float, 2)/1000
```

Power DC1 Variable Read-only

PV string 1 (MPPT 1) power output (W converted to kW)

Register: H:260 Float Unit: kW

Service Attributes

|             |
|-------------|
| Current DC1 |
| Voltage DC1 |

Read

```taphome
MODBUSR(H, 260, float, 2)/1000
```

Service Attributes

Current DC1

```taphome
ROUND(MODBUSR(H, 258, Float, 2)) + " A";
```

Voltage DC1

```taphome
ROUND(MODBUSR(H, 266, Float, 2)) + " V"
```

Power DC2 Variable Read-only

PV string 2 (MPPT 2) power output (W converted to kW)

Register: H:270 Float Unit: kW

Service Attributes

|             |
|-------------|
| Current DC2 |
| Voltage DC2 |

Read

```taphome
MODBUSR(H, 270, float, 2)/1000
```

Service Attributes

Current DC2

```taphome
ROUND(MODBUSR(H, 268, Float, 2)) + " A";
```

Voltage DC2

```taphome
ROUND(MODBUSR(H, 276, Float, 2)) + " V"
```

Power DC3 Variable Read-only

PV string 3 (MPPT 3) power output — can optionally be used for battery connection

Register: H:280 Float Unit: kW

Service Attributes

|             |
|-------------|
| Current DC3 |
| Voltage DC3 |

Read

```taphome
MODBUSR(H, 280, float, 2)/1000
```

Service Attributes

Current DC3

```taphome
ROUND(MODBUSR(H, 278, Float, 2)) + " A";
```

Voltage DC3

```taphome
ROUND(MODBUSR(H, 286, Float, 2)) + " V"
```

Total AC Active Power Variable Read-only

Total active power on the AC grid side (W converted to kW)

Register: H:172 Float Unit: kW

Read

```taphome
MODBUSR(H, 172, Float, 2)/1000
```

Total DC Power Variable Read-only

Combined output from all connected PV strings (W converted to kW)

Register: H:1066 Float Unit: kW

Read

```taphome
MODBUSR(H, 1066, Float, 2)/1000
```

Total Yield Variable Read-only

Cumulative total energy produced since installation (Wh converted to kWh)

Register: H:320 Float Unit: kWh

Read

```taphome
MODBUSR(H, 320, Float, 2)/1000
```

Yearly Yield Variable Read-only

Energy produced this year (Wh converted to kWh)

Register: H:324 Float Unit: kWh

Read

```taphome
MODBUSR(H, 324, Float, 2) /1000
```

**Connection:** Modbus TCP • Slave ID: $\[SlaveId]

Possible improvements (22)

- H:98 Controller PCB Temperature — Float, °C, read-only — inverter internal temperature
- H:100 Total DC Power (addr 100) — Float, W — alternative register for total DC power (template uses H:1066 instead, which is sum of all PV inputs)
- H:106 Home Own Consumption from Battery — Float, W, read-only
- H:108 Home Own Consumption from Grid — Float, W, read-only
- H:116 Home Own Consumption from PV — Float, W, read-only
- H:118 Total Home Consumption — Float, Wh, read-only — cumulative
- H:156 Active Power Phase 1 — Float, W, read-only
- H:162 Active Power Phase 2 — Float, W, read-only
- H:170 Active Power Phase 3 — Float, W, read-only
- H:194 Number of Battery Cycles — Float, read-only — battery health indicator
- H:200 Actual Battery Charge/Discharge Current — Float, A, read-only — negative=charge, positive=discharge
- H:252 Total Active Power (Powermeter) — Float, W, read-only — external power meter reading
- H:512 Battery Gross Capacity — U32, Ah, read-only
- H:1046 Total DC Charge Energy (DC-side to Battery) — Float, Wh, read-only
- H:1048 Total DC Discharge Energy (DC-side from Battery) — Float, Wh, read-only
- H:1056 Total DC PV Energy (sum of all PV inputs) — Float, Wh, read-only — cumulative PV production
- H:1064 Total Energy AC-side to Grid — Float, Wh, read-only — total energy exported
- H:1068 Battery Work Capacity — Float, Wh, read-only
- H:1076 Maximum Charge Power (from battery) — Float, W, read-only — battery-reported charge limit
- H:1078 Maximum Discharge Power (from battery) — Float, W, read-only — battery-reported discharge limit
- H:533 Active Power Setpoint — U16, %, write-only — power curtailment (1-100%)
- H:608-611 I/O Board Switched Outputs 1-4 — U16, R/W — digital outputs for external relay control

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default       |
|------------------|---------------|
| Slave ID         | `1`           |
| IP address       | `192.168.1.0` |

## Sources

- KOSTAL Modbus TCP Interface Description v2.7
  
  [www.kostal-solar-electric.com](https://www.kostal-solar-electric.com/fileadmin/downloadcenter/kse/BA/Protokollbeschreibung/BA_KOSTAL_Interface_MODBUS-TCP_SunSpec_with_Control.pdf) 2026-03-27
  
  [PDF](https://taphome.com/compatibility/devices/plentycoreinverter/manufacturer/kostal-modbus-interface.pdf)
- HA Kostal Plenticore Modbus Integration
  
  [github.com](https://github.com/CrunkA3/ha_kostal_plenticore_modbus) 2026-03-27

Manufacturer documents are © their respective owners. They are provided as published by the manufacturer, for reference only.

## Related Documentation

- [Modbus Integration](https://taphome.com/en/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/en/docs/integration/modbus/)
- [Simple configuration using templates](https://taphome.com/en/docs/integration/modbus/templates/)
- [Modbus scripts and prefetch](https://taphome.com/en/docs/script/modbus-scripts/)
- [Modbus functions](https://taphome.com/en/docs/script/modbus/)
- [Modbus data types](https://taphome.com/en/docs/script/modbus-data-types/)

