2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-28 05:01:57 +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,15 +9562,19 @@ sub _DbRep_rl_updateDay {
my %updateHash; my %updateHash;
for my $row (@$updateDayref) { 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]; $updateHash{$row->[3].$row->[4]}->{date} = $row->[5];
push @{$updateHash{$row->[3].$row->[4]}->{tedr}}, [$row->[0], $row->[1], $row->[3], $row->[4]]; # tedr -> time, event, device, reading
if (!defined $updateHash{$row->[3].$row->[4]}->{max}) { # Maximalwert if ($mstr eq 'average') { # Day Average
$updateHash{$row->[3].$row->[4]}->{max} = $row->[2]; $updateHash{$row->[3].$row->[4]}->{sum} += $row->[2]; # Summe aller Werte
} }
else { elsif ($mstr eq 'max') { # Day Max
$updateHash{$row->[3].$row->[4]}->{max} = $row->[2] if ($row->[2] > $updateHash{$row->[3].$row->[4]}->{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});
}
} }
} }
@ -9588,7 +9592,7 @@ sub _DbRep_rl_updateDay {
${$deletedCountref} += $c; ${$deletedCountref} += $c;
${$updateCountref} += keys %updateHash; ${$updateCountref} += keys %updateHash;
my $params; my ($params, $value);
my ($id,$iu) = (0,0); my ($id,$iu) = (0,0);
my ($kd,$ku) = (1,1); my ($kd,$ku) = (1,1);
my $thd = _DbRep_rl_logThreshold ($c); my $thd = _DbRep_rl_logThreshold ($c);
@ -9612,104 +9616,59 @@ sub _DbRep_rl_updateDay {
return $err if ($err); return $err if ($err);
} }
if ($mstr eq 'average') { # Day Average for my $uhk (keys %updateHash) {
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}}) { if ($mstr eq 'average') { # Day Average
$id++; $value = sprintf "%.${ndp}f", $updateHash{$uhk}->{sum} / scalar @{$updateHash{$uhk}->{tedr}};
}
$paref->{logtxt} = "(daily-$mstr) deleting"; elsif ($mstr eq 'max') { # Day Max
$paref->{iref} = \$id; $value = sprintf "%.${ndp}f", $updateHash{$uhk}->{max};
$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;
}
} }
}
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}}) { my $lastUpdH = pop @{$updateHash{$uhk}->{tedr}};
$id++;
$paref->{logtxt} = "(daily-$mstr) deleting"; for my $tedr (@{$updateHash{$uhk}->{tedr}}) {
$paref->{iref} = \$id; $id++;
$paref->{kref} = \$kd;
$paref->{th} = $thd;
$paref->{timestamp} = $tedr->[0];
$paref->{device} = $tedr->[2];
$paref->{reading} = $tedr->[3];
$err = __DbRep_rl_deleteDayDatabase ($paref); $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];
if ($err) { $err = __DbRep_rl_deleteDayDatabase ($paref);
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh); if ($err) {
return $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++; $iu++;
$paref->{logtxt} = "(daily-$mstr) updating"; $paref->{logtxt} = "(daily-$mstr) updating";
$paref->{iref} = \$iu; $paref->{iref} = \$iu;
$paref->{kref} = \$ku; $paref->{kref} = \$ku;
$paref->{th} = $thu; $paref->{th} = $thu;
$paref->{date} = $updateHash{$uhk}->{date}; $paref->{date} = $updateHash{$uhk}->{date};
$paref->{timestamp} = $lastUpdH->[0]; $paref->{timestamp} = $lastUpdH->[0];
$paref->{device} = $lastUpdH->[2]; $paref->{device} = $lastUpdH->[2];
$paref->{reading} = $lastUpdH->[3]; $paref->{reading} = $lastUpdH->[3];
$paref->{value} = $value; $paref->{value} = $value;
$err = __DbRep_rl_updateDayDatabase ($paref); $err = __DbRep_rl_updateDayDatabase ($paref);
if ($err) { if ($err) {
Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err"); Log3 ($name, 3, "DbRep $name - ERROR - reduceLog $mstr=day failed for day $processingDay: $err");
$err = encode_base64($err, ""); $err = encode_base64($err, "");
DbRep_rollbackOnly ($name, $dbh); DbRep_rollbackOnly ($name, $dbh);
return $err; return $err;
}
} }
} }