my $missingModul = "";

use strict;
use warnings;
use Time::Local;
use JSON;
# use LWP::Simple;
use LWP::UserAgent;
use URI::Escape;


eval "use JSON;1" or $missingModul .= "JSON ";

my $url = "http://192.168.42.160/?optType=ReadRealTimeData&pwd=Sx202310!";
my $par = $ARGV[0];
my $par1 = "";
if ($par eq "html") {
        $par ="</b>";
        $par1="<b>";
} else {
        $par = ": ----------------------------";
        $par1= "";
}


my $ua = new LWP::UserAgent;
$ua->timeout(120);

my $request = new HTTP::Request('POST', $url);
my $response = $ua->request($request);
my $content = $response->content();

$content = $content =~ s/,,/,0,/gr;
#$content = $content =~ s/,,/,0,/gr;

#print $content . "\n";
#print "------\n";


my $result = decode_json($content);

my @namen;
my @werte;

#for (my $i=0; $i <= 100; $i++) {
#       $namen[$i] = "";
#       printf $i . " : " . $result->{Data}[$i] . "\n";
#}

# Intime Daten nicht ins Internet übertragen
if ($par1 eq "") {
        printf  $result->{type} . " : Name" . "\n";
        printf  $result->{SN} . " : #SN  " . "\n";
}

# Die Werte werden so festgelegt, dass eine sinnvolle Reihenfolge entsteht
## 1. NETZ
printf $par1 . "Netz" . $par . "\n";
printf '%6s', $result->{Data}[6];
printf " W   : Ausgangsleistung (6)"                   . "\n";
printf '%6s', $result->{Data}[10];
printf " W   : Einspeiseleistung (10)"                 . "\n";
printf '%6s', $result->{Data}[50];
printf " Hz  : Frequenz (50)"                          . "\n";
printf '%6s',$result->{Data}[8];
printf " kWh : Ertrag - Heute (8)"                     . "\n";
printf '%6s',$result->{Data}[9];
printf " kWh : Ertrag - Diesen Monat (9)"              . "\n";
printf '%6s', $result->{Data}[41];
printf " kWh : Exportiert - Heute (41)"                . "\n";
printf '%6s', $result->{Data}[42];
printf " kWh : Importiert - Heute (42)"                . "\n";

printf $par1 . "Generator" . $par . "\n";
printf '%6s', $result->{Data}[11];
printf " W   : PV1 Eingangsleistung (11)"              . "\n";
printf '%6s', $result->{Data}[2];
printf " V   : PV1 Spannung (2)"                       . "\n";
printf '%6s', $result->{Data}[0];
printf " A   : PV1 Strom (0)"                          . "\n";

printf '%6s',$result->{Data}[12];
printf " W   : PV2 Eingangsleistung (12)"              . "\n";
printf '%6s',$result->{Data}[3];
printf  " V   : PV2 Spannung (3)"                      . "\n";
printf '%6s',$result->{Data}[1];
printf  " A   : PV2 Strom (1)"                         . "\n";

printf $par1 . "Inverter" . $par . "\n";
printf '%6s',$result->{Data}[43];
printf " W   : A - Leistung (43)"                      . "\n";
printf '%6s',$result->{Data}[4];
printf " A   : A - Ausgangsstrom (4)"                  . "\n";
printf '%6s',$result->{Data}[5];
printf " V   : A - Netzspannung (5)"                   . "\n";
printf '%6s',$result->{Data}[44];
printf " W   : B - Leistung (44)"                      . "\n";
printf '%6s',$result->{Data}[46];
printf " A   : B - Ausgangsstrom (46)"                  . "\n";
printf '%6s',$result->{Data}[48];
printf " V   : B - Netzspannung (48)"                  . "\n";
printf '%6s',$result->{Data}[45];
printf " W   : C - Leistung (45)"                      . "\n";
printf '%6s',$result->{Data}[47];
printf " A   : C - Ausgangsstrom (47)"                  . "\n";
printf '%6s',$result->{Data}[49];
printf " V   : C - Netzspannung (49)"                  . "\n";

printf $par1 . "Batterie" . $par . "\n";
printf '%6s',$result->{Data}[13];
printf " V   : Spannung (13)"                          . "\n";
printf '%6s',$result->{Data}[14];
printf " A   : Ent-/Ladestrom (14)"                    . "\n";
printf '%6s',$result->{Data}[15];
printf " W   : Leistung (15)"                          . "\n";
printf '%6s',$result->{Data}[16];
printf " C°  : Temperatur (16)"                        . "\n";
printf '%6s',$result->{Data}[17];
printf " kWh : Restkapazität (17)"                     . "\n";
printf '%6s',$result->{Data}[19];
printf " kWh : Ertrag - Total (19)"                    . "\n";

if ($par eq "<br>") {
        printf "</code>";
}
