#include <SimpleModbusMaster.h>

#define baud 19200
#define timeout 1000
#define polling 200 // the scan rate
#define retry_count 10
#define TxEnablePin 2

enum {PACKET1, TOTAL_NO_OF_PACKETS};

Packet packets[TOTAL_NO_OF_PACKETS];

packetPointer packet1 = &packets[PACKET1];

unsigned int readRegs[21];
float batt_volts, in_volts, batt_amps, kwh, high_in_volts;
int watts;
float fet_temp, pcb_temp;

void setup()
{

  modbus_construct(packet1, 10, READ_HOLDING_REGISTERS, 4114, 20, readRegs);

  modbus_configure(&Serial1, baud, SERIAL_8N2, timeout, polling, retry_count, TxEnablePin, packets, TOTAL_NO_OF_PACKETS);
  Serial.begin(9600);
}

void loop()
{
  delay(1000);
  modbus_update();
  batt_volts = readRegs[0];
  batt_volts /= 10;
  Serial.print("Baterie(V):");
  Serial.println(batt_volts);
  in_volts = readRegs[1];
  in_volts /= 10;
  Serial.print("Panely(V):");
  Serial.println(in_volts);
  batt_amps = readRegs[2];
  batt_amps /= 10;
  Serial.print("Proud baterie(A):");
  Serial.println(batt_amps);
  kwh = readRegs[3];
  kwh /= 10;
  Serial.print("KWh:");
  Serial.println(kwh);
  watts = readRegs[4];
  Serial.print("Prikon(W)");
  Serial.println(watts);
  high_in_volts = readRegs[8];
  high_in_volts /= 10;
  Serial.print("Max Panely(V):");
  Serial.println(high_in_volts);
  pcb_temp = readRegs[18];
  pcb_temp /= 10;
  Serial.print("Chladic:");
  Serial.println(pcb_temp);
  fet_temp = readRegs[19];
  fet_temp /= 10;
  Serial.print("FETy:");
  Serial.println(fet_temp);
}
