Kostal Modbus (non Sunspec) Plugin


The purpose of this plugin is to collect data from the Kostal Piko Inverters via Modbus (non Sunspec).


This plugin reads the data from Kostal Piko Inverters via Modbus (non Sunspec). This plugin relies on the Modbus Ardexa plugin. It uses the Modbus TCP Specification, and collects from RS485 or TCP connected inverters. Inverter data will be collected to the solar table. The plugin will be run every 5 minutes, by default. Due to a software bug in the Kostal inverter, Isolation Resistance results in a wrong value, and hence it is not being collected for now. The default address is 1, though usually the default address appears to be 71. Also, the default port is 502, though the Kostal default ports appears to be 1502. The following data is collected from the inverters:

Variable                Units
DC Power                W
Energy Manager Status
Cos Phi
Grid Freq               Hz
AC Current 1            A
AC Power 1              W
AC Voltage 1            V
AC Current 2            A
AC Power 2              W
AC Voltage 2            V
AC Current 3            A
AC Power 3              W
AC Voltage 3            V
AC Power                W
Reactive Power          var
Apparent Power          VA
Battery Charge Current  A
Battery Cycles
DC Current 1            A
DC Power 1              W
DC Voltage 1            V
DC Current 2            A
DC Power 2              W
DC Voltage 2            V
DC Current 3            A
DC Power 3              W
DC Voltage 3            V
Total Energy            Wh
Daily Energy            Wh


Arguments are as follows:

  • endpoint. This is either a serial device like /dev/ttyS0 or an IP or DNS like

  • bus_addresses. An RS485 address in the range 2-63. This can be a hyphenated list like 3-10 or a list like 2,5,7,9

  • --port. This is an optional parameter used in an Ethernet gateway, and is the TCP port used for the gateway. Default is 502

  • --attempts. This is an optional parameter, and determines how many times to times to attempt to read an inverter value. Default is 1

  • --delay. This is the delay in seconds between inverter send and receive commands, AND if attempts > 1. Fractions like 0.3 can be used. Default is 0.05

Last updated