{
  "spec_version": 1,
  "slug": "kostal-plenticore",
  "manufacturer": "KOSTAL",
  "model": "PLENTICORE plus / PLENTICORE G2 / G3",
  "category": "Solar inverter",
  "supplier_url": "https://www.kostal-solar-electric.com/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 1502,
    "unit_id": 71,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "LowFirst"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 98,
      "count": 2,
      "name": "Controller temperature",
      "data_type": "Float32",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 100,
      "count": 2,
      "name": "Total DC power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 106,
      "count": 2,
      "name": "Home consumption from battery",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 108,
      "count": 2,
      "name": "Home consumption from grid",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 110,
      "count": 2,
      "name": "Total home consumption from battery",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 112,
      "count": 2,
      "name": "Total home consumption from grid",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 114,
      "count": 2,
      "name": "Total home consumption from PV",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 116,
      "count": 2,
      "name": "Home consumption from PV",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 156,
      "count": 2,
      "name": "AC active power phase 1",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 162,
      "count": 2,
      "name": "AC active power phase 2",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 170,
      "count": 2,
      "name": "AC active power phase 3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 172,
      "count": 2,
      "name": "Total AC active power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 194,
      "count": 2,
      "name": "Number of battery cycles",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 200,
      "count": 2,
      "name": "Actual battery current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 210,
      "count": 2,
      "name": "Actual battery state of charge",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 214,
      "count": 2,
      "name": "Battery temperature",
      "data_type": "Float32",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 216,
      "count": 2,
      "name": "Battery voltage",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 224,
      "count": 2,
      "name": "Meter active power phase 1",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 234,
      "count": 2,
      "name": "Meter active power phase 2",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 244,
      "count": 2,
      "name": "Meter active power phase 3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 252,
      "count": 2,
      "name": "Meter total active power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 258,
      "count": 2,
      "name": "DC input 1 current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 260,
      "count": 2,
      "name": "DC input 1 power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 266,
      "count": 2,
      "name": "DC input 1 voltage",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 268,
      "count": 2,
      "name": "DC input 2 current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 270,
      "count": 2,
      "name": "DC input 2 power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 276,
      "count": 2,
      "name": "DC input 2 voltage",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 278,
      "count": 2,
      "name": "DC input 3 current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 280,
      "count": 2,
      "name": "DC input 3 power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 286,
      "count": 2,
      "name": "DC input 3 voltage",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 320,
      "count": 2,
      "name": "Total yield",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 322,
      "count": 2,
      "name": "Daily yield",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 324,
      "count": 2,
      "name": "Yearly yield",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 326,
      "count": 2,
      "name": "Monthly yield",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 514,
      "count": 1,
      "name": "Battery actual state of charge (integer)",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unsigned 16-bit variant of 210."
    },
    {
      "address": 531,
      "count": 1,
      "name": "Maximum AC power",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Rated AC power of the inverter; evcc reads it as the device's max AC power."
    },
    {
      "address": 1025,
      "count": 1,
      "name": "Power scale factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1034,
      "count": 2,
      "name": "Battery charge power setpoint",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Absolute DC setpoint; negative values discharge."
    },
    {
      "address": 1038,
      "count": 2,
      "name": "Maximum battery charge power limit",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 1040,
      "count": 2,
      "name": "Maximum battery discharge power limit",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 1042,
      "count": 2,
      "name": "Minimum state of charge",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 1044,
      "count": 2,
      "name": "Maximum state of charge",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 1046,
      "count": 2,
      "name": "Total DC charge energy (DC side to battery)",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1048,
      "count": 2,
      "name": "Total DC discharge energy (DC side from battery)",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1050,
      "count": 2,
      "name": "Total AC charge energy (AC side to battery)",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1052,
      "count": 2,
      "name": "Total AC discharge energy (battery to grid)",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1054,
      "count": 2,
      "name": "Total AC charge energy (grid to battery)",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1056,
      "count": 2,
      "name": "Total DC PV energy (sum of all inputs)",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1058,
      "count": 2,
      "name": "Total DC energy from PV1",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1060,
      "count": 2,
      "name": "Total DC energy from PV2",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1062,
      "count": 2,
      "name": "Total DC energy from PV3",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1064,
      "count": 2,
      "name": "Total energy AC side to grid",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1068,
      "count": 2,
      "name": "Battery work capacity",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1076,
      "count": 2,
      "name": "Maximum charge power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1078,
      "count": 2,
      "name": "Maximum discharge power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "combined_registers": [],
  "notes": "Register map from the KOSTAL 'Interface MODBUS-TCP (SunSpec with control)' specification as encoded in the evcc template https://raw.githubusercontent.com/evcc-io/evcc/master/templates/definition/meter/kostal-plenticore-gen2.yaml and in CrunkA3/ha_kostal_plenticore_modbus (custom_components/kostal_plenticore_modubs/register_info.py). Modbus TCP is served on port 1502 with unit ID 71, not on 502. KOSTAL's native registers hold IEEE-754 single-precision floats in little-endian word order (CDAB), which is why the default word order is LowFirst; all entries here are holding registers. The inverter also publishes a SunSpec model chain (models 1/101/102/103/123/160/802) in the usual big-endian SunSpec encoding on the same port - that chain is not listed here because its base address is discovered by scanning and it uses a different byte order. Battery control (0x040A-0x0414) requires the 'external battery control via Modbus' option to be enabled with installer access. Battery compatibility: KOSTAL's released-battery list for the PLENTICORE approves KOSTAL HELIVOR HV, AXITEC AXIstorage Li SH/SVx, BMZ Hyperion, BYD Battery-Box HV (HVS/HVM), Dyness Tower/Tower Pro/Stack100, LG RESU FLEX, M-TEC Energy Tower, Pylontech Force H1/H2/H3, VARTA.wall BM1/BM2 and ZYC SIMPO HV (list version 10/2026, document DOC02048988-0039) - https://www.kostal-solar-electric.com/fileadmin/downloadcenter/kse/Listen/Freigegebene-Batterien-und-Anschluss-PLENTICORE.pdf."
}
