change IsDay Fn

This commit is contained in:
Marko Oldenburg
2019-04-23 14:53:39 +02:00
parent 5b9e769648
commit 225548b47b

View File

@ -44,7 +44,7 @@ use strict;
use warnings; use warnings;
use FHEM::Meta; use FHEM::Meta;
my $version = '0.5.99.3'; my $version = '0.5.99.4';
sub AutoShuttersControl_Initialize($) { sub AutoShuttersControl_Initialize($) {
my ($hash) = @_; my ($hash) = @_;
@ -2480,15 +2480,37 @@ sub IsDay($) {
my $isday = ( ShuttersSunrise( $shuttersDev, 'unix' ) > my $isday = ( ShuttersSunrise( $shuttersDev, 'unix' ) >
ShuttersSunset( $shuttersDev, 'unix' ) ? 1 : 0 ); ShuttersSunset( $shuttersDev, 'unix' ) ? 1 : 0 );
my $respIsDay = $isday; my $respIsDay = $isday;
ASC_Debug( 'FnIsDay: '
. $shuttersDev
. ' Allgemein: '
. $respIsDay );
if ( $shutters->getDown eq 'brightness' ASC_Debug( 'FnIsDay: ' . $shuttersDev . ' Allgemein: ' . $respIsDay );
or $shutters->getUp eq 'brightness' )
if (
(
$shutters->getDown eq 'brightness'
or $shutters->getUp eq 'brightness'
)
and (
(
int( gettimeofday() / 86400 ) != int(
computeAlignTime( '24:00', $shutters->getTimeUpEarly ) /
86400
)
and int( gettimeofday() / 86400 ) == int(
computeAlignTime( '24:00', $shutters->getTimeUpLate ) /
86400
)
)
or (
int( gettimeofday() / 86400 ) != int(
computeAlignTime( '24:00', $shutters->getTimeDownEarly ) /
86400
)
and int( gettimeofday() / 86400 ) == int(
computeAlignTime( '24:00', $shutters->getTimeDownLate ) /
86400
)
)
)
)
{ {
my $brightnessMinVal; my $brightnessMinVal;
if ( $shutters->getBrightnessMinVal > -1 ) { if ( $shutters->getBrightnessMinVal > -1 ) {
@ -2505,41 +2527,43 @@ sub IsDay($) {
else { else {
$brightnessMaxVal = $ascDev->getBrightnessMaxVal; $brightnessMaxVal = $ascDev->getBrightnessMaxVal;
} }
$respIsDay = (
(
(
$shutters->getBrightness > $brightnessMinVal
and $isday
)
or $shutters->getSunset
) ? 1 : 0
) if ( $shutters->getDown eq 'brightness' );
ASC_Debug( 'FnIsDay: '
. $shuttersDev
. ' getDownBrightness: ' . $respIsDay
. ' Brightness: ' . $shutters->getBrightness
. ' BrightnessMin: ' . $brightnessMinVal
. ' Sunset: ' . $shutters->getSunset );
$respIsDay = ( $respIsDay = (
( (
( ( $shutters->getBrightness > $brightnessMinVal and $isday )
$shutters->getBrightness > $brightnessMaxVal or $shutters->getSunset
and not $isday ) ? 1 : 0
) ) if ( $shutters->getDown eq 'brightness' );
or $respIsDay
or $shutters->getSunrise ASC_Debug( 'FnIsDay: '
. $shuttersDev
. ' getDownBrightness: '
. $respIsDay
. ' Brightness: '
. $shutters->getBrightness
. ' BrightnessMin: '
. $brightnessMinVal
. ' Sunset: '
. $shutters->getSunset );
$respIsDay = (
(
( $shutters->getBrightness > $brightnessMaxVal and not $isday )
or $respIsDay
or $shutters->getSunrise
) ? 1 : 0 ) ? 1 : 0
) if ( $shutters->getUp eq 'brightness' ); ) if ( $shutters->getUp eq 'brightness' );
ASC_Debug( 'FnIsDay: ' ASC_Debug( 'FnIsDay: '
. $shuttersDev . $shuttersDev
. ' getUpBrightness: ' . $respIsDay . ' getUpBrightness: '
. ' Brightness: ' . $shutters->getBrightness . $respIsDay
. ' BrightnessMax: ' . $brightnessMaxVal . ' Brightness: '
. ' Sunset: ' . $shutters->getSunrise ); . $shutters->getBrightness
. ' BrightnessMax: '
. $brightnessMaxVal
. ' Sunset: '
. $shutters->getSunrise );
} }
return $respIsDay; return $respIsDay;