2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-07 16:59:18 +00:00

93_DbRep: contrib 8.50.0

git-svn-id: https://svn.fhem.de/fhem/trunk@26324 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2022-08-15 20:47:35 +00:00
parent ce2a377257
commit f4d10d8961

View File

@ -9562,16 +9562,20 @@ sub _DbRep_rl_updateDay {
my %updateHash;
for my $row (@$updateDayref) {
push @{$updateHash{$row->[3].$row->[4]}->{tedr}}, [$row->[0], $row->[1], $row->[3], $row->[4]]; # tedr -> time, event, device, reading
$updateHash{$row->[3].$row->[4]}->{sum} += $row->[2]; # Summe aller Werte
$updateHash{$row->[3].$row->[4]}->{date} = $row->[5];
if (!defined $updateHash{$row->[3].$row->[4]}->{max}) { # Maximalwert
$updateHash{$row->[3].$row->[4]}->{max} = $row->[2];
push @{$updateHash{$row->[3].$row->[4]}->{tedr}}, [$row->[0], $row->[1], $row->[3], $row->[4]]; # tedr -> time, event, device, reading
if ($mstr eq 'average') { # Day Average
$updateHash{$row->[3].$row->[4]}->{sum} += $row->[2]; # Summe aller Werte
}
elsif ($mstr eq 'max') { # Day Max
if (!defined $updateHash{$row->[3].$row->[4]}->{max}) {
$updateHash{$row->[3].$row->[4]}->{max} = $row->[2];
}
else {
$updateHash{$row->[3].$row->[4]}->{max} = $row->[2] if ($row->[2] > $updateHash{$row->[3].$row->[4]}->{max});
}
}
else {
$updateHash{$row->[3].$row->[4]}->{max} = $row->[2] if ($row->[2] > $updateHash{$row->[3].$row->[4]}->{max});
}
}
my $c = 0;
@ -9588,7 +9592,7 @@ sub _DbRep_rl_updateDay {
${$deletedCountref} += $c;
${$updateCountref} += keys %updateHash;
my $params;
my ($params, $value);
my ($id,$iu) = (0,0);
my ($kd,$ku) = (1,1);
my $thd = _DbRep_rl_logThreshold ($c);
@ -9611,107 +9615,62 @@ sub _DbRep_rl_updateDay {
$err = DbRep_beginDatabaseTransaction ($name, $dbh);
return $err if ($err);
}
if ($mstr eq 'average') { # Day Average
for my $uhk (keys %updateHash) {
my $value = sprintf "%.${ndp}f", $updateHash{$uhk}->{sum} / scalar @{$updateHash{$uhk}->{tedr}};
my $lastUpdH = pop @{$updateHash{$uhk}->{tedr}};
for my $tedr (@{$updateHash{$uhk}->{tedr}}) {
$id++;
$paref->{logtxt} = "(daily-$mstr) deleting";
$paref->{iref} = \$id;
$paref->{kref} = \$kd;
$paref->{th} = $thd;
$paref->{timestamp} = $tedr->[0];
$paref->{device} = $tedr->[2];
$paref->{reading} = $tedr->[3];
$err = __DbRep_rl_deleteDayDatabase ($paref);
if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh);
return $err;
}
}
for my $uhk (keys %updateHash) {
$iu++;
$paref->{logtxt} = "(daily-$mstr) updating";
$paref->{iref} = \$iu;
$paref->{kref} = \$ku;
$paref->{th} = $thu;
$paref->{date} = $updateHash{$uhk}->{date};
$paref->{timestamp} = $lastUpdH->[0];
$paref->{device} = $lastUpdH->[2];
$paref->{reading} = $lastUpdH->[3];
$paref->{value} = $value;
$err = __DbRep_rl_updateDayDatabase ($paref);
if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh);
return $err;
}
if ($mstr eq 'average') { # Day Average
$value = sprintf "%.${ndp}f", $updateHash{$uhk}->{sum} / scalar @{$updateHash{$uhk}->{tedr}};
}
}
elsif ($mstr eq 'max') { # Day Max
for my $uhk (keys %updateHash) {
my $value = sprintf "%.${ndp}f", $updateHash{$uhk}->{max};
my $lastUpdH = pop @{$updateHash{$uhk}->{tedr}};
for my $tedr (@{$updateHash{$uhk}->{tedr}}) {
$id++;
$paref->{logtxt} = "(daily-$mstr) deleting";
$paref->{iref} = \$id;
$paref->{kref} = \$kd;
$paref->{th} = $thd;
$paref->{timestamp} = $tedr->[0];
$paref->{device} = $tedr->[2];
$paref->{reading} = $tedr->[3];
$err = __DbRep_rl_deleteDayDatabase ($paref);
if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh);
return $err;
}
}
$iu++;
$paref->{logtxt} = "(daily-$mstr) updating";
$paref->{iref} = \$iu;
$paref->{kref} = \$ku;
$paref->{th} = $thu;
$paref->{date} = $updateHash{$uhk}->{date};
$paref->{timestamp} = $lastUpdH->[0];
$paref->{device} = $lastUpdH->[2];
$paref->{reading} = $lastUpdH->[3];
$paref->{value} = $value;
elsif ($mstr eq 'max') { # Day Max
$value = sprintf "%.${ndp}f", $updateHash{$uhk}->{max};
}
my $lastUpdH = pop @{$updateHash{$uhk}->{tedr}};
$err = __DbRep_rl_updateDayDatabase ($paref);
if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh);
return $err;
}
}
}
for my $tedr (@{$updateHash{$uhk}->{tedr}}) {
$id++;
$paref->{logtxt} = "(daily-$mstr) deleting";
$paref->{iref} = \$id;
$paref->{kref} = \$kd;
$paref->{th} = $thd;
$paref->{timestamp} = $tedr->[0];
$paref->{device} = $tedr->[2];
$paref->{reading} = $tedr->[3];
$err = __DbRep_rl_deleteDayDatabase ($paref);
if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh);
return $err;
}
}
$iu++;
$paref->{logtxt} = "(daily-$mstr) updating";
$paref->{iref} = \$iu;
$paref->{kref} = \$ku;
$paref->{th} = $thu;
$paref->{date} = $updateHash{$uhk}->{date};
$paref->{timestamp} = $lastUpdH->[0];
$paref->{device} = $lastUpdH->[2];
$paref->{reading} = $lastUpdH->[3];
$paref->{value} = $value;
$err = __DbRep_rl_updateDayDatabase ($paref);
if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh);
return $err;
}
}
if(keys %updateHash) {
$err = DbRep_commitOnly ($name, $dbh);