mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-16 10:46:03 +00:00
- fixes the rare but relevant case of two subsequent calls within one seconds (previously led to a division by zero error)
git-svn-id: https://svn.fhem.de/fhem/trunk@346 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
dfe6c48c3f
commit
0c8f975e5d
@ -173,20 +173,20 @@ KS300_Parse($$)
|
||||
# The code also handles counter resets after battery replacement
|
||||
|
||||
my $rain_raw_delta= $rain_raw- $rain_raw_prev;
|
||||
my $thours_delta= ($tsecs- $tsecs_prev)/3600.0; # in hours
|
||||
my $rain_raw_per_hour= $rain_raw_delta/$thours_delta;
|
||||
if(($rain_raw_delta<0) || ($rain_raw_per_hour> 200.0)) {
|
||||
$rain_raw_ofs= $rain_raw_ofs_prev-$rain_raw_delta;
|
||||
# If the switch in the tick count occurs simultaneously with an
|
||||
# increase due to rain, the tick is lost. We therefore assume that
|
||||
# offsets between -5 and 0 are indeed rain.
|
||||
if(($rain_raw_ofs>=-5) && ($rain_raw_ofs<0)) { $rain_raw_ofs= 0; }
|
||||
$r->{rain_raw_ofs}{TIME} = $tm;
|
||||
$r->{rain_raw_ofs}{VAL} = $rain_raw_ofs;
|
||||
$def->{CHANGED}[$n++] = "rain_raw_ofs: $rain_raw_ofs";
|
||||
|
||||
if($tsecs!= $tsecs_prev) { # avoids a rare but relevant condition
|
||||
my $thours_delta= ($tsecs- $tsecs_prev)/3600.0; # in hours
|
||||
my $rain_raw_per_hour= $rain_raw_delta/$thours_delta;
|
||||
if(($rain_raw_delta<0) || ($rain_raw_per_hour> 200.0)) {
|
||||
$rain_raw_ofs= $rain_raw_ofs_prev-$rain_raw_delta;
|
||||
# If the switch in the tick count occurs simultaneously with an
|
||||
# increase due to rain, the tick is lost. We therefore assume that
|
||||
# offsets between -5 and 0 are indeed rain.
|
||||
if(($rain_raw_ofs>=-5) && ($rain_raw_ofs<0)) { $rain_raw_ofs= 0; }
|
||||
$r->{rain_raw_ofs}{TIME} = $tm;
|
||||
$r->{rain_raw_ofs}{VAL} = $rain_raw_ofs;
|
||||
$def->{CHANGED}[$n++] = "rain_raw_ofs: $rain_raw_ofs";
|
||||
}
|
||||
}
|
||||
|
||||
$rain_raw_adj= $rain_raw+ $rain_raw_ofs;
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user