fix many bugs in Sunrise timer calculation

This commit is contained in:
Marko Oldenburg 2019-04-09 12:12:13 +02:00
parent a4b57312e9
commit 44fb531517

View File

@ -47,7 +47,7 @@ use strict;
use warnings; use warnings;
use FHEM::Meta; use FHEM::Meta;
my $version = '0.4.0.11beta61'; my $version = '0.4.0.11beta67';
sub AutoShuttersControl_Initialize($) { sub AutoShuttersControl_Initialize($) {
my ($hash) = @_; my ($hash) = @_;
@ -2473,16 +2473,108 @@ sub ShuttersSunrise($$$) {
} }
} }
else { else {
$shuttersSunriseUnixtime = ( if (
computeAlignTime( IsWe()
'24:00', and ( int( gettimeofday() / 86400 ) == int(
sunrise_abs( (
$autoAstroMode, 0, computeAlignTime(
$shutters->getTimeUpWeHoliday '24:00',
) sunrise_abs(
) + 1 $autoAstroMode, 0,
); $shutters->getTimeUpWeHoliday
} )
) + 1
) / 86400
)
or int( gettimeofday() / 86400 ) != int(
(
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode, 0,
$shutters->getTimeUpWeHoliday
)
) + 1
) / 86400
)
)
)
{
$shuttersSunriseUnixtime = (
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode, 0,
$shutters->getTimeUpWeHoliday
)
) + 1
);
}
elsif (
int( gettimeofday() / 86400 ) == int(
(
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode,
0,
$shutters->getTimeUpEarly,
$shutters->getTimeUpLate
)
) + 1
) / 86400
)
)
{
$shuttersSunriseUnixtime = (
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode, 0,
$shutters->getTimeUpEarly,
$shutters->getTimeUpLate
)
) + 1
);
}
else {
if (
int( gettimeofday() / 86400 ) == int(
(
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode, 0,
$shutters->getTimeUpWeHoliday
)
) + 1
) / 86400
)
)
{
$shuttersSunriseUnixtime = (
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode, 0,
$shutters->getTimeUpWeHoliday
)
) + 86401
);
}
else {
$shuttersSunriseUnixtime = (
computeAlignTime(
'24:00',
sunrise_abs(
$autoAstroMode, 0,
$shutters->getTimeUpWeHoliday
)
) + 1
);
}
}
}
} }
else { else {
$shuttersSunriseUnixtime = ( $shuttersSunriseUnixtime = (