# Kostal Modbus (non Sunspec) Plugin

### Purpose

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

### Usage

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
=============================
Status
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

Arguments are as follows:

* `endpoint`. This is either a serial device like `/dev/ttyS0` or an IP or DNS like `192.168.1.15`
* `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`
